0 purchases
wireguard 2govpn
wireguard_2govpn #
A flutter plugin to setup and control VPN connection via Wireguard tunnel.
Usage
Initialize
Connect
Disconnect
Stage
Supported Platforms
FAQ & Troubleshooting
Contributing to wireguard_2govpn #
Thank you for your interest in contributing to wireguard_2govpn! We appreciate your help in making this project better.
Before you start contributing, please take a moment to read the following guidelines.
How to Contribute #
Fork the repository to your GitHub account.
Clone the forked repository to your local machine.
Create a new branch for your contribution:
git checkout -b feature/your-feature-name
copied to clipboard
Make your changes and ensure that the code follows the project's coding standards.
Commit your changes with a descriptive commit message:
git commit -m "Add your descriptive message here"
copied to clipboard
Push your changes to your forked repository:
git push origin feature/your-feature-name
copied to clipboard
Open a pull request in the original repository and provide a detailed description of your changes.
Usage #
To use this plugin, add wireguard_2govpn or visit Flutter Tutorial.
flutter pub add wireguard_2govpn
copied to clipboard
Initialize #
Initialize a wireguard instance with a valid name using initialize:
final wireguard = WireGuardFlutter.instance;
// initialize the interface
await wireguard.initialize(interfaceName: 'wg0');
copied to clipboard
and declare the .conf data:
const String conf = '''[Interface]
PrivateKey = 0IZmHsxiNQ54TsUs0EQ71JNsa5f70zVf1LmDvON1CXc=
Address = 10.8.0.4/32
DNS = 1.1.1.1
[Peer]
PublicKey = 6uZg6T0J1bHuEmdqPx8OmxQ2ebBJ8TnVpnCdV8jHliQ=
PresharedKey = As6JiXcYcqwjSHxSOrmQT13uGVlBG90uXZWmtaezZVs=
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 0
Endpoint = 38.180.13.85:51820''';
copied to clipboard
For more info on the configuration data, see the documentation with examples.
Connect #
After initializing, connect using startVpn:
await wireguard.startVpn(
serverAddress: address, // the server address (e.g 'demo.wireguard.com:51820')
wgQuickConfig: conf, // the quick-config file
providerBundleIdentifier: 'com.example', // your app identifier
);
copied to clipboard
Disconnect #
After connecting, disconnect using stopVpn:
await wireguard.stopVpn();
copied to clipboard
Stage #
Listen to stage change using vpnStageSnapshot:
wireguard.vpnStageSnapshot.listen((event) {
debugPrint("status changed $event");
});
copied to clipboard
Or get the current stage using getStage:
final stage = await wireguard.stage();
copied to clipboard
The available stages are:
Code
Description
connecting
The interface is connecting
connected
The interface is connected
disconnecting
The interface is disconnecting
disconnected
The interface is disconnected
waitingConnection
Waiting for a user interaction
authenticating
Authenticating with the server
reconnect
Reconnecting the the interface
noConnection
Any connection has not been made
preparing
Preparing to connect
denied
The connection has been denied by the system, usually by refused permissions
exiting
Exiting the interface
Supported Platforms #
Android
iOS
macOS
Windows
Linux
Version
SDK 21+
15.0+
12+
7+
Any
Windows #
On Windows, the app must be run as administrator to be able to create and manipulate the tunnel. To debug the app, run flutter run from an elevated command prompt. To run the app normally, the system will request your app to be run as administrator. No code changes or external dependencies are required.
Linux #
Install dependencies
The required dependencies need to be installed: wireguard and wireguard-tools.
On Ubuntu/Debian, use the following command to install the dependencies:
sudo apt install wireguard wireguard-tools openresolv
copied to clipboard
For other Linux distros, see this.
Note
If openresolv is not installed in the system, configuration files with a DNS provided may not connect. See this issue for more information.
Initializing
When wireguard.initialize is called, the application will request your user password ([sudo] password for <user>:). This is necessary because wireguard must run as a root to be able to create AND manipulate the tunnels. This is true for either debug and release modes or a distributed executable.
Caution
Do not run the app in root mode (e.g sudo ./executable, sudo flutter run), otherwise the connection will not be established.
FAQ & Troubleshooting #
Linux error resolvconf: command not found #
On Linux, you may receive the error resolvconf: command not found. This is because wireguard tried to adjust the nameserver. Make sure to install openresolv or not provide the "DNS" field.
"WireGuard" is a registered trademark of Jason A. Donenfeld.
Fork from mysteriumnetwork tunnel.
Many Thanks for Bruno D'Luka for help me.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.