changed printing policy - fiche - A pastebin adjusted for gopher use
 (HTM) git clone git://vernunftzentrum.de/fiche.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit 249413374d23479c3d485a565736639878c127da
 (DIR) parent 33f00487d0baba30eac8db396af42919e2715601
 (HTM) Author: solusipse <solus1ps3@gmail.com>
       Date:   Thu, 26 Sep 2013 13:06:52 +0200
       
       changed printing policy
       
       Diffstat:
         fiche.c                             |      48 ++++++++++++++-----------------
         fiche.h                             |      29 +++++++++++++++--------------
       
       2 files changed, 36 insertions(+), 41 deletions(-)
       ---
 (DIR) diff --git a/fiche.c b/fiche.c
       @@ -63,8 +63,7 @@ void *thread_connection(void *args)
            if (WHITELIST != NULL)
                if (check_whitelist(data.ip_address) == NULL)
                {
       -            printf("Rejected connection from unknown user.\n");
       -            display_line();
       +            display_info(data, NULL, "Rejected connection from unknown user.");
                    save_log(NULL, data.ip_address, data.hostname);
                    write(connection_socket, "You are not whitelisted!\n", 26);
                    close(connection_socket);
       @@ -74,8 +73,7 @@ void *thread_connection(void *args)
            if (BANLIST != NULL)
                if (check_banlist(data.ip_address) != NULL)
                {
       -            printf("Rejected connection from banned user.\n");
       -            display_line();
       +            display_info(data, NULL, "Rejected connection from banned user.");
                    save_log(NULL, data.ip_address, data.hostname);
                    write(connection_socket, "You are banned!\n", 17);
                    close(connection_socket);
       @@ -83,19 +81,12 @@ void *thread_connection(void *args)
                }
        
            if (check_protocol(buffer) == 1)
       -    {
       -        printf("Rejected due to wrong protocol.\n");
       -        display_line();
       -        save_log(NULL, data.ip_address, data.hostname);
       -        write(connection_socket, "Use netcat!", 11);
       -        close(connection_socket);
       -        pthread_exit(NULL);
       -    }
       +        status = -1;
        
            if (status != -1)
            {
                char slug[SLUG_SIZE+8];
       -        generate_url(buffer, slug, SLUG_SIZE+8);
       +        generate_url(buffer, slug, SLUG_SIZE+8, data);
                save_log(slug, data.ip_address, data.hostname);
                char response[strlen(slug) + strlen(DOMAIN) + 2];
                snprintf(response, sizeof response, "%s%s\n", DOMAIN, slug);
       @@ -103,10 +94,9 @@ void *thread_connection(void *args)
            }
            else
            {
       -        printf("Invalid connection.\n");
       -        display_line();
       +        display_info(data, NULL, "Invalid connection.");
                save_log(NULL, data.ip_address, data.hostname);
       -        write(connection_socket, "Use netcat.\n", 13);
       +        write(connection_socket, "Use netcat.\n", 12);
            }
        
            close(connection_socket);
       @@ -181,11 +171,6 @@ struct client_data get_client_address(struct sockaddr_in client_address)
            else
                data.ip_address = hostaddrp;
        
       -    display_date();
       -    printf("Client: %s (%s)\n", data.ip_address, data.hostname);
       -
       -    
       -
            return data;
        }
        
       @@ -207,6 +192,16 @@ void save_log(char *slug, char *hostaddrp, char *h_name)
            }
        }
        
       +void display_info(struct client_data data, char *slug, char *message)
       +{
       +    if (slug == NULL)
       +        printf("%s\n", message);
       +    else printf("Saved to: %s\n", slug);
       +    display_date();
       +    printf("Client: %s (%s)\n", data.ip_address, data.hostname);
       +    display_line();
       +}
       +
        char *check_banlist(char *ip_address)
        {
            load_list(BANFILE, 0);
       @@ -265,7 +260,7 @@ void bind_to_port(int listen_socket, struct sockaddr_in server_address)
                error("ERROR while starting listening");
        }
        
       -void generate_url(char *buffer, char *slug, size_t slug_length)
       +void generate_url(char *buffer, char *slug, size_t slug_length, struct client_data data)
        {
            int i;
            memset(slug, '\0', slug_length);
       @@ -282,7 +277,7 @@ void generate_url(char *buffer, char *slug, size_t slug_length)
                slug[strlen(slug)] = symbols[symbol_id];
            }
        
       -    save_to_file(slug, buffer);
       +    save_to_file(slug, buffer, data);
        }
        
        int create_directory(char *slug)
       @@ -302,7 +297,7 @@ int create_directory(char *slug)
            return result;
        }
        
       -void save_to_file(char *slug, char *buffer)
       +void save_to_file(char *slug, char *buffer, struct client_data data)
        {
            char *directory = malloc(strlen(BASEDIR) + strlen(slug) + strlen("/index.txt") + 1);
            strcpy(directory, BASEDIR);
       @@ -315,9 +310,8 @@ void save_to_file(char *slug, char *buffer)
            fclose(fp);
        
            change_owner(directory);
       +    display_info(data, directory, "");
        
       -    printf("Saved to: %s\n", directory);
       -    display_line();
            free(directory);
        }
        
       @@ -339,7 +333,7 @@ void set_uid_gid(char *username)
        
        int check_protocol(char *buffer)
        {
       -    if (strlen(buffer) < 1)
       +    if (strlen(buffer) < 3)
                return 1;
            if ((strncmp(buffer, "GET", 3) == 0)||(strncmp(buffer, "POST", 4) == 0))
                if (strstr(buffer, "HTTP/1."))
 (DIR) diff --git a/fiche.h b/fiche.h
       @@ -58,6 +58,18 @@ char DOMAIN[128] = "http://localhost/";
        int time_seed;
        const char *symbols = "abcdefghijklmnopqrstuvwxyz0123456789";
        
       +struct thread_arguments
       +{
       +        int connection_socket;
       +        struct sockaddr_in client_address;
       +};
       +
       +struct client_data
       +{
       +        char *ip_address;
       +        char *hostname;
       +};
       +
        int create_socket();
        int create_directory(char *slug);
        int check_protocol(char *buffer);
       @@ -67,8 +79,9 @@ void display_line(){printf("====================================\n");}
        void error(char *error_code){perror(error_code); exit(1);}
        void display_date();
        void perform_connection(int listen_socket);
       -void generate_url(char *buffer, char *slug, size_t slug_length);
       -void save_to_file(char *buffer, char *slug);
       +void generate_url(char *buffer, char *slug, size_t slug_length, struct client_data data);
       +void save_to_file(char *buffer, char *slug, struct client_data data);
       +void display_info(struct client_data data, char *slug, char *message);
        void startup_message();
        void set_basedir();
        void load_list(char *file_path, int type);
       @@ -85,16 +98,4 @@ char *get_date();
        struct sockaddr_in set_address(struct sockaddr_in serveraddr);
        struct client_data get_client_address(struct sockaddr_in client_address);
        
       -struct thread_arguments
       -{
       -        int connection_socket;
       -        struct sockaddr_in client_address;
       -};
       -
       -struct client_data
       -{
       -        char *ip_address;
       -        char *hostname;
       -};
       -
        #endif