Changeset 27686


Ignore:
Timestamp:
2011-07-18T16:18:31+02:00 (7 years ago)
Author:
jow
Message:

[package] uhttpd: support building against openssl instead of cyassl, minor cleanups (#7827)

Location:
trunk/package/uhttpd
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/uhttpd/Makefile

    r27628 r27686  
    99 
    1010PKG_NAME:=uhttpd 
    11 PKG_RELEASE:=23 
     11PKG_RELEASE:=24 
    1212 
    1313PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) 
    14 PKG_BUILD_DEPENDS := libcyassl liblua 
     14PKG_CONFIG_DEPENDS := \ 
     15        CONFIG_PACKAGE_uhttpd-mod-tls_cyassl \ 
     16        CONFIG_PACKAGE_uhttpd-mod-tls_openssl 
    1517 
    1618include $(INCLUDE_DIR)/package.mk 
     
    3941  $(Package/uhttpd/default) 
    4042  TITLE+= (TLS plugin) 
    41   DEPENDS:=uhttpd +libcyassl 
     43  DEPENDS:=uhttpd +PACKAGE_uhttpd-mod-tls_cyassl:libcyassl +PACKAGE_uhttpd-mod-tls_openssl:libopenssl 
    4244endef 
    4345 
     
    4547 The TLS plugin adds HTTPS support to uHTTPd. 
    4648endef 
     49 
     50define Package/uhttpd-mod-tls/config 
     51        choice 
     52                depends on PACKAGE_uhttpd-mod-tls 
     53                prompt "TLS Provider" 
     54                default PACKAGE_uhttpd-mod-tls_cyassl 
     55 
     56                config PACKAGE_uhttpd-mod-tls_cyassl 
     57                        bool "CyaSSL" 
     58 
     59                config PACKAGE_uhttpd-mod-tls_openssl 
     60                        bool "OpenSSL" 
     61        endchoice 
     62endef 
     63 
     64UHTTPD_TLS:= 
     65TLS_CFLAGS:= 
     66 
     67ifneq ($(CONFIG_PACKAGE_uhttpd-mod-tls_cyassl),) 
     68  UHTTPD_TLS:=cyassl 
     69  TLS_CFLAGS:=-I$(STAGING_DIR)/usr/include/cyassl 
     70endif 
     71 
     72ifneq ($(CONFIG_PACKAGE_uhttpd-mod-tls_openssl),) 
     73  UHTTPD_TLS:=openssl 
     74endif 
    4775 
    4876 
     
    5886 
    5987 
    60 # hack to use CyASSL headers 
    61 TARGET_CFLAGS += -I$(firstword $(wildcard $(BUILD_DIR)/cyassl-*/include)) 
    62 TARGET_LDFLAGS += -lm 
    63 MAKE_VARS += FPIC="$(FPIC)" 
     88TARGET_CFLAGS += $(TLS_CFLAGS) 
     89MAKE_VARS += FPIC="$(FPIC)" UHTTPD_TLS="$(UHTTPD_TLS)" 
    6490 
    6591define Build/Prepare 
  • trunk/package/uhttpd/src/Makefile

    r23897 r27686  
    22LUA_SUPPORT ?= 1 
    33TLS_SUPPORT ?= 1 
     4UHTTPD_TLS ?= cyassl 
    45 
    5 CFLAGS ?= -I./lua-5.1.4/src -I./cyassl-1.4.0/include -O0 -ggdb3 
    6 LDFLAGS ?= -L./lua-5.1.4/src -L./cyassl-1.4.0/src/.libs 
     6CFLAGS ?= -I./lua-5.1.4/src -I$(TLS_INCLUDE_DIR) -O0 -ggdb3 
     7LDFLAGS ?= -L./lua-5.1.4/src -L$(TLS_LIB_DIR) 
    78 
    89CFLAGS += -Wall --std=gnu99 
    910 
    10 OBJ = uhttpd.o uhttpd-file.o uhttpd-utils.o 
    11 LIB = -Wl,--export-dynamic -lcrypt -ldl 
     11ifeq ($(UHTTPD_TLS),openssl) 
     12  TLS_LDFLAGS := -lssl 
     13  TLS_INCLUDE_DIR := ./openssl-0.9.8m/include 
     14  TLS_LIB_DIR := ./openssl-0.9.8m 
     15else 
     16  TLS_LDFLAGS := -lcyassl 
     17  TLS_INCLUDE_DIR := ./cyassl-1.4.0/include 
     18  TLS_LIB_DIR := ./cyassl-1.4.0/src/.libs 
     19endif 
    1220 
    13 TLSLIB = 
    14 LUALIB = 
     21OBJ := uhttpd.o uhttpd-file.o uhttpd-utils.o 
     22LIB := -Wl,--export-dynamic -lcrypt -ldl 
     23 
     24TLSLIB := 
     25LUALIB := 
    1526 
    1627HAVE_SHADOW=$(shell echo 'int main(void){ return !getspnam("root"); }' | \ 
     
    3041ifeq ($(LUA_SUPPORT),1) 
    3142  CFLAGS += -DHAVE_LUA 
    32   LUALIB = uhttpd_lua.so 
     43  LUALIB := uhttpd_lua.so 
    3344 
    3445  $(LUALIB): uhttpd-lua.c 
     
    4051ifeq ($(TLS_SUPPORT),1) 
    4152  CFLAGS += -DHAVE_TLS 
    42   TLSLIB = uhttpd_tls.so 
     53  TLSLIB := uhttpd_tls.so 
    4354 
    4455  $(TLSLIB): uhttpd-tls.c 
    4556                $(CC) $(CFLAGS) $(LDFLAGS) $(FPIC) \ 
    46                         -shared -lcyassl \ 
     57                        -shared $(TLS_LDFLAGS) \ 
    4758                        -o $(TLSLIB) uhttpd-tls.c 
    4859endif 
     
    5667clean: 
    5768        rm -f *.o *.so uhttpd 
    58  
  • trunk/package/uhttpd/src/uhttpd-tls.c

    r22692 r27686  
    2424SSL_CTX * uh_tls_ctx_init() 
    2525{ 
    26         SSL_CTX *c = NULL; 
     26        SSL_CTX *c; 
     27 
    2728        SSL_load_error_strings(); 
    2829        SSL_library_init(); 
     
    6061 
    6162 
    62 void uh_tls_client_accept(struct client *c) 
     63int uh_tls_client_accept(struct client *c) 
    6364{ 
     65        int rv; 
     66 
    6467        if( c->server && c->server->tls ) 
    6568        { 
    6669                c->tls = SSL_new(c->server->tls); 
    67                 SSL_set_fd(c->tls, c->socket); 
     70                if( c->tls ) 
     71                { 
     72                        if( (rv = SSL_set_fd(c->tls, c->socket)) < 1 ) 
     73                                goto cleanup; 
     74                        if( (rv = SSL_accept(c->tls)) < 1 ) 
     75                                goto cleanup; 
     76                } 
     77                else 
     78                        rv = 0; 
    6879        } 
     80        else 
     81        { 
     82                c->tls = NULL; 
     83                rv = 1; 
     84        } 
     85 
     86done: 
     87        return rv; 
     88 
     89cleanup: 
     90        SSL_free(c->tls); 
     91        c->tls = NULL; 
     92        goto done; 
    6993} 
    7094 
     
    91115        } 
    92116} 
    93  
    94  
  • trunk/package/uhttpd/src/uhttpd-tls.h

    r20428 r27686  
    2727void uh_tls_ctx_free(struct listener *l); 
    2828 
    29 void uh_tls_client_accept(struct client *c); 
     29int uh_tls_client_accept(struct client *c); 
    3030int uh_tls_client_recv(struct client *c, void *buf, int len); 
    3131int uh_tls_client_send(struct client *c, void *buf, int len); 
     
    3333 
    3434#endif 
    35  
  • trunk/package/uhttpd/src/uhttpd.c

    r27628 r27686  
    513513                                                        /* setup client tls context */ 
    514514                                                        if( conf->tls ) 
    515                                                                 conf->tls_accept(cl); 
     515                                                        { 
     516                                                                if( conf->tls_accept(cl) < 1 ) 
     517                                                                { 
     518                                                                        fprintf(stderr, 
     519                                                                                "tls_accept failed, " 
     520                                                                                "connection dropped\n"); 
     521 
     522                                                                        /* close client socket */ 
     523                                                                        close(new_fd); 
     524 
     525                                                                        /* remove from global client list */ 
     526                                                                        uh_client_remove(new_fd); 
     527 
     528                                                                        continue; 
     529                                                                } 
     530                                                        } 
    516531#endif 
    517532 
  • trunk/package/uhttpd/src/uhttpd.h

    r24952 r27686  
    9999        int (*tls_key) (SSL_CTX *c, const char *file); 
    100100        void (*tls_free) (struct listener *l); 
    101         void (*tls_accept) (struct client *c); 
     101        int (*tls_accept) (struct client *c); 
    102102        void (*tls_close) (struct client *c); 
    103103        int (*tls_recv) (struct client *c, void *buf, int len); 
     
    160160 
    161161#endif 
    162  
Note: See TracChangeset for help on using the changeset viewer.