From 2b86380ff43262cb8bb2569d026f47be6a03d16e Mon Sep 17 00:00:00 2001 From: Dm1tr1y147 Date: Mon, 22 Jun 2020 15:59:38 +0500 Subject: [PATCH] Initial commit: created project structure, makefile, some static files for future server tests and interphase to create a listening socket --- .gitignore | 4 ++ Makefile | 32 +++++++++++++++ include/netw.h | 2 + include/utils.h | 1 + readme.txt | 1 + src/netw.c | 84 ++++++++++++++++++++++++++++++++++++++++ src/server.c | 70 +++++++++++++++++++++++++++++++++ src/utils.c | 10 +++++ static/404.html | 13 +++++++ static/about/index.html | 16 ++++++++ static/about/me.jpg | Bin 0 -> 60202 bytes static/favicon.ico | Bin 0 -> 15406 bytes static/index.html | 12 ++++++ 13 files changed, 245 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 include/netw.h create mode 100644 include/utils.h create mode 100644 readme.txt create mode 100644 src/netw.c create mode 100644 src/server.c create mode 100644 src/utils.c create mode 100644 static/404.html create mode 100644 static/about/index.html create mode 100644 static/about/me.jpg create mode 100644 static/favicon.ico create mode 100644 static/index.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..08d8ba5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +bin/ +obj/ +tmp/ +.vscode/ \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5ff6e30 --- /dev/null +++ b/Makefile @@ -0,0 +1,32 @@ +CPPFLAGS := -Iinclude -MMD -MP +CFLAGS := -Wall +LDFLAGS := -Llib +LDLIBS := -lm + +SRC_DIR := src +OBJ_DIR := obj +BIN_DIR := bin + +EXE := $(BIN_DIR)/server + +SRC := $(wildcard $(SRC_DIR)/*.c) + +OBJ := $(SRC:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o) + +all: $(EXE) + +$(EXE): $(OBJ) | $(BIN_DIR) + $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ + +$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR) + $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ + +$(BIN_DIR) $(OBJ_DIR): + mkdir -p $@ + +clean: + @$(RM) -rv $(BIN_DIR) $(OBJ_DIR) + +-include $(OBJ:.o=.d) + +.PHONY: all, clean \ No newline at end of file diff --git a/include/netw.h b/include/netw.h new file mode 100644 index 0000000..8896080 --- /dev/null +++ b/include/netw.h @@ -0,0 +1,2 @@ +int get_listener_socket(char *port); +void *get_in_addr(struct sockaddr *sa); \ No newline at end of file diff --git a/include/utils.h b/include/utils.h new file mode 100644 index 0000000..fe6de80 --- /dev/null +++ b/include/utils.h @@ -0,0 +1 @@ +void err_msg(char *msg); \ No newline at end of file diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..a9c1859 --- /dev/null +++ b/readme.txt @@ -0,0 +1 @@ +Webserver in c. !Experimental! \ No newline at end of file diff --git a/src/netw.c b/src/netw.c new file mode 100644 index 0000000..5a822ff --- /dev/null +++ b/src/netw.c @@ -0,0 +1,84 @@ +#include +#include +#include +#include +#include + +#include "../include/utils.h" + +#define BACKLOG 10 + +/** + * @brief Get the listener socket object + * + * @param {char *} port + * @return int + */ +int get_listener_socket(char *port) +{ + int sockfd; + struct addrinfo hints, *servinfo, *p; + int yes = 1; + + memset(&hints, 0, sizeof hints); + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = AI_PASSIVE; + + if (getaddrinfo(NULL, port, &hints, &servinfo) != 0) + { + err_msg("can't get addres info"); + return -1; + } + + for (p = servinfo; p != NULL; p = p->ai_next) + { + if ((sockfd = socket(p->ai_family, p->ai_socktype, p->ai_protocol)) < 0) + { + err_msg("can't create socket"); + continue; + } + + if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof yes) < 0) + { + err_msg("can't set socket options"); + close(sockfd); + freeaddrinfo(servinfo); + return -2; + } + + if (bind(sockfd, p->ai_addr, p->ai_addrlen) < 0) + { + close(sockfd); + err_msg("can't bind socket"); + continue; + } + + break; + } + + freeaddrinfo(servinfo); + + if (p == NULL) + { + err_msg("failed to find local adress"); + return -3; + } + + if (listen(sockfd, BACKLOG) < 0) + { + err_msg("failed to listen"); + return -4; + } + + return sockfd; +} + +void *get_in_addr(struct sockaddr *sa) +{ + if (sa->sa_family == AF_INET) { + return &(((struct sockaddr_in*)sa)->sin_addr); + } + + return &(((struct sockaddr_in6*)sa)->sin6_addr); +} \ No newline at end of file diff --git a/src/server.c b/src/server.c new file mode 100644 index 0000000..05267d7 --- /dev/null +++ b/src/server.c @@ -0,0 +1,70 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../include/netw.h" +#include "../include/utils.h" +/** + * Main + */ +int main(int argc, char *argv[]) +{ + int client_fd; + struct sockaddr_storage cli_addr; + char s[INET6_ADDRSTRLEN]; + + if (argc != 2) + { + err_msg("Usage: \n"); + exit(1); + } + char *port = argv[1]; + + int listenfd = get_listener_socket(port); + if (listenfd < 0) + { + err_msg("!fatal! couldn't create listening socket"); + exit(1); + } + printf("Waiting for connection on port %s...\n", port); + + while (1) + { + socklen_t sin_size = sizeof cli_addr; + + client_fd = accept(listenfd, (struct sockaddr *)&cli_addr, &sin_size); + if (client_fd < 0) + { + err_msg("couldn't accept client connection"); + continue; + } + + // | Doesn't work properly yet + // v + + int pid = fork(); + + if (pid < 0) + err_msg("fork failed"); + else if (pid == 0) + { + close(listenfd); + + inet_ntop(cli_addr.ss_family, get_in_addr((struct sockaddr *)&cli_addr), s, sizeof s); + printf("Got connection from %s\n", s); + + // connection(client_fd); // Implement + exit(0); + } + else + close(client_fd); + } + + return 0; +} \ No newline at end of file diff --git a/src/utils.c b/src/utils.c new file mode 100644 index 0000000..734dfc6 --- /dev/null +++ b/src/utils.c @@ -0,0 +1,10 @@ +#include + +/** + * @brief Prints error + * + * @param {char *} msg +*/ +void err_msg (char *msg) { + fprintf(stderr, "Error: %s\n", msg); +} \ No newline at end of file diff --git a/static/404.html b/static/404.html new file mode 100644 index 0000000..234e744 --- /dev/null +++ b/static/404.html @@ -0,0 +1,13 @@ + + + + + 404 Not Found + + + +

Not Found

+

The requested URL was not found on this server.

+ + + \ No newline at end of file diff --git a/static/about/index.html b/static/about/index.html new file mode 100644 index 0000000..33001dc --- /dev/null +++ b/static/about/index.html @@ -0,0 +1,16 @@ + + + + + + + About + + + + Back +

Me

+ the pig + + + \ No newline at end of file diff --git a/static/about/me.jpg b/static/about/me.jpg new file mode 100644 index 0000000000000000000000000000000000000000..041d8ca9004895952c6d7bd31230b34908a14bd7 GIT binary patch literal 60202 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 + + + + + Test + + +

Testing paragraf

+ About me + + \ No newline at end of file