iadded whitelist - 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 0eedbf68c00f142e8db1d438bf506a6af37d3010 /ckeen/repos/fiche/commit/0eedbf68c00f142e8db1d438bf506a6af37d3010.gph vernunftzentrum.de 70 1parent d1a66efe6e498d93f7319a2cea8071a340c756d1 /ckeen/repos/fiche/commit/d1a66efe6e498d93f7319a2cea8071a340c756d1.gph vernunftzentrum.de 70 hAuthor: solusipse URL:mailto:solus1ps3@gmail.com vernunftzentrum.de 70 iDate: Sat, 14 Sep 2013 00:17:26 +0200 Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iadded whitelist Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iDiffstat: Err vernunftzentrum.de 70 i fiche.c | 35 +++++++++++++++++++++++++------- Err vernunftzentrum.de 70 i fiche.h | 4 +++- Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i2 files changed, 31 insertions(+), 8 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@@ -60,7 +60,18 @@ void *thread_connection(void *args) Err vernunftzentrum.de 70 i bzero(buffer, BUFSIZE); Err vernunftzentrum.de 70 i int status = recv(connection_socket, buffer, BUFSIZE, MSG_WAITALL); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- if (BANLIST != NULL) Err vernunftzentrum.de 70 i+ if (WHITELIST != NULL) Err vernunftzentrum.de 70 i+ if (check_whitelist(data.ip_address) == NULL) Err vernunftzentrum.de 70 i+ { 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+ 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 (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@@ -177,11 +188,17 @@ void save_log(char *slug, char *hostaddrp, char *h_name) Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i char *check_banlist(char *ip_address) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i- load_banlist(BANFILE); Err vernunftzentrum.de 70 i+ load_list(BANFILE, 0); Err vernunftzentrum.de 70 i return strstr(BANLIST, ip_address); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i-void load_banlist(char *file_path) Err vernunftzentrum.de 70 i+char *check_whitelist(char *ip_address) Err vernunftzentrum.de 70 i+{ Err vernunftzentrum.de 70 i+ load_list(WHITEFILE, 1); Err vernunftzentrum.de 70 i+ return strstr(WHITELIST, ip_address); Err vernunftzentrum.de 70 i+} Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+void load_list(char *file_path, int type) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i FILE *fp = fopen(file_path, "r"); Err vernunftzentrum.de 70 i fseek(fp, 0, SEEK_END); Err vernunftzentrum.de 70 i@@ -189,12 +206,15 @@ void load_banlist(char *file_path) Err vernunftzentrum.de 70 i fseek(fp, 0, SEEK_SET); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i char *buffer = malloc(fsize + 1); Err vernunftzentrum.de 70 i- Err vernunftzentrum.de 70 i fread(buffer, fsize, 1, fp); Err vernunftzentrum.de 70 i fclose(fp); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i buffer[fsize] = 0; Err vernunftzentrum.de 70 i- BANLIST = buffer; Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ if (type == 0) Err vernunftzentrum.de 70 i+ BANLIST = buffer; Err vernunftzentrum.de 70 i+ else Err vernunftzentrum.de 70 i+ WHITELIST = buffer; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i free(buffer); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i@@ -330,7 +350,7 @@ void parse_parameters(int argc, char **argv) Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i case 'b': Err vernunftzentrum.de 70 i BANFILE = optarg; Err vernunftzentrum.de 70 i- load_banlist(BANFILE); Err vernunftzentrum.de 70 i+ load_list(BANFILE, 0); Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i case 's': Err vernunftzentrum.de 70 i SLUG_SIZE = atoi(optarg); Err vernunftzentrum.de 70 i@@ -349,7 +369,8 @@ void parse_parameters(int argc, char **argv) Err vernunftzentrum.de 70 i set_uid_gid(optarg); Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i case 'w': Err vernunftzentrum.de 70 i- WHITELIST = optarg; Err vernunftzentrum.de 70 i+ WHITEFILE = optarg; Err vernunftzentrum.de 70 i+ load_list(WHITEFILE, 1); Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i default: Err vernunftzentrum.de 70 i printf("usage: fiche [-bdpqs].\n"); Err vernunftzentrum.de 70 1diff --git a/fiche.h b/fiche.h /ckeen/repos/fiche/file/fiche.h.gph vernunftzentrum.de 70 i@@ -47,6 +47,7 @@ char *LOG; Err vernunftzentrum.de 70 i char *BASEDIR; Err vernunftzentrum.de 70 i char *BANLIST; Err vernunftzentrum.de 70 i char *BANFILE; Err vernunftzentrum.de 70 i+char *WHITEFILE; Err vernunftzentrum.de 70 i char *WHITELIST; Err vernunftzentrum.de 70 i int PORT = 9999; Err vernunftzentrum.de 70 i int SLUG_SIZE = 4; Err vernunftzentrum.de 70 i@@ -69,7 +70,7 @@ void generate_url(char *buffer, char *slug); Err vernunftzentrum.de 70 i void save_to_file(char *buffer, char *slug); Err vernunftzentrum.de 70 i void startup_message(); Err vernunftzentrum.de 70 i void set_basedir(); Err vernunftzentrum.de 70 i-void load_banlist(); Err vernunftzentrum.de 70 i+void load_list(char *file_path, int type); Err vernunftzentrum.de 70 i void parse_parameters(int argc, char **argv); Err vernunftzentrum.de 70 i void save_log(char *slug, char *hostaddrp, char *h_name); Err vernunftzentrum.de 70 i void change_owner(char *directory); Err vernunftzentrum.de 70 i@@ -77,6 +78,7 @@ void set_uid_gid(); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i char *return_line(){return("\n====================================");} Err vernunftzentrum.de 70 i char *check_banlist(char *ip_address); Err vernunftzentrum.de 70 i+char *check_whitelist(char *ip_address); Err vernunftzentrum.de 70 i char *get_date(); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i struct sockaddr_in set_address(struct sockaddr_in serveraddr); Err vernunftzentrum.de 70 .