aboutsummaryrefslogtreecommitdiff
path: root/internal/admin/service.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/admin/service.go')
-rw-r--r--internal/admin/service.go56
1 files changed, 50 insertions, 6 deletions
diff --git a/internal/admin/service.go b/internal/admin/service.go
index 80056b7..84547fa 100644
--- a/internal/admin/service.go
+++ b/internal/admin/service.go
@@ -9,28 +9,72 @@ import (
// Servicer container for dependencies and functions
type Servicer struct {
*casbin.SyncedEnforcer
- Conf *ServerRepos
+ Conf *ServerRepos
+ serverConfigPath string
+ reposDir string
+ mgmtRepo bool
+}
+
+// Reload reoload server config and sync policies
+func (s *Servicer) Reload() {
+ tmpConfig, err := loadServerConfig(s.mgmtRepo, s.reposDir, s.serverConfigPath)
+ if err != nil {
+ // log.error
+ log.Printf("failed to load config %s", err)
+ log.Print("refusing to reload config")
+ return
+ }
+ s.Conf = tmpConfig
+ s.InitServer()
}
// InitServer initialize a git server and configure
func (s *Servicer) InitServer() {
policies := s.Conf.ServerPolicies()
- s.AddPolicies(policies)
- s.SavePolicy()
- s.LoadPolicy()
+ log.Print("policies generated")
+ numAdded := 0
+ for _, policy := range policies {
+ added, err := s.AddPolicy(policy[0], policy[1], policy[2])
+ if err != nil {
+ // log.error
+ log.Printf("error adding policy %s %s %s error %s", policy[0], policy[1], policy[2], err)
+ continue
+ }
+ if added {
+ numAdded += 1
+ }
+ }
+ log.Printf("policies added %d", numAdded)
+ if err := s.SavePolicy(); err != nil {
+ log.Print("couldn't save policy")
+ }
+ log.Printf("policies saved")
+ if err := s.LoadPolicy(); err != nil {
+ log.Print("cloudn't load policy")
+ }
+ log.Print("policies loaded")
s.Conf.ConfigureRepos()
+ log.Print("configured repos")
}
// NewService create a new admin service, load config, and generate policies
-func NewService(modelPath, policyPath, serverConfigPath string) *Servicer {
+func NewService(modelPath, policyPath, serverConfigPath, reposDir string, mgmtRepo bool) *Servicer {
enf, err := casbin.NewSyncedEnforcer(modelPath, policyPath)
if err != nil {
log.Fatalf("Couldn't load the enforcer encountered the following error: %s", err)
}
- conf := loadServerConfig(serverConfigPath)
+
+ conf, err := loadServerConfig(mgmtRepo, reposDir, serverConfigPath)
+ if err != nil {
+ // log.error
+ log.Fatalf("Coudln't load server config %s", err)
+ }
svc := &Servicer{
enf,
conf,
+ serverConfigPath,
+ reposDir,
+ mgmtRepo,
}
svc.InitServer()
return svc