{"id":30677188,"url":"https://github.com/devanoxltd/cloudflarewarp","last_synced_at":"2025-09-01T11:34:46.112Z","repository":{"id":312379962,"uuid":"1047329797","full_name":"devanoxltd/cloudflarewarp","owner":"devanoxltd","description":"Get real IP and protocol from Cloudflare Proxy/Tunnel headers middleware for Traefik","archived":false,"fork":false,"pushed_at":"2025-08-30T07:12:36.000Z","size":22,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-30T08:23:13.470Z","etag":null,"topics":[],"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/devanoxltd.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"devanoxltd"}},"created_at":"2025-08-30T07:07:24.000Z","updated_at":"2025-08-30T07:14:20.000Z","dependencies_parsed_at":"2025-08-30T08:34:26.103Z","dependency_job_id":null,"html_url":"https://github.com/devanoxltd/cloudflarewarp","commit_stats":null,"previous_names":["devanoxltd/cloudflarewarp"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/devanoxltd/cloudflarewarp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devanoxltd%2Fcloudflarewarp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devanoxltd%2Fcloudflarewarp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devanoxltd%2Fcloudflarewarp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devanoxltd%2Fcloudflarewarp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devanoxltd","download_url":"https://codeload.github.com/devanoxltd/cloudflarewarp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devanoxltd%2Fcloudflarewarp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273114756,"owners_count":25048253,"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-01T02:00:09.058Z","response_time":120,"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":[],"created_at":"2025-09-01T11:34:44.572Z","updated_at":"2025-09-01T11:34:46.058Z","avatar_url":"https://github.com/devanoxltd.png","language":"Go","funding_links":["https://github.com/sponsors/devanoxltd"],"categories":[],"sub_categories":[],"readme":"# Real IP from Cloudflare Proxy/Tunnel\n\nForked from https://github.com/PseudoResonance/cloudflarewarp\n\u003e Note: Traefik plugin repositories cannot be GitHub forks to show up on the plugin repository, which is why this repo no longer shows as a fork.\n\nIf Traefik is behind a Cloudflare Proxy/Tunnel, it won't be able to get the real IP from the external client as well as other information.\n\nThis plugin solves this issue by overwriting the X-Real-IP and X-Forwarded-For with an IP from the CF-Connecting-IP header.\nThe real IP will be the Cf-Connecting-IP if request is come from Cloudflare ( truest ip in configuration file).\nThe plugin also writes the CF-Visitor scheme to the X-Forwarded-Proto. (This fixes an infinite redirect issue for wordpress when using CF[443]-\u003ePROXY/TUNNEL-\u003eTraefik[80]-\u003eWP[80])\n\n## Configuration\n\n### Configuration documentation\n\nSupported configurations per body\n\n| Setting        | Allowed values | Required | Description                                         |\n| :------------- | :------------- | :------- | :-------------------------------------------------- |\n| trustip        | []string       | No       | IP or IP range to trust in CIDR format              |\n| disableDefault | bool           | Yes      | Disable the built in list of Cloudflare IPs/Servers |\n| trustDnsName   | string         | No       | DNS record to query for trusted IPs                 |\n| clusterCidr    | []string       | No       | IP ranges to expect trusted IPs                     |\n| debug          | bool           | No       | Enables extra debug logging                         |\n\n### Notes re Cloudflare\n\nOne thing included in this plugin is we bundle the Cloudflare server IPs with it, so you do not have to define them manually.\nHowever on the flip-side, if you want to, you can just disable them by setting `disableDefault` to `true`.\n\nIf you do not define `trustip` and `disableDefault`, it doesn't seem to load the plugin, so just set `disableDefault` to `false` and you are able to use the default IP list.\n\n### Enable the plugin\n\n```yaml\nexperimental:\n  plugins:\n    cloudflarewarp:\n      modulename: github.com/devanoxltd/cloudflarewarp\n      version: v1.0.0\n```\n\n### Plugin configuration\n\n```yaml\nhttp:\n  middlewares:\n    cloudflarewarp:\n      plugin:\n        cloudflarewarp:\n          disableDefault: false\n          trustip: # Trust IPS not required if disableDefault is false - we will add Cloudflare IPs automatically\n            - \"2400:cb00::/32\"\n\n  routers:\n    my-router:\n      rule: Path(`/whoami`)\n      service: service-whoami\n      entryPoints:\n        - http\n      middlewares:\n        - cloudflarewarp\n\n  services:\n    service-whoami:\n      loadBalancer:\n        servers:\n          - url: http://127.0.0.1:5000\n```\n\n# Testing\n\n[https://github.com/devanoxltd/cloudflarewarp/tree/master/test](https://github.com/devanoxltd/cloudflarewarp/tree/master/test)\n\nWe have written the following tests in this repo:\n\n- golang linting\n- yaegi tests (validate configuration matches what Traefik expects)\n- General GO code coverage\n- Virtual implementation tests (spin up traefik with yml/toml tests to make sure the plugin actually works)\n- Live implementation tests (spin up traefik with the plugin definition as it would be for you, and run the same tests again)\n\nThese tests allow us to make sure the plugin is always functional with Traefik and Traefik version updates.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevanoxltd%2Fcloudflarewarp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevanoxltd%2Fcloudflarewarp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevanoxltd%2Fcloudflarewarp/lists"}