/
proxy_config.go
71 lines (63 loc) · 1.75 KB
/
proxy_config.go
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
package goaviatrix
import (
"strings"
)
type ProxyConfig struct {
HttpProxy string `json:"http_proxy,omitempty"`
HttpsProxy string `json:"https_proxy,omitempty"`
ProxyCaCertificate string `json:"server_ca_cert_content"`
}
type ProxyConfigResp struct {
Return bool
Results ProxyConfig
Reason string
}
func (c *Client) CreateProxyConfig(proxyConfig *ProxyConfig) error {
action := "apply_proxy_config"
params := map[string]string{
"CID": c.CID,
"action": action,
"http_proxy": proxyConfig.HttpProxy,
"https_proxy": proxyConfig.HttpsProxy,
}
if proxyConfig.ProxyCaCertificate != "" {
var files []File
ca := File{
ParamName: "server_ca_cert",
UseFileContent: true,
FileName: "ca.pem", // fake name for ca
FileContent: proxyConfig.ProxyCaCertificate,
}
files = append(files, ca)
return c.PostFileAPI(params, files, BasicCheck)
} else {
return c.PostAPI(action, params, BasicCheck)
}
}
func (c *Client) GetProxyConfig() (*ProxyConfig, error) {
formData := map[string]string{
"action": "show_proxy_config",
"CID": c.CID,
}
var data ProxyConfigResp
err := c.GetAPI(&data, formData["action"], formData, BasicCheck)
if err != nil {
return nil, err
}
if data.Results.HttpProxy != "" && data.Results.HttpsProxy != "" {
return &ProxyConfig{
HttpProxy: strings.TrimPrefix(data.Results.HttpProxy, "http://"),
HttpsProxy: strings.TrimPrefix(data.Results.HttpsProxy, "http://"),
ProxyCaCertificate: data.Results.ProxyCaCertificate,
}, nil
}
return nil, ErrNotFound
}
func (c *Client) DeleteProxyConfig() error {
action := "delete_proxy_config"
data := map[string]interface{}{
"action": action,
"CID": c.CID,
}
return c.PostAPI(action, data, BasicCheck)
}