react-native-ip-sec-vpn icon indicating copy to clipboard operation
react-native-ip-sec-vpn copied to clipboard

React Native IPSec VPN Module

react-native-ip-sec-vpn

Getting started

Plugin can be installed using npm
With yarn:
$ yarn add react-native-ip-sec-vpn --save
Or with npm:
$ npm install react-native-ip-sec-vpn --save

Mostly automatic installation

on react native >60 no need to do anything but for manualing installation run the code below

$ react-native link react-native-ip-sec-vpn

Example

To run example:

  • make sure the module folder has no node_modules
  • install the dependencies on the example folder using yarn or npm i
  • run the project:
npx react-native run-android

Usage

import {prepare, connect} from "react-native-ip-sec-vpn";
...
useEffect(() => {
	prepare();
}); /// or use componentDidmount in case of a class component
...
connect(address, username, password)

see example folder.

Methods

Name arguments returns Description
prepare None Promise Android: This will ask permission and do necessary setups
IOS: This will listen for status change on vpn
connect address: string (address of VPN)
username: string (username of VPN's credentials)
password: string (username of VPN's credentials)
vpnType: string | undefined (Android only, not implemented yet)
mtu: number | undefiend (Android only, VPN's maximum transmission unit)
Promise Connect to vpn with provided credentials
getCurrentState None Promise<VpnState> Get current VPN state
getCharonErrorState (Android only) None Promise<CharonErrorState> Get current VPN Error state (Android only)
disconnect None Promise Disconnect the VPN
onStateChangedListener callback: (state: { state: VpnState; charonState: CharonErrorState }) => void EmitterSubscription Will call the callback on state change
removeOnStateChangeListener stateChangedEvent: EmitterSubscription void Remove the state change listener

Enums

Name Values Description
VpnState disconnected = 0 (VPN is disconnected)
connecting = 1 (VPN is connecting)
connected = 2 (VPN is connected)
disconnecting = 3 (VPN is disconnecting)
genericError = 4 (VPN encountered an error charon state on android to find out the error)
VPN current state
CharonErrorState NO_ERROR = 0 (VPN has no error)
AUTH_FAILED = 1 (Wrong credentials)
PEER_AUTH_FAILED = 2
LOOKUP_FAILED = 3 (Wrong VPN URL)
UNREACHABLE = 4 (VPN URL is unreachable)
GENERIC_ERROR = 5
PASSWORD_MISSING = 6 (No password has been provided)
CERTIFICATE_UNAVAILABLE = 7 (Certification has not been provided)
UNDEFINED = 8 (Unknown error)
VPN Error