diff options
| author | Max Resnick <max@ofmax.li> | 2023-04-02 08:52:52 -0700 |
|---|---|---|
| committer | Max Resnick <max@ofmax.li> | 2023-05-26 09:47:59 -0700 |
| commit | 480ce38f8c01de00adf6de651b8c2c57cd2148be (patch) | |
| tree | 85bd66986cb3f0ad501549e46e649073775e8077 /internal/admin/service.go | |
| parent | 9e04be2ca3d8980ebc8ec791d005ba77382fb1fa (diff) | |
| download | go-git-server-480ce38f8c01de00adf6de651b8c2c57cd2148be.tar.gz | |
Adds a lot of tests adds middleware hook
Diffstat (limited to '')
| -rw-r--r-- | internal/admin/service.go | 56 |
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 |