crtman/internal/cli/federation.go
2025-10-12 20:01:19 +08:00

49 lines
1.1 KiB
Go

package cli
import (
"log"
"github.com/jasinco/crtman/internal/accounting"
"github.com/spf13/viper"
)
var backend accounting.Account
var auth_backend map[string]*accounting.Account
func ParseFederation() {
log.Println("Getting Federation")
account_backend := viper.GetString("federation.backend")
log.Printf("Accounting: %s\n", account_backend)
auth := viper.GetStringSlice("federation.auth")
log.Println("Authenticate", auth)
backend = construct(account_backend)
auth_backend = make(map[string]*accounting.Account)
for _, method := range auth {
if method == account_backend {
auth_backend[method] = &backend
} else {
auth := construct(method)
auth_backend[method] = &auth
}
}
}
func construct_ldap() accounting.LDAP {
block_name := "federation.ldap"
var ldap_cfg accounting.LDAP_Config
viper.UnmarshalKey(block_name, &ldap_cfg)
return accounting.NewLDAP(ldap_cfg)
}
func construct(name string) accounting.Account {
var account accounting.Account
switch name {
case "ldap":
ldap_inst := construct_ldap()
account = &ldap_inst
default:
log.Fatal("No Federation")
}
return account
}