# Cloudflare Gateway Adblocking
![PyPI](https://img.shields.io/pypi/v/cloudflare-gateway-adblocking?style=for-the-badge&logo=python&link=https%3A%2F%2Fpypi.org%2Fproject%2Fcloudflare-gateway-adblocking%2F)
Serverless adblocking via Cloudflare Zero Trust Gateway
### What is this?
This is a serverless adblocking solution that uses Cloudflare's Zero Trust Gateway to block ads by parsing a hosts file and creating a firewall rule to block the domains. It can be used as an alternative to Pi-Hole or other adblocking solutions.
This project was heavily inspired by [this blog post](https://blog.marcolancini.it/2022/blog-serverless-ad-blocking-with-cloudflare-gateway/)
### Prerequisites
* Python > 3.10
* A Cloudflare account with Zero Trust enabled
* A Cloudflare API tolken with the following permissions:
* Zero Trust: Edit
* Account Firewall Access Rules: Edit
* Access: Apps and Policies: Edit
* A device with the WARP client installed and configured to use a Zero Trust account
### Installation
#### From PyPi
`pip install cloudflare-gateway-adblocking`
### Usage
#### Setting Cloudflare credentials
##### Environment variables
The following environment variables can be used to set the Cloudflare credentials:
* `CLOUDFLARE_ACCOUNT_ID`
* `CLOUDFLARE_TOKEN`
These can either be set in the environment or in a `.env` file in the current working directory.
#### Command line flags
The following command line flags can be used to set the Cloudflare credentials:
* Cloudflare Account ID: `--account-id` / `-a`
* Cloudflare Token: `--token` / `-t`
#### Passing blocklists
Blocklists can be passed to the program via the command line flag `--blocklist` / `-b`. This flag can either point to a hosts file or a directory containing hosts files. If this flag is not passed, the program will look for a file or directory named `blocklists` in the current working directory.
#### Passing whitelists
Whitelists can be passed to the program via the command line flag `--whitelist` / `-w`. This flag can either point to a hosts file or a directory containing hosts files. If this flag is not passed, then if a file or directory named `whitelists` exists in the current working directory, it will be used. Domains in this whitelist will be excluded from the blocklists.
#### Uploading blocklists and creating a firewall policy
To upload the blocklists to Cloudflare and create a firewall policy, use the `upload` subcommand.
For example:
`cloudflare-gateway-adblocking upload`
#### Deleting blocklists and firewall policy
To delete the blocklists from Cloudflare and delete the firewall policy, use the `delete` subcommand.
For example:
`cloudflare-gateway-adblocking delete`
### Help
For help, use the `--help` flag.
### Contributing
* [Sponsoring](https://github.com/sponsors/slashtechno) via GitHub
* Contributing code via a pull request
* Reporting encoutered issues
Raw data
{
"_id": null,
"home_page": "https://github.com/slashtechno/cloudflare-gateway-adblocking",
"name": "cloudflare-gateway-adblocking",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.10",
"maintainer_email": null,
"keywords": "cloudflare, dns, adblocking, serverless",
"author": "slastechno",
"author_email": "77907286+slashtechno@users.noreply.github.com",
"download_url": "https://files.pythonhosted.org/packages/ad/ab/afb97fea3e654ff3af79b6ba85c6a3281c508503f9b413e2281d9e4cd1b2/cloudflare_gateway_adblocking-0.1.4.tar.gz",
"platform": null,
"description": "# Cloudflare Gateway Adblocking \n![PyPI](https://img.shields.io/pypi/v/cloudflare-gateway-adblocking?style=for-the-badge&logo=python&link=https%3A%2F%2Fpypi.org%2Fproject%2Fcloudflare-gateway-adblocking%2F) \nServerless adblocking via Cloudflare Zero Trust Gateway \n\n### What is this? \nThis is a serverless adblocking solution that uses Cloudflare's Zero Trust Gateway to block ads by parsing a hosts file and creating a firewall rule to block the domains. It can be used as an alternative to Pi-Hole or other adblocking solutions. \nThis project was heavily inspired by [this blog post](https://blog.marcolancini.it/2022/blog-serverless-ad-blocking-with-cloudflare-gateway/) \n\n\n### Prerequisites\n* Python > 3.10 \n* A Cloudflare account with Zero Trust enabled \n* A Cloudflare API tolken with the following permissions: \n * Zero Trust: Edit \n * Account Firewall Access Rules: Edit \n * Access: Apps and Policies: Edit \n* A device with the WARP client installed and configured to use a Zero Trust account \n\n\n### Installation \n#### From PyPi \n`pip install cloudflare-gateway-adblocking` \n\n\n### Usage \n#### Setting Cloudflare credentials \n##### Environment variables \nThe following environment variables can be used to set the Cloudflare credentials: \n* `CLOUDFLARE_ACCOUNT_ID`\n* `CLOUDFLARE_TOKEN` \nThese can either be set in the environment or in a `.env` file in the current working directory. \n#### Command line flags \nThe following command line flags can be used to set the Cloudflare credentials:\n* Cloudflare Account ID: `--account-id` / `-a` \n* Cloudflare Token: `--token` / `-t` \n#### Passing blocklists \nBlocklists can be passed to the program via the command line flag `--blocklist` / `-b`. This flag can either point to a hosts file or a directory containing hosts files. If this flag is not passed, the program will look for a file or directory named `blocklists` in the current working directory. \n#### Passing whitelists \nWhitelists can be passed to the program via the command line flag `--whitelist` / `-w`. This flag can either point to a hosts file or a directory containing hosts files. If this flag is not passed, then if a file or directory named `whitelists` exists in the current working directory, it will be used. Domains in this whitelist will be excluded from the blocklists. \n#### Uploading blocklists and creating a firewall policy\nTo upload the blocklists to Cloudflare and create a firewall policy, use the `upload` subcommand. \nFor example: \n`cloudflare-gateway-adblocking upload` \n#### Deleting blocklists and firewall policy \nTo delete the blocklists from Cloudflare and delete the firewall policy, use the `delete` subcommand. \nFor example: \n`cloudflare-gateway-adblocking delete` \n### Help \nFor help, use the `--help` flag. \n### Contributing \n* [Sponsoring](https://github.com/sponsors/slashtechno) via GitHub\n* Contributing code via a pull request\n* Reporting encoutered issues\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Serverless adblocking via Cloudflare Zero Trust Gateway",
"version": "0.1.4",
"project_urls": {
"Homepage": "https://github.com/slashtechno/cloudflare-gateway-adblocking",
"Repository": "https://github.com/slashtechno/cloudflare-gateway-adblocking"
},
"split_keywords": [
"cloudflare",
" dns",
" adblocking",
" serverless"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "a544e209c2311c3748abe78a3b946fd93c12e7aa4b2ca5d464526e9f390c5ff6",
"md5": "697689bad31d1992f50c96534adf9cf5",
"sha256": "cfef4c83fa0ec26a12f1860c020b1ffc108119177a63449df90b8cd9b8b1469c"
},
"downloads": -1,
"filename": "cloudflare_gateway_adblocking-0.1.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "697689bad31d1992f50c96534adf9cf5",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.10",
"size": 9361,
"upload_time": "2024-05-12T21:21:31",
"upload_time_iso_8601": "2024-05-12T21:21:31.940782Z",
"url": "https://files.pythonhosted.org/packages/a5/44/e209c2311c3748abe78a3b946fd93c12e7aa4b2ca5d464526e9f390c5ff6/cloudflare_gateway_adblocking-0.1.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "adabafb97fea3e654ff3af79b6ba85c6a3281c508503f9b413e2281d9e4cd1b2",
"md5": "653a82119d4e69bf5301c6402d8f8065",
"sha256": "3569d902bff63677b00b70faa169c4978d8fed7fd833d5d1c567f74c7d57c1dc"
},
"downloads": -1,
"filename": "cloudflare_gateway_adblocking-0.1.4.tar.gz",
"has_sig": false,
"md5_digest": "653a82119d4e69bf5301c6402d8f8065",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.10",
"size": 7649,
"upload_time": "2024-05-12T21:21:32",
"upload_time_iso_8601": "2024-05-12T21:21:32.932694Z",
"url": "https://files.pythonhosted.org/packages/ad/ab/afb97fea3e654ff3af79b6ba85c6a3281c508503f9b413e2281d9e4cd1b2/cloudflare_gateway_adblocking-0.1.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-05-12 21:21:32",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "slashtechno",
"github_project": "cloudflare-gateway-adblocking",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "cloudflare-gateway-adblocking"
}