Bullshitting Blog

개소리하는 블로그

리눅스에서 증권사 ActiveX 사용하기

Tags = [ linux ]

개발팀 기술검토 의뢰(?)로 들어왔다. 회사 서버에서 주문을 집행하기 위해 증권사 Open API 이용이 가능하냐는 것. 근데 문제는 그 증권사 API는 ActiveX 기반이다. 변태같은 레거시다. 그리고 서버는 당연 리눅스.

결론부터 말하면 기술적으로는 된다.

방법은 간단히 말하면 wine이다. 윈도우 프로그램을 리눅스에서 돌릴 수 있도록 해주는 프로그램이다. 그래서 ActiveX를 이용하는 것 자체는 빠르게 해결되었다.

그런데 다음 문제가 남아 있었다. 인코딩이 EUC-KR이라는 것이다. 담당자가 사고치기 싫다고 레거시는 하나도 안 건드린 듯 하다.

UTF-8에 비해 용량이 반밖에 안되는 EUC-KR을 이용하기 때문인 것으로 보이지만, 여튼 그걸 전송속도 빠르다고 자랑….하고 있었다. 역시 꿈보다 해몽이다. 담당자는

  1. 사고도 안치고
  2. 성능 우위도 홍보하고
  3. 꿀도 빨았을 것이다
    역시 사람은 머리를 써야 한다. 여기서 머리라는건 잔머리도 포함인 듯 하다.

뭐 그래도 원래 금융쪽은 레거시 파티다. 그래서 EUC-KR일 것이라는걸 빠르게 눈치채고 같이 해결. 환경변수 세팅으로 해결했다.

LANG=ko_KR.EUC-KR

각설하고, 여기서 한가지 주의할 것이 있다. 이걸 .bashrc같은데 박아넣는 불상사는없어야 한다. 이 환경변수는 wine을 이용할 때 외에는 이용되지 않아야 한다. 안그럼 그럼 평소에 한글이 깨진다. 그래서 난 wine을 도커로 돌림. 비슷한 이유로 리서치팀 프로그램을 돌릴 때 필요한 conda도 로컬에 직접 설치하지 않고, 도커 컨테이너에 home 디렉터리 마운트 해서 필요할 때만 씀.

다음 문제는 공인인증서이다. 한국투자증권 API의 경우 Token을 이용할 수 있도록 되어 있어서 편했는데, 의뢰받은 API는 그게 아니었다. 공인인증서를 매번 사용해야 함. NPKI 디렉터리를 위치해야 하는 위치에 아무리 둬봐도 인식이 안됨. 힌트는 인코딩에 있다.

LC_ALL=ko_KR.UTF-8

이 부분을 처음엔 따로 세팅하지 않았었다. 그래서 UTF-8 인코딩인 공인인증서는 인식이 안된 것. 저렇게 넣어 주니 잘 인식되었다.

해결 완료.