{"id":21966302,"url":"https://github.com/bacv/kingip","last_synced_at":"2026-04-26T16:31:49.550Z","repository":{"id":224041107,"uuid":"754891227","full_name":"bacv/kingip","owner":"bacv","description":"Http/https proxy gateway using quic for internal communication with the edge nodes","archived":false,"fork":false,"pushed_at":"2024-12-26T11:41:48.000Z","size":101,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-22T21:42:12.142Z","etag":null,"topics":["gateway","go","golang","https","https-proxy","proxy-server","quic"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bacv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2024-02-09T00:36:31.000Z","updated_at":"2024-12-26T11:41:51.000Z","dependencies_parsed_at":"2024-02-23T12:31:22.717Z","dependency_job_id":"d864a90e-a772-436e-b9f6-cfcf6a7eda4e","html_url":"https://github.com/bacv/kingip","commit_stats":null,"previous_names":["bacv/kingip"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bacv/kingip","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bacv%2Fkingip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bacv%2Fkingip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bacv%2Fkingip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bacv%2Fkingip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bacv","download_url":"https://codeload.github.com/bacv/kingip/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bacv%2Fkingip/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32305035,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T09:34:17.070Z","status":"ssl_error","status_checked_at":"2026-04-26T09:34:00.993Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["gateway","go","golang","https","https-proxy","proxy-server","quic"],"created_at":"2024-11-29T13:01:51.426Z","updated_at":"2026-04-26T16:31:49.534Z","avatar_url":"https://github.com/bacv.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# KingIP\n\nA proxy server that can handle multiple exit points.\n\n## How it works\n\nWhen a user connects via the proxy to the destination server (ie. `curl -x \"http://user:pass@localhost:11700\" https://httpbin.org/ip -L -v`), the request traverses these services:\n  - Gateway decides to which region the request needs to be passed by the port the user connects to (ie. `:11700` is \"red\" region in the example;\n  - Gateway then checks if it has any relay connections and creates new `quic` stream with the random relay it chooses;\n  - Relay gets a proxy request from the gateway and checks if it has any edge connections for a chosen region;\n  - Relay, if there are any edge connections from that region, creates a new `quic` strem with a chosen edge;\n  - Once a \"tunnel\" from gateway to relay to edge is established - an inbound and outbound data is passed around from user to destination;\n\n## How to run\n\nTo run, go to `cmd/{gateway,relay,edge}`folders and build 3 binaries. \n\nStart these services with the default configuration:\n```bash\n./cmd/gateway/gateway --config ./cmd/gateway/config.yml\n./cmd/relay/relay --config ./cmd/relay/config.yml\n./cmd/edge/edge\n```\n\nAfter running gateway, relay and edge - connect to the gateway via `http://user:pass@localhost:11700`:\n```bash\ncurl -x http://user:pass@localhost:11700 http://httpbin.org/ip -L -v\n```\n\n### Docker Compose\n\nAfter running `docker compose up`, user should be able to proxy requests through tree regions: red, green, blue and yellow.\n\n```bash\n# Red\ncurl -x http://user:pass@localhost:11700 http://httpbin.org/ip -L -v\n\n# Green\ncurl -x http://user:pass@localhost:11070 http://httpbin.org/ip -L -v\n\n# Blue\ncurl -x http://user:pass@localhost:11007 http://httpbin.org/ip -L -v\n\n# Yellow\ncurl -x http://user:pass@localhost:11770 http://httpbin.org/ip -L -v\n```\n\nTo connect to host network via the docker compose proxy use `host.docker.internal` instead of `localhost` in the curl request:\n```bash\n# Connects to localhost:8080 on host system\ncurl -x http://user:pass@localhost:11770 http://host.docker.internal:8080/test -L -v\n```\n\n\n## \"Curl\" util\n\n`cmd/curl` has ability to run multiple requests at once. After building it in `cmd/curl` directory:\n\n```bash\n# Usage of `curl`:\n#       --parallel int       Number of parallel calls (default 11)\n#       --proxy string       Proxy URL (default \"http://user:pass@localhost:11700\")\n#       --timeout duration   Request timeout in seconds (default 10s)\n#       --url string         Target URL to request (default \"http://httpbin.org/ip\")\n\n./cmd/curl/curl -proxy http://user:pass@localhost:11700 -url http://httpbin.org/ip \n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbacv%2Fkingip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbacv%2Fkingip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbacv%2Fkingip/lists"}