From a57893136447274e47c80fb0f859d6937073fcc9 Mon Sep 17 00:00:00 2001 From: Azreyo <58790873+Azreyo@users.noreply.github.com> Date: Sun, 9 Feb 2025 12:47:45 +0100 Subject: [PATCH] Update README.md --- README.md | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 72 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 49a9b28..d8a5bfb 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ -# HTTP Server +# Carbon HTTP Server This is a simple HTTP server for linux operating system written in C. It supports basic HTTP requests, logging, etc. +NOTE: This program is being used as a fun projects to see limits of C. I'll be not responsible for any vulnerabilities. +If you find vulnerabilities please report them. ## Features @@ -10,6 +12,52 @@ This is a simple HTTP server for linux operating system written in C. It support * Includes basic logging functionality with timestamps. * Configuration is loaded from a JSON file (`server.json`). +## Future development + +This section outlines potential features and improvements planned for future releases of the server. + +### Prioraty features + +| Enhancement | Description | Priority | Completion | +|-----------------------------|--------------------------------------------------|-----------|----------------------| +| **Basic HTTP and HTTPS server Functionality** | Switching from HTTP to HTTPS | Medium | ✅ | +| **Logging Mechanism** | Add logging mechanism for better error handleling | Low | ✅ | +| **SSL/TLS Support** | Implement SSL/TLS Support for HTTP/s | High | ✅ | + +### Planned Features + +| Enhancement | Description | Priority | Completion | +|-----------------------------|--------------------------------------------------|-----------|----------------------| +| **WebSocket Support** | Implement WebSocket protocol for real-time communication. | Medium | ❌ | +| **Rate Limiting** | Add rate limiting to prevent abuse and DDoS attacks. | High | ❌ | +| **User Authentication** | Implement user authentication for secure access to certain endpoints. | High | ❌| +| **API Documentation** | Create comprehensive API documentation using Swagger or similar tools. | Medium | ❌ | +| **Load Balancing** | Support for load balancing across multiple server instances. | Low | ❌ | + +### Performance Improvements + +| Enhancement | Description | Priority | Completion | +|-----------------------------|--------------------------------------------------|-----------|----------------------| +| **Connecting Pooling** | Implement connection pooling to improve performance under load. | High | ❌ | +| **Asynchronous I/O** | Use asynchronous I/O to handle more connections efficiently. | Medium | ❌| +| **Caching Mechanism** | Introduce caching for static resources to reduce server load. | Medium | ❌ | + +### Security Enhancements + +| Enhancement | Description | Priority | Completion | +|-----------------------------|--------------------------------------------------|-----------|----------------------| +| **Buffer Overflow Prevention** | Implement comprehensive input validation to prevent injection attacks. | High | ❌ | +| **HTTPS Redirect** | Automatically redirect HTTP traffic to HTTPS. | High | ❌| +| **Security Audits** | Conduct regular security audits and vulnerability assessments. | Medium | ❌ | + +### Community Contributions + +| Contribution Area | Description | Priority | Notes | +|-----------------------------|--------------------------------------------------|-----------|----------------------| +| **Documentation** | Improve and expand documentation for developers and users. | Medium | Open for contributions | +| **Testing** | Create unit tests and integration tests for better coverage. | High | Contributions welcome | +| **Feature Requests** | Encourage users to submit feature requests and suggestions. | Low | Use GitHub Issues | + ## Build Instructions 1. **Prerequisites:** @@ -22,8 +70,8 @@ This is a simple HTTP server for linux operating system written in C. It support 2. **Clone the repository (optional):** ```bash - git clone https://github.com/Azreyo/Http-server - cd Http-server/ + git clone https://github.com/Azreyo/Carbon + cd Carbon/ ``` 3. **Compile:** @@ -44,7 +92,7 @@ This is a simple HTTP server for linux operating system written in C. It support make clean ``` - Cleanup of the unnecessary files after compiling + Cleanup of the unnecessary files after compiling. 4. **Create `www` directory:** @@ -64,7 +112,8 @@ This is a simple HTTP server for linux operating system written in C. It support "use_https": false, "log_file": "server.log", "max_threads": 4, - "running": true + "running": true, + "automatic_startup": false } ``` @@ -89,3 +138,21 @@ sudo ufw allow 8080 # 8080 is the default port ./bin/server # Run the executable from the bin directory ``` + +## For using HTTP/s + +```bash +mkdir certs # Create certs folder +cd certs +``` + +Create certs folder to create certificates to it. + +```bash +openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes +``` + +Generating pairs of keys `key.pem and` and `cert.pem` for 365 days. +Note: its only self-signed browser may get Potential Security Risk. +For further use on domains is recommended Let's encrypt. +