Ignore:
Timestamp:
12/20/20 21:32:33 (10 months ago)
Author:
obi
Message:

update tithek add useproxy add delservice to settings

File:
1 edited

Legend:

Unmodified
Added
Removed
  • titan/plugins/tithek/tithek_global.h

    r45037 r45041  
    246246}
    247247
     248#include <stdio.h>
     249#include <curl/curl.h>
     250
     251/* This callback is, currently, a simple wrapper around fwrite(). You
     252   could get it to write to memory, or do anything else you'd like
     253   with the output. For more info, see
     254   http://curl.haxx.se/libcurl/c/CURLOPT_WRITEFUNCTION.html
     255 */
     256
    248257struct MemoryStruct {
    249258  char *memory;
    250   size_t size;
     259  size_t size; 
    251260};
    252261
     
    259268  mem->memory = realloc(mem->memory, mem->size + realsize + 1);
    260269  if(mem->memory == NULL) {
    261     /* out of memory! */
    262     printf("not enough memory (realloc returned NULL)\n");
    263     return 0;
     270        /* out of memory! */
     271        printf("not enough memory (realloc returned NULL)\n");
     272        return 0;
    264273  }
    265274 
     
    271280}
    272281
     282static size_t writeCallback(void *contents, size_t size, size_t nitems, FILE *file) {
     283  return fwrite(contents, size, nitems, file);
     284}
    273285// flag = 0 (without header in output)
    274286// flag = 1 (with header in output)
     
    276288{
    277289        debug(99, "url: %s", url);
    278 //    if(ostrncmp("http", url, 4)) return NULL;
     290        printf("url: %s\n", url);
    279291
    280292        int debuglevel = getconfigint("debuglevel", NULL);
     
    297309        if(curl_handle)
    298310        {
    299             if(localfile != NULL)
     311                if(localfile != NULL)
    300312                    fp = fopen(localfile,"wb");
    301313               
     
    305317                if(user != NULL && pass != NULL)
    306318                {
    307                         curl_easy_setopt(curl_handle, CURLOPT_USERNAME, user);
    308                         curl_easy_setopt(curl_handle, CURLOPT_PASSWORD, pass);
     319                        curl_easy_setopt(curl_handle, CURLOPT_USERNAME, HTTPUSER);
     320                        curl_easy_setopt(curl_handle, CURLOPT_PASSWORD, HTTPPASS);
    309321                        curl_easy_setopt(curl_handle, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    310322                }
     
    317329
    318330                        /* example.com is redirected, so we tell libcurl to send POST on 301, 302 and
    319                      303 HTTP response codes */
     331                        303 HTTP response codes */
    320332                        curl_easy_setopt(curl_handle, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
    321333                }
     
    326338//              curl_easy_setopt(curl_handle, CURLOPT_RETURNTRANSFER, 1);
    327339
    328                 /* send all data to this function  */
    329             if(localfile == NULL)
     340                if(localfile == NULL)
     341                {
     342                        /* send all data to this function  */
    330343                        curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
     344                }
    331345                else
    332                         curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, NULL);
    333 
    334                 /* we pass our 'chunk' struct to the callback function */
    335             if(localfile == NULL)
     346                {
     347                        /* When data arrives, curl will call writeCallback. */
     348                        curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, writeCallback);
     349//                      curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, NULL);             
     350                }
     351
     352
     353
     354                if(localfile == NULL)
     355                {
     356                        /* we pass our 'chunk' struct to the callback function */
    336357                        curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk);
     358                }
    337359                else
    338                         curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, fp);
     360                {
     361                        /* The last argument to writeCallback will be our file: */
     362                        curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)fp);
     363                }
    339364
    340365                /* some servers don't like requests that are made without a user-agent field, so we provide one */
     
    362387                curl_easy_setopt(curl_handle, CURLOPT_MAXREDIRS, 3L);
    363388
     389
    364390                /* enable all supported built-in compressions */
    365391                curl_easy_setopt(curl_handle, CURLOPT_ACCEPT_ENCODING, "");
     
    370396                        curl_easy_setopt(curl_handle, CURLOPT_REFERER, referer);
    371397
    372                 if(getconfig("tithek_proxy", NULL) != NULL)
     398                if(getconfig("tithek_proxy", NULL) != NULL && getconfigint("tithek_useproxy", NULL) == 1)
    373399                        curl_easy_setopt(curl_handle, CURLOPT_PROXY, getconfig("tithek_proxy", NULL));
    374400
    375401                /* get it! */
    376402                res = curl_easy_perform(curl_handle);
     403
    377404                /* check for errors */
    378405                if(res != CURLE_OK)
     
    398425        }
    399426
    400         tmpstr = ostrcat(chunk.memory, NULL, 0, 0);
     427        if(localfile == NULL)
     428                tmpstr = ostrcat(chunk.memory, NULL, 0, 0);
     429
    401430        free(chunk.memory);
    402         /* we're done with libcurl, so clean it up */
    403         curl_global_cleanup();
    404 
    405         if(localfile != NULL)
     431        /* we're done with libcurl, so clean it up */
     432
     433        curl_global_cleanup();
     434
     435        if(localfile != NULL)
    406436                free(tmpstr), tmpstr = NULL;
     437
    407438        return tmpstr;
    408439}
Note: See TracChangeset for help on using the changeset viewer.