]> Nishi Git Mirror - tewi.git/commitdiff
add NO_SSL
authorNishi <nishi@nishi.boats>
Wed, 18 Sep 2024 09:19:03 +0000 (09:19 +0000)
committerNishi <nishi@nishi.boats>
Wed, 18 Sep 2024 09:19:03 +0000 (09:19 +0000)
git-svn-id: file:///raid/svn-personal/tewi/trunk@43 8739d7e6-ffea-ec47-b151-bdff447c6205

Makefile
Platform/win32.mk
Platform/win64.mk
Server/Makefile
Server/http.c
Server/main.c
Server/option.c [new file with mode: 0644]
Server/server.c
Server/tw_http.h
Server/tw_server.h
config.h [new file with mode: 0644]

index 9af3eba8a2047c28130b7591824176ecad2e2ad6..3caeb4cacc4f988399061f8fc6e711a1a4bc0c02 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -12,8 +12,11 @@ FLAGS = PWD=$(PWD) PLATFORM=$(PLATFORM) PREFIX=$(PREFIX)
 
 all: ./Server ./Module ./Manpage
 
-./Server:: ./Common
-       $(MAKE) -C $@ $(FLAGS)
+./Server/option: ./Server/option.c
+       cc -o $@ ./Server/option.c
+
+./Server:: ./Common ./Server/option
+       $(MAKE) -C $@ $(FLAGS) EXTOBJS=`./Server/option objs ../` EXTLIBS=`./Server/option libs ../`
 
 ./Module:: ./Common
        $(MAKE) -C $@ $(FLAGS)
@@ -25,10 +28,11 @@ all: ./Server ./Module ./Manpage
        $(MAKE) -C $@ $(FLAGS)
 
 format:
-       clang-format --verbose -i `find ./Server ./Common ./Module "(" -name "*.c" -or -name "*.h" ")" -and -not -name "strptime.*"`
+       clang-format --verbose -i `find ./Server ./Common ./Module "(" -name "*.c" -or -name "*.h" ")" -and -not -name "strptime.*"` config.h
 
 clean:
        $(MAKE) -C ./Server $(FLAGS) clean
        $(MAKE) -C ./Module $(FLAGS) clean
        $(MAKE) -C ./Common $(FLAGS) clean
        $(MAKE) -C ./Manpage $(FLAGS) clean
+       rm -f ./Server/option
index d7c96c0c0a4f5af2c09c6240d240b0302ab17187..2b0f554862755a4af829d485a533826d1e379a6b 100644 (file)
@@ -4,8 +4,8 @@ PREFIX = C:/Tewi
 
 CC = i686-w64-mingw32-gcc
 AR = i686-w64-mingw32-ar
-CFLAGS = -g -std=c99 -DPREFIX=\"$(PREFIX)\" -I $(PWD)/Common -I $(PWD)/openssl/include -fPIC
-LDFLAGS = -L $(PWD)/openssl/lib32
+CFLAGS = -g -std=c99 -DPREFIX=\"$(PREFIX)\" -I $(PWD)/Common -fPIC
+LDFLAGS =
 LIBS = -lws2_32
 EXEC = .exe
 LIB = .dll
index 304b0dbbb1e170b01a4ed9f52813edde06d70c28..f3faf76fd8d397dfe6d2636fed84355cdc8b93b8 100644 (file)
@@ -4,8 +4,8 @@ PREFIX = C:/Tewi
 
 CC = x86_64-w64-mingw32-gcc
 AR = x86_64-w64-mingw32-ar
-CFLAGS = -g -std=c99 -DPREFIX=\"$(PREFIX)\" -I $(PWD)/Common -I $(PWD)/openssl/include -fPIC
-LDFLAGS = -L $(PWD)/openssl/lib64
+CFLAGS = -g -std=c99 -DPREFIX=\"$(PREFIX)\" -I $(PWD)/Common -fPIC
+LDFLAGS =
 LIBS = -lws2_32
 EXEC = .exe
 LIB = .dll
index 557460feac1f61cd6b34b35306f66084b8fb0569..3bffd0f429b9a40a4635ea3e89a70b47a6cdb2f4 100644 (file)
@@ -5,12 +5,12 @@ include $(PWD)/Platform/$(PLATFORM).mk
 .PHONY: all clean
 .SUFFIXES: .c .o
 
-OBJS = version.o main.o config.o server.o ssl.o http.o module.o strptime.o
+OBJS = version.o main.o config.o server.o http.o module.o strptime.o $(EXTOBJS)
 
 all: tewi$(EXEC)
 
 tewi$(EXEC): $(OBJS) ../Common/common.a
-       $(CC) $(LDFLAGS) -o $@ $(OBJS) -lssl -lcrypto $(LIBS) ../Common/common.a
+       $(CC) $(LDFLAGS) -o $@ $(OBJS) $(EXTLIBS) $(LIBS) ../Common/common.a
 
 .c.o:
        $(CC) $(CFLAGS) -c -o $@ $<
index aa39a219be91ad2bb4e4e683e167ddaf24017606..fdfa00e54eac0783381bbbf070e6a78d7d57fa99 100644 (file)
@@ -2,6 +2,8 @@
 
 #define SOURCE
 
+#include "../config.h"
+
 #include "tw_http.h"
 
 #include "tw_server.h"
@@ -59,14 +61,18 @@ int tw_http_parse(SSL* ssl, int sock, struct tw_http_request* req) {
                struct timeval tv;
                tv.tv_sec = 5;
                tv.tv_usec = 0;
+#ifndef NO_SSL
                if(ssl == NULL || !SSL_has_pending(ssl)) {
+#endif
                        int n = select(FD_SETSIZE, &fds, NULL, NULL, &tv);
                        if(n <= 0) {
                                free(header);
                                tw_free_request(req);
                                return -1;
                        }
+#ifndef NO_SSL
                }
+#endif
                int len = tw_read(ssl, sock, buffer, 512);
                if(len <= 0) break;
                int i;
index 0208019f5b36c8a9c64e4a6bdfb466bc5ab57581..967b6f7d4b3eb4253f38167998c91151508502d3 100644 (file)
@@ -2,12 +2,16 @@
 
 #define SOURCE
 
+#include "../config.h"
+
 #include <stdio.h>
 #include <stdbool.h>
 #include <string.h>
 #include <signal.h>
 
+#ifndef NO_SSL
 #include <openssl/opensslv.h>
+#endif
 
 #include <cm_log.h>
 
@@ -28,7 +32,11 @@ int main(int argc, char** argv) {
                        if(strcmp(argv[i], "--verbose") == 0 || strcmp(argv[i], "-v") == 0) {
                                if(!cm_do_log) {
                                        cm_do_log = true;
+#ifndef NO_SSL
                                        cm_log("", "This is Tewi HTTPd, version %s, using %s", tw_get_version(), OPENSSL_VERSION_TEXT);
+#else
+                                       cm_log("", "This is Tewi HTTPd, version %s", tw_get_version());
+#endif
                                } else {
                                        cm_do_log = true;
                                }
diff --git a/Server/option.c b/Server/option.c
new file mode 100644 (file)
index 0000000..b756c58
--- /dev/null
@@ -0,0 +1,31 @@
+/* $Id$ */
+/* This file is not intended to be in the server. */
+
+#include <stdio.h>
+#include <string.h>
+
+#include "../config.h"
+
+int main(int argc, char** argv) {
+       if(argc < 3) {
+               return 1;
+       }
+       if(strcmp(argv[1], "cflags") == 0) {
+#ifndef NO_SSL
+               printf("-I %s/openssl/include", argv[2]);
+#endif
+       } else if(strcmp(argv[1], "ldflags") == 0) {
+#ifndef NO_SSL
+               printf("-I %s/openssl/lib", argv[2]);
+#endif
+       } else if(strcmp(argv[1], "objs") == 0) {
+#ifndef NO_SSL
+               printf("ssl.o");
+#endif
+       } else if(strcmp(argv[1], "libs") == 0) {
+#ifndef NO_SSL
+               printf("-lssl -lcrypto");
+#endif
+       }
+       printf("\n");
+}
index ed6ee5b3915c4d21141c1707514416e9c671aed9..367d3ac354df3a80eb8f17dffa5676d49a284749 100644 (file)
@@ -2,9 +2,14 @@
 
 #define SOURCE
 
+#include "../config.h"
+
 #include "tw_server.h"
 
+#ifndef NO_SSL
 #include "tw_ssl.h"
+#endif
+
 #include "tw_config.h"
 #include "tw_http.h"
 #include "tw_module.h"
@@ -14,6 +19,8 @@
 #include <string.h>
 #include <stdbool.h>
 #include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
 #include <sys/stat.h>
 #include <time.h>
 
@@ -142,19 +149,27 @@ int tw_server_init(void) {
 }
 
 size_t tw_read(SSL* ssl, int s, void* data, size_t len) {
+#ifndef NO_SSL
        if(ssl == NULL) {
                return recv(s, data, len, 0);
        } else {
                return SSL_read(ssl, data, len);
        }
+#else
+       return recv(s, data, len, 0);
+#endif
 }
 
 size_t tw_write(SSL* ssl, int s, void* data, size_t len) {
+#ifndef NO_SSL
        if(ssl == NULL) {
                return send(s, data, len, 0);
        } else {
                return SSL_write(ssl, data, len);
        }
+#else
+       return send(s, data, len, 0);
+#endif
 }
 
 #define ERROR_HTML \
@@ -388,6 +403,7 @@ void tw_server_pass(int sock, bool ssl, int port, SOCKADDR addr) {
 #endif
        char* name = config.hostname;
 
+#ifndef NO_SSL
        SSL_CTX* ctx = NULL;
        SSL* s = NULL;
        bool sslworks = false;
@@ -398,6 +414,9 @@ void tw_server_pass(int sock, bool ssl, int port, SOCKADDR addr) {
                if(SSL_accept(s) <= 0) goto cleanup;
                sslworks = true;
        }
+#else
+       void* s = NULL;
+#endif
        struct tw_http_request req;
        struct tw_http_response res;
        struct tw_tool tools;
@@ -660,14 +679,17 @@ void tw_server_pass(int sock, bool ssl, int port, SOCKADDR addr) {
                tw_http_error(s, sock, 400, name, port);
        }
 cleanup:
+#ifndef NO_SSL
        if(sslworks) {
                SSL_shutdown(s);
        }
        SSL_free(s);
        close_socket(sock);
+#endif
 #ifdef __MINGW32__
        _endthreadex(0);
 #endif
+       ;
 }
 
 void tw_server_loop(void) {
index 32d829155de0b8ee79da247527f35e3d0aa5ad49..1a249b36dfba5db5df668a330f338c292f81495d 100644 (file)
@@ -5,6 +5,8 @@
 
 #include <stdbool.h>
 
+#include "../config.h"
+
 struct tw_http_request {
        char* method;
        char* path;
@@ -21,9 +23,15 @@ struct tw_http_response {
 };
 
 #ifdef SOURCE
+#ifndef NO_SSL
 #include <openssl/ssl.h>
+#endif
 void tw_free_request(struct tw_http_request* req);
+#ifndef NO_SSL
 int tw_http_parse(SSL* ssl, int sock, struct tw_http_request* req);
+#else
+int tw_http_parse(void* ssl, int sock, struct tw_http_request* req);
+#endif
 #endif
 
 #endif
index eecb72c23a5d9c1a2653115686eb9e6f7dbc2665..bf75fd293d47c55a97f876a3bd4083f975fdd5d7 100644 (file)
@@ -3,11 +3,23 @@
 #ifndef __TW_SERVER_H__
 #define __TW_SERVER_H__
 
+#include "../config.h"
+
+#include <stddef.h>
+
+#ifndef NO_SSL
 #include <openssl/ssl.h>
+#endif
 
 int tw_server_init(void);
 void tw_server_loop(void);
+
+#ifndef NO_SSL
 size_t tw_read(SSL* ssl, int s, void* data, size_t len);
 size_t tw_write(SSL* ssl, int s, void* data, size_t len);
+#else
+size_t tw_read(void* ssl, int s, void* data, size_t len);
+size_t tw_write(void* ssl, int s, void* data, size_t len);
+#endif
 
 #endif
diff --git a/config.h b/config.h
new file mode 100644 (file)
index 0000000..7d9d770
--- /dev/null
+++ b/config.h
@@ -0,0 +1,14 @@
+/* $Id$ */
+
+#ifndef __CONFIG_H__
+#define __CONFIG_H__
+
+#undef NO_SSL
+
+/* DO NOT EDIT BELOW THIS LINE */
+
+#ifdef NO_SSL
+#define SSL void
+#endif
+
+#endif