2014-01-14 1 views
0

Я разработал приложение «C» на ящике Linux, используя пример libcurl http://curl.askapache.com/c/ftpupload.html Я отлично работаю. Меня попросили использовать SSL для «шифрования данных как для канала управления, так и для канала данных». Я не смог найти пример добавления SSL к примеру, который я использовал. Вот основные программы FTP:Использование Easy Curl для загрузки FTP с помощью SSL на Linux

// get a FILE * of the same file 
hd_src = fopen(local_file, "rb"); 

// curl init 
curl_global_init(CURL_GLOBAL_ALL); 

// get a curl handle 
curl = curl_easy_init(); 

if (curl) { // build a list of commands to pass to libcurl 
    headerlist = curl_slist_append(headerlist, buf_1); 
#ifdef DEBUG 
    // we want to use our own read function 
    curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback); 
#endif 

    // enable uploading 
    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); 

    // specify target 
    curl_easy_setopt(curl, CURLOPT_URL, ftp_url); 
    curl_easy_setopt(curl, CURLOPT_USERPWD, user_password); 
    curl_easy_setopt(curl, CURLOPT_PORT, 21); 

    // pass in that last of FTP commands to run after the transfer 
    curl_easy_setopt(curl, CURLOPT_POSTQUOTE, headerlist); 

    // now specify which file to upload 
    curl_easy_setopt(curl, CURLOPT_READDATA, hd_src); 

    // Set the size of the file to upload 
    curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t) fsize); 

    // Now run off and do what you've been told! 
    res = curl_easy_perform(curl); 

    // Check for errors 
    if (res != CURLE_OK) { 
     char *s; 
     s = malloc((sizeof(char) * 100) + 1); 
     sprintf(s, "curl_easy_perform() failed: %s - Error Number: %d\n", 
     curl_easy_strerror(res), res); 
     returnResults->error = true; 
     returnResults->errorMessage = s; 
     return returnResults; 
    } 

    // clean up the FTP commands list 
    curl_slist_free_all(headerlist); 

    // always cleanup 
    curl_easy_cleanup(curl); 
} 

fclose(hd_src); // close the local file 
curl_global_cleanup(); 
+0

Что вы хотите сказать? – imp25

ответ

2

Там же, однако существующий пример кода на сайте Libcurl, показывающий, как вы FTP-SSL для загрузки файл: ftpsget.c - это показывает очень мало SSL магию ты по нужно добавить. Это магия одинакова для загрузки:

/* We activate SSL and we require it for both control and data */ 
curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL); 

В самом деле, вы можете добавить одну строку в FTP upload example. и он будет делать заказы FTPS для вас.

Смежные вопросы