add NO_SSL

git-svn-id: file:///raid/svn-personal/tewi/trunk@43 8739d7e6-ffea-ec47-b151-bdff447c6205
This commit is contained in:
Nishi 2024-09-18 09:19:03 +00:00
parent ce7c8c96bc
commit 4d8bc89134
11 changed files with 114 additions and 9 deletions

View File

@ -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

View 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

View 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

View 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 $@ $<

View 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;

View 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;
}

31
Server/option.c Normal file
View File

@ -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");
}

View 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) {

View 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

View 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

14
config.h Normal file
View File

@ -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