From 298c91b4b5b6f2c0624aa0a5769987973d7a1747 Mon Sep 17 00:00:00 2001 From: Vladislav Yarmak Date: Fri, 2 Apr 2021 00:54:32 +0300 Subject: [PATCH] seclient: add device_generate_password method --- seclient/messages.go | 9 +++++++++ seclient/seclient.go | 42 ++++++++++++++++++++++++++++++++---------- 2 files changed, 41 insertions(+), 10 deletions(-) diff --git a/seclient/messages.go b/seclient/messages.go index 7007f61..36fa3a1 100644 --- a/seclient/messages.go +++ b/seclient/messages.go @@ -62,6 +62,15 @@ type SERegisterDeviceResponse struct { Status SEStatusPair `json:"return_code"` } +type SEDeviceGeneratePasswordData struct { + DevicePassword string `json:"device_password"` +} + +type SEDeviceGeneratePasswordResponse struct { + Data SEDeviceGeneratePasswordData `json:"data"` + Status SEStatusPair `json:"return_code"` +} + type SEGeoEntry struct { Country string `json:"country,omitempty"` CountryCode string `json:"country_code"` diff --git a/seclient/seclient.go b/seclient/seclient.go index 17ed238..7d69fe1 100644 --- a/seclient/seclient.go +++ b/seclient/seclient.go @@ -25,19 +25,21 @@ const ( ) type SEEndpoints struct { - RegisterSubscriber string - SubscriberLogin string - RegisterDevice string - GeoList string - Discover string + RegisterSubscriber string + SubscriberLogin string + RegisterDevice string + DeviceGeneratePassword string + GeoList string + Discover string } var DefaultSEEndpoints = SEEndpoints{ - RegisterSubscriber: "https://api.sec-tunnel.com/v4/register_subscriber", - SubscriberLogin: "https://api.sec-tunnel.com/v4/subscriber_login", - RegisterDevice: "https://api.sec-tunnel.com/v4/register_device", - GeoList: "https://api.sec-tunnel.com/v4/geo_list", - Discover: "https://api.sec-tunnel.com/v4/discover", + RegisterSubscriber: "https://api.sec-tunnel.com/v4/register_subscriber", + SubscriberLogin: "https://api.sec-tunnel.com/v4/subscriber_login", + RegisterDevice: "https://api.sec-tunnel.com/v4/register_device", + DeviceGeneratePassword: "https://api.sec-tunnel.com/v4/device_generate_password", + GeoList: "https://api.sec-tunnel.com/v4/geo_list", + Discover: "https://api.sec-tunnel.com/v4/discover", } type SESettings struct { @@ -217,6 +219,26 @@ func (c *SEClient) Login(ctx context.Context) error { return nil } +func (c *SEClient) DeviceGeneratePassword(ctx context.Context) error { + var genRes SEDeviceGeneratePasswordResponse + err := c.RpcCall(ctx, c.Settings.Endpoints.DeviceGeneratePassword, StrKV{ + "device_id": c.AssignedDeviceID, + }, &genRes) + if err != nil { + return err + } + + if genRes.Status.Code != SE_STATUS_OK { + return fmt.Errorf("API responded with error message: code=%d, msg=\"%s\"", + genRes.Status.Code, genRes.Status.Message) + } + + c.StateMux.Lock() + c.DevicePassword = genRes.Data.DevicePassword + c.StateMux.Unlock() + return nil +} + func (c *SEClient) GetProxyCredentials() (string, string) { c.StateMux.RLock() assignedDeviceIDHash := c.AssignedDeviceIDHash