package service import ( "context" "reflect" "time" "git.loafle.net/commons/configuration-go" cda "git.loafle.net/commons/di-go/annotation" cdr "git.loafle.net/commons/di-go/registry" logging "git.loafle.net/commons/logging-go" crc "git.loafle.net/commons/rpc-go/client" ocnc "git.loafle.net/overflow/commons-go/noauthprobe/config" "git.loafle.net/overflow/probe/client/central" "git.loafle.net/overflow/probe/config" // For annotation _ "git.loafle.net/overflow/probe/auth/annotation" ) var NoAuthProbeServiceType = reflect.TypeOf((*NoAuthProbeService)(nil)) func init() { cdr.RegisterType(NoAuthProbeServiceType) } type NoAuthProbeService struct { cda.TypeAnnotation `annotation:"@overflow:AuthRPCService()"` Config *config.Config `annotation:"@Resource(name='Config')"` AuthConfig *ocnc.Auth `annotation:"@Resource(name='AuthConfig')"` AuthDoneChan chan error `annotation:"@Resource(name='AuthDoneChan')"` client *crc.Client } func (s *NoAuthProbeService) InitService() error { client, err := central.NewAuth(s.HandleTempKey, s) if nil != err { return err } s.client = client return nil } func (s *NoAuthProbeService) StartService() error { if err := s.client.Start(); nil != err { return err } return nil } func (s *NoAuthProbeService) StopService() { if err := s.client.Stop(context.Background()); nil != err { logging.Logger().Error(err) } } func (s *NoAuthProbeService) DestroyService() { s.client = nil } func (s *NoAuthProbeService) Accept(probeKey string) error { logging.Logger().Infof("accepted by central") n := time.Now() s.AuthConfig.AcceptedDate = &n if err := configuration.Save(s.AuthConfig, config.NoAuthProbeConfigFilePath(), true); nil != err { logging.Logger().Error(err) s.AuthDoneChan <- err return nil } s.Config.Probe.Key = &probeKey if err := configuration.Save(s.Config, config.ProbeConfigFilePath(), true); nil != err { logging.Logger().Error(err) s.AuthDoneChan <- err return nil } s.AuthDoneChan <- nil return nil } func (s *NoAuthProbeService) Deny() error { logging.Logger().Infof("denied by central") n := time.Now() s.AuthConfig.DeniedDate = &n if err := configuration.Save(s.AuthConfig, config.NoAuthProbeConfigFilePath(), true); nil != err { logging.Logger().Error(err) s.AuthDoneChan <- err return nil } s.AuthDoneChan <- nil return nil } func (s *NoAuthProbeService) HandleTempKey(tempKey string) { logging.Logger().Infof("registered by central") s.AuthConfig.TempKey = &tempKey if err := configuration.Save(s.AuthConfig, config.NoAuthProbeConfigFilePath(), true); nil != err { logging.Logger().Error(err) s.AuthDoneChan <- err return } }