remove curl utils funcs

because of do not get ftp data port by http, remove dependence of Libcurl
This commit is contained in:
KerwinKoo
2017-08-21 10:01:33 +08:00
parent ce522f5675
commit c31106689a
3 changed files with 1 additions and 174 deletions

View File

@@ -31,8 +31,7 @@ set(libs
event
z
m
json-c
curl)
json-c)
set(test_libs
event

146
utils.c
View File

@@ -16,8 +16,6 @@
#include <netdb.h>
#include <ifaddrs.h>
#include <linux/if_link.h>
#include <curl/curl.h>
#include <curl/easy.h>
#include "utils.h"
@@ -209,148 +207,4 @@ int dns_unified(const char *dname, char *udname_buf, int udname_buf_len)
return 1;
return 0;
}
static int dl_progress(void *clientp,
double dltotal,
double dlnow,
double ultotal,
double ulnow) {
// if there something to show while download or URL get, complate this func
// e.g.:
// if (dlnow && dltotal)
// printf("dl:%3.0f%%\r",100*dlnow/dltotal); //shenzi prog-mon
// // printf("dl:%3.0f\r",100*dlnow/dltotal); //shenzi prog-mon
// fflush(stdout);
return 0;
}
static size_t write_to_mycurl_string(void *buffer,
const size_t size,
const size_t nmemb,
struct mycurl_string *s) {
size_t new_len = s->len + size * nmemb;
size_t buffer_len = new_len + 1;
char *tmp_p = calloc(1, buffer_len);
if (tmp_p == NULL) {
return 0;
}
memcpy(tmp_p, s->ptr, s->len);
free(s->ptr);
s->ptr = tmp_p;
memcpy(s->ptr + s->len, buffer, size*nmemb);
return size*nmemb;
}
/* mycurl_string_init:
*
* the value of struct mycurl_string must be init using this func before use it.
* After mycurl_string_init succeed, stream->ptr will not be NULL
*/
struct mycurl_string *mycurl_string_init(struct mycurl_string *stream)
{
stream->len = 0;
stream->ptr = calloc(1, stream->len+1);
if (stream->ptr == NULL) {
return NULL;
}
stream->ptr[0] = '\0';
return stream;
}
void mycurl_string_free(struct mycurl_string *stream)
{
if (stream != NULL && stream->ptr != NULL) {
free(stream->ptr);
}
}
// net_visit: visit web address of URL by HTTP method, support GET and POST
// return : 0=succeed
// 1-failed/err with some reason that could not download, reason code
// saved in state_code argument.
int net_visit(const char *url,
struct mycurl_string *s,
int method,
char *post_buf,
long timeout,
int *state_code,
double *down_size) {
CURL *curl;
CURLcode curl_retval;
long http_response;
double dl_size;
int ret = 1;
long dl_lowspeed_bytes = 1000; //1K
*state_code = CURL_OK;
long dl_lowspeed_time = 60; //sec
if (timeout <= 0) {
*state_code = CURL_TIMEOUT_SET_ERR;
return ret;
}
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, url);
/*callbacks*/
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_to_mycurl_string);
curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, dl_progress);
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout);
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 30);
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, dl_lowspeed_bytes); //bytes/sec
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, dl_lowspeed_time);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, s);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); // handle 302 and 301
if (method == HTTP_POST) {
char *self_post_buf = post_buf == NULL ? "/0":post_buf;
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, self_post_buf);
}
#if CURL_DEBUG
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
#endif
if(CURLE_OK != (curl_retval = curl_easy_perform(curl))) {
switch(curl_retval) {
default:
*state_code = curl_retval;
};
curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &dl_size);
*down_size = dl_size;
curl_retval=curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_response);
switch(http_response){
case 200:
*state_code = CURL_HTTP_200;
break;
case 404:
ret = 1;
break;
case 206:
case 416:
default:
*state_code = CURL_HTTP_OTHER;
break;
};
} else {
ret = 0;
}
if (curl){
curl_easy_cleanup(curl);
}
}
return ret;
}

26
utils.h
View File

@@ -1,22 +1,6 @@
#ifndef _UTILS_H_
#define _UTILS_H_
/* curl define */
// curl methods
#define HTTP_GET 0
#define HTTP_POST 1
#define CURL_DEBUG 0
#define CURL_OK 0x900
#define CURL_TIMEOUT_SET_ERR 0x901
#define CURL_FILE_DEL_ERR 0x902
#define CURL_FILE_OPEN_ERR 0x903
#define CURL_PERFORM_UNHANDLED_ERR 0x904
#define CURL_HTTP_200 0x905
#define CURL_HTTP_404 0x906
#define CURL_HTTP_OTHER 0x999
struct mycurl_string {
char *ptr;
size_t len;
@@ -32,14 +16,4 @@ int get_net_ifname(char *if_buf, int blen);
int get_net_mac(char *net_if_name, char *mac, int mac_len);
int dns_unified(const char *dname, char *udname_buf, int udname_buf_len);
struct mycurl_string *mycurl_string_init(struct mycurl_string *stream);
int net_visit(const char *url,
struct mycurl_string *s,
int method,
char *post_buf,
long timeout,
int *state_code,
double *down_size);
void mycurl_string_free(struct mycurl_string *stream);
#endif //_UTILS_H_