iMerge pull request #15 from renaudallard/master - 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 a0bbd2fa28625f03f41778f815572e4aa05dce02 /ckeen/repos/fiche/commit/a0bbd2fa28625f03f41778f815572e4aa05dce02.gph vernunftzentrum.de 70 1parent a85e04d8160a30c2a6e365b59189842fc5bca670 /ckeen/repos/fiche/commit/a85e04d8160a30c2a6e365b59189842fc5bca670.gph vernunftzentrum.de 70 hAuthor: solusipse URL:mailto:solus1ps3@gmail.com vernunftzentrum.de 70 iDate: Sat, 29 Aug 2015 16:12:12 +0200 Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iMerge pull request #15 from renaudallard/master Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iMultiple fixes Err vernunftzentrum.de 70 iDiffstat: Err vernunftzentrum.de 70 i fiche.c | 42 +++++++++++++++++++------------ Err vernunftzentrum.de 70 i fiche.h | 8 +++++--- Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i2 files changed, 31 insertions(+), 19 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@@ -9,11 +9,13 @@ Live example: http://code.solusipse.net/ Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i ------------------------------------------------------------------------------- Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i-usage: fiche [-pbsdolBuw]. Err vernunftzentrum.de 70 i- [-d domain] [-p port] [-s slug size] Err vernunftzentrum.de 70 i+usage: fiche [-epbsdolBuw]. Err vernunftzentrum.de 70 i+ [-e] [-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+-e option is for using an extended character set for the URL 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 Err vernunftzentrum.de 70 i@@ -24,6 +26,7 @@ $ cat fiche.c | nc localhost 9999 Err vernunftzentrum.de 70 i ------------------------------------------------------------------------------- Err vernunftzentrum.de 70 i */ Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i+#include Err vernunftzentrum.de 70 i #include "fiche.h" Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i int main(int argc, char **argv) Err vernunftzentrum.de 70 i@@ -57,7 +60,7 @@ void *thread_connection(void *args) Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i char buffer[BUFSIZE]; 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+ int status = recv(connection_socket, buffer, BUFSIZE, MSG_DONTWAIT); Err vernunftzentrum.de 70 i 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@@ -107,8 +110,8 @@ void perform_connection(int listen_socket) Err vernunftzentrum.de 70 i pthread_t thread_id; Err vernunftzentrum.de 70 i struct sockaddr_in client_address; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- int address_lenght = sizeof(client_address); Err vernunftzentrum.de 70 i- int connection_socket = accept(listen_socket, (struct sockaddr *) &client_address, (void *) &address_lenght); Err vernunftzentrum.de 70 i+ int address_length = sizeof(client_address); Err vernunftzentrum.de 70 i+ int connection_socket = accept(listen_socket, (struct sockaddr *) &client_address, (void *) &address_length); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i struct timeval timeout; Err vernunftzentrum.de 70 i timeout.tv_sec = 5; Err vernunftzentrum.de 70 i@@ -271,13 +274,21 @@ void generate_url(char *buffer, char *slug, size_t slug_length, struct client_da Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i for (i = 0; i <= SLUG_SIZE - 1; i++) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i+#if defined(BSD) Err vernunftzentrum.de 70 i+ int symbol_id = arc4random() % strlen(symbols); Err vernunftzentrum.de 70 i+#else Err vernunftzentrum.de 70 i int symbol_id = rand_r(&time_seed) % strlen(symbols); Err vernunftzentrum.de 70 i+#endif Err vernunftzentrum.de 70 i slug[i] = symbols[symbol_id]; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i while (create_directory(slug) == -1) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i+#if defined(BSD) Err vernunftzentrum.de 70 i+ int symbol_id = arc4random() % strlen(symbols); Err vernunftzentrum.de 70 i+#else Err vernunftzentrum.de 70 i int symbol_id = rand_r(&time_seed) % strlen(symbols); Err vernunftzentrum.de 70 i+#endif Err vernunftzentrum.de 70 i slug[strlen(slug)] = symbols[symbol_id]; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i@@ -286,10 +297,9 @@ void generate_url(char *buffer, char *slug, size_t slug_length, struct client_da Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i int create_directory(char *slug) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i- char *directory = malloc(strlen(BASEDIR) + strlen(slug) + 1); Err vernunftzentrum.de 70 i+ char *directory = malloc(strlen(BASEDIR) + strlen(slug) + sizeof(char) + 1); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- strcpy(directory, BASEDIR); Err vernunftzentrum.de 70 i- strcat(directory, slug); Err vernunftzentrum.de 70 i+ snprintf(directory, strlen(BASEDIR) + strlen(slug) + sizeof(char) + 1, "%s%s%s", BASEDIR, "/", slug); Err vernunftzentrum.de 70 i 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@@ -303,10 +313,9 @@ int create_directory(char *slug) Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i void save_to_file(char *slug, char *buffer, struct client_data data) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i- char *directory = malloc(strlen(BASEDIR) + strlen(slug) + strlen("/index.txt") + 1); Err vernunftzentrum.de 70 i- strcpy(directory, BASEDIR); Err vernunftzentrum.de 70 i- strcat(directory, slug); Err vernunftzentrum.de 70 i- strcat(directory, "/index.txt"); Err vernunftzentrum.de 70 i+ char *directory = malloc(strlen(BASEDIR) + strlen(slug) + 11 * sizeof(char) + 1 ); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ snprintf(directory, strlen(BASEDIR) + strlen(slug) + 11 * sizeof(char) + 1, "%s%s%s%s", BASEDIR , "/", slug, "/index.txt"); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i FILE *fp; Err vernunftzentrum.de 70 i fp = fopen(directory, "w"); Err vernunftzentrum.de 70 i@@ -348,7 +357,7 @@ int check_protocol(char *buffer) 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- strcat(BASEDIR, "/code/"); Err vernunftzentrum.de 70 i+ strncat(BASEDIR, "/code", 5 * sizeof(char)); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i void startup_message() Err vernunftzentrum.de 70 i@@ -364,9 +373,12 @@ 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:s:d:o:l:B:u:w:")) != -1) Err vernunftzentrum.de 70 i+ while ((c = getopt (argc, argv, "ep: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 'e': Err vernunftzentrum.de 70 i+ snprintf(symbols, sizeof symbols, "%s", "abcdefghijklmnopqrstuvwxyz0123456789-+_=.ABCDEFGHIJKLMNOPQRSTUVWXYZ"); Err vernunftzentrum.de 70 i+ break; Err vernunftzentrum.de 70 i case 'd': Err vernunftzentrum.de 70 i snprintf(DOMAIN, sizeof DOMAIN, "%s%s%s", "http://", optarg, "/"); Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i@@ -387,8 +399,6 @@ void parse_parameters(int argc, char **argv) Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i case 'o': Err vernunftzentrum.de 70 i BASEDIR = optarg; Err vernunftzentrum.de 70 i- if((BASEDIR[strlen(BASEDIR) - 1]) != '/') Err vernunftzentrum.de 70 i- strcat(BASEDIR, "/"); Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i case 'l': Err vernunftzentrum.de 70 i LOG = optarg; Err vernunftzentrum.de 70 1diff --git a/fiche.h b/fiche.h /ckeen/repos/fiche/file/fiche.h.gph vernunftzentrum.de 70 i@@ -9,11 +9,13 @@ Live example: http://code.solusipse.net/ Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i ------------------------------------------------------------------------------- Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i-usage: fiche [-pbsdolBuw]. Err vernunftzentrum.de 70 i- [-d domain] [-p port] [-s slug size] Err vernunftzentrum.de 70 i+usage: fiche [-epbsdolBuw]. Err vernunftzentrum.de 70 i+ [-e] [-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+-e option is for using an extended character set for the URL 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 Err vernunftzentrum.de 70 i@@ -54,9 +56,9 @@ int SLUG_SIZE = 4; Err vernunftzentrum.de 70 i int BUFSIZE = 32768; Err vernunftzentrum.de 70 i int QUEUE_SIZE = 500; Err vernunftzentrum.de 70 i char DOMAIN[128] = "http://localhost/"; Err vernunftzentrum.de 70 i+char symbols[67] = "abcdefghijklmnopqrstuvwxyz0123456789"; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i unsigned int time_seed; Err vernunftzentrum.de 70 i-const char *symbols = "abcdefghijklmnopqrstuvwxyz0123456789"; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i struct thread_arguments Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 .