iissue #3 (rejecting http) - fiche - A pastebin adjusted for gopher use Err vernunftzentrum.de 70 hgit clone git://vernunftzentrum.de/fiche.git URL:git://vernunftzentrum.de/fiche.git vernunftzentrum.de 70 1Log /ckeen/repos/fiche/log.gph vernunftzentrum.de 70 1Files /ckeen/repos/fiche/files.gph vernunftzentrum.de 70 1Refs /ckeen/repos/fiche/refs.gph vernunftzentrum.de 70 1LICENSE /ckeen/repos/fiche/file/LICENSE.gph vernunftzentrum.de 70 i--- Err vernunftzentrum.de 70 1commit 33f00487d0baba30eac8db396af42919e2715601 /ckeen/repos/fiche/commit/33f00487d0baba30eac8db396af42919e2715601.gph vernunftzentrum.de 70 1parent 0c3e6aacd439f00940f12f4dd83c363eacea93ca /ckeen/repos/fiche/commit/0c3e6aacd439f00940f12f4dd83c363eacea93ca.gph vernunftzentrum.de 70 hAuthor: solusipse URL:mailto:solus1ps3@gmail.com vernunftzentrum.de 70 iDate: Thu, 26 Sep 2013 12:36:29 +0200 Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iissue #3 (rejecting http) Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iDiffstat: Err vernunftzentrum.de 70 i fiche.c | 24 ++++++++++++++++++++++-- Err vernunftzentrum.de 70 i fiche.h | 2 +- Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i2 files changed, 23 insertions(+), 3 deletions(-) Err vernunftzentrum.de 70 i--- Err vernunftzentrum.de 70 1diff --git a/fiche.c b/fiche.c /ckeen/repos/fiche/file/fiche.c.gph vernunftzentrum.de 70 i@@ -66,12 +66,12 @@ void *thread_connection(void *args) Err vernunftzentrum.de 70 i printf("Rejected connection from unknown user.\n"); Err vernunftzentrum.de 70 i display_line(); Err vernunftzentrum.de 70 i save_log(NULL, data.ip_address, data.hostname); Err vernunftzentrum.de 70 i- write(connection_socket, "You are not whitelisted!\n", 17); Err vernunftzentrum.de 70 i+ write(connection_socket, "You are not whitelisted!\n", 26); Err vernunftzentrum.de 70 i close(connection_socket); Err vernunftzentrum.de 70 i pthread_exit(NULL); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- if ((BANLIST != NULL)) Err vernunftzentrum.de 70 i+ if (BANLIST != NULL) Err vernunftzentrum.de 70 i if (check_banlist(data.ip_address) != NULL) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i printf("Rejected connection from banned user.\n"); Err vernunftzentrum.de 70 i@@ -82,6 +82,16 @@ void *thread_connection(void *args) Err vernunftzentrum.de 70 i pthread_exit(NULL); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i+ if (check_protocol(buffer) == 1) Err vernunftzentrum.de 70 i+ { Err vernunftzentrum.de 70 i+ printf("Rejected due to wrong protocol.\n"); Err vernunftzentrum.de 70 i+ display_line(); Err vernunftzentrum.de 70 i+ save_log(NULL, data.ip_address, data.hostname); Err vernunftzentrum.de 70 i+ write(connection_socket, "Use netcat!", 11); Err vernunftzentrum.de 70 i+ close(connection_socket); Err vernunftzentrum.de 70 i+ pthread_exit(NULL); Err vernunftzentrum.de 70 i+ } Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i if (status != -1) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i char slug[SLUG_SIZE+8]; Err vernunftzentrum.de 70 i@@ -327,6 +337,16 @@ void set_uid_gid(char *username) Err vernunftzentrum.de 70 i GID = userdata->pw_gid; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i+int check_protocol(char *buffer) Err vernunftzentrum.de 70 i+{ Err vernunftzentrum.de 70 i+ if (strlen(buffer) < 1) Err vernunftzentrum.de 70 i+ return 1; Err vernunftzentrum.de 70 i+ if ((strncmp(buffer, "GET", 3) == 0)||(strncmp(buffer, "POST", 4) == 0)) Err vernunftzentrum.de 70 i+ if (strstr(buffer, "HTTP/1.")) Err vernunftzentrum.de 70 i+ return 1; Err vernunftzentrum.de 70 i+ return 0; Err vernunftzentrum.de 70 i+} Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i void set_basedir() Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i BASEDIR = getenv("HOME"); Err vernunftzentrum.de 70 1diff --git a/fiche.h b/fiche.h /ckeen/repos/fiche/file/fiche.h.gph vernunftzentrum.de 70 i@@ -60,11 +60,11 @@ const char *symbols = "abcdefghijklmnopqrstuvwxyz0123456789"; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i int create_socket(); Err vernunftzentrum.de 70 i int create_directory(char *slug); Err vernunftzentrum.de 70 i+int check_protocol(char *buffer); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i void bind_to_port(int listen_socket, struct sockaddr_in serveraddr); Err vernunftzentrum.de 70 i void display_line(){printf("====================================\n");} Err vernunftzentrum.de 70 i void error(char *error_code){perror(error_code); exit(1);} Err vernunftzentrum.de 70 i-void nerror(char *error_code){perror(error_code);} Err vernunftzentrum.de 70 i void display_date(); Err vernunftzentrum.de 70 i void perform_connection(int listen_socket); Err vernunftzentrum.de 70 i void generate_url(char *buffer, char *slug, size_t slug_length); Err vernunftzentrum.de 70 .