Documentation
¶
Overview ¶
Package server defines public types that have to deal with the VPN server
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Configuration ¶
type Configuration struct { // VPNConfig is the VPN Configuration, a WireGuard or OpenVPN Configuration // In case of OpenVPN, we append "script-security 0" to disable scripts from being run by default. // A client may override this, e.g. for, very trusted, pre-provisioned VPNs VPNConfig string `json:"config"` // Protocol defines which protocol the configuration is for, OpenVPN or WireGuard Protocol protocol.Protocol `json:"protocol"` // DefaultGateway is a boolean that indicates whether or not this configuration should be configured as a default gateway DefaultGateway bool `json:"default_gateway"` // DNSSearchDomains are the list of dns search domains DNSSearchDomains []string `json:"dns_search_domains,omitempty"` // ShouldFailover returns whether or not the client should attempt to failover ShouldFailover bool `json:"should_failover"` // Proxy returns information for proxied VPN connections // If this is non-nil a proxy must be started using StartProxyguard Proxy *Proxy `json:"proxy,omitempty"` }
Configuration is the configuration that you get back when you call the get config function
type Current ¶
type Current struct { // Institute is the institute access server if any, if none is there this field is omitted in the JSON Institute *Institute `json:"institute_access_server,omitempty"` // Secure Internet is the secure internet server if any, if none is there this field is omitted in the JSON SecureInternet *SecureInternet `json:"secure_internet_server,omitempty"` // Custom is the custom server if any, if none is there this field is omitted in the JSON Custom *Server `json:"custom_server,omitempty"` // Type is the type of server that is there to check which of the three types should be non-nil Type Type `json:"server_type"` }
Current is the struct that defines the current server It has different fields where only two are always filled in
type Expiry ¶
type Expiry struct { // StartTime is the start time of the VPN in Unix StartTime int64 `json:"start_time"` // EndTime is the end time of the VPN in Unix. EndTime int64 `json:"end_time"` // ButtonTime is the Unix time at which to start showing the renew button in the UI ButtonTime int64 `json:"button_time"` // CountdownTime is the Unix time at which to start showing more detailed countdown timer. // E.g. first start with days (7 days left), and when the current time is after this time, show e.g. 9 minutes and 59 seconds CountdownTime int64 `json:"countdown_time"` // NotificationTimes is the slice/list of times at which to show a notification that the VPN is about to expire NotificationTimes []int64 `json:"notification_times"` }
Expiry is the struct that gives the time at which certain expiry elements should be shown
type Institute ¶
type Institute struct { // Server is the embedded server struct Server // SupportContacts are the list of support contacts SupportContacts []string `json:"support_contacts,omitempty"` // Delisted is a boolean that indicates whether or not this server is delisted from discovery // If it is, the UI should show a warning symbol or move the server to a new category, which is up to the client Delisted bool `json:"delisted"` }
Institute defines an institute access server
type List ¶
type List struct { // Institutes is the list/slice of institute access servers. If none are defined, this is omitted in the JSON Institutes []Institute `json:"institute_access_servers,omitempty"` // Secure Internet is the secure internet server if any. If none is there, it is omitted in the JSON SecureInternet *SecureInternet `json:"secure_internet_server,omitempty"` // Custom is the list/slice of custom servers. If none are defined, this is omitted in the JSON Custom []Server `json:"custom_servers,omitempty"` }
List is the list of servers
type Profile ¶
type Profile struct { // DisplayName is the display name of the profile as a map // It is a map where country codes are mapped to names, this is to be consistent with the format of other display names // E.g. {"en": "Default Profile"} // If this is empty, the field is omitted from the JSON DisplayName map[string]string `json:"display_name,omitempty"` // DefaultGateway is true when the profile is a default gateway one DefaultGateway bool `json:"default_gateway"` // Priority is the priority of the profile for sorting in the UI // the higher the priority, the higher it should be in the list Priority int `json:"priority"` }
Profile is the profile for the VPN, to show in the UI where the user can switch to it to get a different VPN configuration
type Profiles ¶
type Profiles struct { // Map, the map of profiles from profile ID to the profile contents // If this is empty, the field is omitted from the JSON // Note that it can be empty if the profiles have not been initialized // This could happen if a config is not obtained yet Map map[string]Profile `json:"map,omitempty"` // Current is the current profile ID that is defined Current string `json:"current"` }
Profiles is the map of profiles with the current defined
type Proxy ¶
type Proxy struct { // SourcePort is the source port for the client TCP connection SourcePort int `json:"source_port"` // ListenPort is the port for the client UDP connection, this is the value that is set as the WireGuard endpoint prepended with "127.0.0.1:" // So if the listen port is set to 1337, the WireGuard endpoint would be 127.0.0.1:1337 ListenPort int `json:"listen_port"` // Peer is the URI of the upstream server // Note that this exactly matches the "ProxyEndpoint" key in the WireGuard config Peer string `json:"peer"` }
Proxy defines the structure with the arguments that should be passed to start proxyguard
type RequiredAskTransition ¶
type RequiredAskTransition struct { // C is the cookie which is needed for replying to the library, see CookieReply in exports/exports.go // If this cookie is omitted, it is a protocol error C *cookie.Cookie `json:"cookie,omitempty"` // Data is the data associated to the transition, e.g. the list of profiles (Profiles struct) // or the list of secure internet locations ([]string) Data interface{} `json:"data"` }
RequiredAskTransition represents the data that is sent when a transition is required to be handled and the go library needs data from the client This data can be a profile selection or secure internet location selection
type SecureInternet ¶
type SecureInternet struct { // Server is the embedded server struct Server // CountryCode is the country code of the currently configured location, e.g. "nl" CountryCode string `json:"country_code"` // Locations is the list of available secure internet locations Locations []string `json:"locations,omitempty"` // SupportContacts are the list of support contacts SupportContacts []string `json:"support_contacts,omitempty"` // Delisted is a boolean that indicates whether or not this server is delisted from discovery // If it is, the UI should show a warning symbol or move the server to a new category, which is up to the client Delisted bool `json:"delisted"` }
SecureInternet is a secure internet server
type Server ¶
type Server struct { // DisplayName is the map from language tags to display name. If this is empty, the field is omitted from the JSON DisplayName map[string]string `json:"display_name,omitempty"` // Identifier is the Base URL for Institute Access and Custom Server. For Secure Internet this is the organization ID // This identifier should be passed to the Go library for e.g. getting a config Identifier string `json:"identifier"` // Profiles is the profiles that this server has defined // It could be that this is empty if the library has not discovered the profiles just yet Profiles Profiles `json:"profiles"` }
Server is the basic type for a server. This is the base for secure internet and institute access. Custom servers are equal to this type
type Tokens ¶
type Tokens struct { // Access is the access token Access string `json:"access_token"` // Refresh is the refresh token Refresh string `json:"refresh_token"` // Expires is the Unix timestamp when the token expires Expires int64 `json:"expires_at"` }
Tokens are the OAuth tokens for the server
type Type ¶
type Type int8
Type gives the type of server
const ( // TypeUnknown means the server is unknown TypeUnknown Type = iota // TypeInstituteAccess means the server is of type Institute Access TypeInstituteAccess // TypeSecureInternet means the server is of type Secure Internet TypeSecureInternet // TypeCustom means the server is of type Custom Server TypeCustom )
func (*Type) UnmarshalJSON ¶
UnmarshalJSON is set here here to support V1 configs which had the server type as a string