func mapRoutes() { goweb.MapBefore(func(ctx context.Context) error { req := ctx.HttpRequest() host, _, _ := net.SplitHostPort(req.RemoteAddr) if host == "::1" { host = "localhost" } suffix := "" if _, ok := req.Header["Authorization"]; ok { suffix += " AUTH" } if l, has := req.Header["Content-Length"]; has { suffix += " Content-Length: " + l[0] } logger.Info("access", fmt.Sprintf("%s REQ RECEIVED \"%s %s%s\"", host, ctx.MethodString(), req.RequestURI, suffix)) return nil }) goweb.MapAfter(func(ctx context.Context) error { req := ctx.HttpRequest() host, _, _ := net.SplitHostPort(req.RemoteAddr) if host == "::1" { host = "localhost" } suffix := "" if _, ok := req.Header["Authorization"]; ok { suffix += " AUTH" } if l, has := req.Header["Content-Length"]; has { suffix += " Content-Length: " + l[0] } logger.Info("access", fmt.Sprintf("RESPONDED TO %s \"%s %s%s\"", host, ctx.MethodString(), req.RequestURI, suffix)) return nil }) goweb.Map("/preauth/{id}", func(ctx context.Context) error { if ctx.HttpRequest().Method == "OPTIONS" { return responder.RespondOK(ctx) } pcon.PreAuthRequest(ctx) return nil }) goweb.Map("/node/{nid}/acl/{type}", func(ctx context.Context) error { if ctx.HttpRequest().Method == "OPTIONS" { return responder.RespondOK(ctx) } acon.AclTypedRequest(ctx) return nil }) goweb.Map("/node/{nid}/acl/", func(ctx context.Context) error { if ctx.HttpRequest().Method == "OPTIONS" { return responder.RespondOK(ctx) } acon.AclRequest(ctx) return nil }) goweb.Map("/node/{nid}/index/{idxType}", func(ctx context.Context) error { if ctx.HttpRequest().Method == "OPTIONS" { return responder.RespondOK(ctx) } icon.IndexTypedRequest(ctx) return nil }) goweb.Map("/openparts", func(ctx context.Context) error { ids := node.LockMgr.GetNodes() return responder.RespondWithData(ctx, ids) }) goweb.Map("/", func(ctx context.Context) error { host := util.ApiUrl(ctx) attrs := strings.Split(conf.MONGODB_ATTRIBUTE_INDEXES, ",") for k, v := range attrs { attrs[k] = strings.TrimSpace(v) } anonPerms := new(anonymous) anonPerms.Read = conf.ANON_READ anonPerms.Write = conf.ANON_WRITE anonPerms.Delete = conf.ANON_DELETE var auth []string if conf.AUTH_GLOBUS_TOKEN_URL != "" && conf.AUTH_GLOBUS_PROFILE_URL != "" { auth = append(auth, "globus") } if conf.AUTH_MGRAST_OAUTH_URL != "" { auth = append(auth, "mgrast") } r := resource{ A: attrs, C: conf.ADMIN_EMAIL, D: host + "/wiki/", I: "Shock", O: auth, P: *anonPerms, R: []string{"node"}, S: time.Now().Format(longDateForm), T: "Shock", U: host + "/", V: "[% VERSION %]", } return responder.WriteResponseObject(ctx, http.StatusOK, r) }) nodeController := new(ncon.NodeController) goweb.MapController(nodeController) goweb.MapStatic("/wiki", conf.PATH_SITE) // Map the favicon //goweb.MapStaticFile("/favicon.ico", "static-files/favicon.ico") // Catch-all handler for everything that we don't understand goweb.Map(func(ctx context.Context) error { return responder.RespondWithError(ctx, http.StatusBadRequest, "Parameters do not match a valid Shock request type.") }) }
func mapRoutes() { goweb.MapBefore(func(ctx context.Context) error { req := ctx.HttpRequest() host, _, _ := net.SplitHostPort(req.RemoteAddr) if host == "::1" { host = "localhost" } suffix := "" if _, ok := req.Header["Authorization"]; ok { suffix += " AUTH" } if l, has := req.Header["Content-Length"]; has { suffix += " Content-Length: " + l[0] } logger.Info("access", fmt.Sprintf("%s REQ RECEIVED \"%s %s%s\"", host, ctx.MethodString(), req.RequestURI, suffix)) return nil }) goweb.MapAfter(func(ctx context.Context) error { req := ctx.HttpRequest() host, _, _ := net.SplitHostPort(req.RemoteAddr) if host == "::1" { host = "localhost" } suffix := "" if _, ok := req.Header["Authorization"]; ok { suffix += " AUTH" } if l, has := req.Header["Content-Length"]; has { suffix += " Content-Length: " + l[0] } logger.Info("access", fmt.Sprintf("RESPONDED TO %s \"%s %s%s\"", host, ctx.MethodString(), req.RequestURI, suffix)) return nil }) goweb.Map("/preauth/{id}", func(ctx context.Context) error { if ctx.HttpRequest().Method == "OPTIONS" { return responder.RespondOK(ctx) } pcon.PreAuthRequest(ctx) return nil }) goweb.Map("/node/{nid}/acl/{type}", func(ctx context.Context) error { if ctx.HttpRequest().Method == "OPTIONS" { return responder.RespondOK(ctx) } acon.AclTypedRequest(ctx) return nil }) goweb.Map("/node/{nid}/acl/", func(ctx context.Context) error { if ctx.HttpRequest().Method == "OPTIONS" { return responder.RespondOK(ctx) } acon.AclRequest(ctx) return nil }) goweb.Map("/node/{nid}/index/{idxType}", func(ctx context.Context) error { if ctx.HttpRequest().Method == "OPTIONS" { return responder.RespondOK(ctx) } icon.IndexTypedRequest(ctx) return nil }) goweb.Map("/", func(ctx context.Context) error { host := util.ApiUrl(ctx) attrs := strings.Split(conf.Conf["mongodb-attribute-indexes"], ",") for k, v := range attrs { attrs[k] = strings.TrimSpace(v) } r := resource{ A: attrs, C: conf.Conf["admin-email"], D: host + "/wiki/", I: "Shock", R: []string{"node"}, T: "Shock", U: host + "/", V: "[% VERSION %]", } return responder.WriteResponseObject(ctx, http.StatusOK, r) }) nodeController := new(ncon.NodeController) goweb.MapController(nodeController) goweb.MapStatic("/wiki", conf.Conf["site-path"]) // Map the favicon //goweb.MapStaticFile("/favicon.ico", "static-files/favicon.ico") // Catch-all handler for everything that we don't understand goweb.Map(func(ctx context.Context) error { return responder.RespondWithError(ctx, http.StatusBadRequest, "Parameters do not match a valid Shock request type.") }) }