Changed compiling method with make Updated and checked status of development Added Prerequisites Better understanding
151 lines
3.2 KiB
Markdown
151 lines
3.2 KiB
Markdown
# Carbon HTTP Server
|
|
|
|
A high-performance HTTP/HTTPS server written in C for Linux systems, featuring advanced security, caching, and async I/O.
|
|
|
|
## Core Features
|
|
|
|
- ✅ Multi-threaded HTTP/HTTPS server with epoll-based async I/O
|
|
- ✅ SSL/TLS support with automatic HTTP to HTTPS redirection
|
|
- ✅ Advanced rate limiting and DDoS protection
|
|
- ✅ File caching system for improved performance
|
|
- ✅ Thread pooling for efficient connection handling
|
|
- ✅ Comprehensive security headers and MIME type detection
|
|
- ✅ JSON-based configuration
|
|
- ✅ Detailed logging system with rotation
|
|
|
|
## Security Features
|
|
|
|
- ✅ Buffer overflow prevention
|
|
- ✅ Path traversal protection
|
|
- ✅ Input sanitization
|
|
- ✅ SSL/TLS with modern cipher suites
|
|
- ✅ Security headers (CSP, HSTS, X-Frame-Options, etc.)
|
|
- ✅ Rate limiting per IP
|
|
- ✅ Automatic HTTPS redirection
|
|
|
|
## Performance Features
|
|
|
|
- ✅ Epoll-based asynchronous I/O
|
|
- ✅ Thread pool for connection handling
|
|
- ✅ File caching system
|
|
- ✅ SendFile() optimization for file transfers
|
|
- ✅ Keep-alive connection support
|
|
- ✅ TCP optimization (NODELAY, buffer sizes)
|
|
|
|
## Build Instructions
|
|
|
|
### Prerequisites
|
|
|
|
```bash
|
|
# Install required dependencies
|
|
sudo apt-get update
|
|
sudo apt-get install -y \
|
|
build-essential \
|
|
libssl-dev \
|
|
libcjson-dev \
|
|
libmagic-dev \
|
|
pkg-config
|
|
```
|
|
|
|
### Compilation
|
|
|
|
```bash
|
|
# Using Make (recommended)
|
|
make # Normal build
|
|
make debug # Debug build
|
|
make release # Optimized release build
|
|
|
|
# Manual compilation
|
|
gcc server.c config_parser.c server_config.c -o server \
|
|
-D_GNU_SOURCE \
|
|
-Wall -Wextra -O2 \
|
|
-lssl -lcrypto -lpthread -lmagic -lcjson
|
|
```
|
|
|
|
### SSL Certificate Setup
|
|
|
|
```bash
|
|
# Create certificates directory
|
|
mkdir -p certs
|
|
|
|
# Generate self-signed certificate
|
|
openssl req -x509 -newkey rsa:2048 \
|
|
-keyout certs/key.pem \
|
|
-out certs/cert.pem \
|
|
-days 365 -nodes
|
|
```
|
|
|
|
### Configuration
|
|
|
|
Create `server.json`:
|
|
|
|
```json
|
|
{
|
|
"port": 8080,
|
|
"use_https": true,
|
|
"log_file": "/var/log/carbon-server/server.log",
|
|
"verbose": true,
|
|
"max_threads": 32,
|
|
"cache_size": 100,
|
|
"rate_limit": {
|
|
"window": 60,
|
|
"max_requests": 100
|
|
}
|
|
}
|
|
```
|
|
|
|
### Directory Structure
|
|
|
|
```bash
|
|
mkdir -p www/{css,js,images}
|
|
```
|
|
|
|
## Running the Server
|
|
|
|
```bash
|
|
# Allow ports
|
|
sudo ufw allow 8080/tcp # HTTP
|
|
sudo ufw allow 443/tcp # HTTPS
|
|
|
|
# Run the server
|
|
./server
|
|
```
|
|
|
|
## Planned Features
|
|
|
|
| Feature | Priority | Status |
|
|
|---------|----------|--------|
|
|
| WebSocket Support | Medium | ❌ |
|
|
| User Authentication | High | ❌ |
|
|
| API Documentation | Medium | ❌ |
|
|
| Load Balancing | Low | ❌ |
|
|
| Security Audits | Medium | ❌ |
|
|
|
|
## Contributing
|
|
|
|
1. Fork the repository
|
|
2. Create your feature branch
|
|
3. Commit your changes
|
|
4. Push to the branch
|
|
5. Create a Pull Request
|
|
|
|
## License
|
|
|
|
This project is licensed under the MIT License - see the LICENSE file for details.
|
|
|
|
## Security
|
|
|
|
While this server implements various security measures, it's recommended to:
|
|
- Use a reverse proxy (like Nginx) in production
|
|
- Obtain proper SSL certificates (Let's Encrypt)
|
|
- Regularly update dependencies
|
|
- Monitor server logs
|
|
- Conduct security audits
|
|
|
|
## Acknowledgments
|
|
|
|
- OpenSSL for SSL/TLS support
|
|
- cJSON for configuration parsing
|
|
- libmagic for MIME type detection
|
|
|