From d6b579cf8c0dd7fe918e65685a8b13a12f79323c Mon Sep 17 00:00:00 2001 From: overflowerror Date: Thu, 7 Mar 2019 22:01:15 +0100 Subject: [PATCH] some test files --- home/cgi-bin/test.sh | 7 +++++++ home/index.html | 9 +++++++++ src/main.c | 32 +++++++++++++++++++++++++------- 3 files changed, 41 insertions(+), 7 deletions(-) create mode 100755 home/cgi-bin/test.sh create mode 100644 home/index.html diff --git a/home/cgi-bin/test.sh b/home/cgi-bin/test.sh new file mode 100755 index 0000000..c9a624d --- /dev/null +++ b/home/cgi-bin/test.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +echo Status: 200 OK +echo Content-Type: text/plain +echo + +echo Hallo Welt diff --git a/home/index.html b/home/index.html new file mode 100644 index 0000000..ba6a4ed --- /dev/null +++ b/home/index.html @@ -0,0 +1,9 @@ + + + + Test-Page + + +

Test Page

+ + diff --git a/src/main.c b/src/main.c index 743a234..b356c5a 100644 --- a/src/main.c +++ b/src/main.c @@ -1,39 +1,57 @@ #include #include #include +#include #include "networking.h" #include "logging.h" #include "headers.h" #include "files.h" +#include "cgi.h" struct handlerSettings { struct fileSettings fileSettings; + struct cgiSettings cgiSettings; + const char* cgiBin; }; struct handler handlerGetter(struct metaData metaData, const char* host, struct bind* bind) { struct handlerSettings* settings = (struct handlerSettings*) bind->settings.ptr; union userData data; - data.ptr = &(settings->fileSettings); - return (struct handler) { - .handler = &fileHandler, - .data = data - }; + if (strncmp(metaData.path, settings->cgiBin, strlen(settings->cgiBin)) == 0) { + data.ptr = &(settings->cgiSettings); + + return (struct handler) { + .handler = &cgiHandler, + .data = data + }; + } else { + data.ptr = &(settings->fileSettings); + + return (struct handler) { + .handler = &fileHandler, + .data = data + }; + } } int main(int argc, char** argv) { setLogging(stderr, DEBUG, true); setCriticalHandler(NULL); - char* documentRoot = realpath(".", NULL); + char* documentRoot = realpath("./home/", NULL); struct handlerSettings handlerSettings = { .fileSettings = { .documentRoot = documentRoot, .index = true - } + }, + .cgiSettings = { + .documentRoot = documentRoot + }, + .cgiBin = "/cgi-bin/" }; union userData settingsData; settingsData.ptr = &handlerSettings;