iadded feature of changing user - 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 d1a66efe6e498d93f7319a2cea8071a340c756d1 /ckeen/repos/fiche/commit/d1a66efe6e498d93f7319a2cea8071a340c756d1.gph vernunftzentrum.de 70 1parent d6865f63f2725bb0f447cfb3f113abeb1376a73c /ckeen/repos/fiche/commit/d6865f63f2725bb0f447cfb3f113abeb1376a73c.gph vernunftzentrum.de 70 hAuthor: solusipse URL:mailto:solus1ps3@gmail.com vernunftzentrum.de 70 iDate: Fri, 13 Sep 2013 23:51:58 +0200 Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iadded feature of changing user Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iDiffstat: Err vernunftzentrum.de 70 i fiche.c | 42 +++++++++++++++++++++++-------- Err vernunftzentrum.de 70 i fiche.h | 14 ++++++++++---- Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i2 files changed, 42 insertions(+), 14 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@@ -10,9 +10,9 @@ Live example: http://code.solusipse.net/ Err vernunftzentrum.de 70 i ------------------------------------------------------------------------------- Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i usage: fiche [-bdpqs]. Err vernunftzentrum.de 70 i- [-d domain] [-p port] [-s slug_size] Err vernunftzentrum.de 70 i- [-o output directory] [-B buffer_size] Err vernunftzentrum.de 70 i- [-l log file] [-q queue_size] [-b banlist] Err vernunftzentrum.de 70 i+ [-d domain] [-p port] [-s slug size] Err vernunftzentrum.de 70 i+ [-o output directory] [-B buffer size] [-u user name] Err vernunftzentrum.de 70 i+ [-l log file] [-b banlist] [-w whitelist] Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i Compile with Makefile or manually with -O2 and -pthread flags. Err vernunftzentrum.de 70 i To install use `make install` command. Err vernunftzentrum.de 70 i@@ -254,6 +254,8 @@ int create_directory(char *slug) Err vernunftzentrum.de 70 i mkdir(BASEDIR, S_IRWXU | S_IRGRP | S_IROTH | S_IXOTH | S_IXGRP); Err vernunftzentrum.de 70 i int result = mkdir(directory, S_IRWXU | S_IRGRP | S_IROTH | S_IXOTH | S_IXGRP); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i+ change_owner(directory); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i free(directory); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i return result; Err vernunftzentrum.de 70 i@@ -271,11 +273,29 @@ void save_to_file(char *slug, char *buffer) Err vernunftzentrum.de 70 i fprintf(fp, "%s", buffer); Err vernunftzentrum.de 70 i fclose(fp); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i+ change_owner(directory); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i printf("Saved to: %s\n", directory); Err vernunftzentrum.de 70 i display_line(); Err vernunftzentrum.de 70 i free(directory); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i+void change_owner(char *directory) Err vernunftzentrum.de 70 i+{ Err vernunftzentrum.de 70 i+ if ((UID != -1)&&(GID != -1)) Err vernunftzentrum.de 70 i+ chown(directory, UID, GID); Err vernunftzentrum.de 70 i+} Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+void set_uid_gid(char *username) Err vernunftzentrum.de 70 i+{ Err vernunftzentrum.de 70 i+ struct passwd *userdata = getpwnam(username); Err vernunftzentrum.de 70 i+ if (userdata == NULL) Err vernunftzentrum.de 70 i+ error(); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ UID = userdata->pw_uid; Err vernunftzentrum.de 70 i+ GID = userdata->pw_gid; 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 i@@ -295,7 +315,7 @@ void parse_parameters(int argc, char **argv) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i int c; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- while ((c = getopt (argc, argv, "p:b:q:s:d:o:l:B:")) != -1) Err vernunftzentrum.de 70 i+ while ((c = getopt (argc, argv, "p:b:s:d:o:l:B:u:w:")) != -1) Err vernunftzentrum.de 70 i switch (c) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i case 'd': Err vernunftzentrum.de 70 i@@ -312,10 +332,6 @@ void parse_parameters(int argc, char **argv) Err vernunftzentrum.de 70 i BANFILE = optarg; Err vernunftzentrum.de 70 i load_banlist(BANFILE); Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i- case 'q': Err vernunftzentrum.de 70 i- QUEUE_SIZE = atoi(optarg); Err vernunftzentrum.de 70 i- printf("Queue size set to: %d.\n", QUEUE_SIZE); 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 printf("Slug size set to: %d.\n", SLUG_SIZE); Err vernunftzentrum.de 70 i@@ -329,11 +345,17 @@ void parse_parameters(int argc, char **argv) Err vernunftzentrum.de 70 i LOG = optarg; Err vernunftzentrum.de 70 i printf("Log file: %s\n", LOG); Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i+ case 'u': 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+ break; Err vernunftzentrum.de 70 i default: Err vernunftzentrum.de 70 i printf("usage: fiche [-bdpqs].\n"); Err vernunftzentrum.de 70 i printf(" [-d domain] [-p port] [-s slug_size]\n"); Err vernunftzentrum.de 70 i- printf(" [-o output directory] [-B buffer_size]\n"); Err vernunftzentrum.de 70 i- printf(" [-l log file] [-q queue_size] [-b banlist]\n"); Err vernunftzentrum.de 70 i+ printf(" [-o output directory] [-B buffer_size] [-u user name]\n"); Err vernunftzentrum.de 70 i+ printf(" [-l log file] [-b banlist] [-w whitelist]\n"); Err vernunftzentrum.de 70 i exit(1); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i \ No newline at end of file Err vernunftzentrum.de 70 1diff --git a/fiche.h b/fiche.h /ckeen/repos/fiche/file/fiche.h.gph vernunftzentrum.de 70 i@@ -10,9 +10,9 @@ Live example: http://code.solusipse.net/ Err vernunftzentrum.de 70 i ------------------------------------------------------------------------------- Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i usage: fiche [-bdpqs]. Err vernunftzentrum.de 70 i- [-d domain] [-p port] [-s slug_size] Err vernunftzentrum.de 70 i- [-o output directory] [-B buffer_size] Err vernunftzentrum.de 70 i- [-l log file] [-q queue_size] Err vernunftzentrum.de 70 i+ [-d domain] [-p port] [-s slug size] Err vernunftzentrum.de 70 i+ [-o output directory] [-B buffer size] [-u user name] Err vernunftzentrum.de 70 i+ [-l log file] [-b banlist] [-w whitelist] Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i Compile with Makefile or manually with -O2 and -pthread flags. Err vernunftzentrum.de 70 i To install use `make install` command. Err vernunftzentrum.de 70 i@@ -27,6 +27,7 @@ $ cat fiche.c | nc localhost 9999 Err vernunftzentrum.de 70 i #ifndef FICHE_H Err vernunftzentrum.de 70 i #define FICHE_H Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i+#include Err vernunftzentrum.de 70 i #include Err vernunftzentrum.de 70 i #include Err vernunftzentrum.de 70 i #include Err vernunftzentrum.de 70 i@@ -40,14 +41,17 @@ $ cat fiche.c | nc localhost 9999 Err vernunftzentrum.de 70 i #include Err vernunftzentrum.de 70 i #include Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i+int UID = -1; Err vernunftzentrum.de 70 i+int GID = -1; Err vernunftzentrum.de 70 i 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 *WHITELIST; Err vernunftzentrum.de 70 i int PORT = 9999; Err vernunftzentrum.de 70 i int SLUG_SIZE = 4; Err vernunftzentrum.de 70 i int BUFSIZE = 32768; Err vernunftzentrum.de 70 i-int QUEUE_SIZE = 100; Err vernunftzentrum.de 70 i+int QUEUE_SIZE = 500; Err vernunftzentrum.de 70 i char DOMAIN[128] = "http://localhost/"; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i int time_seed; Err vernunftzentrum.de 70 i@@ -68,6 +72,8 @@ void set_basedir(); Err vernunftzentrum.de 70 i void load_banlist(); 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+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 .