Tag: Indy

Indy에 SSL 사용하기

Indy 라이브러리는 자체적으로 SSL을 지원하지 않습니다. Third party로 SSL IO Handler를 지정해줘야하는데 OpenSSL을 이용하는 방법은 다음과 같습니다.

  1. Indy SSL에서 미리 컴파일된 OpenSSL DLL을 다운로드 한다. 여기서는 fulgan의 DLL을 다운 받았다.
  2. 파일중에서 필요한 2개의 파일(libeay32.dll, ssleay32.dll)을 실행파일이 위치할 곳에 푼다.
  3. TIdHttp로 이용하는 코드는 다음과 같다.
FHTTP := TIdHTTP.Create(nil);
  FOpenSSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(FHTTP);

  FHTTP.IOHandler := FOpenSSLHandler;
  FHTTP.Get('https://mail.google.com');</pre>

http://www.woosum.net/wiki/Indy


Indy로 form submit하기 삽질

  • TIdMultipartFormDataStream를 이용하면 될 것 같아서 열심히 했다.
  • 근데 UTF8 인코딩이 필요하다. AddFormField로 추가하면 될 것 같았다. AddObject도 안된다.
  • TIdMultipartFormDataStream는 유니코드를 전혀 지원하지 않는다.
  • 그냥 TStrings로 했다. 잘된다.. ㅡㅜ

Drupal에서 삽질

  • WebForms에서 만들 폼에다가 넣는 중이있다.
  • 잘 넣는데 가끔 폼에 적은 내용이 전달이 되지 않는다. 흠... 한참 삽질하다 다시 보니 WebForms의 필드 타입이 textfield인 곳에 여러줄 넣으면 안된다. 아마 여러줄에 이상한 문자가 있었나?.. 하여간 가끔안되다가 되다가.
  • 여러줄 필요한 곳의 타입을 textarea로 변경하니 잘 된다.

시간 동기화하기

월요일 아침엔 회의가 있습니다. 컴퓨터 시간으로 확인하고 가보니.. 헉. . 지각입니다. 이놈의 컴퓨터 시간이 늦어진거죠. 뭔 이런 일이.. 저기 있는 아날로그 시계는 정확한데, 항상 앞에두고 보는 시계가 부정확합니다.

그래서 시간 동기화하는 툴 만들었습니다. Indy를 이용하니 소스도 23줄 밖에 안됩니다. 뭐 Indy가 다하니깐요.

program TimeSync;

uses
  Windows,
  SysUtils,
  IdSNTP;

{$R *.res}

begin
  try
    with TIdSNTP.Create(nil) do
    try
      Host := '2.kr.pool.ntp.org';
      SyncTime;
    finally
      Free;
    end;
  except
    on E: Exception do
      MessageBox(0, PChar(E.Message), 'Error', MB_ICONEXCLAMATION);
  end;
end.

시작 프로그램에 등록해야겠습니다.

추가: 10.11.02

Window Vista, Windows 7에서는 동작하지 않습니다. MSDN에 보면 SetLocalTime이 SE_SYSTEMTIME_NAME 권한이 필요하다고 되어있지요. 그래서 그렇게 해주고 했는데 안됩니다. ㅡㅡ, 그래서 Indy 소스도 뒤져봤는데 Indy도 SE_SYSTEMTIME_NAME 권한을 획득하고 처리하고 있습니다. 그래도 안됩니다.

결국 관리자 권한에서 실행하는 수 밖에 없군요.

찾아보면서 본 글중에 하나는 "도데체 일반 사용자가 시간을 조종할 필요가 뭐가있냐?"라는 건데, 해주고픈 말은 야 이눔아 내 컴퓨터 시간이 잘못되어있다니깐!!!! 그래서 정확한 시간으로 맞추고 싶다고!!!!


  • Copyright © 1996-2010 Your wish is my command. All rights reserved.
    iDream theme by Templates Next | Powered by WordPress