forked from rancher/websocket-proxy
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
119 lines (107 loc) · 3.12 KB
/
Copy pathmain.go
File metadata and controls
119 lines (107 loc) · 3.12 KB
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package main
import (
"fmt"
"os"
log "github.com/sirupsen/logrus"
"github.com/PastureStack/websocket-proxy/proxy"
)
var VERSION = "dev"
func main() {
if versionRequested(os.Args[1:]) {
fmt.Printf("pasturestack-websocket-proxy version %s\n", VERSION)
return
}
conf, err := proxy.GetConfig()
if err != nil {
log.WithField("error", err).Fatal("Error getting config.")
}
p := &proxy.Starter{
BackendPaths: []string{
"/v1/connectbackend",
"/v2-beta/connectbackend",
"/v2/connectbackend",
},
FrontendPaths: []string{
"/v1/{logs:logs}",
"/v1/{logs:logs}/",
"/v1/{stats:stats}",
"/v1/{stats:stats}/{statsid}",
"/v1/exec/",
"/v1/exec",
"/v1/console/",
"/v1/console",
"/v1/dockersocket/",
"/v1/dockersocket",
"/v2-beta/{logs:logs}/",
"/v2-beta/{logs:logs}",
"/v2-beta/{stats:stats}",
"/v2-beta/{stats:stats}/{statsid}",
"/v2-beta/exec/",
"/v2-beta/exec",
"/v2-beta/console/",
"/v2-beta/console",
"/v2-beta/dockersocket/",
"/v2-beta/dockersocket",
"/v2/{logs:logs}/",
"/v2/{logs:logs}",
"/v2/{stats:stats}",
"/v2/{stats:stats}/{statsid}",
"/v2/exec/",
"/v2/exec",
"/v2/console/",
"/v2/console",
"/v2/dockersocket/",
"/v2/dockersocket",
},
FrontendHTTPPaths: []string{
"/v1/container-proxy{path:.*}",
"/v2-beta/container-proxy{path:.*}",
"/v2/container-proxy{path:.*}",
"/r/projects/{project}/{service}{path:.*}",
"/r/{service}{path:.*}",
},
StatsPaths: []string{
"/v1/{hoststats:hoststats(\\/project)?(\\/)?}",
"/v1/{containerstats:containerstats(\\/service)?(\\/)?}",
"/v1/{containerstats:containerstats}/{containerid}",
"/v2-beta/{hoststats:hoststats(\\/project)?(\\/)?}",
"/v2-beta/{containerstats:containerstats(\\/service)?(\\/)?}",
"/v2-beta/{containerstats:containerstats}/{containerid}",
"/v2/{hoststats:hoststats(\\/project)?(\\/)?}",
"/v2/{containerstats:containerstats(\\/service)?(\\/)?}",
"/v2/{containerstats:containerstats}/{containerid}",
},
PlatformWSProxyPaths: []string{
"/v1/{sub:subscribe}",
"/v1/projects/{project}/{sub:subscribe}",
"/v2-beta/{sub:subscribe}",
"/v2-beta/projects/{project}/{sub:subscribe}",
"/v2/{sub:subscribe}",
"/v2/projects/{project}/{sub:subscribe}",
},
PlatformProxyPaths: []string{
"/{platform-proxy:.*}",
},
Config: conf,
}
log.Infof("%s Listening on [%s], proxying to the control-platform API at [%s], monitoring parent pid [%v].",
operatorMessage(conf.Locale, "start"),
conf.ListenAddr, conf.PlatformAddr, conf.ParentPid)
err = p.StartProxy()
log.WithFields(log.Fields{"error": err}).Info(operatorMessage(conf.Locale, "exit"))
}
func versionRequested(args []string) bool {
for _, arg := range args {
if arg == "--version" || arg == "-version" {
return true
}
}
return false
}
func operatorMessage(locale, key string) string {
messages := map[string]map[string]string{
"en-US": {"start": "Starting PastureStack WebSocket proxy.", "exit": "WebSocket proxy stopped."},
"zh-TW": {"start": "正在啟動 PastureStack WebSocket 代理服務。", "exit": "WebSocket 代理服務已停止。"},
}
return messages[locale][key]
}