CoreAPI
Core methods that used for initialize tunnel
GetUserInfoAsync
Gets user info, like Name, UserId, DevicesLimit etc.
Example:
C#:
var sdk = new SDK();
var loginRequest = new LoginRequest
{
CarrierId = CARRIERID,
DeviceId = DEVICEID,
DeviceName = Environment.MachineName,
Method = AuthenticationMethod.Anonymous,
Token = null,
};
var loginResponse = await sdk.LoginAsync(loginRequest).ConfigureAwait(false);
var userInfoResponse = await sdk.GetUserInfoAsync(loginResponse.AccessToken).ConfigureAwait(false);
if (userInfoResponse.Result.Equals(ResponseResult.Ok))
{
Console.WriteLine(userInfoResponse.Name);
}
C++:
auto sdk = gcnew SDK();
auto loginResponse = sdk->Login(carrierId, deviceId, Environment::MachineName, AuthenticationMethod::Anonymous, nullptr);
auto getUserInfoResponse = sdk->GetUserInfo(loginResponse->AccessToken);
LoginAsync
Logins to the backend for fetch AccessToken, for instance.
Example:
C#:
var sdk = new SDK();
var loginRequest = new LoginRequest
{
CarrierId = CARRIERID,
DeviceId = DEVICEID,
DeviceName = Environment.MachineName,
Method = AuthenticationMethod.Anonymous,
Token = null,
};
var loginResponse = await sdk.LoginAsync(loginRequest).ConfigureAwait(false);
if (loginResponse.Result.Equals(ResponseResult.Ok))
{
Console.WriteLine(loginResponse.AccessToken);
}
C++:
auto sdk = gcnew SDK();
auto loginResponse = sdk->Login(carrierId, deviceId, Environment::MachineName, AuthenticationMethod::Anonymous, nullptr);
LogoutAsync
Logouts from backend.
Example:
C#:
var sdk = new SDK();
var loginRequest = new LoginRequest
{
CarrierId = CARRIERID,
DeviceId = DEVICEID,
DeviceName = Environment.MachineName,
Method = AuthenticationMethod.Anonymous,
Token = null,
};
var loginResponse = await sdk.LoginAsync(loginRequest).ConfigureAwait(false);
var logoutResponse = await sdk.LogoutAsync(loginResponse.AccessToken).ConfigureAwait(false);
Console.WriteLine(logoutResponse.Result);
C++:
auto sdk = gcnew SDK();
auto loginResponse = sdk->Login(carrierId, deviceId, Environment::MachineName, AuthenticationMethod::Anonymous, nullptr);
auto logoutResponse = sdk->Logout(loginResponse->AccessToken);
GetRemainingTrafficAsync
Gets user`s remaining traffic (for free users).
Example:
C#:
var sdk = new SDK();
var loginRequest = new LoginRequest
{
CarrierId = CARRIERID,
DeviceId = DEVICEID,
DeviceName = Environment.MachineName,
Method = AuthenticationMethod.Anonymous,
Token = null,
};
var loginResponse = await sdk.LoginAsync(loginRequest).ConfigureAwait(false);
var getRemainingTrafficResponse = await sdk.GetRemainingTrafficAsync(loginResponse.AccessToken).ConfigureAwait(false);
if (getRemainingTrafficResponse.Result.Equals(ResponseResult.Ok))
{
Console.WriteLine(getRemainingTrafficResponse.TrafficRemaining);
}
C++:
auto sdk = gcnew SDK();
auto loginResponse = sdk->Login(carrierId, deviceId, Environment::MachineName, AuthenticationMethod::Anonymous, nullptr);
auto getRemainingTrafficResponse = sdk->GetRemainingTraffic(loginResponse->AccessToken);
GetRemoteConfig
Gets client configuration from backend (fireshield configuration for instance).
Example:
C#:
var sdk = new SDK();
var loginRequest = new LoginRequest
{
CarrierId = CARRIERID,
DeviceId = DEVICEID,
DeviceName = Environment.MachineName,
Method = AuthenticationMethod.Anonymous,
Token = null,
};
var loginResponse = await sdk.LoginAsync(loginRequest).ConfigureAwait(false);
var carrier = new Carrier(loginResponse);
var getRemoteConfigRequest = new GetRemoteConfigRequest
{
Carrier = carrier,
DeviceId = DEVICEID,
};
var getRemoteConfigResponse = await sdk.GetRemoteConfigAsync(getRemoteConfigRequest).ConfigureAwait(false);
if (getRemoteConfigResponse.Result.Equals(ResponseResult.Ok))
{
Console.WriteLine(getRemoteConfigResponse.PatchData);
}
C++:
auto sdk = gcnew SDK();
auto loginResponse = sdk->Login(carrierId, deviceId, Environment::MachineName, AuthenticationMethod::Anonymous, nullptr);
auto carrier = gcnew Carrier(loginResponse);
auto getRemoteConfigResponse = sdk->GetRemoteConfig(carrier, deviceId);
GetNodes
Gets VPN countries list.
Example:
C#:
var sdk = new SDK();
var loginRequest = new LoginRequest
{
CarrierId = CARRIERID,
DeviceId = DEVICEID,
DeviceName = Environment.MachineName,
Method = AuthenticationMethod.Anonymous,
Token = null,
};
var loginResponse = await sdk.LoginAsync(loginRequest).ConfigureAwait(false);
var carrier = new Carrier(loginResponse);
var getNodesRequest = new GetNodesRequest
{
Carrier = carrier,
Protocol = Core.Model.Enums.Protocol.HydraTcp,
};
var getNodesResponse = sdk.GetNodes(getNodesRequest);
if (getNodesResponse.Result.Equals(ResponseResult.Ok))
{
var country = getNodesResponse.VpnCountries.FirstOrDefault();
Console.WriteLine(country?.CountryCode);
}
C++:
auto sdk = gcnew SDK();
auto loginResponse = sdk->Login(carrierId, deviceId, Environment::MachineName, AuthenticationMethod::Anonymous, nullptr);
auto carrier = gcnew Carrier(loginResponse);
auto nodes = sdk->GetNodes(protocol, carrier);
GetLocations
Use GetLocations for multi-hop, custom dns and vpn profiles functionalities instead of GetNodes
Example:
C#:
var sdk = new SDK();
var loginRequest = new LoginRequest
{
CarrierId = CARRIERID,
DeviceId = DEVICEID,
DeviceName = Environment.MachineName,
Method = AuthenticationMethod.Anonymous,
Token = null,
};
var loginResponse = await sdk.LoginAsync(loginRequest).ConfigureAwait(false);
var carrier = new Carrier(loginResponse);
var getLocationsResponse = sdk.GetLocations(Core.Model.Enums.Protocol.HydraTcp, carrier);
if (getLocationsResponse.Result.Equals(ResponseResult.Ok))
{
var location = getLocationsResponse.Locations.FirstOrDefault();
Console.WriteLine(location?.Name);
}
C++:
auto sdk = gcnew SDK();
auto loginResponse = sdk->Login(carrierId, deviceId, Environment::MachineName, AuthenticationMethod::Anonymous, nullptr);
auto carrier = gcnew Carrier(loginResponse);
auto locations = sdk->GetLocations(protocol, carrier);
GetCredentialsAsync
Gets credentials for VPN tunnel, including HydraCertificate, OpenVpnCertificate, UserName and UserPassword etc.
Example:
C#:
var sdk = new SDK();
var loginRequest = new LoginRequest
{
CarrierId = CARRIERID,
DeviceId = DEVICEID,
DeviceName = Environment.MachineName,
Method = AuthenticationMethod.Anonymous,
Token = null,
};
var loginResponse = await sdk.LoginAsync(loginRequest).ConfigureAwait(false);
var carrier = new Carrier(loginResponse);
var getNodesRequest = new GetNodesRequest
{
Carrier = carrier,
Protocol = Core.Model.Enums.Protocol.HydraTcp,
};
var getNodesResponse = sdk.GetNodes(getNodesRequest);
var getCredentialsRequest = new GetCredentialsRequest
{
VpnNode = getNodesResponse.VpnCountries.FirstOrDefault(),
WithSertificate = true,
Protocol = Core.Model.Enums.Protocol.HydraTcp,
AppVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version?.ToString(),
};
var getCredentialsResponse = await sdk.GetCredentialsAsync(getCredentialsRequest).ConfigureAwait(false);
if (getCredentialsResponse.Result.Equals(ResponseResult.Ok))
{
Console.WriteLine(getCredentialsResponse.Credentials);
}
C++:
auto sdk = gcnew SDK();
auto loginResponse = sdk->Login(carrierId, deviceId, Environment::MachineName, AuthenticationMethod::Anonymous, nullptr);
auto carrier = gcnew Carrier(loginResponse);
auto nodes = sdk->GetNodes(protocol, carrier);
auto firstNode = nodes->Locations[0];
auto getCredentialsResponse = sdk->GetCredentials(firstNode, true, protocol, appVersion);
StartVpn
All protocols work on the Wintun adapter, which is created anew each time.
Example:
C#:
var sdk = new SDK();
var loginRequest = new LoginRequest
{
CarrierId = CARRIERID,
DeviceId = DEVICEID,
DeviceName = Environment.MachineName,
Method = AuthenticationMethod.Anonymous,
Token = null,
};
var loginResponse = await sdk.LoginAsync(loginRequest).ConfigureAwait(false);
var carrier = new Carrier(loginResponse);
var getNodesRequest = new GetNodesRequest
{
Carrier = carrier,
Protocol = Core.Model.Enums.Protocol.HydraTcp,
};
var getNodesResponse = sdk.GetNodes(getNodesRequest);
var getCredentialsRequest = new GetCredentialsRequest
{
VpnNode = getNodesResponse.VpnCountries.FirstOrDefault(),
WithSertificate = true,
Protocol = Core.Model.Enums.Protocol.HydraTcp,
AppVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version?.ToString(),
};
var getCredentialsResponse = await sdk.GetCredentialsAsync(getCredentialsRequest).ConfigureAwait(false);
var startVpnRequest = new StartVpnRequest
{
Credentials = getCredentialsResponse.Credentials,
DeviceId = DEVICEID,
EnableKillSwitch = false,
EnableTunnelLogging = false,
VpnNode = getNodesResponse.VpnCountries.FirstOrDefault(),
};
var startVpnResponse = sdk.StartVpn(startVpnRequest);
if (startVpnResponse.Result == ResponseResult.Ok)
{
Console.WriteLine(startVpnResponse.Message);
}
C++:
auto sdk = gcnew SDK();
auto loginResponse = sdk->Login(carrierId, deviceId, Environment::MachineName, AuthenticationMethod::Anonymous, nullptr);
auto carrier = gcnew Carrier(loginResponse);
auto nodes = sdk->GetNodes(protocol, carrier);
auto firstNode = nodes->Locations[0];
auto getCredentialsResponse = sdk->GetCredentials(firstNode, true, protocol, appVersion);
auto request = gcnew StartVpnRequest();
request->Credentials = getCredentialsResponse->Credentials;
request->DeviceId = deviceId;
request->EnableKillSwitch = false;
request->EnableTunnelLogging = true;
request->VpnNode = firstNode;
auto result = sdk->StartVpn(request);
StopVpnAsync
Stops VPN.
Example:
C#:
var sdk = new SDK();
var stopVpnResponse = sdk.StopVpn();
Console.WriteLine(stopVpnResponse.ExitCode);
C++:
auto sdk = gcnew SDK();
auto result = sdk->StopVpn();
Last updated