本文整理汇总了Golang中github.com/tsuru/tsuru/auth.GetScheme函数的典型用法代码示例。如果您正苦于以下问题:Golang GetScheme函数的具体用法?Golang GetScheme怎么用?Golang GetScheme使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GetScheme函数的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: samlCallbackLogin
// title: saml callback
// path: /auth/saml
// method: POST
// responses:
// 200: Ok
// 400: Invalid data
func samlCallbackLogin(w http.ResponseWriter, r *http.Request) error {
if app.AuthScheme.Name() != "saml" {
return &errors.HTTP{
Code: http.StatusBadRequest,
Message: "This URL is only supported with saml enabled",
}
}
params := map[string]string{}
content := r.PostFormValue("SAMLResponse")
if content == "" {
return &errors.HTTP{Code: http.StatusBadRequest, Message: "Empty SAML Response"}
}
params["callback"] = "true"
params["xml"] = content
//Get saml.SAMLAuthScheme, error already treated on first check
scheme, _ := auth.GetScheme("saml")
_, err := scheme.Login(params)
if err != nil {
msg := fmt.Sprintf(cmd.SamlCallbackFailureMessage(), err.Error())
fmt.Fprintf(w, msg)
} else {
fmt.Fprintf(w, cmd.SamlCallbackSuccessMessage())
}
return nil
}
示例2: Run
func (createRootUserCmd) Run(context *cmd.Context, client *cmd.Client) error {
context.RawOutput()
scheme, err := config.GetString("auth:scheme")
if err != nil {
scheme = "native"
}
app.AuthScheme, err = auth.GetScheme(scheme)
if err != nil {
return err
}
email := context.Args[0]
user, err := auth.GetUserByEmail(email)
if err == nil {
err = addSuperRole(user)
if err != nil {
return err
}
fmt.Fprintln(context.Stdout, "Root user successfully updated.")
}
var confirm, password string
if scheme == "native" {
fmt.Fprint(context.Stdout, "Password: ")
password, err = cmd.PasswordFromReader(context.Stdin)
if err != nil {
return err
}
fmt.Fprint(context.Stdout, "\nConfirm: ")
confirm, err = cmd.PasswordFromReader(context.Stdin)
if err != nil {
return err
}
fmt.Fprintln(context.Stdout)
if password != confirm {
return errors.New("Passwords didn't match.")
}
}
user, err = app.AuthScheme.Create(&auth.User{
Email: email,
Password: password,
})
if err != nil {
return err
}
err = addSuperRole(user)
if err != nil {
return err
}
fmt.Fprintln(context.Stdout, "Root user successfully created.")
return nil
}
示例3: Run
func (tokenCmd) Run(context *cmd.Context, client *cmd.Client) error {
scheme, err := config.GetString("auth:scheme")
if err != nil {
scheme = "native"
}
app.AuthScheme, err = auth.GetScheme(scheme)
if err != nil {
return err
}
t, err := app.AuthScheme.AppLogin(app.InternalAppName)
if err != nil {
return err
}
fmt.Fprintln(context.Stdout, t.GetValue())
return nil
}
示例4: RunServer
//.........这里部分代码省略.........
defaultRouter, _ := config.GetString("docker:router")
fmt.Printf("Default router is %q.\n", defaultRouter)
repoManager, err := config.GetString("repo-manager")
if err != nil {
repoManager = "gandalf"
fmt.Println("Warning: configuration didn't declare a repository manager, using default manager.")
}
fmt.Printf("Using %q repository manager.\n", repoManager)
provisioner, err := getProvisioner()
if err != nil {
fmt.Println("Warning: configuration didn't declare a provisioner, using default provisioner.")
}
app.Provisioner, err = provision.Get(provisioner)
if err != nil {
fatal(err)
}
fmt.Printf("Using %q provisioner.\n", provisioner)
if initializableProvisioner, ok := app.Provisioner.(provision.InitializableProvisioner); ok {
err = initializableProvisioner.Initialize()
if err != nil {
fatal(err)
}
}
if messageProvisioner, ok := app.Provisioner.(provision.MessageProvisioner); ok {
startupMessage, err = messageProvisioner.StartupMessage()
if err == nil && startupMessage != "" {
fmt.Print(startupMessage)
}
}
scheme, err := getAuthScheme()
if err != nil {
fmt.Printf("Warning: configuration didn't declare auth:scheme, using default scheme.\n")
}
app.AuthScheme, err = auth.GetScheme(scheme)
if err != nil {
fatal(err)
}
fmt.Printf("Using %q auth scheme.\n", scheme)
fmt.Println("Checking components status:")
results := hc.Check()
for _, result := range results {
if result.Status != hc.HealthCheckOK {
fmt.Printf(" WARNING: %q is not working: %s\n", result.Name, result.Status)
}
}
fmt.Println(" Components checked.")
listen, err := config.GetString("listen")
if err != nil {
fatal(err)
}
shutdownChan := make(chan bool)
shutdownTimeout, _ := config.GetInt("shutdown-timeout")
if shutdownTimeout == 0 {
shutdownTimeout = 10 * 60
}
idleTracker := newIdleTracker()
shutdown.Register(idleTracker)
shutdown.Register(&logTracker)
readTimeout, _ := config.GetInt("server:read-timeout")
writeTimeout, _ := config.GetInt("server:write-timeout")
srv := &graceful.Server{
Timeout: time.Duration(shutdownTimeout) * time.Second,
Server: &http.Server{
ReadTimeout: time.Duration(readTimeout) * time.Second,
WriteTimeout: time.Duration(writeTimeout) * time.Second,
Addr: listen,
示例5: migrateBSEnvs
func migrateBSEnvs() error {
scheme, err := config.GetString("auth:scheme")
if err != nil {
scheme = nativeSchemeName
}
app.AuthScheme, err = auth.GetScheme(scheme)
if err != nil {
return err
}
_, err = nodecontainer.InitializeBS()
if err != nil {
return err
}
conn, err := db.Conn()
if err != nil {
return err
}
defer conn.Close()
var entry map[string]interface{}
err = conn.Collection("bsconfig").FindId("bs").One(&entry)
if err != nil {
if err == mgo.ErrNotFound {
return nil
}
return err
}
image, _ := entry["image"].(string)
envs, _ := entry["envs"].([]interface{})
var baseEnvs []string
for _, envEntry := range envs {
mapEntry, _ := envEntry.(map[string]interface{})
if mapEntry == nil {
continue
}
name, _ := mapEntry["name"].(string)
value, _ := mapEntry["value"].(string)
baseEnvs = append(baseEnvs, fmt.Sprintf("%s=%s", name, value))
}
bsNodeContainer, err := nodecontainer.LoadNodeContainer("", nodecontainer.BsDefaultName)
if err != nil {
return err
}
if len(baseEnvs) > 0 {
bsNodeContainer.Config.Env = append(bsNodeContainer.Config.Env, baseEnvs...)
}
bsNodeContainer.PinnedImage = image
err = nodecontainer.AddNewContainer("", bsNodeContainer)
if err != nil {
return err
}
pools, _ := entry["pools"].([]interface{})
for _, poolData := range pools {
poolMap, _ := poolData.(map[string]interface{})
if poolMap == nil {
continue
}
poolName, _ := poolMap["name"].(string)
if poolName == "" {
continue
}
envs, _ := poolMap["envs"].([]interface{})
var toAdd []string
for _, envEntry := range envs {
mapEntry, _ := envEntry.(map[string]interface{})
if mapEntry == nil {
continue
}
name, _ := mapEntry["name"].(string)
value, _ := mapEntry["value"].(string)
toAdd = append(toAdd, fmt.Sprintf("%s=%s", name, value))
}
if len(toAdd) > 0 {
bsCont := nodecontainer.NodeContainerConfig{Name: nodecontainer.BsDefaultName}
bsCont.Config.Env = append(bsCont.Config.Env, toAdd...)
err = nodecontainer.AddNewContainer(poolName, &bsCont)
if err != nil {
return err
}
}
}
return nil
}
示例6: RunServer
//.........这里部分代码省略.........
// use a token generated for Gandalf.
m.Add("Get", "/apps/{appname}/available", authorizationRequiredHandler(appIsAvailable))
m.Add("Post", "/apps/{appname}/repository/clone", authorizationRequiredHandler(deploy))
m.Add("Post", "/apps/{appname}/deploy", authorizationRequiredHandler(deploy))
m.Add("Post", "/users", Handler(createUser))
m.Add("Get", "/auth/scheme", Handler(authScheme))
m.Add("Post", "/auth/login", Handler(login))
m.Add("Post", "/users/{email}/password", Handler(resetPassword))
m.Add("Post", "/users/{email}/tokens", Handler(login))
m.Add("Delete", "/users/tokens", authorizationRequiredHandler(logout))
m.Add("Put", "/users/password", authorizationRequiredHandler(changePassword))
m.Add("Delete", "/users", authorizationRequiredHandler(removeUser))
m.Add("Get", "/users/{email}/keys", authorizationRequiredHandler(listKeys))
m.Add("Post", "/users/keys", authorizationRequiredHandler(addKeyToUser))
m.Add("Delete", "/users/keys", authorizationRequiredHandler(removeKeyFromUser))
m.Add("Post", "/tokens", AdminRequiredHandler(generateAppToken))
m.Add("Delete", "/logs", AdminRequiredHandler(logRemove))
m.Add("Get", "/teams", authorizationRequiredHandler(teamList))
m.Add("Post", "/teams", authorizationRequiredHandler(createTeam))
m.Add("Get", "/teams/{name}", authorizationRequiredHandler(getTeam))
m.Add("Delete", "/teams/{name}", authorizationRequiredHandler(removeTeam))
m.Add("Put", "/teams/{team}/{user}", authorizationRequiredHandler(addUserToTeam))
m.Add("Delete", "/teams/{team}/{user}", authorizationRequiredHandler(removeUserFromTeam))
m.Add("Get", "/healers", authorizationRequiredHandler(healers))
m.Add("Get", "/healers/{healer}", authorizationRequiredHandler(healer))
m.Add("Put", "/swap", authorizationRequiredHandler(swap))
m.Add("Get", "/healthcheck/", http.HandlerFunc(healthcheck))
m.Add("Get", "/iaas/machines", AdminRequiredHandler(machinesList))
m.Add("Delete", "/iaas/machines/{machine_id}", AdminRequiredHandler(machineDestroy))
n := negroni.New()
n.Use(negroni.NewRecovery())
n.Use(negroni.NewLogger())
n.UseHandler(m)
n.Use(negroni.HandlerFunc(contextClearerMiddleware))
n.Use(negroni.HandlerFunc(flushingWriterMiddleware))
n.Use(negroni.HandlerFunc(errorHandlingMiddleware))
n.Use(negroni.HandlerFunc(setVersionHeadersMiddleware))
n.Use(negroni.HandlerFunc(authTokenMiddleware))
n.Use(&appLockMiddleware{excludedHandlers: []http.Handler{
logPostHandler,
runHandler,
}})
n.UseHandler(http.HandlerFunc(runDelayedHandler))
if !dry {
provisioner, err := getProvisioner()
if err != nil {
fmt.Printf("Warning: configuration didn't declare a provisioner, using default provisioner.\n")
}
app.Provisioner, err = provision.Get(provisioner)
if err != nil {
fatal(err)
}
fmt.Printf("Using %q provisioner.\n\n", provisioner)
scheme, err := getAuthScheme()
if err != nil {
fmt.Printf("Warning: configuration didn't declare a auth:scheme, using default scheme.\n")
}
app.AuthScheme, err = auth.GetScheme(scheme)
if err != nil {
fatal(err)
}
fmt.Printf("Using %q auth scheme.\n\n", scheme)
listen, err := config.GetString("listen")
if err != nil {
fatal(err)
}
tls, _ := config.GetBool("use-tls")
if tls {
certFile, err := config.GetString("tls:cert-file")
if err != nil {
fatal(err)
}
keyFile, err := config.GetString("tls:key-file")
if err != nil {
fatal(err)
}
fmt.Printf("tsuru HTTP/TLS server listening at %s...\n", listen)
fatal(http.ListenAndServeTLS(listen, certFile, keyFile, n))
} else {
listener, err := net.Listen("tcp", listen)
if err != nil {
fatal(err)
}
fmt.Printf("tsuru HTTP server listening at %s...\n", listen)
http.Handle("/", n)
fatal(http.Serve(listener, nil))
}
}
return n
}
示例7: RunServer
//.........这里部分代码省略.........
m.Post("/apps", authorizationRequiredHandler(createApp))
m.Put("/apps/:app/units", authorizationRequiredHandler(addUnits))
m.Del("/apps/:app/units", authorizationRequiredHandler(removeUnits))
m.Put("/apps/:app/:team", authorizationRequiredHandler(grantAppAccess))
m.Del("/apps/:app/:team", authorizationRequiredHandler(revokeAppAccess))
m.Get("/apps/:app/log", authorizationRequiredHandler(appLog))
m.Post("/apps/:app/log", authorizationRequiredHandler(addLog))
m.Get("/deploys", AdminRequiredHandler(deploysList))
m.Get("/platforms", authorizationRequiredHandler(platformList))
m.Post("/platforms", AdminRequiredHandler(platformAdd))
m.Put("/platforms/:name", AdminRequiredHandler(platformUpdate))
// These handlers don't use :app on purpose. Using :app means that only
// the token generate for the given app is valid, but these handlers
// use a token generated for Gandalf.
m.Get("/apps/:appname/available", authorizationRequiredHandler(appIsAvailable))
m.Post("/apps/:appname/repository/clone", authorizationRequiredHandler(deploy))
m.Post("/apps/:appname/deploy", authorizationRequiredHandler(deploy))
if registrationEnabled, _ := config.GetBool("auth:user-registration"); registrationEnabled {
m.Post("/users", Handler(createUser))
}
m.Get("/auth/scheme", Handler(authScheme))
m.Post("/auth/login", Handler(login))
m.Post("/users/:email/password", Handler(resetPassword))
m.Post("/users/:email/tokens", Handler(login))
m.Del("/users/tokens", authorizationRequiredHandler(logout))
m.Put("/users/password", authorizationRequiredHandler(changePassword))
m.Del("/users", authorizationRequiredHandler(removeUser))
m.Get("/users/:email/keys", authorizationRequiredHandler(listKeys))
m.Post("/users/keys", authorizationRequiredHandler(addKeyToUser))
m.Del("/users/keys", authorizationRequiredHandler(removeKeyFromUser))
m.Post("/tokens", AdminRequiredHandler(generateAppToken))
m.Del("/logs", AdminRequiredHandler(logRemove))
m.Get("/teams", authorizationRequiredHandler(teamList))
m.Post("/teams", authorizationRequiredHandler(createTeam))
m.Get("/teams/:name", authorizationRequiredHandler(getTeam))
m.Del("/teams/:name", authorizationRequiredHandler(removeTeam))
m.Put("/teams/:team/:user", authorizationRequiredHandler(addUserToTeam))
m.Del("/teams/:team/:user", authorizationRequiredHandler(removeUserFromTeam))
m.Get("/healers", authorizationRequiredHandler(healers))
m.Get("/healers/:healer", authorizationRequiredHandler(healer))
m.Put("/swap", authorizationRequiredHandler(swap))
m.Get("/healthcheck/", http.HandlerFunc(healthcheck))
if !dry {
provisioner, err := getProvisioner()
if err != nil {
fmt.Printf("Warning: configuration didn't declare a provisioner, using default provisioner.\n")
}
app.Provisioner, err = provision.Get(provisioner)
if err != nil {
fatal(err)
}
fmt.Printf("Using %q provisioner.\n\n", provisioner)
scheme, err := getAuthScheme()
if err != nil {
fmt.Printf("Warning: configuration didn't declare a auth:scheme, using default scheme.\n")
}
app.AuthScheme, err = auth.GetScheme(scheme)
if err != nil {
fatal(err)
}
fmt.Printf("Using %q auth scheme.\n\n", scheme)
listen, err := config.GetString("listen")
if err != nil {
fatal(err)
}
tls, _ := config.GetBool("use-tls")
if tls {
certFile, err := config.GetString("tls:cert-file")
if err != nil {
fatal(err)
}
keyFile, err := config.GetString("tls:key-file")
if err != nil {
fatal(err)
}
fmt.Printf("tsuru HTTP/TLS server listening at %s...\n", listen)
fatal(http.ListenAndServeTLS(listen, certFile, keyFile, m))
} else {
listener, err := net.Listen("tcp", listen)
if err != nil {
fatal(err)
}
fmt.Printf("tsuru HTTP server listening at %s...\n", listen)
http.Handle("/", m)
fatal(http.Serve(listener, nil))
}
}
}
示例8: startServer
func startServer(handler http.Handler) {
shutdownChan := make(chan bool)
shutdownTimeout, _ := config.GetInt("shutdown-timeout")
if shutdownTimeout == 0 {
shutdownTimeout = 10 * 60
}
idleTracker := newIdleTracker()
shutdown.Register(idleTracker)
shutdown.Register(&logTracker)
readTimeout, _ := config.GetInt("server:read-timeout")
writeTimeout, _ := config.GetInt("server:write-timeout")
listen, err := config.GetString("listen")
if err != nil {
fatal(err)
}
srv := &graceful.Server{
Timeout: time.Duration(shutdownTimeout) * time.Second,
Server: &http.Server{
ReadTimeout: time.Duration(readTimeout) * time.Second,
WriteTimeout: time.Duration(writeTimeout) * time.Second,
Addr: listen,
Handler: handler,
},
ConnState: func(conn net.Conn, state http.ConnState) {
idleTracker.trackConn(conn, state)
},
NoSignalHandling: true,
ShutdownInitiated: func() {
fmt.Println("tsuru is shutting down, waiting for pending connections to finish.")
handlers := shutdown.All()
wg := sync.WaitGroup{}
for _, h := range handlers {
wg.Add(1)
go func(h shutdown.Shutdownable) {
defer wg.Done()
fmt.Printf("running shutdown handler for %v...\n", h)
h.Shutdown()
fmt.Printf("running shutdown handler for %v. DONE.\n", h)
}(h)
}
wg.Wait()
close(shutdownChan)
},
}
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
go func() {
<-sigChan
srv.Stop(srv.Timeout)
}()
var startupMessage string
routers, err := router.List()
if err != nil {
fatal(err)
}
for _, routerDesc := range routers {
var r router.Router
r, err = router.Get(routerDesc.Name)
if err != nil {
fatal(err)
}
fmt.Printf("Registered router %q", routerDesc.Name)
if messageRouter, ok := r.(router.MessageRouter); ok {
startupMessage, err = messageRouter.StartupMessage()
if err == nil && startupMessage != "" {
fmt.Printf(": %s", startupMessage)
}
}
fmt.Println()
}
defaultRouter, _ := config.GetString("docker:router")
fmt.Printf("Default router is %q.\n", defaultRouter)
repoManager, err := config.GetString("repo-manager")
if err != nil {
repoManager = "gandalf"
fmt.Println("Warning: configuration didn't declare a repository manager, using default manager.")
}
fmt.Printf("Using %q repository manager.\n", repoManager)
err = rebuild.RegisterTask(appFinder)
if err != nil {
fatal(err)
}
scheme, err := getAuthScheme()
if err != nil {
fmt.Printf("Warning: configuration didn't declare auth:scheme, using default scheme.\n")
}
app.AuthScheme, err = auth.GetScheme(scheme)
if err != nil {
fatal(err)
}
fmt.Printf("Using %q auth scheme.\n", scheme)
err = provision.InitializeAll()
if err != nil {
fatal(err)
}
_, err = healer.Initialize()
if err != nil {
fatal(err)
}
fmt.Println("Checking components status:")
//.........这里部分代码省略.........