VPN Status
The commands below are useful once VPN connection has been successfully established.
Get VPN Status​
Requests current VPN connection status.
Login required: Yes
CmdProc Code: OVS_CMD_GET_STATUS
Command number: 5
Input: Not required
Response: OVS_NOTIFY_GET_STATUS
- Success
- Failure
OVS_ERR_OK
{
"VPN_Status": 1
}
VPN_Status will contain one of the following values:
1. VPN_NOTIFY_CONNECTING
2. VPN_NOTIFY_CONNECTED
3. VPN_NOTIFY_DISCONNECTED
4. VPN_NOTIFY_CONN_FAILED
5. VPN_NOTIFY_ABNORMALLY_DISCONNECTED
6. VPN_NOTIFY_AUTH
7. VPN_NOTIFY_ASSIGNIP
8. VPN_NOTIFY_GETCONFIG
data is null
Code sample:
- macOS
- Android
- Android (JSON)
void GetVPNStatus()
{
json_object *j_obj;
char szCmd[1024];
j_obj = json_object_new_object();
json_object_object_add(j_obj, "cmd", json_object_new_int(OVS_CMD_GET_STATUS));
snprintf(szCmd, sizeof(szCmd), "%s", json_object_get_string(j_obj));
json_object_put(j_obj);
CmdProc(szCmd);
}
VPNSDK.CommandNotifyCB callback = new VPNSDK.CommandNotifyCB() {
@Override
public void onNotify(int notification, int error, Object data) {
if (error == VPNSDK.OVS_ERROR_CODES.OVS_ERR_OK) {
int state = (Integer)((Map)data).get("VPN_Status");
switch (state) {
case VPNSDK.VPN_NOTIFY_STATUS.VPN_NOTIFY_DISCONNECTED:
case VPNSDK.VPN_NOTIFY_STATUS.VPN_NOTIFY_ABNORMALLY_DISCONNECTED:
case VPNSDK.VPN_NOTIFY_STATUS.VPN_NOTIFY_CONN_FAILED: {
// Do something when VPN was disconnected
break;
}
case VPNSDK.VPN_NOTIFY_STATUS.VPN_NOTIFY_ASSIGNIP:
case VPNSDK.VPN_NOTIFY_STATUS.VPN_NOTIFY_GETCONFIG:
case VPNSDK.VPN_NOTIFY_STATUS.VPN_NOTIFY_AUTH:
case VPNSDK.VPN_NOTIFY_STATUS.VPN_NOTIFY_CONNECTING: {
// Do something when VPN was started to connect
break;
}
case VPNSDK.VPN_NOTIFY_STATUS.VPN_NOTIFY_CONNECTED: {
// Do something when VPN was connected
break;
}
}
} else {
// Process error
}
}
};
VPNSDK.CmdProc(VPNSDK.OVS_CMD_CODES.OVS_CMD_GET_STATUS, callback);
VPNSDK.CmdProc("{\"cmd\": 5}");
Get Active VPN Profile​
Returns the active VPN connection parameters - server, protocol and port.
Login required: Yes
CmdProc Code: OVS_CMD_GET_CURRENT_PROFILE
Command number: 17
Input: Not required
Response: OVS_NOTIFY_GET_CURRENT_PROFILE
- Success
- Failure
OVS_ERR_OK
data will return
{
"server_ip": "104.192.3.90",
"protocol": "tcp",
"server_port": 1194
}
OVS_ERR_VPN_DISCONNECTED
data is null
Code sample:
- macOS
- Android
- Android (JSON)
void GetCurrentProfile()
{
json_object *j_obj;
char szCmd[1024];
j_obj = json_object_new_object();
json_object_object_add(j_obj, "cmd", json_object_new_int(OVS_CMD_GET_CURRENT_PROFILE));
snprintf(szCmd, sizeof(szCmd), "%s", json_object_get_string(j_obj));
json_object_put(j_obj);
CmdProc(szCmd);
}
VPNSDK.CommandNotifyCB callback = new VPNSDK.CommandNotifyCB() {
@Override
public void onNotify(int notification, int error, Object data) {
if (error == VPNSDK.OVS_ERROR_CODES.OVS_ERR_OK) {
// Do something when command is successful
} else {
// Process error
}
}
};
VPNSDK.CmdProc(VPNSDK.OVS_CMD_CODES.OVS_CMD_GET_CURRENT_PROFILE, callback);
VPNSDK.CmdProc("{\"cmd\": 17}");
Enable IO Counter​
Enables of disables IO counter.
Login required: Yes
CmdProc Code: OVS_CMD_SET_IOCOUNT
Command number: 15
Input:
{
"status": true|false
}
Status indicates whether IO counter should be enabled or not.
Response: OVS_NOTIFY_SET_IOCOUNT
- Success
- Failure
OVS_NOTIFY_SET_IOCOUNT
data will contain:
{
"data_in": 0,
"speed_in": 0,
"data_out": 0,
"speed_out": 0
}
The fields returned are as follow:
data_in - Downloaded data amount
speed_in - Current download speed
data_out - Uploaded data amount
speed_out - Current upload speed
data is null
Code sample:
- macOS
- Android
- Android (JSON)
- Android (Command Handling)
void SetIOCount(bool status)
{
json_object *j_obj, *j_data_obj;
char szCmd[1024];
j_obj = json_object_new_object();
json_object_object_add(j_obj, "cmd", json_object_new_int(OVS_CMD_SET_IOCOUNT));
j_data_obj = json_object_new_object();
json_object_object_add(j_data_obj, "status", json_object_new_boolean(status));
json_object_object_add(j_obj, "data", j_data_obj);
snprintf(szCmd, sizeof(szCmd), "%s", json_object_get_string(j_obj));
json_object_put(j_obj);
CmdProc(szCmd);
}
VPNSDK.CommandNotifyCB callback = new VPNSDK.CommandNotifyCB() {
@Override
public void onNotify(int notification, int error, Object data) {
if (error == VPNSDK.OVS_ERROR_CODES.OVS_ERR_OK) {
// Do something when command is successful
} else {
// Process error
}
}
};
VPNSDK.CmdProc(VPNSDK.OVS_CMD_CODES.OVS_CMD_SET_IOCOUNT, callback, true);
VPNSDK.CmdProc("{\"cmd\": 15, \"data\": {\"status\": true}}");
@Override
public void onNotify(int notification, int error, Object data) {
switch (notification) {
case VPNSDK.OVS_NOTIFY_CODES.OVS_NOTIFY_IOCOUNT: {
Map<String, Long> map = (Map)data;
long BytesIn = data.get("data_in");
long BytesOut = data.get("data_out");
//Do something with IO counters
}
}
}