
Security News
Crates.io Implements Trusted Publishing Support
Crates.io adds Trusted Publishing support, enabling secure GitHub Actions-based crate releases without long-lived API tokens.
react-native-simple-openvpn
Advanced tools
English | 简体中文
A simple react native module to interact with OpenVPN
If this project has helped you out, please support us with a star 🌟
RNSimpleOpenvpn | React Native |
---|---|
1.0.0 ~ 1.2.0 | 0.56 ~ 0.66 |
2.0.0 ~ 2.1.1 | 0.63 ~ 0.71 |
2.1.2 | 0.72 |
>= 2.1.3 | >= 0.73 |
See CHANGELOG for details
# npm
npm install --save react-native-simple-openvpn
# or use yarn
yarn add react-native-simple-openvpn
From react-native 0.60 autolinking will take care of the link step
react-native link react-native-simple-openvpn
Add the following to android/settings.gradle
:
rootProject.name = 'example'
+ include ':vpnLib'
+ project(':vpnLib').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-simple-openvpn/vpnLib')
apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
include ':app'
If your React Native version is 0.74 or higher, add the following to android/app/build.gradle
:
android {
// ...
+ packaging {
+ jniLibs {
+ useLegacyPackaging = true
+ }
+ }
}
Due to file size limitations, jniLibs are too big to be published on npm. Use the assets on GitHub Releases instead
Download and unzip the resources you need for the corresponding architecture, and put them in android/app/src/main/jniLibs
(create a new jniLibs
folder if you don't have one)
project
├── android
│ ├── app
│ │ └── src
│ │ └── main
│ │ └── jniLibs
│ │ ├── arm64-v8a
│ │ ├── armeabi-v7a
│ │ ├── x86
│ │ └── x86_64
│ └── ...
├── ios
└── ...
If using CocoaPods, run it in the ios/
directory
pod install
See iOS Guide for iOS side Network Extension configuration and OpenVPN integration
Add the following to your project's AppDelegate.m
:
+ #import "RNSimpleOpenvpn.h"
@implementation AppDelegate
// ...
+ - (void)applicationWillTerminate:(UIApplication *)application
+ {
+ [RNSimpleOpenvpn dispose];
+ }
@end
Please make sure the Header Search Paths of Build Settings contain the following paths:
$(SRCROOT)/../node_modules/react-native-simple-openvpn/ios
Or, if using CocoaPods, the following paths should be automatically included there:
"${PODS_ROOT}/Headers/Public/react-native-simple-openvpn"
import React, { useEffect } from 'react';
import { Platform } from 'react-native';
import RNSimpleOpenvpn, { addVpnStateListener, removeVpnStateListener } from 'react-native-simple-openvpn';
const isIPhone = Platform.OS === 'ios';
const App = () => {
useEffect(() => {
async function observeVpn() {
if (isIPhone) {
await RNSimpleOpenvpn.observeState();
}
addVpnStateListener((e) => {
// ...
});
}
observeVpn();
return async () => {
if (isIPhone) {
await RNSimpleOpenvpn.stopObserveState();
}
removeVpnStateListener();
};
});
async function startOvpn() {
try {
await RNSimpleOpenvpn.connect({
remoteAddress: '192.168.1.1 3000',
ovpnFileName: 'client',
assetsPath: 'ovpn/',
providerBundleIdentifier: 'com.example.RNSimpleOvpnTest.NEOpenVPN',
localizedDescription: 'RNSimpleOvpn',
});
} catch (error) {
// ...
}
}
async function stopOvpn() {
try {
await RNSimpleOpenvpn.disconnect();
} catch (error) {
// ...
}
}
function printVpnState() {
console.log(JSON.stringify(RNSimpleOpenvpn.VpnState, undefined, 2));
}
// ...
};
export default App;
For more, read the API Reference
The following items were used in this project
Thanks to all the people who contribute
GPLv2 © Nor Cod
FAQs
React Native Open VPN Module
The npm package react-native-simple-openvpn receives a total of 41 weekly downloads. As such, react-native-simple-openvpn popularity was classified as not popular.
We found that react-native-simple-openvpn demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Crates.io adds Trusted Publishing support, enabling secure GitHub Actions-based crate releases without long-lived API tokens.
Research
/Security News
Undocumented protestware found in 28 npm packages disrupts UI for Russian-language users visiting Russian and Belarusian domains.
Research
/Security News
North Korean threat actors deploy 67 malicious npm packages using the newly discovered XORIndex malware loader.