diff options
author | Martin Schanzenbach <mschanzenbach@posteo.de> | 2012-06-06 14:07:30 +0000 |
---|---|---|
committer | Martin Schanzenbach <mschanzenbach@posteo.de> | 2012-06-06 14:07:30 +0000 |
commit | 983df8eafd4a10a2f5053264806cbcdeb96f0dd4 (patch) | |
tree | 2087092529693c3191b7671032262e05eb8d4889 /src | |
parent | b6d376f9b300b042ab9b65ff9a9cfbe5be8bcfbf (diff) | |
download | gnunet-983df8eafd4a10a2f5053264806cbcdeb96f0dd4.tar.gz gnunet-983df8eafd4a10a2f5053264806cbcdeb96f0dd4.zip |
-leho, proxy ssl
Diffstat (limited to 'src')
-rw-r--r-- | src/gns/gnunet-gns-proxy.c | 28 | ||||
-rw-r--r-- | src/include/gnunet_gns_service.h | 3 |
2 files changed, 28 insertions, 3 deletions
diff --git a/src/gns/gnunet-gns-proxy.c b/src/gns/gnunet-gns-proxy.c index 10a81b073..3c6943687 100644 --- a/src/gns/gnunet-gns-proxy.c +++ b/src/gns/gnunet-gns-proxy.c | |||
@@ -131,6 +131,9 @@ struct ProxyCurlTask | |||
131 | /* Optional header replacements for curl (LEHO) */ | 131 | /* Optional header replacements for curl (LEHO) */ |
132 | struct curl_slist *headers; | 132 | struct curl_slist *headers; |
133 | 133 | ||
134 | /* Optional resolver replacements for curl (LEHO) */ | ||
135 | struct curl_slist *resolver; | ||
136 | |||
134 | /* The URL to fetch */ | 137 | /* The URL to fetch */ |
135 | char url[2048]; | 138 | char url[2048]; |
136 | 139 | ||
@@ -880,6 +883,10 @@ process_leho_lookup (void *cls, | |||
880 | int i; | 883 | int i; |
881 | CURLcode ret; | 884 | CURLcode ret; |
882 | CURLMcode mret; | 885 | CURLMcode mret; |
886 | struct hostent *phost; | ||
887 | char *ssl_ip; | ||
888 | char resolvename[512]; | ||
889 | char curlurl[512]; | ||
883 | 890 | ||
884 | ctask->headers = NULL; | 891 | ctask->headers = NULL; |
885 | 892 | ||
@@ -912,6 +919,19 @@ process_leho_lookup (void *cls, | |||
912 | 919 | ||
913 | } | 920 | } |
914 | 921 | ||
922 | if (ctask->mhd->is_ssl) | ||
923 | { | ||
924 | phost = (struct hostent*)gethostbyname (ctask->host); | ||
925 | ssl_ip = inet_ntoa(*((struct in_addr*)(phost->h_addr))); | ||
926 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
927 | "SSL target server: %s\n", ssl_ip); | ||
928 | sprintf (resolvename, "%s:%d:%s", ctask->leho, HTTPS_PORT, ssl_ip); | ||
929 | ctask->resolver = curl_slist_append ( ctask->resolver, resolvename); | ||
930 | curl_easy_setopt (ctask->curl, CURLOPT_RESOLVE, ctask->resolver); | ||
931 | sprintf (curlurl, "https://%s%s", ctask->leho, ctask->url); | ||
932 | curl_easy_setopt (ctask->curl, CURLOPT_URL, curlurl); | ||
933 | } | ||
934 | |||
915 | if (CURLM_OK != (mret=curl_multi_add_handle (curl_multi, ctask->curl))) | 935 | if (CURLM_OK != (mret=curl_multi_add_handle (curl_multi, ctask->curl))) |
916 | { | 936 | { |
917 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 937 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
@@ -1001,6 +1021,9 @@ create_response (void *cls, | |||
1001 | char curlurl[512]; | 1021 | char curlurl[512]; |
1002 | int ret = MHD_YES; | 1022 | int ret = MHD_YES; |
1003 | 1023 | ||
1024 | struct hostent *phost; | ||
1025 | char *ssl_ip; | ||
1026 | |||
1004 | struct ProxyCurlTask *ctask; | 1027 | struct ProxyCurlTask *ctask; |
1005 | 1028 | ||
1006 | if (0 != strcmp (meth, "GET")) | 1029 | if (0 != strcmp (meth, "GET")) |
@@ -1058,9 +1081,10 @@ create_response (void *cls, | |||
1058 | curl_easy_setopt (ctask->curl, CURLOPT_FOLLOWLOCATION, 1); | 1081 | curl_easy_setopt (ctask->curl, CURLOPT_FOLLOWLOCATION, 1); |
1059 | curl_easy_setopt (ctask->curl, CURLOPT_MAXREDIRS, 4); | 1082 | curl_easy_setopt (ctask->curl, CURLOPT_MAXREDIRS, 4); |
1060 | /* no need to abort if the above failed */ | 1083 | /* no need to abort if the above failed */ |
1061 | sprintf (curlurl, "http://%s%s", host, url); | 1084 | if (GNUNET_NO == ctask->mhd->is_ssl) |
1085 | sprintf (curlurl, "http://%s%s", host, url); | ||
1062 | strcpy (ctask->host, host); | 1086 | strcpy (ctask->host, host); |
1063 | strcpy (ctask->url, curlurl); | 1087 | strcpy (ctask->url, url); |
1064 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1088 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1065 | "Adding new curl task for %s\n", curlurl); | 1089 | "Adding new curl task for %s\n", curlurl); |
1066 | 1090 | ||
diff --git a/src/include/gnunet_gns_service.h b/src/include/gnunet_gns_service.h index 4e040f777..64dbcd25a 100644 --- a/src/include/gnunet_gns_service.h +++ b/src/include/gnunet_gns_service.h | |||
@@ -79,7 +79,8 @@ enum GNUNET_GNS_RecordType | |||
79 | /* GNS specific */ | 79 | /* GNS specific */ |
80 | GNUNET_GNS_RECORD_PKEY = GNUNET_NAMESTORE_TYPE_PKEY, | 80 | GNUNET_GNS_RECORD_PKEY = GNUNET_NAMESTORE_TYPE_PKEY, |
81 | GNUNET_GNS_RECORD_PSEU = GNUNET_NAMESTORE_TYPE_PSEU, | 81 | GNUNET_GNS_RECORD_PSEU = GNUNET_NAMESTORE_TYPE_PSEU, |
82 | GNUNET_GNS_RECORD_ANY = GNUNET_NAMESTORE_TYPE_ANY | 82 | GNUNET_GNS_RECORD_ANY = GNUNET_NAMESTORE_TYPE_ANY, |
83 | GNUNET_GNS_RECORD_LEHO = GNUNET_NAMESTORE_TYPE_LEHO | ||
83 | }; | 84 | }; |
84 | 85 | ||
85 | /** | 86 | /** |