1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# Functions
## Registering
See [Overview](../overview/registering.html)
```go
func Register(name string, directory string, stateCallback func, debug bool) error
```
- `name`: The name of the client
- `directory`: The directory where the configs and logging should be stored
- `stateCallback`: function with three arguments, full type:
```go
func StateCallback(oldState string, newState string, data string)
```
- `debug`: Whether or not we want to enable debugging
Returns an `error` type, nil if no error
## Discovery
See [Overview](../overview/discovery.html)
```go
func GetDiscoServers() (string, error)
func GetDiscoOrganizations() (string, error)
```
Returns a string of JSON data with the servers/organizations and an `error`, nil if no error
## OpenVPN/Wireguard config
See [Overview](../overview/getconfig.html)
```go
func GetConfigInstituteAccess(url string, preferTCP bool) (string, string, error)
func GetConfigSecureInternet(url string, preferTCP bool) (string, string, error)
```
- `url`: The URL of the Institute Access or Secure Internet server to get a connect config for
- `preferTCP`: Whether or not we want to prefer TCP
Returns:
- A `string` of the OpenVPN/Wireguard config
- A `string`, `openvpn` or `wireguard` indicating if it is an OpenVPN or Wireguard config
- An `error` (can be nil)
### Cancelling OAuth
```go
func CancelOAuth() error
```
Returns an `error`, can be nil indicating no error
### Setting a profile ID
```go
func SetProfileID(profileID string) error
```
- `profileID`: The profile ID to connect to
Returns an `error`, can be nil indicating no error
## Connecting/Disconnecting
See [Overview](../overview/connecting.html)
```go
func SetConnected() error
func SetDisconnected() error
```
Returns an `error`, can be nil indicating no error
## Deregister
See [Overview](../overview/deregistering.html)
```go
func Deregister() error
```
Returns an `error`, can be nil indicating no error
# Note on Callbacks
Some functions (e.g. [the API for getting an OpenVPN/Wireguard config](http://localhost:3000/api/overview/getconfig.html)) need a (or multiple) callback(s) set. In Go, the callback function is given in the [Register function](#registering). The signature of this function is the following:
```go
func StateCallback(oldState string, newState string, data string)
```
Because certain callbacks need to be set, you can simply compare against `oldState` and `newState`. To show how this can be done in practice, we will give an example in the next section.
|