Introduction
Introduction Statistics Contact Development Disclaimer Help
issue #3 (rejecting http) - fiche - A pastebin adjusted for gopher use
git clone git://vernunftzentrum.de/fiche.git
Log
Files
Refs
LICENSE
---
commit 33f00487d0baba30eac8db396af42919e2715601
parent 0c3e6aacd439f00940f12f4dd83c363eacea93ca
Author: solusipse <[email protected]>
Date: Thu, 26 Sep 2013 12:36:29 +0200
issue #3 (rejecting http)
Diffstat:
fiche.c | 24 ++++++++++++++++++++++--
fiche.h | 2 +-
2 files changed, 23 insertions(+), 3 deletions(-)
---
diff --git a/fiche.c b/fiche.c
@@ -66,12 +66,12 @@ void *thread_connection(void *args)
printf("Rejected connection from unknown user.\n");
display_line();
save_log(NULL, data.ip_address, data.hostname);
- write(connection_socket, "You are not whitelisted!\n", 17);
+ write(connection_socket, "You are not whitelisted!\n", 26);
close(connection_socket);
pthread_exit(NULL);
}
- if ((BANLIST != NULL))
+ if (BANLIST != NULL)
if (check_banlist(data.ip_address) != NULL)
{
printf("Rejected connection from banned user.\n");
@@ -82,6 +82,16 @@ void *thread_connection(void *args)
pthread_exit(NULL);
}
+ 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);
+ }
+
if (status != -1)
{
char slug[SLUG_SIZE+8];
@@ -327,6 +337,16 @@ void set_uid_gid(char *username)
GID = userdata->pw_gid;
}
+int check_protocol(char *buffer)
+{
+ if (strlen(buffer) < 1)
+ return 1;
+ if ((strncmp(buffer, "GET", 3) == 0)||(strncmp(buffer, "POST", 4) == 0))
+ if (strstr(buffer, "HTTP/1."))
+ return 1;
+ return 0;
+}
+
void set_basedir()
{
BASEDIR = getenv("HOME");
diff --git a/fiche.h b/fiche.h
@@ -60,11 +60,11 @@ const char *symbols = "abcdefghijklmnopqrstuvwxyz0123456789…
int create_socket();
int create_directory(char *slug);
+int check_protocol(char *buffer);
void bind_to_port(int listen_socket, struct sockaddr_in serveraddr);
void display_line(){printf("====================================\n");}
void error(char *error_code){perror(error_code); exit(1);}
-void nerror(char *error_code){perror(error_code);}
void display_date();
void perform_connection(int listen_socket);
void generate_url(char *buffer, char *slug, size_t slug_length);
You are viewing proxied material from vernunftzentrum.de. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.