/
main.go
64 lines (50 loc) · 1.86 KB
/
main.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
// Package main ...
package main
import (
"io/ioutil"
"log"
"net/http"
"os"
"strings"
"github.com/microplatform-io/platform"
)
func main() {
serverIPAddr, err := platform.GetMyIp()
if err != nil {
logger.Fatalf("Could not resolve server IP address: %s", err)
}
if err := ioutil.WriteFile(SSL_CERT_FILE, []byte(strings.Replace(os.Getenv("SSL_CERT"), "\\n", "\n", -1)), 0755); err != nil {
log.Fatalf("> failed to write SSL cert file: %s", err)
}
if err := ioutil.WriteFile(SSL_KEY_FILE, []byte(strings.Replace(os.Getenv("SSL_KEY"), "\\n", "\n", -1)), 0755); err != nil {
log.Fatalf("> failed to write SSL cert file: %s", err)
}
server, _ := NewServer(&Options{
IPAddr: platform.Getenv("SERVER_IP", serverIPAddr),
MicroIpAddr: serverIPAddr,
Port: serverPort,
TLSCertFile: SSL_CERT_FILE,
TLSKeyFile: SSL_KEY_FILE,
})
connectionManager := platform.NewAmqpConnectionManager(rabbitUser, rabbitPass, rabbitAddr+":"+rabbitPort, "")
publisher = getDefaultPublisher(connectionManager)
subscriber = getDefaultSubscriber(connectionManager, server.GetRouterURI())
router := platform.NewStandardRouter(publisher, subscriber)
server.SetRouter(router)
manageRouterState(&platform.RouterConfigList{
RouterConfigs: []*platform.RouterConfig{
&platform.RouterConfig{
RouterType: platform.RouterConfig_ROUTER_TYPE_HTTP.Enum(),
ProtocolType: platform.RouterConfig_PROTOCOL_TYPE_HTTPS.Enum(),
Host: platform.String(serverIPAddr),
Port: platform.String(serverPort),
},
},
})
mux := http.NewServeMux()
mux.Handle("/", EnforceHeadersMiddleware(http.HandlerFunc(MicroplatformEndpointHandler(server))))
mux.Handle("/server", EnforceHeadersMiddleware(http.HandlerFunc(ServerDiscoveryHandler(server))))
if err := server.ListenAndServeTLS(mux); err != nil {
logger.Fatalf("Failed to listen and serve: %s", err)
}
}