AdguardTeam / AdGuardVPNExtension

AdGuard VPN Chrome and Firefox extension
https://adguard-vpn.com/
GNU General Public License v3.0
86 stars 19 forks source link
adguard-vpn chrome-extension firefox-addon

AdGuard VPN extension

Fast, flexible and reliable VPN extension for browsers

Your online safety and anonymity guaranteed by a trusted developer.

Website | Reddit | Twitter | Telegram

Latest release Latest release Latest release

AdGuard VPN serves to protect your online privacy, encrypt your connection, hide your IP address and websites you visit from anyone (including your ISP). Cutting-edge technologies and multiple customization options will help conceal your location and ensure anonymous browsing on the web. To get more information and to download AdGuard VPN visit our website [https://adguard-vpn.com/](https://adguard-vpn.com/). ## Feedback options We appreciate your feedback and always welcome both constructive criticism and new ideas. You can use GitHub to report a bug or to submit a feature request. To do so, go to [this page](https://github.com/AdguardTeam/AdguardVPNExtension/issues), click the _New issue_ button and choose between creating a bug report or feature request. - [Development](#development) - [Requirements](dev-requirements) - [Linting](#linting) - [Tests](#tests) - [Build](#build) - [Localization](#localization) - [Proto scheme update](#proto) - [Acknowledgments](#acknowledgments) - [Minimum supported browser versions](#minimum-supported-browser-versions) ## Development ### Requirements - [node.js LTS](https://nodejs.org/en/download/) - NPM v8 - [yarn v1.22](https://yarnpkg.com/en/docs/install/) #### Install local dependencies ```bash yarn install ``` #### Manage environment variables - Rename `.env.example` to `.env` and fill it with required config data - Also, you can provide environment variables through command line like this: ```text STAGE_ENV=test \ VPN_API_URL="vpn_api_url" \ AUTH_API_URL="auth_api_url" \ FORWARDER_DOMAIN="forwarder_domain" \ ``` ### Linting ```bash yarn lint ``` ### Tests ```bash yarn test ``` ### Build #### Dev version ```bash yarn dev ``` #### Beta version ```bash yarn beta ``` #### Release version ```bash yarn release ``` **Builds will be located in the `build` directory** By default, you will have builds for all browsers: - Chrome (manifest version 2) - Chrome (manifest version 3) - Firefox (manifest version 2) - Opera (manifest version 2) - Edge (manifest version 2) You can specify browser in arguments. See examples below: ```bash yarn dev chrome yarn beta chrome-mv3 yarn release opera ``` ### Update resources Before releasing new versions do not forget to update exclusions-services data, which will be used for migration if remote data was not received from the servers. ### Artifact builds - `CREDENTIALS_PASSWORD= artifacts:beta` - `CREDENTIALS_PASSWORD= artifacts:release` Make sure you have added credentials - certificate-beta.pem - chrome crx beta certificate - certificate-release.pem - chrome crx release certificate - mozilla_credentials.json - encrypted credentials, to the directory `./private/AdguardVPN` ### Localization - setup your project locales, directories in the file `tasks/locales.js` - `yarn locales:upload` used to upload base `en` locale - `yarn locales:download` run to download and save all locales - `yarn locales:validate` used to validate locales - `yarn locales:validate --min` used to validate only major locales ### Proto scheme update After every update of proto scheme in the file `src/background/connectivity/connectivity.proto`, you have to run `yarn compile-proto`. This command will update module `src/background/connectivity/protobufCompiled.js` used to build messages with appropriate scheme for websocket messaging. ## Acknowledgments This software wouldn't have been possible without: - [React](https://github.com/facebook/react) - [MobX](https://github.com/mobxjs/mobx) - [Babel](https://github.com/babel/babel) - [Jest](https://github.com/facebook/jest) - and many more npm packages. For a full list of all `npm` packages in use, please take a look at [package.json](package.json) file. ## Minimum supported browser versions | Browser | Version | |-----------------------------|:-------:| | Chromium Based Browsers MV3 | 109 | | Chromium Based Browsers MV2 | 66 | | Firefox | 91.1 |