diff --git a/README.md b/README.md index 9743ecc..2bc2632 100644 --- a/README.md +++ b/README.md @@ -42,4 +42,13 @@ Cloudflare Gateway allows you to create custom rules to filter HTTP, DNS, and ne This project can be run in GitHub Actions so your filter lists will be automatically updated and pushed to Cloudflare Gateway. -[work in progress] +1. Create a new empty, private repository. Forking or public repositories are not recommended - although the script never leaks your API keys and GitHub Actions secrets are automatically redacted from the logs, it's better to be safe than sorry. +2. Create the following GitHub Actions secrets in your repository settings: + +- `CLOUDFLARE_API_KEY`: Your Cloudflare API key +- `CLOUDFLARE_ACCOUNT_ID`: Your Cloudflare account ID +- `CLOUDFLARE_ACCOUNT_EMAIL`: Your Cloudflare account email +- `CLOUDFLARE_LIST_ITEM_LIMIT`: The maximum number of items allowed in a list. Use 300000 for the free plan or if you're unsure. + +3. Create a new file in the repository named `.github/workflows/main.yml` with the contents of `auto_update_github_action.yml` found in this repository. The default settings will update your filters every week at 3 AM UTC. You can change this by editing the `schedule` property. +4. Enable GitHub Actions in your repository settings. diff --git a/auto_update_github_action.yml b/auto_update_github_action.yml new file mode 100644 index 0000000..e076965 --- /dev/null +++ b/auto_update_github_action.yml @@ -0,0 +1,51 @@ +name: Update Filter Lists + +on: + schedule: + - cron: '0 3 * * 1' + push: + branches: + - '**' + workflow_dispatch: + +jobs: + cgps: + runs-on: ubuntu-latest + steps: + - name: Install Node.js + uses: actions/setup-node@v3 + with: + node-version: 16 + + - name: Clone repository + run: git clone https://github.com/mrrfv/cloudflare-gateway-pihole-scripts.git + + - name: Install npm dependencies + run: npm ci + working-directory: cloudflare-gateway-pihole-scripts + + - name: Download recommended filters + run: bash ./get_recommended_filters.sh + working-directory: cloudflare-gateway-pihole-scripts + + - name: Delete old rules and lists + run: | + node cf_gateway_rule_delete.js + node cf_list_delete.js + working-directory: cloudflare-gateway-pihole-scripts + env: + CLOUDFLARE_API_KEY: ${{ secrets.CLOUDFLARE_API_KEY }} + CLOUDFLARE_ACCOUNT_EMAIL: ${{ secrets.CLOUDFLARE_ACCOUNT_EMAIL }} + CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} + CLOUDFLARE_LIST_ITEM_LIMIT: ${{ secrets.CLOUDFLARE_LIST_ITEM_LIMIT }} + + - name: Create new rules and lists + run: | + node cf_list_create.js + node cf_gateway_rule_create.js + working-directory: cloudflare-gateway-pihole-scripts + env: + CLOUDFLARE_API_KEY: ${{ secrets.CLOUDFLARE_API_KEY }} + CLOUDFLARE_ACCOUNT_EMAIL: ${{ secrets.CLOUDFLARE_ACCOUNT_EMAIL }} + CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} + CLOUDFLARE_LIST_ITEM_LIMIT: ${{ secrets.CLOUDFLARE_LIST_ITEM_LIMIT }}