diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 8 | ||||
-rw-r--r-- | src/Makefile.in | 18 | ||||
-rw-r--r-- | src/htsback.c | 6 | ||||
-rw-r--r-- | src/htsbasenet.h | 96 | ||||
-rw-r--r-- | src/htslib.c | 12 | ||||
-rw-r--r-- | src/htsmodules.c | 125 | ||||
-rw-r--r-- | src/htsparse.c | 3 | ||||
-rw-r--r-- | src/htstools.c | 10 |
8 files changed, 38 insertions, 240 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 0b1998e..0901f6d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -25,8 +25,8 @@ INCLUDES = \ bin_PROGRAMS = proxytrack httrack htsserver -httrack_LDADD = $(THREADS_LIBS) libhttrack.la -htsserver_LDADD = $(THREADS_LIBS) $(SOCKET_LIBS) libhttrack.la +httrack_LDADD = $(THREADS_LIBS) $(OPENSSL_LIBS) libhttrack.la +htsserver_LDADD = $(THREADS_LIBS) $(SOCKET_LIBS) $(OPENSSL_LIBS) libhttrack.la proxytrack_LDADD = $(THREADS_LIBS) $(SOCKET_LIBS) proxytrack_CFLAGS = $(AM_CFLAGS) -DNO_MALLOCT @@ -65,11 +65,11 @@ libhttrack_la_SOURCES = htscore.c htsparse.c htsback.c htscache.c \ htsmms.h \ minizip/crypt.h minizip/ioapi.h minizip/mztools.h minizip/unzip.h minizip/zip.h \ mmsrip/error.h mmsrip/mms.h -libhttrack_la_LIBADD = $(THREADS_LIBS) $(ZLIB_LIBS) $(DL_LIBS) $(SOCKET_LIBS) $(ICONV_LIBS) +libhttrack_la_LIBADD = $(THREADS_LIBS) $(ZLIB_LIBS) $(OPENSSL_LIBS) $(DL_LIBS) $(SOCKET_LIBS) $(ICONV_LIBS) libhttrack_la_LDFLAGS = -version-info $(VERSION_INFO) libhtsjava_la_SOURCES = htsjava.c htsjava.h -libhtsjava_la_LIBADD = $(THREADS_LIBS) $(DL_LIBS) libhttrack.la +libhtsjava_la_LIBADD = $(THREADS_LIBS) $(OPENSSL_LIBS) $(DL_LIBS) libhttrack.la libhtsjava_la_LDFLAGS = -version-info $(VERSION_INFO) EXTRA_DIST = httrack.h webhttrack \ diff --git a/src/Makefile.in b/src/Makefile.in index 4c2d4fb..30a1e93 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -67,12 +67,12 @@ libLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = libhtsjava_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) libhttrack.la + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) libhttrack.la am_libhtsjava_la_OBJECTS = htsjava.lo libhtsjava_la_OBJECTS = $(am_libhtsjava_la_OBJECTS) libhttrack_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_libhttrack_la_OBJECTS = htscore.lo htsparse.lo htsback.lo \ htscache.lo htscatchurl.lo htsfilters.lo htsftp.lo htshash.lo \ htsinthash.lo htshelp.lo htslib.lo htscoremain.lo htsname.lo \ @@ -86,10 +86,11 @@ PROGRAMS = $(bin_PROGRAMS) am_htsserver_OBJECTS = htsserver.$(OBJEXT) htsweb.$(OBJEXT) htsserver_OBJECTS = $(am_htsserver_OBJECTS) htsserver_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ - libhttrack.la + $(am__DEPENDENCIES_1) libhttrack.la httrack_SOURCES = httrack.c httrack_OBJECTS = httrack.$(OBJEXT) -httrack_DEPENDENCIES = $(am__DEPENDENCIES_1) libhttrack.la +httrack_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + libhttrack.la am_proxytrack_OBJECTS = proxytrack-main.$(OBJEXT) \ proxytrack-proxytrack.$(OBJEXT) proxytrack-store.$(OBJEXT) \ proxytrack-htsinthash.$(OBJEXT) proxytrack-htsmd5.$(OBJEXT) \ @@ -176,6 +177,7 @@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ @@ -268,8 +270,8 @@ INCLUDES = \ -DDATADIR=\""$(datadir)"\" \ -DLIBDIR=\""$(libdir)"\" -httrack_LDADD = $(THREADS_LIBS) libhttrack.la -htsserver_LDADD = $(THREADS_LIBS) $(SOCKET_LIBS) libhttrack.la +httrack_LDADD = $(THREADS_LIBS) $(OPENSSL_LIBS) libhttrack.la +htsserver_LDADD = $(THREADS_LIBS) $(SOCKET_LIBS) $(OPENSSL_LIBS) libhttrack.la proxytrack_LDADD = $(THREADS_LIBS) $(SOCKET_LIBS) proxytrack_CFLAGS = $(AM_CFLAGS) -DNO_MALLOCT lib_LTLIBRARIES = libhttrack.la libhtsjava.la @@ -306,10 +308,10 @@ libhttrack_la_SOURCES = htscore.c htsparse.c htsback.c htscache.c \ minizip/crypt.h minizip/ioapi.h minizip/mztools.h minizip/unzip.h minizip/zip.h \ mmsrip/error.h mmsrip/mms.h -libhttrack_la_LIBADD = $(THREADS_LIBS) $(ZLIB_LIBS) $(DL_LIBS) $(SOCKET_LIBS) $(ICONV_LIBS) +libhttrack_la_LIBADD = $(THREADS_LIBS) $(ZLIB_LIBS) $(OPENSSL_LIBS) $(DL_LIBS) $(SOCKET_LIBS) $(ICONV_LIBS) libhttrack_la_LDFLAGS = -version-info $(VERSION_INFO) libhtsjava_la_SOURCES = htsjava.c htsjava.h -libhtsjava_la_LIBADD = $(THREADS_LIBS) $(DL_LIBS) libhttrack.la +libhtsjava_la_LIBADD = $(THREADS_LIBS) $(OPENSSL_LIBS) $(DL_LIBS) libhttrack.la libhtsjava_la_LDFLAGS = -version-info $(VERSION_INFO) EXTRA_DIST = httrack.h webhttrack \ minizip/ChangeLogUnzip \ diff --git a/src/htsback.c b/src/htsback.c index fafa8e4..55bf041 100644 --- a/src/htsback.c +++ b/src/htsback.c @@ -1952,7 +1952,7 @@ int back_add(struct_back * sback, httrackp * opt, cache_back * cache, char *adr, } #endif #if HTS_USEOPENSSL - else if (SSL_is_available && strfield(back[p].url_adr, "https://")) { // let's rock + else if (strfield(back[p].url_adr, "https://")) { // let's rock back[p].r.ssl = 1; // back[p].r.ssl_soc = NULL; back[p].r.ssl_con = NULL; @@ -2621,7 +2621,7 @@ void back_wait(struct_back * sback, httrackp * opt, cache_back * cache, #if HTS_USEOPENSSL /* SSL mode */ - if (SSL_is_available && back[i].r.ssl) { + if (back[i].r.ssl) { // handshake not yet launched if (!back[i].r.ssl_con) { SSL_CTX_set_options(openssl_ctx, SSL_OP_ALL); @@ -2691,7 +2691,7 @@ void back_wait(struct_back * sback, httrackp * opt, cache_back * cache, // attente gethostbyname } #if HTS_USEOPENSSL - else if (SSL_is_available && back[i].status == STATUS_SSL_WAIT_HANDSHAKE) { // wait for SSL handshake + else if (back[i].status == STATUS_SSL_WAIT_HANDSHAKE) { // wait for SSL handshake /* SSL mode */ if (back[i].r.ssl) { int conn_code; diff --git a/src/htsbasenet.h b/src/htsbasenet.h index 723da97..b907c09 100644 --- a/src/htsbasenet.h +++ b/src/htsbasenet.h @@ -77,103 +77,15 @@ typedef struct hostent t_hostent; #ifndef HTS_OPENSSL_H_INCLUDED #define HTS_OPENSSL_H_INCLUDED -/* +/* OpenSSL definitions */ #include <openssl/ssl.h> #include <openssl/crypto.h> #include <openssl/err.h> -*/ - -/* Library internal definictions */ -#ifdef HTS_INTERNAL_BYTECODE - -/* OpenSSL definitions */ -#define SSL_shutdown hts_ptrfunc_SSL_shutdown -#define SSL_free hts_ptrfunc_SSL_free -#define SSL_new hts_ptrfunc_SSL_new -#define SSL_clear hts_ptrfunc_SSL_clear -#define SSL_set_fd hts_ptrfunc_SSL_set_fd -#define SSL_set_connect_state hts_ptrfunc_SSL_set_connect_state -#define SSL_connect hts_ptrfunc_SSL_connect -#define SSL_get_error hts_ptrfunc_SSL_get_error -#define SSL_write hts_ptrfunc_SSL_write -#define SSL_read hts_ptrfunc_SSL_read -#define SSL_library_init hts_ptrfunc_SSL_library_init -#define ERR_load_crypto_strings hts_ptrfunc_ERR_load_crypto_strings -#define ERR_load_SSL_strings hts_ptrfunc_ERR_load_SSL_strings -#define SSLv23_client_method hts_ptrfunc_SSLv23_client_method -#define SSL_CTX_new hts_ptrfunc_SSL_CTX_new -#define ERR_error_string hts_ptrfunc_ERR_error_string -#define SSL_load_error_strings hts_ptrfunc_SSL_load_error_strings -#define SSL_CTX_ctrl hts_ptrfunc_SSL_CTX_ctrl - -#endif - -/* */ -typedef void SSL_CTX; -typedef void *SSL; -typedef void SSL_METHOD; -typedef int (*t_SSL_shutdown) (SSL * ssl); -typedef void (*t_SSL_free) (SSL * ssl); -typedef SSL(*t_SSL_new) (SSL_CTX * ctx); -typedef int (*t_SSL_clear) (SSL * ssl); -typedef int (*t_SSL_set_fd) (SSL * ssl, int fd); -typedef void (*t_SSL_set_connect_state) (SSL * ssl); -typedef int (*t_SSL_connect) (SSL * ssl); -typedef int (*t_SSL_get_error) (SSL * ssl, int ret); -typedef int (*t_SSL_write) (SSL * ssl, const void *buf, int num); -typedef int (*t_SSL_read) (SSL * ssl, void *buf, int num); -typedef int (*t_SSL_library_init) (void); -typedef void (*t_ERR_load_crypto_strings) (void); -typedef void (*t_ERR_load_SSL_strings) (void); -typedef SSL_METHOD *(*t_SSLv23_client_method) (void); -typedef SSL_CTX *(*t_SSL_CTX_new) (SSL_METHOD * method); -typedef char *(*t_ERR_error_string) (unsigned long e, char *buf); -typedef void (*t_SSL_load_error_strings) (void); -typedef long (*t_SSL_CTX_ctrl) (SSL_CTX * ctx, int cmd, long larg, char *parg); - -/* Library internal definictions */ -#ifdef HTS_INTERNAL_BYTECODE - -extern int SSL_is_available; -extern t_SSL_shutdown SSL_shutdown; -extern t_SSL_free SSL_free; -extern t_SSL_new SSL_new; -extern t_SSL_clear SSL_clear; -extern t_SSL_set_fd SSL_set_fd; -extern t_SSL_set_connect_state SSL_set_connect_state; -extern t_SSL_connect SSL_connect; -extern t_SSL_get_error SSL_get_error; -extern t_SSL_write SSL_write; -extern t_SSL_read SSL_read; -extern t_SSL_library_init SSL_library_init; -extern t_ERR_load_crypto_strings ERR_load_crypto_strings; -extern t_ERR_load_SSL_strings ERR_load_SSL_strings; -extern t_SSLv23_client_method SSLv23_client_method; -extern t_SSL_CTX_new SSL_CTX_new; -extern t_ERR_error_string ERR_error_string; -extern t_SSL_load_error_strings SSL_load_error_strings; -extern t_SSL_CTX_ctrl SSL_CTX_ctrl; - -#endif -/* -From /usr/include/openssl/ssl.h -*/ -#define SSL_ERROR_NONE 0 -#define SSL_ERROR_SSL 1 -#define SSL_ERROR_WANT_READ 2 -#define SSL_ERROR_WANT_WRITE 3 -#define SSL_ERROR_WANT_X509_LOOKUP 4 -#define SSL_ERROR_SYSCALL 5 /* look at error stack/return value/errno */ -#define SSL_ERROR_ZERO_RETURN 6 -#define SSL_ERROR_WANT_CONNECT 7 -#define SSL_OP_ALL 0x000FFFFFL -#define SSL_CTRL_OPTIONS 32 -#define SSL_CTX_set_options(ctx,op) \ - SSL_CTX_ctrl(ctx,SSL_CTRL_OPTIONS,op,NULL) - -//#include <openssl/bio.h> /* OpenSSL structure */ +#include <openssl/bio.h> + +/* Global SSL context */ extern SSL_CTX *openssl_ctx; #endif diff --git a/src/htslib.c b/src/htslib.c index bf6577e..cbb0005 100644 --- a/src/htslib.c +++ b/src/htslib.c @@ -2486,7 +2486,7 @@ int ident_url_absolute(const char *url, char *adr, char *fil) { strcpybuff(adr, "ftp://"); // FTP!! //!!p+=3; #if HTS_USEOPENSSL - } else if (SSL_is_available && (pos = strfield(url, "https:"))) { // HTTPS + } else if ((pos = strfield(url, "https:"))) { // HTTPS strcpybuff(adr, "https://"); #endif #if HTS_USEMMS @@ -2641,7 +2641,7 @@ HTS_INLINE void deletehttp(htsblk * r) { #endif #if HTS_USEOPENSSL /* Free OpenSSL structures */ - if (SSL_is_available && r->ssl_con) { + if (r->ssl_con) { SSL_shutdown(r->ssl_con); SSL_free(r->ssl_con); r->ssl_con = NULL; @@ -2702,7 +2702,7 @@ HTS_INLINE void deletesoc(T_SOC soc) { /* Will also clean other things */ HTS_INLINE void deletesoc_r(htsblk * r) { #if HTS_USEOPENSSL - if (SSL_is_available && r->ssl_con) { + if (r->ssl_con) { SSL_shutdown(r->ssl_con); // SSL_CTX_set_quiet_shutdown(r->ssl_con->ctx, 1); SSL_free(r->ssl_con); @@ -3075,7 +3075,7 @@ HTS_INLINE int sendc(htsblk * r, const char *s) { #endif #if HTS_USEOPENSSL - if (SSL_is_available && r->ssl) { + if (r->ssl) { n = SSL_write(r->ssl_con, s, ssz); } else #endif @@ -4871,7 +4871,7 @@ int hts_read(htsblk * r, char *buff, int size) { #endif //HTS_TOTAL_RECV_CHECK(size); // Diminuer au besoin si trop de données reçues #if HTS_USEOPENSSL - if (SSL_is_available && r->ssl) { + if (r->ssl) { retour = SSL_read(r->ssl_con, buff, size); if (retour <= 0) { int err_code = SSL_get_error(r->ssl_con, retour); @@ -5533,7 +5533,7 @@ HTSEXT_API int hts_init(void) { /* Initialize the OpensSSL library */ - if (!openssl_ctx && SSL_is_available) { + if (!openssl_ctx) { if (SSL_load_error_strings) SSL_load_error_strings(); SSL_library_init(); diff --git a/src/htsmodules.c b/src/htsmodules.c index e1d2ec6..338140a 100644 --- a/src/htsmodules.c +++ b/src/htsmodules.c @@ -64,26 +64,6 @@ t_gzread gzread = NULL; t_gzclose gzclose = NULL; #endif -int SSL_is_available = 0; -t_SSL_shutdown SSL_shutdown = NULL; -t_SSL_free SSL_free = NULL; -t_SSL_CTX_ctrl SSL_CTX_ctrl = NULL; -t_SSL_new SSL_new = NULL; -t_SSL_clear SSL_clear = NULL; -t_SSL_set_fd SSL_set_fd = NULL; -t_SSL_set_connect_state SSL_set_connect_state = NULL; -t_SSL_connect SSL_connect = NULL; -t_SSL_get_error SSL_get_error = NULL; -t_SSL_write SSL_write = NULL; -t_SSL_read SSL_read = NULL; -t_SSL_library_init SSL_library_init = NULL; -t_ERR_load_crypto_strings ERR_load_crypto_strings = NULL; -t_ERR_load_SSL_strings ERR_load_SSL_strings = NULL; -t_SSLv23_client_method SSLv23_client_method = NULL; -t_SSL_CTX_new SSL_CTX_new = NULL; -t_ERR_error_string ERR_error_string = NULL; -t_SSL_load_error_strings SSL_load_error_strings = NULL; - int V6_is_available = HTS_INET6; static char WHAT_is_available[64] = ""; @@ -280,106 +260,15 @@ void htspe_init(void) { /* Zlib is now statically linked */ gz_is_available = 1; - /* OpenSSL */ -#if HTS_DLOPEN - { - void *handle; - -#ifdef _WIN32 - handle = LoadLibraryA((char *) "ssleay32"); -#else - /* We are compatible with 0.9.6/7/8/8b and potentially above */ - static const char *const libs[] = { -#ifdef __APPLE__ - "libssl.dylib", -#endif - "libssl.so.1.0", - "libssl.so.1", - "libssl.so.1.0.0", - /* */ - "libssl.so.0", - "libssl.so.0.9", - "libssl.so.0.9.8p", - "libssl.so.0.9.8o", - "libssl.so.0.9.8n", - "libssl.so.0.9.8m", - "libssl.so.0.9.8l", - "libssl.so.0.9.8k", /* (Debarshi Ray) */ - "libssl.so.0.9.8j", /* (Debarshi Ray) */ - "libssl.so.0.9.8g", /* Added 8g release too (Debarshi Ray) */ - "libssl.so.0.9.8b", - "libssl.so.0.9.8", - "libssl.so.0.9.7", - "libssl.so.0.9.6", - "libssl.so", /* Try harder with devel link */ - NULL - }; - int i; - - for(i = 0, handle = NULL; handle == NULL && libs[i] != NULL; i++) { - handle = dlopen(libs[i], RTLD_LAZY); - } -#endif - ssl_handle = handle; - if (handle != NULL) { - SSL_shutdown = - (t_SSL_shutdown) DynamicGet(handle, (char *) "SSL_shutdown"); - SSL_free = (t_SSL_free) DynamicGet(handle, (char *) "SSL_free"); - SSL_new = (t_SSL_new) DynamicGet(handle, (char *) "SSL_new"); - SSL_clear = (t_SSL_clear) DynamicGet(handle, (char *) "SSL_clear"); - SSL_set_fd = (t_SSL_set_fd) DynamicGet(handle, (char *) "SSL_set_fd"); - SSL_set_connect_state = - (t_SSL_set_connect_state) DynamicGet(handle, - (char *) - "SSL_set_connect_state"); - SSL_connect = - (t_SSL_connect) DynamicGet(handle, (char *) "SSL_connect"); - SSL_get_error = - (t_SSL_get_error) DynamicGet(handle, (char *) "SSL_get_error"); - SSL_write = (t_SSL_write) DynamicGet(handle, (char *) "SSL_write"); - SSL_read = (t_SSL_read) DynamicGet(handle, (char *) "SSL_read"); - SSL_library_init = - (t_SSL_library_init) DynamicGet(handle, (char *) "SSL_library_init"); - ERR_load_SSL_strings = - (t_ERR_load_SSL_strings) DynamicGet(handle, - (char *) "ERR_load_SSL_strings"); - SSLv23_client_method = - (t_SSLv23_client_method) DynamicGet(handle, - (char *) "SSLv23_client_method"); - SSL_CTX_new = - (t_SSL_CTX_new) DynamicGet(handle, (char *) "SSL_CTX_new"); - SSL_load_error_strings = - (t_SSL_load_error_strings) DynamicGet(handle, - (char *) - "SSL_load_error_strings"); - SSL_CTX_ctrl = - (t_SSL_CTX_ctrl) DynamicGet(handle, (char *) "SSL_CTX_ctrl"); -#ifdef _WIN32 - handle = LoadLibraryA((char *) "libeay32"); - ssl_handle_2 = handle; -#endif - ERR_load_crypto_strings = - (t_ERR_load_crypto_strings) DynamicGet(handle, - (char *) - "ERR_load_crypto_strings"); - ERR_error_string = - (t_ERR_error_string) DynamicGet(handle, (char *) "ERR_error_string"); - - if (SSL_shutdown && SSL_free && SSL_CTX_ctrl && SSL_new && SSL_clear - && SSL_set_fd && SSL_set_connect_state && SSL_connect - && SSL_get_error && SSL_write && SSL_read && SSL_library_init - && SSLv23_client_method && SSL_CTX_new && SSL_load_error_strings - && ERR_error_string) { - SSL_is_available = 1; - } - } - } -#endif - /* */ - /* Options availability */ sprintf(WHAT_is_available, "%s%s%s", V6_is_available ? "" : "-noV6", - gz_is_available ? "" : "-nozip", SSL_is_available ? "" : "-nossl"); + gz_is_available ? "" : "-nozip", +#if HTS_USEOPENSSL + "" +#else + "-nossl" +#endif + ); } } diff --git a/src/htsparse.c b/src/htsparse.c index 73f66ac..419d882 100644 --- a/src/htsparse.c +++ b/src/htsparse.c @@ -1685,8 +1685,7 @@ int htsparse(htsmoduleStruct * str, htsmoduleStructExtended * stre) { if ((strfield(tempo, "http:")) || (strfield(tempo, "ftp:")) #if HTS_USEOPENSSL - || (SSL_is_available - && (strfield(tempo, "https:")) + || (strfield(tempo, "https:") ) #endif #if HTS_USEMMS diff --git a/src/htstools.c b/src/htstools.c index 3a5ca70..6f614b7 100644 --- a/src/htstools.c +++ b/src/htstools.c @@ -170,13 +170,9 @@ int ident_url_relatif(const char *lien, const char *origin_adr, #endif #if HTS_USEOPENSSL } else if (strfield(lien, "https://")) { - if (SSL_is_available) { - // Note: ftp:foobar.gif is not valid - if (ident_url_absolute(lien, adr, fil) == -1) { - ok = -1; // erreur URL - } - } else { - ok = -1; + // Note: ftp:foobar.gif is not valid + if (ident_url_absolute(lien, adr, fil) == -1) { + ok = -1; // erreur URL } #endif } else if ((scheme) && ((!strfield(lien, "http:")) |