49 lines
1.1 KiB
Go
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
|
|
}
|