Files
umbrix-libcore/config/warp_account.go
2024-05-31 13:08:55 +02:00

51 lines
1.3 KiB
Go

package config
import (
"encoding/json"
)
type WarpAccount struct {
AccountID string `json:"account-id"`
AccessToken string `json:"access-token"`
}
type WarpWireguardConfig struct {
PrivateKey string `json:"private-key"`
LocalAddressIPv4 string `json:"local-address-ipv4"`
LocalAddressIPv6 string `json:"local-address-ipv6"`
PeerPublicKey string `json:"peer-public-key"`
ClientID string `json:"client-id"`
}
type WarpGenerationResponse struct {
WarpAccount
Log string `json:"log"`
Config WarpWireguardConfig `json:"config"`
}
func GenerateWarpAccount(licenseKey string, accountId string, accessToken string) (string, error) {
identity, log, wg, err := GenerateWarpInfo(licenseKey, accountId, accessToken)
if err != nil {
return "", err
}
warpAccount := WarpAccount{
AccountID: identity.ID,
AccessToken: identity.Token,
}
warpConfig := WarpWireguardConfig{
PrivateKey: wg.PrivateKey,
LocalAddressIPv4: wg.LocalAddressIPv4,
LocalAddressIPv6: wg.LocalAddressIPv6,
PeerPublicKey: wg.PeerPublicKey,
ClientID: wg.ClientID,
}
response := WarpGenerationResponse{warpAccount, log, warpConfig}
responseJson, err := json.Marshal(response)
if err != nil {
return "", err
}
return string(responseJson), nil
}