diff options
Diffstat (limited to 'pa3_proxy/proxy.h')
-rw-r--r-- | pa3_proxy/proxy.h | 49 |
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); |