dissertation-2-code/main.go

58 lines
797 B
Go
Raw Normal View History

2020-10-22 21:19:26 +01:00
package main
import (
2021-03-25 13:50:48 +00:00
"github.com/sevlyar/go-daemon"
2020-10-25 15:36:34 +00:00
"log"
"mpbl3p/config"
2021-03-25 13:50:48 +00:00
"mpbl3p/flags"
2020-10-24 17:44:14 +01:00
"os"
"os/signal"
"syscall"
)
2020-10-22 21:19:26 +01:00
func main() {
2020-10-25 15:36:34 +00:00
log.SetFlags(log.Ldate | log.Ltime | log.Llongfile)
2021-03-25 13:50:48 +00:00
o, err := flags.ParseFlags()
if err != nil {
panic(err)
2020-11-26 22:10:37 +00:00
}
2021-03-25 13:50:48 +00:00
log.Println("loading config...")
c, err := config.LoadConfig(o.ConfigFile)
if err != nil {
panic(err)
}
2020-10-25 15:36:34 +00:00
log.Println("building config...")
2021-03-25 13:54:12 +00:00
p, err := c.Build(o)
2020-10-24 17:44:14 +01:00
if err != nil {
panic(err)
}
2020-10-25 15:36:34 +00:00
log.Println("starting...")
2020-10-24 17:44:14 +01:00
p.Start()
2021-03-25 13:50:48 +00:00
log.Println("forking...")
ctx := &daemon.Context{
PidFileName: o.PidFile,
PidFilePerm: 0644,
}
d, err := ctx.Reborn()
if err != nil {
panic(err)
}
if d != nil {
return
}
2020-10-24 17:44:14 +01:00
signals := make(chan os.Signal)
signal.Notify(signals, syscall.SIGTERM, syscall.SIGINT)
<-signals
2020-10-22 21:19:26 +01:00
}