{"id":18377515,"url":"https://github.com/richardbolt/shrike","last_synced_at":"2025-08-16T09:08:31.488Z","repository":{"id":139391870,"uuid":"113391143","full_name":"richardbolt/shrike","owner":"richardbolt","description":"The Shrike is a Chaos HTTP/WebSocket proxy that impales victims on the Tree of Pain by selectively routing traffic with path based rules via Toxiproxy for TCP level mischief","archived":false,"fork":false,"pushed_at":"2017-12-31T16:05:12.000Z","size":46,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-11T07:04:26.271Z","etag":null,"topics":["chaos","chaos-engineering","go","http-proxy"],"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/richardbolt.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":"2017-12-07T02:16:07.000Z","updated_at":"2024-09-14T01:15:23.000Z","dependencies_parsed_at":"2024-06-20T17:22:35.028Z","dependency_job_id":"c86e3832-7a9f-4d3d-9f76-7180deed1669","html_url":"https://github.com/richardbolt/shrike","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/richardbolt/shrike","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardbolt%2Fshrike","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardbolt%2Fshrike/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardbolt%2Fshrike/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardbolt%2Fshrike/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richardbolt","download_url":"https://codeload.github.com/richardbolt/shrike/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardbolt%2Fshrike/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270690094,"owners_count":24628805,"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-08-16T02:00:11.002Z","response_time":91,"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":["chaos","chaos-engineering","go","http-proxy"],"created_at":"2024-11-06T00:28:22.767Z","updated_at":"2025-08-16T09:08:31.469Z","avatar_url":"https://github.com/richardbolt.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"The Shrike\n==========\n\nThe Shrike is a Layer 7 Chaos HTTP/WebSocket proxy that impales it's victims on the Tree of Pain. The Tree of Pain for this Shrike takes the form of [Toxiproxy](http://toxiproxy.io), an excellent TCP network tampering tool.\n\nThe Shrike is designed for resliliency testing a whole environment and has an API to route http path based traffic through an embedded [Toxiproxy](http://toxiproxy.io) instance.\n\nThe Shrike currently assumes you've put it close at the edge of your service stack thus the current single upstream location which is assumed to be your gateway.\n\nPath prefix matching is used to route differing paths for testing while unmatched paths are sent straight on to the gateway.\n\nConfiguration\n-------------\n\nConfiguration is by both environment variables and command line flags with command line flags taking precedence.\n\n### Command line flags\n\n`-host` is the address to bind to on the host. Defaults to `0.0.0.0`.\n\n`-port` is the proxy forwarder listen port to bind to on the host. Defaults to `8080`.\n\n`-apiport` is the api listen port to bind to on the host. Defaults to `8075`.\n\n`-upstream` is the upstream HTTP/WS proxy we are sitting in front of. Defaults to `http://127.0.0.1`.\n\n\n### Environment Variables\n\n`HOST` is the address to bind to on the host. Defaults to `0.0.0.0`.\n\n`PORT` is the proxy forwarder listen port to bind to on the host. Defaults to `8080`.\n\n`API_PORT` is the api listen port to bind to on the host. Defaults to `8075`.\n\n`UPSTREAM_URL` is the upstream HTTP/WS proxy we are sitting in front of. Defaults to `http://127.0.0.1`.\n\n`PORT` and `API_PORT` can be the same value and The Shrike proxy and api will be bound to the same port. This means that `/ping` and `/routes*` requests will be intercepted by Shrike and your Shrike control API *may* be exposed.\n\nDevelop\n-------\n\nThis project uses [Go 1.8](https://golang.org/dl/) or later and uses [Glide](https://glide.sh/) for package management.\n\n### Linux\n```\nmake\n```\n\n### Mac\n```\nmake mac\n```\n\nTo add or update dependencies in the vendor folder, please use [Glide](https://glide.sh/):\n\n```\ncurl https://glide.sh/get | sh # only necessary if you don't have Glide installed already.\nglide install\n```\n\nTesting\n-------\n\nRun the test suites with [Ginkgo](http://onsi.github.io/ginkgo/) installed and get coverage output:\n\n```\nmake ginkgo\n```\n\nRun the test suites without Ginkgo (less awesome output, no randomization of tests):\n\n```\nmake test\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichardbolt%2Fshrike","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichardbolt%2Fshrike","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichardbolt%2Fshrike/lists"}