{"id":31724978,"url":"https://github.com/anbalagand/tinyserver","last_synced_at":"2026-07-11T16:31:33.771Z","repository":{"id":315254319,"uuid":"1058717209","full_name":"AnbalaganD/TinyServer","owner":"AnbalaganD","description":"A simple HTTP/HTTPS server written in C using OpenSSL for educational purposes.","archived":false,"fork":false,"pushed_at":"2025-09-22T03:58:08.000Z","size":11,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-09T05:18:55.145Z","etag":null,"topics":["c","http","http-server","https","openss","rest-api","ssl"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AnbalaganD.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-17T13:06:41.000Z","updated_at":"2025-09-22T03:58:12.000Z","dependencies_parsed_at":"2025-09-17T15:50:21.262Z","dependency_job_id":"6cb53a90-8466-4c9e-9387-e5b68b453843","html_url":"https://github.com/AnbalaganD/TinyServer","commit_stats":null,"previous_names":["anbalagand/tinyserver"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AnbalaganD/TinyServer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnbalaganD%2FTinyServer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnbalaganD%2FTinyServer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnbalaganD%2FTinyServer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnbalaganD%2FTinyServer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AnbalaganD","download_url":"https://codeload.github.com/AnbalaganD/TinyServer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnbalaganD%2FTinyServer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35368766,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-11T02:00:05.354Z","response_time":104,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","http","http-server","https","openss","rest-api","ssl"],"created_at":"2025-10-09T05:18:32.992Z","updated_at":"2026-07-11T16:31:33.748Z","avatar_url":"https://github.com/AnbalaganD.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tiny HTTP/HTTPS Server\n\nA simple HTTP/HTTPS server written in C using OpenSSL for educational purposes. Supports both secure (HTTPS) and plain (HTTP) modes.\n\n## Running Modes\n\n### HTTPS Mode (Default)\nSecure server with SSL/TLS encryption - requires certificates.\n\n### HTTP Mode (--no-tls flag)\nPlain HTTP server without encryption - no certificates needed.\n\n## Setup Instructions\n\n### Option 1: Quick Start (HTTP Mode)\n\n```bash\n# Build the server\nmake\n\n# Run as plain HTTP server (no certificates needed)\n./.bin/tinyserver --no-tls\n```\n\nTest at: `http://localhost:8080`\n\n### Option 2: Secure HTTPS Mode\n\n**⚠️ IMPORTANT: Requires SSL certificates (NOT included for security reasons)**\n\n#### 1. Generate SSL Certificates\n\n```bash\n# Generate private key (KEEP THIS SECRET!)\nopenssl genrsa -out server.key 2048\n\n# Generate certificate signing request\nopenssl req -new -key server.key -out server.csr\n\n# Generate self-signed certificate (for testing only)\nopenssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt\n\n# Generate CA certificate (for client verification)\nopenssl req -new -x509 -days 365 -key server.key -out ca.crt\n```\n\n#### 2. Run HTTPS Server\n\n```bash\n# Build the server\nmake\n\n# Run as HTTPS server (default mode)\n./.bin/tinyserver\n```\n\nTest at: `https://localhost:8080`\n\n**Note:** You'll get a security warning because it's a self-signed certificate. This is normal for development.\n\n## Command Line Options\n\n- **No arguments**: Run as HTTPS server (requires certificates)\n- **--no-tls**: Run as plain HTTP server (no certificates needed)\n\n## File Structure\n\n```\nTinyServer/\n├── src/\n│   └── tinyserver.c    # Main server code\n├── .bin/               # Compiled executables (auto-generated)\n├── .obj/               # Object files (auto-generated)\n├── makefile           # Build configuration\n├── .gitignore         # Git ignore rules\n└── README.md          # This file\n\n# These files are created by you (NOT in git):\n├── server.key         # Private key (NEVER commit!)\n├── server.crt         # Server certificate\n└── ca.crt            # CA certificate\n```\n\n## Security Best Practices\n\n- **Never commit private keys** (`.key` files) to version control\n- **Never commit certificates** with real private keys to public repositories\n- Use proper certificate authorities for production\n- This is for educational purposes only - not production ready\n\n## Learning Objectives\n\nThis project demonstrates:\n- C socket programming\n- SSL/TLS encryption with OpenSSL\n- HTTP protocol handling\n- Certificate-based authentication\n- Proper build system with Makefiles\n- Command line argument parsing","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanbalagand%2Ftinyserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanbalagand%2Ftinyserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanbalagand%2Ftinyserver/lists"}