aboutsummaryrefslogtreecommitdiff
path: root/pa3_proxy/proxy.h
diff options
context:
space:
mode:
Diffstat (limited to 'pa3_proxy/proxy.h')
-rw-r--r--pa3_proxy/proxy.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/pa3_proxy/proxy.h b/pa3_proxy/proxy.h
new file mode 100644
index 0000000..d1d4f7d
--- /dev/null
+++ b/pa3_proxy/proxy.h
@@ -0,0 +1,49 @@
+// HTTP Caching Proxy
+// Jack Sangdahl
+// 28 October 2024
+#include <arpa/inet.h>
+#include <dirent.h>
+#include <errno.h>
+#include <netdb.h>
+#include <netinet/in.h>
+#include <openssl/evp.h>
+#include <pthread.h>
+#include <signal.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#define DATA_SIZE 10240
+#define CACHE_DIRECTORY "./cache/"
+#define HOST_CACHE_FILENAME "./cache/hostnames"
+#define BLOCKLIST_FILENAME "./blocklist"
+#define RSP_400 "HTTP/1.1 400 Bad Request\r\nContent-Type: text/html\r\n\r\n"
+#define MSG_400_METHOD \
+ "<html><body>400 Bad Request Reason: Invalid Method:<<request " \
+ "method>></body></html>\r\n\r\n"
+#define MSG_400_URL \
+ "<html><body>400 Bad Request Reason: Invalid URL: <<requested " \
+ "url>></body></html>\r\n\r\n"
+#define RSP_403 "HTTP/1.1 403 Forbidden\r\nContent-Type: text/html\r\n"
+#define MSG_403 "<html><body>403 Blocked Website</body></html>\r\n\r\n"
+
+struct prefetcher_args {
+ char filename[50];
+ char hostname[100];
+ char ipaddr[20];
+};
+
+bool blacklisted(char *ipaddr);
+bool file_cached(char *url);
+bool hostname_cached(char *hostname, char *ipaddr);
+void *handle_connection(void *a);
+void *prefetcher(void *a);
+void calculate_md5sum(char *url, char *md5string);
+void send_cached_file(char *url, int connection);
+void cache_hostname(char *hostname, char *ipaddr);
+void handle_sigint(int sig);