package main import ( "flag" "log" "os" "os/signal" "syscall" "tunnel/pkg/server" ) var debugVar bool func init() { flag.BoolVar(&debugVar, "d", false, "debug: print time and source info") } func initLog() { var logFlags int if debugVar { logFlags |= log.Ldate | log.Ltime | log.Lshortfile } log.SetFlags(logFlags) } func main() { flag.Parse() initLog() var c = make(chan os.Signal) signal.Notify(c, syscall.SIGINT, syscall.SIGTERM) s, err := server.New() if err != nil { log.Fatal(err) } go func() { sig := <-c log.Printf("killed by signal: %s", sig) s.Stop() }() log.Print("ready") s.Run() log.Print("exit") }