{"id":30950949,"url":"https://github.com/imgurbot12/httpf","last_synced_at":"2025-09-11T05:28:07.627Z","repository":{"id":252154171,"uuid":"839587119","full_name":"imgurbot12/httpf","owner":"imgurbot12","description":"Dead Simple HTTP Reverse Proxy Firewall.","archived":false,"fork":false,"pushed_at":"2025-06-25T23:57:40.000Z","size":122,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-26T00:25:48.755Z","etag":null,"topics":["firewall","http","http-server","rust","waf"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/imgurbot12.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}},"created_at":"2024-08-07T23:26:55.000Z","updated_at":"2025-06-25T23:57:43.000Z","dependencies_parsed_at":"2025-06-26T00:31:53.430Z","dependency_job_id":null,"html_url":"https://github.com/imgurbot12/httpf","commit_stats":null,"previous_names":["imgurbot12/httpf"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/imgurbot12/httpf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imgurbot12%2Fhttpf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imgurbot12%2Fhttpf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imgurbot12%2Fhttpf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imgurbot12%2Fhttpf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imgurbot12","download_url":"https://codeload.github.com/imgurbot12/httpf/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imgurbot12%2Fhttpf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274582552,"owners_count":25311640,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-11T02:00:13.660Z","response_time":74,"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":["firewall","http","http-server","rust","waf"],"created_at":"2025-09-11T05:27:19.764Z","updated_at":"2025-09-11T05:28:07.619Z","avatar_url":"https://github.com/imgurbot12.png","language":"Rust","readme":"httpf\n-----\n\nDead Simple HTTP Reverse Proxy Firewall.\n\n### Features:\n  - Blazingly Fast 🔥\n  - Simple and Easy Reverse Proxy\n  - Stupid Easy IP Whitelist/Blacklist\n  - Simple Fail2Ban Integration\n\n### Install\n\n```bash\n$ cargo install --path .\n```\n\n### Quick Start\n\n1. Configure `httpf.yaml` to specify your listener, protected resolution,\nand firewall options.\n\n```yaml\n---\nlisten:\n  host: '127.0.0.1' # httpf listener host\n  port: 8001        # httpf listener port\n\n# protected resources that valid requests resolve to\nresolve:\n  default:\n    - https://example.com\n  # write glob rules for host specific resolution\n  '*.example.com':\n    - https://www.example.com\n\n# useful if httpf is behind another proxy (only allow headers you trust)\nproxy:\n  trust_headers:   false\n  trusted_headers: ['cf-connecting-ip']\n\n# permanent and cached blacklist/whitelist entries\nfirewall:\n  database:  'httpf.db'\n  blacklist: []\n  # whitelist: ['127.0.0.1']\n\n# block \u0026 ratelimit access rules\ncontrols:\n\n  - path: '/'\n    match: ['1.2.3.4', '1.2.4.0/24']\n    action:\n      type: 'block'\n\n  # javascript challenge to filter bots\n  - path: '/'\n    skip:  ['/robots.txt', '/api/']\n    match: ['all']\n    action:\n      type: 'challenge'\n\n  # nginx style matchers for denying/allowing access per ip\n  # https://www.digitalocean.com/community/tutorials/nginx-location-directive\n  - path: '= /limit'\n    match: ['all']\n    action:\n      type:  'ratelimit'\n      limit: 30 # requests/second\n```\n\n2. Run httpf:\n\n```bash\n$ httpf\n```\n\n### Fail2Ban Setup\n\nDeclare a new Fail2ban Action via `/etc/fail2ban/action.d/httpf.conf`\n\n```\n[Definition]\nactionstart =\nactionstop =\nactioncheck =\nactionban = httpf blacklist add \u003cip\u003e\nactionunban = httpf blacklist remove \u003cip\u003e\n```\n\nConfigure your jail of choice in `/etc/fail2ban/jail.d/`\nand include: `action = httpf`\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimgurbot12%2Fhttpf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimgurbot12%2Fhttpf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimgurbot12%2Fhttpf/lists"}