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 }