X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=lib%2Fsilchttp%2Ftests%2Ftest_silchttpserver.c;fp=lib%2Fsilchttp%2Ftests%2Ftest_silchttpserver.c;h=e4fc526ae568f3ff592df33804339b65faf540e0;hp=0000000000000000000000000000000000000000;hb=c33005f2f5ead342fd0417931e38013aacfb98b8;hpb=291aa51d0524634dee7b7c92f7bf73df06c6ebdc diff --git a/lib/silchttp/tests/test_silchttpserver.c b/lib/silchttp/tests/test_silchttpserver.c new file mode 100644 index 00000000..e4fc526a --- /dev/null +++ b/lib/silchttp/tests/test_silchttpserver.c @@ -0,0 +1,98 @@ +/* SilcHttpServer tests */ + +#include "silc.h" +#include "../silchttpserver.h" + +static void http_callback(SilcHttpServer httpd, SilcHttpConnection conn, + const char *uri, const char *method, + SilcBuffer data, void *context) +{ + SilcBufferStruct page; + + SILC_LOG_DEBUG(("HTTP data received, URI:%s, method:%s", uri, method)); + + if (!strcasecmp(method, "GET")) { + /* Send our default page */ + if (!strcmp(uri, "/") || !strcmp(uri, "/index.html")) { + memset(&page, 0, sizeof(page)); + silc_buffer_strformat(&page, + "", + silc_http_server_get_header(httpd, conn, + "User-Agent"), + "

OUR DEFAULT PAGE IS THIS: ", + silc_time_string(silc_time()), + "

" + "" + "
" + " Male
" + " Female
" + " " + "

" + "", + SILC_STRFMT_END); + silc_http_server_add_header(httpd, conn, "X-Date", + silc_time_string(silc_time())); + silc_http_server_send(httpd, conn, &page); + silc_buffer_purge(&page); + return; + } + } + + if (!strcasecmp(method, "POST")) { + if (strcmp(uri, "/posttest")) + return; + memset(&page, 0, sizeof(page)); + silc_buffer_strformat(&page, + "", + "POST PROCESSED:", + silc_buffer_data(data), + "", + SILC_STRFMT_END); + silc_http_server_add_header(httpd, conn, "X-Date", + silc_time_string(silc_time())); + silc_http_server_send(httpd, conn, &page); + silc_buffer_purge(&page); + return; + } + + silc_http_server_send_error(httpd, conn, "404 Not Found", + "

404 Not Found: The page you are looking for cannot be located

"); +} + +int main(int argc, char **argv) +{ + SilcBool success = FALSE; + SilcSchedule schedule; + SilcHttpServer httpd; + + if (argc > 1 && !strcmp(argv[1], "-d")) { + silc_log_debug(TRUE); + silc_log_debug_hexdump(TRUE); + silc_log_set_debug_string("*http*,*mime*"); + } + + signal(SIGPIPE, SIG_IGN); + + SILC_LOG_DEBUG(("Allocating scheduler")); + schedule = silc_schedule_init(0, NULL); + if (!schedule) + goto err; + + SILC_LOG_DEBUG(("Allocating HTTP server at 127.0.0.1:5000")); + httpd = silc_http_server_alloc("127.0.0.1", 5000, 0, schedule, + http_callback, NULL); + if (!httpd) + goto err; + + silc_schedule(schedule); + + silc_schedule_uninit(schedule); + + success = TRUE; + + err: + SILC_LOG_DEBUG(("Testing was %s", success ? "SUCCESS" : "FAILURE")); + fprintf(stderr, "Testing was %s\n", success ? "SUCCESS" : "FAILURE"); + + return success; +}