Warning
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.
Firefox 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.
Important
A MaxMind License key is required to enable GeoIP and ASN blocking features. Create a free account, then generate your license key here.
VETO gives you fine-grained control over your browsing experience by allowing you to:
- GeoIP Filtering: Block or allow web requests based on the geographic location of the server
- ASN Blocking: Filter traffic from specific Autonomous System Numbers (network providers)
- Domain & URL Filtering: Create rules to block or allow specific domains and URLs
- Content Blocking: Filter out unwanted content from websites
- Simple Interface: Easy-to-use popup interface to manage all filtering rules
To use GeoIP and ASN filtering features you need a free MaxMind account:
- Sign up here
- Generate a license key
- Enter this key in VETO settings
- Click "Save" to save your license key
- Open Firefox on your desktop or Android device;
- Visit the VETO Add-on page on AMO;
- Click Add to Firefox;
- When prompted, click Add to confirm the installation;
- Follow any on-screen instructions to complete setup.
Download the latest signed .xpi
extension file from our GitHub releases page, then follow the appropriate instructions for your device:
- Open Firefox;
- Go to
about:addons
by entering it in the address bar, or navigate to Settings > Extensions & Themes > Extensions; - Click the gear icon (⚙️) at the top right;
- Select Install Add-on From File...;
- Locate and select the
.xpi
file you downloaded earlier; - Follow the on-screen prompts to complete the installation.
- Open Firefox on your Android device;
- Tap the three-dot menu and go to Settings;
- Scroll down and select About Firefox;
- Rapidly tap the Firefox logo five times to enable the Debug menu;
- Without closing Firefox, return to Settings;
- Tap Install extension from file (now visible in the menu);
- Locate and select the
.xpi
file you downloaded earlier; - Follow the on-screen prompts to complete the installation.
The extension follows a service-based architecture:
- Service Layer: Core functionality organized into services:
- StorageService: Manages all browser storage operations
- RuleService: Handles rule management and processing
- NetworkService: Manages DNS resolution and network operations
- MaxMindService: Handles GeoIP and ASN database operations
- EventService: Coordinates browser events and message handling
- Background Script: Initializes services and connects components
- Popup Interface: User interface for managing rules and settings
- Utility Modules: Handle specialized functions and provide helpers
- TypeScript: Core language for development
- Webpack: Module bundling
- ESLint: Code quality and style enforcement
- Mozilla Web Extensions API: For browser integration
The extension uses several key technologies:
- Mozilla's WebExtension API: For browser integration
- declarativeNetRequest API: For efficient network request filtering
- Storage API: For storing user preferences and rules
- DNS API: For domain name resolution
- Node.js (v14+)
- npm or yarn
-
Clone the repository:
git clone https://github.com/veto-firewall/veto.git cd veto
-
Install dependencies:
npm install
-
Build the extension:
npm run package
-
The built extension will be available in the
dist
directory
The release process is fully automated through GitHub Actions:
- Go to the Actions tab in the GitHub repository
- Select the "Release" workflow
- Click on "Run workflow" and provide the following inputs:
- Version type: Choose between
patch
,minor
, ormajor
to determine how the version number should be incremented - Distribution channel: Select
listed
for public distribution orunlisted
for private distribution
- Version type: Choose between
The workflow (.github/workflows/release.yml
) will automatically:
- Update the version in
package.json
andsrc/manifest.json
- Build the extension
- Sign the extension with Mozilla's Web-Ext API
- Create a GitHub release with:
- Source code archive
- Unsigned extension package (zip)
- Signed extension package (xpi)
- Checksums for all files
- Submit the extension to Firefox Add-ons with the specified distribution channel
No manual steps are required as the entire process from version bumping to Firefox submission is handled by the workflow.
Contributions are welcome! Please feel free to submit a Pull Request.
Enjoy!