5
"launchpad.net/gnuflag"
6
"launchpad.net/goose/testservices/identityservice"
12
type userInfo struct {
15
type userValues struct {
19
func (uv *userValues) Set(s string) error {
20
vals := strings.Split(s, ":")
22
return fmt.Errorf("Invalid --user option, should be: user:secret")
24
uv.users = append(uv.users, userInfo{
30
func (uv *userValues) String() string {
31
return fmt.Sprintf("%v", uv.users)
34
var provider = gnuflag.String("provider", "userpass", "provide the name of the identity service to run")
36
var serveAddr = gnuflag.String("addr", "localhost:8080", "serve the provider on the given address.")
42
gnuflag.Var(&users, "user", "supply to add a user to the identity provider. Can be supplied multiple times. Should be of the form \"user:secret:token\".")
45
var providerMap = map[string]identityservice.IdentityService{
46
"legacy": identityservice.NewLegacy(),
47
"userpass": identityservice.NewUserPass(),
50
func providers() []string {
51
out := make([]string, 0, len(providerMap))
52
for provider := range providerMap {
53
out = append(out, provider)
60
p, ok := providerMap[*provider]
62
log.Fatalf("No such provider: %s, pick one of: %v", provider, providers())
64
mux := http.NewServeMux()
66
for _, u := range users.users {
67
p.AddUser(u.user, u.secret, "tenant")
69
log.Fatal(http.ListenAndServe(*serveAddr, mux))