{"id":44320547,"url":"https://github.com/veto-firewall/veto","last_synced_at":"2026-04-02T16:59:40.426Z","repository":{"id":294534169,"uuid":"987297067","full_name":"veto-firewall/veto","owner":"veto-firewall","description":"Simple Firewall For Your Browser: GeoIP, ASN, domain, URL and content blocking capabilities","archived":false,"fork":false,"pushed_at":"2026-03-25T21:31:03.000Z","size":24244,"stargazers_count":1,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-26T17:42:21.106Z","etag":null,"topics":["asn","bgp","firefox","firewall","geoip","privacy","security","typescript","webextension"],"latest_commit_sha":null,"homepage":"https://addons.mozilla.org/firefox/addon/veto-firewall/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/veto-firewall.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.txt","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":null,"patreon":"veto_firewall","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2025-05-20T21:45:05.000Z","updated_at":"2026-03-25T21:31:07.000Z","dependencies_parsed_at":"2025-05-28T21:57:34.791Z","dependency_job_id":"41134496-4567-4ecd-b227-a6582565e2b3","html_url":"https://github.com/veto-firewall/veto","commit_stats":null,"previous_names":["veto-firewall/veto"],"tags_count":34,"template":false,"template_full_name":null,"purl":"pkg:github/veto-firewall/veto","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veto-firewall%2Fveto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veto-firewall%2Fveto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veto-firewall%2Fveto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veto-firewall%2Fveto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/veto-firewall","download_url":"https://codeload.github.com/veto-firewall/veto/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veto-firewall%2Fveto/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31310983,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["asn","bgp","firefox","firewall","geoip","privacy","security","typescript","webextension"],"created_at":"2026-02-11T06:11:49.810Z","updated_at":"2026-04-02T16:59:40.406Z","avatar_url":"https://github.com/veto-firewall.png","language":"TypeScript","funding_links":["https://patreon.com/veto_firewall"],"categories":[],"sub_categories":[],"readme":"# Simple Firewall For Your Browser\n\n\u003e [!WARNING]\n\u003e The extension has not received external security review and may contain vulnerabilities. Do not use for sensitive use cases, and do not rely on its security until it has been reviewed. Work in progress.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"assets/images/icon-128.png\" alt=\"VETO Logo\" width=\"128\" height=\"128\"\u003e\n\u003c/div\u003e\n\n[![Quality Check](https://github.com/veto-firewall/veto/actions/workflows/ci.yml/badge.svg)](https://github.com/veto-firewall/veto/actions/workflows/ci.yml)\n[![Release](https://github.com/veto-firewall/veto/actions/workflows/release.yml/badge.svg)](https://github.com/veto-firewall/veto/actions/workflows/release.yml)\n[![Support the Project](https://img.shields.io/badge/Patreon-Support-F96854.svg)](https://patreon.com/veto_firewall)\n\n\u003cimg src=\"docs/screenshot-1.png\"\u003e\n\nFirefox extension that provides advanced filtering capabilities with GeoIP, ASN, domain, URL, and content blocking. It serves as a simple firewall for privacy and security. Available on [Firefox Add-ons Store](https://addons.mozilla.org/firefox/addon/veto-firewall/).\n\n\u003e [!IMPORTANT]\n\u003e A MaxMind License key is required to enable GeoIP and ASN blocking features. Create a \u003ca href=\"https://www.maxmind.com/en/geolite2/signup\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cstrong\u003efree account\u003c/strong\u003e\u003c/a\u003e, then generate your\u003ca href=\"https://www.maxmind.com/en/accounts/current/license-key\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cstrong\u003e license key here\u003c/strong\u003e\u003c/a\u003e.\n\n- [Features](#features)\n- [Installation](#installation)\n  - [Method 1: Install from Mozilla Add-ons (Recommended)](#method-1-install-from-mozilla-add-ons-recommended)\n  - [Method 2: Install from GitHub (.xpi file)](#method-2-install-from-github-xpi-file)\n    - [For Desktop (Firefox)](#for-desktop-firefox)\n    - [For Android (Firefox)](#for-android-firefox)\n- [Architecture and Dependencies](#architecture-and-dependencies)\n  - [Technology Stack](#technology-stack)\n  - [Dependencies](#dependencies)\n  - [Bundle Analysis](#bundle-analysis)\n- [Building and Publishing](#building-and-publishing)\n  - [Prerequisites](#prerequisites)\n  - [Building from Source](#building-from-source)\n  - [Publishing a New Release](#publishing-a-new-release)\n- [Contributing](#contributing)\n\n## Features\n\n\u003cimg src=\"docs/screenshot-2.png\"\u003e\n\nVETO gives you fine-grained control over your browsing experience by allowing you to:\n\n- **GeoIP Filtering**: Block or allow web requests based on the geographic location of the server\n- **ASN Blocking**: Filter traffic from specific Autonomous System Numbers (network providers)\n- **Domain \u0026 URL Filtering**: Create rules to block or allow specific domains and URLs\n- **Content Blocking**: Filter out unwanted content from websites\n- **Simple Interface**: Easy-to-use popup interface to manage all filtering rules\n\nTo use GeoIP and ASN filtering features you need a free MaxMind account:\n\n1. Sign up [here](https://www.maxmind.com/en/geolite2/signup)\n2. Generate a [license key](https://www.maxmind.com/en/accounts/current/license-key)\n3. Enter this key in VETO settings\n4. Click \"Save\" to save your license key\n\n## Installation\n\n## Method 1: Install from Mozilla Add-ons (Recommended)\n\n1. Open **Firefox** on your desktop or Android device;\n2. Visit the [VETO Add-on page on AMO](https://addons.mozilla.org/firefox/addon/veto-firewall/);\n3. Click **Add to Firefox**;\n4. When prompted, click **Add** to confirm the installation;\n5. Follow any on-screen instructions to complete setup.\n\n## Method 2: Install from GitHub (.xpi file)\n\nDownload the latest signed `.xpi` extension file from our [GitHub releases page](https://github.com/veto-firewall/veto/releases), then follow the appropriate instructions for your device:\n\n### For Desktop (Firefox)\n\n1. Open **Firefox**;\n2. Go to `about:addons` by entering it in the address bar, or navigate to **Settings** \u003e **Extensions \u0026 Themes** \u003e **Extensions**;\n3. Click the gear icon (⚙️) at the top right;\n4. Select **Install Add-on From File...**;\n5. Locate and select the `.xpi` file you downloaded earlier;\n6. Follow the on-screen prompts to complete the installation.\n\n### For Android (Firefox)\n\n1. Open **Firefox** on your Android device;\n2. Tap the three-dot menu and go to **Settings**;\n3. Scroll down and select **About Firefox**;\n4. Rapidly tap the Firefox logo five times to enable the Debug menu;\n5. Without closing Firefox, return to **Settings**;\n6. Tap **Install extension from file** (now visible in the menu);\n7. Locate and select the `.xpi` file you downloaded earlier;\n8. Follow the on-screen prompts to complete the installation.\n\n## Architecture And Dependencies\n\nThe extension follows a service-based architecture:\n\n- **Service Layer**: Core functionality organized into services:\n  - **StorageService**: Manages all browser storage operations\n  - **RuleService**: Handles rule management and processing\n  - **NetworkService**: Manages DNS resolution and network operations\n  - **MaxMindService**: Handles GeoIP and ASN database operations\n  - **EventService**: Coordinates browser events and message handling\n- **Background Script**: Initializes services and connects components\n- **Popup Interface**: User interface for managing rules and settings\n- **Utility Modules**: Handle specialized functions and provide helpers\n\n### Technology Stack\n\n- **TypeScript**: Core language for development\n- **Webpack**: Module bundling\n- **ESLint**: Code quality and style enforcement\n- **Mozilla Web Extensions API**: For browser integration\n\n### Dependencies\n\nThe extension uses several key technologies:\n\n- **Mozilla's WebExtension API**: For browser integration\n- **declarativeNetRequest API**: For efficient network request filtering\n- **Storage API**: For storing user preferences and rules\n- **DNS API**: For domain name resolution\n\n### Bundle Analysis\n\n[![Bundle Report](docs/bundle-report-parsed.png)](https://veto-firewall.github.io/veto/bundle-report.html)\n\n## Building and Publishing\n\n### Prerequisites\n\n- Node.js (v14+)\n- npm or yarn\n\n### Building from Source\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/veto-firewall/veto.git\n   cd veto\n   ```\n\n2. Install dependencies:\n   ```bash\n   npm install\n   ```\n\n3. Build the extension:\n   ```bash\n   npm run package\n   ```\n\n4. The built extension will be available in the `dist` directory\n\n### Publishing a New Release\n\nThe release process is fully automated through GitHub Actions:\n\n1. Go to the [Actions tab](https://github.com/veto-firewall/veto/actions) in the GitHub repository\n2. Select the \"Release\" workflow\n3. Click on \"Run workflow\" and provide the following inputs:\n   - **Version type**: Choose between `patch`, `minor`, or `major` to determine how the version number should be incremented\n   - **Distribution channel**: Select `listed` for public distribution or `unlisted` for private distribution\n\nThe workflow (`.github/workflows/release.yml`) will automatically:\n   - Update the version in `package.json` and `src/manifest.json`\n   - Build the extension\n   - Sign the extension with Mozilla's Web-Ext API\n   - Create a GitHub release with:\n     - Source code archive\n     - Unsigned extension package (zip)\n     - Signed extension package (xpi)\n     - Checksums for all files\n   - Submit the extension to Firefox Add-ons with the specified distribution channel\n\nNo manual steps are required as the entire process from version bumping to Firefox submission is handled by the workflow.\n\n## Use cases\n\n\u003cimg src=\"docs/screenshot-3.png\" alt=\"Block every Google service except Youtube\"\u003e\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n---\n\nEnjoy!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fveto-firewall%2Fveto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fveto-firewall%2Fveto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fveto-firewall%2Fveto/lists"}