From e2bded04566da1414c85e27827bb409dfc0904e1 Mon Sep 17 00:00:00 2001 From: Francesco Date: Fri, 8 Nov 2024 18:39:38 +0100 Subject: [PATCH] first steps --- .clang-format | 3 +++ .gitignore | 3 +++ .vscode/settings.json | 3 +++ README.md | 28 +++++++++++++++++++++++++++- include/main.h | 7 +++++++ include/server.h | 13 +++++++++++++ meson.build | 6 ++++++ src/main.c | 6 ++++++ src/meson.build | 1 + src/server.c | 5 +++++ 10 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 .clang-format create mode 100644 .vscode/settings.json create mode 100644 include/main.h create mode 100644 include/server.h create mode 100644 meson.build create mode 100644 src/main.c create mode 100644 src/meson.build create mode 100644 src/server.c diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..13ffbb8 --- /dev/null +++ b/.clang-format @@ -0,0 +1,3 @@ +UseTab: Always +IndentWidth: 8 +TabWidth: 8 diff --git a/.gitignore b/.gitignore index c6127b3..ea03e44 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +build/ +.cache/ + # Prerequisites *.d diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..257d7ee --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "clangd.path": "/usr/bin/clangd" +} \ No newline at end of file diff --git a/README.md b/README.md index e858b9e..defda00 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,28 @@ # cws -A Web Server written in C (educational project) +A Web Server written in C (educational purposes) + +## Requirements +- [meson](https://mesonbuild.com/index.html) + +## How to build +```bash +$ meson setup build +$ cd build +$ meson compile +``` +And then run `cws`! + +## Roadmap +- [ ] Understading basic web server concepts +- [ ] Basic server +- [ ] Enhance web server + - [ ] Request parser (methods and headers) + - [ ] Serve static files + - [ ] Multithreading (non blocking I/O with `epoll`) + - [ ] Logging +- [ ] Advanced + - [ ] HTTPS support + - [ ] Caching + +## Resources +- [Beej's Guide to Network Programming](https://beej.us/guide/bgnet/) diff --git a/include/main.h b/include/main.h new file mode 100644 index 0000000..581f0ac --- /dev/null +++ b/include/main.h @@ -0,0 +1,7 @@ +#ifndef __MAIN_H__ +#define __MAIN_H__ + +#define GREEN_COLOR "\033[32m" +#define RESET_COLOR "\033[0m" + +#endif \ No newline at end of file diff --git a/include/server.h b/include/server.h new file mode 100644 index 0000000..14c3cea --- /dev/null +++ b/include/server.h @@ -0,0 +1,13 @@ +#ifndef __SERVER_H__ +#define __SERVER_H__ + +#include +#include +#include +#include + +#define PORT 3030 +// how many pending connections the queue will hold +#define BACKLOG 10 + +#endif diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..8531fc8 --- /dev/null +++ b/meson.build @@ -0,0 +1,6 @@ +project('tutorial', 'c') + +subdir('src') +incdir = include_directories('include') + +executable('cws', sources, include_directories: incdir) diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..40b3562 --- /dev/null +++ b/src/main.c @@ -0,0 +1,6 @@ +#include "main.h" +#include + +int main(void) { + puts(GREEN_COLOR "Running cws..." RESET_COLOR); +} diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 0000000..9fa26ab --- /dev/null +++ b/src/meson.build @@ -0,0 +1 @@ +sources = files('main.c', 'server.c') \ No newline at end of file diff --git a/src/server.c b/src/server.c new file mode 100644 index 0000000..aef1b66 --- /dev/null +++ b/src/server.c @@ -0,0 +1,5 @@ +#include "server.h" + +int start_server(void) { + return 0; +}