package main import ( "context" "flag" "os" "os/signal" "syscall" "time" "git.loafle.net/commons/configuration-go" cdr "git.loafle.net/commons/di-go/registry" "git.loafle.net/commons/logging-go" occi "git.loafle.net/overflow/commons-go/core/interfaces" ocpc "git.loafle.net/overflow/commons-go/probe/config" "git.loafle.net/overflow/probe/auth" "git.loafle.net/overflow/probe/config" ) var ( configDir *string ) func init() { configDir = flag.String("config-dir", "./", "Config directory") logConfigPath := flag.String("log-config", "", "logging config path") flag.Parse() logging.InitializeLogger(*logConfigPath) } func main() { _config := &config.Config{} configuration.SetConfigPath(*configDir) if err := configuration.Load(_config, ocpc.ConfigFileName); nil != err { logging.Logger().Panic(err) } cdr.RegisterResource("Config", _config) cdr.RegisterResource("ConfigDir", *configDir) var instance interface{} go func() { if ocpc.ProbeStateTypeNotAuthorized == _config.Probe.State() { instance = &auth.Authenticator{ ConfigDir: *configDir, Config: _config, } doneChan, err := instance.(occi.EndableStarter).EndableStart() if nil != err { logging.Logger().Panic(err) return } err = <-doneChan if nil != err { logging.Logger().Panic(err) } if err := instance.(occi.Stopper).Stop(context.Background()); err != nil { logging.Logger().Errorf("error: %v", err) } } // err := s.ListenAndServe() // if nil != err { // log.Printf("err: %v", err) // } }() interrupt := make(chan os.Signal, 1) signal.Notify(interrupt, syscall.SIGKILL, syscall.SIGSTOP, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) <-interrupt ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() if err := instance.(occi.Stopper).Stop(ctx); err != nil { logging.Logger().Errorf("error: %v", err) } }