혹시 요즘도 Sentinel 의 HASP key 를 쓰는 회사가 많이 있는지는 모르겠습니다만, 간만에 HASP license 관련 작업을 하게 되었습니다. 이번엔 마스터 키가 장착 되어 있는 원격 EMS 서버에서 현재 클라이언트의 Time Period 키를 만들고 지울 수 있도록 만들면서 HTTP 통신을 해야 하는 일이 생기면서 기존에 만들어 두었던 libshttp 를 업데이트 하게 되었습니다.
libshttp Github 주소
이 오래된 라이브러리를 다시 갱신한 이유는, Windows 에서 보통 기본으로 쓰는 wininet 라이브러리가 Sentinel EMS 7.4 와 제대로 붙지 못하고, XML 정보를 POST 로 보내도, 이를 EMS 서버가 인지를 못하는 기이한 문제점 때문 이었습니다.
가장 기초적인 login 조차 이게 되질 않으니 방법을 못 찾다가 결국 libshttp 를 사용해서 접속을 하도록 했습니다.
두 방법 다, Content-Type: Application/XML 과, Charset=UTF-8 을 명시 한 동일한 조건 임에도, wininet 으로는 HTTP/1.0 POST 의 기초적인 통신 조차 안되는 이유를 알 수가 없없습니다.
디버깅을 통해 InternetConnect() -> HttpOpenRequest() -> HttpSendRequest() 를 차례로 호출 하며, 이때 XML 정보를 전송 하게 되는데, 이를 Sentinel EMS 내에서는 인지 하지 못 하거나, 전달 되는 HTTP header 에 뭔가 쓸데 없는게 들어 가는건지 도통 알 방법이 없었으므로 결국 libshttp 로 방향을 선회 하게 되었고, 제 입장에선 SSL 을 써야 하는 조건이 아니라면 역시 그냥 가볍게 가는게 최고란걸 알게 되었습니다.
아쉬운점은 EMS 서버가 내용물을 뭔가 최소 암호화 라도 하면 좋겠습니다만, 이건 제가 만든게 아니다 보니 무리라는 것 이겠습니다.
뭔가 예전에 delphi 쓸때 Indy HTTP 와 같이 쓸 만한걸 만들려고 시작한 libshttp 를 결국 다시 쓰게 되서 좋기는 합니다만,
MS 의 기본 라이브러리를 가끔 쓰다보면 이게 대채 뭐하자고 만들어 놓고, 버그가 있음 수정도 안하는가? 싶기도 하고 복잡 함을 느낍니다.