blob: acf82b6de6c8fb6493d4eac15425ac5e3ebe6213 (
plain)
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
|
package main
import (
log "github.com/sirupsen/logrus"
"net/http"
"os"
"os/signal"
"syscall"
)
var (
serverConfig map[string]interface{}
systemConfig map[string]interface{}
)
var (
server = http.Server{}
executable string
)
var (
r bool
d bool
)
func init() {
setFormatter()
var err error
executable, err = os.Executable()
if err != nil {
log.Warnf("Error while obtaining executable path, %s. Restarting will no longer work.", err)
}
}
func main() {
// Setup configuration stuff
configSetup()
// Initial config update
setLevel()
// Open store
openStore()
// Set up web
webSetup()
// Configure listener
listenerSetup()
// Register API and web handlers
registerAPI()
registerWebpage()
// Signal handling
signalChannel := make(chan os.Signal, 1)
signal.Notify(signalChannel, syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP, os.Interrupt, os.Kill)
go func() {
// Cleanup on function return
defer func() { cleanup(false) }()
for {
currentSignal := <-signalChannel
switch currentSignal {
case os.Interrupt:
println()
log.Info("Gracefully exiting.")
return
default:
log.Info("Gracefully exiting.")
return
}
}
}()
// Start server
runWebServer()
// Restart if needed
if r {
restart()
}
}
|