From 46537ce9ceba2bdc9a375a4ace120b8db7584631 Mon Sep 17 00:00:00 2001 From: celest Date: Mon, 21 Mar 2005 06:03:14 +0000 Subject: git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@1259 54d463be-8e91-2dee-dedb-b68131a5f0ec --- webserver/Makefile | 26 --------- webserver/doc/API.txt | 50 ---------------- webserver/doc/README | 11 ---- webserver/generate.c | 38 ------------- webserver/htmlstyle.c | 51 ----------------- webserver/logs.c | 8 --- webserver/main.c | 142 ---------------------------------------------- webserver/pages/about.c | 6 -- webserver/pages/notdone.c | 5 -- webserver/pages/sample.c | 24 -------- webserver/parse.c | 135 ------------------------------------------- 11 files changed, 496 deletions(-) delete mode 100644 webserver/Makefile delete mode 100644 webserver/doc/API.txt delete mode 100644 webserver/doc/README delete mode 100644 webserver/generate.c delete mode 100644 webserver/htmlstyle.c delete mode 100644 webserver/logs.c delete mode 100644 webserver/main.c delete mode 100644 webserver/pages/about.c delete mode 100644 webserver/pages/notdone.c delete mode 100644 webserver/pages/sample.c delete mode 100644 webserver/parse.c diff --git a/webserver/Makefile b/webserver/Makefile deleted file mode 100644 index 065c1ffc8..000000000 --- a/webserver/Makefile +++ /dev/null @@ -1,26 +0,0 @@ -cc = gcc - -all: - #Generate framework... - $(cc) -c parse.c - $(cc) -c generate.c - $(cc) -c htmlstyle.c - $(cc) -c logs.c - - #Generate "pages"... - cd pages && $(cc) -c about.c && cd .. - cd pages && $(cc) -c sample.c && cd .. - cd pages && $(cc) -c notdone.c && cd .. - - #Building the server... - $(cc) -o webserver main.c parse.o generate.o htmlstyle.o \ - logs.o pages/about.o pages/sample.o pages/notdone.o - - - - -clean: - rm -f *.o - rm -f pages/*.o - rm -f webserver - diff --git a/webserver/doc/API.txt b/webserver/doc/API.txt deleted file mode 100644 index c80f7bd44..000000000 --- a/webserver/doc/API.txt +++ /dev/null @@ -1,50 +0,0 @@ -Here's the webserver API, so you can work on the webserver. - -My personal goal is to make this interface simple, so that coding it -will be like coding in some scripting language... - - - -char *get_param(char in_string[500], char swhat[500]); - -This function simply returns various data from the query string. - *Pass get_param NOTHING longer than 500 in length! - - What do I pass where in_string is? - The query string. - - What do I pass where swhat is? - One of two things... - Either 0 for the path of the 'page' - or you can pass it the param you wish to lookup. - - - - - - -char *get_query(char *inquery); - -This function simply returns a query string from the raw server request. -This is used once in main, I doubt you'll need it. - - - - - -void web_send(int sockin, char *in_data); - -Super easy way of sending data to a webpage! -Simply put in the socket name and then the data. - - Ex: - web_send(socket, "I like cheese!\n"); - - - - -char *html_header(char* title); -Easy way to print the eAthena header for the server. - - Ex: - web_send(sockethere, html_header("About")); diff --git a/webserver/doc/README b/webserver/doc/README deleted file mode 100644 index 0e94ff2ae..000000000 --- a/webserver/doc/README +++ /dev/null @@ -1,11 +0,0 @@ -This readme is intended for the programmers of eAthena. - -This webserver's apis are in API.txt. - -To make this simple, generate.c should handle most of the work this sever does -in terms of what people see. - -When a request is made the server shoots it off to generate.c. - -You are welcome to create more functions used by generate.c to generate pages -though, so don't feel limited by that one file. diff --git a/webserver/generate.c b/webserver/generate.c deleted file mode 100644 index ad050db4c..000000000 --- a/webserver/generate.c +++ /dev/null @@ -1,38 +0,0 @@ - -void generate_page(char password[25], int sock_in, char *query, char *ip) -{ - char *page = get_param(query, 0); - char *ppass = get_param(query, "password"); - - - if ( (ppass == 0) || (strcmp(password, ppass) != 0) ) - { - web_send(sock_in, html_header("Enter your password")); - web_send(sock_in, "

NOT LOGGED IN!

\n"); - web_send(sock_in, "Enter your password:
\n\n"); - web_send(sock_in, "\n"); - } - else - { - - - //To make this simple, we will have a bunch of if statements - //that then shoot out data off into functions. - - - //The 'index' - if ( strcmp(page, "/") == 0 ) - generate_notdone(sock_in, query, ip); - - - //About page: - if ( strcmp(page, "/about.html") == 0 ) - generate_about(sock_in, query, ip); - - - //Test page: - if ( strcmp(page, "/testing/") == 0 ) - generate_sample(sock_in, query, ip); - - } -} diff --git a/webserver/htmlstyle.c b/webserver/htmlstyle.c deleted file mode 100644 index c3a4b927a..000000000 --- a/webserver/htmlstyle.c +++ /dev/null @@ -1,51 +0,0 @@ -char output[10000]; - -char *html_header(char *title) -{ - memset(output, 0x0, 10000); - char *text = "\n" - "
\n" - "\n" - "
\n" - "\"Athena\"\n" - "
\n" - "
\n"; - "\n" - "
" - "
" - "\n" - "To the Forum
\n" - "\n" - "" - "
\n" - "
\n" - "Athena « Portal »
\n"; - - sprintf(output, "%s\n%s\n", title, text); - - return output; -} - - - -char *html_start_form(char *location, char *action) -{ - memset(output, 0x0, 10000); - sprintf(output, "", location, action); - return output; - - -} - - -char *html_end_forum(void) -{ - return "
"; -} - - - diff --git a/webserver/logs.c b/webserver/logs.c deleted file mode 100644 index 405b4882b..000000000 --- a/webserver/logs.c +++ /dev/null @@ -1,8 +0,0 @@ -#include - -void log_visit(char *query, char *ip) -{ - time_t timer; - timer=time(NULL); - printf("%s - \"%s\" - %s", ip, query, asctime(localtime(&timer))); -} diff --git a/webserver/main.c b/webserver/main.c deleted file mode 100644 index 59362558e..000000000 --- a/webserver/main.c +++ /dev/null @@ -1,142 +0,0 @@ -/*************************************************************************** - description - ------------------- - author : (C) 2004 by Michael J. Flickinger - email : mjflick@cpan.org - - ***************************************************************************/ - -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define BLOG 10 - -char *header = "\n"; -char recvin[500], password[25]; -int s_port; - -void sigchld_handler(int s) -{ - while(wait(NULL) > 0); -} - -int main(int argc, char **argv) -{ - if (argc < 3) - { - printf("eAthena Web Server\n"); - printf("usage: %s [password] [port]\n", argv[0]); - exit(0); - } - - s_port = atoi(argv[2]); - - if ((s_port < 1) || (s_port > 65534)) - { - printf("Error: The port you choose is not valid port.\n"); - exit(0); - } - - if (strlen(argv[1]) > 25) - { - printf("Error: Your password is too long.\n"); - printf("It must be shorter than 25 characters.\n"); - exit(0); - } - - memset(password, 0x0, 25); - memcpy(password, argv[1], strlen(argv[1])); - - int sockfd, new_fd; - struct sockaddr_in my_addr; - struct sockaddr_in their_addr; - int sin_size; - - struct sigaction sa; - - int yes=1; - - if ((sockfd = socket(AF_INET, SOCK_STREAM,0)) == -1) - { - perror("Darn, this is broken."); - exit(0); - } - - if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) == -1) - { - perror("Error... :-("); - } - - //Now we know we have a working socket. :-) - - my_addr.sin_family = AF_INET; - my_addr.sin_port = htons(s_port); - my_addr.sin_addr.s_addr = INADDR_ANY; - memset(&(my_addr.sin_zero), '\0', 8); - - if ( bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) - { - perror("can not bind to this port"); - exit(0); - } - - if ( listen(sockfd, BLOG) == -1) - { - perror("can not listen on port"); - exit(0); - } - - sa.sa_handler = sigchld_handler; - - sigemptyset(&sa.sa_mask); - sa.sa_flags = SA_RESTART; - - if (sigaction(SIGCHLD, &sa, NULL) == -1) - { - perror("sigaction sucks"); - exit(0); - } - - printf("The eAthena webserver is up and listening on port %i.\n", s_port); - - while(1) - { - sin_size = sizeof(struct sockaddr_in); - new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size); - - if (!fork()) - { - close(sockfd); - memset(recvin, 0x0, 500); - recv(new_fd, recvin, 500, 0); - send(new_fd, header, strlen(header), 0); - generate_page(password, new_fd, get_query(recvin), inet_ntoa(their_addr.sin_addr)); - log_visit(get_query(recvin), inet_ntoa(their_addr.sin_addr)); - - close(new_fd); - exit(0); - } - close(new_fd); - } - - return 0; -} diff --git a/webserver/pages/about.c b/webserver/pages/about.c deleted file mode 100644 index 2b0002ad8..000000000 --- a/webserver/pages/about.c +++ /dev/null @@ -1,6 +0,0 @@ -void generate_about(int sock_in, char *query, char *ip) -{ -//printf("%s", html_header("About")); - web_send(sock_in, html_header("About")); - web_send(sock_in, "
eAthena Web Server!
\n"); -} diff --git a/webserver/pages/notdone.c b/webserver/pages/notdone.c deleted file mode 100644 index a6492e361..000000000 --- a/webserver/pages/notdone.c +++ /dev/null @@ -1,5 +0,0 @@ -void generate_notdone(int sock_in, char *query, char *ip) -{ - web_send(sock_in, "Not here!\n"); - web_send(sock_in, "

This page/feature is not done yet.
\n

"); -} diff --git a/webserver/pages/sample.c b/webserver/pages/sample.c deleted file mode 100644 index be900a1bf..000000000 --- a/webserver/pages/sample.c +++ /dev/null @@ -1,24 +0,0 @@ - - -void generate_sample(int sock_in, char *query, char *ip) -{ - - char *name = get_param(query, "name"); - - web_send(sock_in, "SAMPLE\n"); - - - //If a name was not entered... - if ( name == '\0' ) - { - web_send(sock_in, "
\n"); - web_send(sock_in, "\n"); - web_send(sock_in, "\n"); - } - else - { - web_send(sock_in, "Your name is: "); - web_send(sock_in, get_param(query, "name")); - } -printf("OK!\n"); -} diff --git a/webserver/parse.c b/webserver/parse.c deleted file mode 100644 index 8e54a81de..000000000 --- a/webserver/parse.c +++ /dev/null @@ -1,135 +0,0 @@ -#include - -char filtered_query[2000]; -char rdata[500]; -char param_n[500]; -char param_d[500]; - - -char *get_query(char *inquery) -{ - memset(filtered_query, 0x0, 2000); - sscanf(inquery, "GET %s %[$]", filtered_query); - return(filtered_query); -} - -void web_send(int sockin, char *in_data) -{ - send(sockin, in_data, strlen(in_data), 0); -} - - -//THIS IS BAD CODE BE CAREFULL WITH IT! -//Watch out for buffer overflow... -//When using please make sure to check the string size. - -//Also note: -//I take no pride in this code, it is a really bad way of doing this... -char *get_param(char in_string[500], char swhat[500]) -{ - int i = 0; - int marker, iswitch, pint, dint; - char flux[500]; - memset(flux, 0x0, 500); - - //Get the path of out "page" - if (swhat == 0) - { - //while i is not equal to array size - while (i != 500) - { - //if there is a question mark, halt! - if (in_string[i] == '?') - { - i = 499; - } - else - rdata[i] = in_string[i]; - - i++; - } - return rdata; - } - else //so, we want a param... - { - //calculate where param begins - while (i != 500) - { - if (in_string[i] == '?') - { - marker = i + 1; - i = 499; - } - i++; - } - - i = 0; - - //keep morons from trying to crash this - if ((marker > 500)||(marker < 1)) - marker = 500; - - while(marker != 500) - { - if ((in_string[marker] != '&') && (in_string[marker] != '\0')) - { - flux[i] = in_string[marker]; - i++; - } - else - { - - //we have a param, now we must dig through it - - //clear temp vars - memset(param_n, 0x0, 500); - memset(param_d, 0x0, 500); - iswitch = 0; - pint = 0; - dint = 0; - i = 0; - - //split result into param_n and param_d - while(i != 500) - { - if ( (flux[i] != '=') && (flux[i] != '\0') ) - { - if (iswitch == 0) - { - param_n[pint] = flux[i]; - pint++; - } - else - { - param_d[dint] = flux[i]; - dint++; - } - } - else - { - iswitch = 1; - } - if (flux[i] == '\0') - i = 499; - - i++; - } - - if ( strcmp(param_n, swhat) == 0 ) - { - return param_d; - } - - i = 0; - } - - if (in_string[marker] == '\0') - { - marker = 499; - } - marker++; - } - return 0; - } -} - -- cgit v1.2.3-70-g09d2