probe/auth/service/NoAuthProbeService.go
crusader d2d34699aa ing
2018-04-18 23:56:13 +09:00

110 lines
2.6 KiB
Go

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
}
}