기본 콘텐츠로 건너뛰기

라벨이 curl인 게시물 표시

OpenSSL supports Multi-threading

내가 스레드를 별로 좋아하지 않는데, 별 수 없이 써야할 경우가 종종 있다. 그와 별개로 OpenSSL 쓰기를 좋아하는데, OpenSSL을 멀티 스레딩 환경에서 쓰면 자칫 알 수 없는 이유로 죽곤한다. 이유는 OpenSSL 각종 알고리즘엔진이 멀티 스레딩 환경을 고려하지 않은 엔진이라, 경합이 발생하여 충돌이 발생하기 때문이다. 참조: https://www.openssl.org/docs/crypto/threads.html 멀티 스레딩 지원은 0.9.5b-dev부터 지원하였으니, 이하 버전은 포기하자. (응?) (사실 그 전에도 약간은 지원했으나, CentOS5 기준 0.9.8이니, 이전 버전은 포기하는게 정답이다) 맨페이지를 보면 "crypto/threads/mttest.c 파일에 예제가 있어요 뿌잉뿌잉~"이라는데 나중에 찾아보기 귀찮으니 블로그에 옮겨 놓...으려고 봤는데, 주석도 길고 모든 OS에 대한 전처리기도 있고, C++11도 나왔는데 구닥다리 코드를 쓸 생각이 없으니 내 맘대로 다시 구성했다. #include <openssl/crypto.h> #define OPENSSL_THREAD_DEFINES #include <openssl/opensslconf.h> #if !defined(OPENSSL_THREADS) # error "OpenSSL version is not supported multi-thread" #endif // C++11 mutex support #include <mutex> // Global locks for OpenSSL static std::mutex* g_locks(nullptr); // Locking callback function for OpenSSL static void funcLock(int mode, int type, char* file, int line) { if ( mode bitand CRYPTO_LOCK ) g_locks[...

cURL을 이용하여 FTP로 파일 올리기

로컬 파일을 원격에 전송할 때는 '-T [local file]' 옵션을 사용한다. 뒤에 URL이 HTTP면 'PUT'을 사용한다. (물론 FTP도 동일 명령이긴 하지만 명령 형식이 좀 다르다.) $ curl -T file -u 'ID:PASSWORD' 'ftp://URL' 예) 로컬파일 'purewell.txt'를 'dev.purewell.biz'서버의 '/tmp' 디렉토리에 업로드 $ curl -T 'purewell.txt' -u 'purewell:helloworld' 'ftp://dev.purewell.biz//tmp' 원본 위치: http://purewell.egloos.com/3797418

cURL을 이용하여 FTP 절대경로에서 받아오기

$ curl -s -u 'user:password' ftp://domain//path/file cURL 을 오랜 기간 썼지만, 언제나 서버가 해당 계정에 대해 감옥을 걸어놔서 절대경로를 들어가는게 불가능했다. (당연히 보안을 위해서라도 계정을 감옥 속에 쳐 넣어야지!) 이래저래 유용하게 썼는데, 그런 이유로 절대경로를 입력할 이유가 없었는데, 요즘 그런 기능을 필요했는데 무심결에 이렇게 하면 작동하지 않을까...했는데 작동하네. 결론은 도메인 뒤에 슬래시를 한 번 더 붙여 주면 깔꼬롬하게 절대경로를 접근할 수 있다. 물론 서버에서 절대경로진입을 허가할 경우에만 말이다. 참고로 "-s" 옵션은 cURL이 내보내는 각종 오류 메시지 등을 잠재우는 일을 한다. 원본 위치: http://purewell.egloos.com/3666929