/* 可用 curl -i -u 1000:1234 http://192.168.1.140:8080/events */ func GetNwayEvents(w rest.ResponseWriter, r *rest.Request) { //authHeader := r.Header.Get("Authorization") userId := r.Env["REMOTE_USER"] fmt.Println(userId) //var strsql string //strsql := "'" + userId + "'" fmt.Println("before check") rows, err := DB.Query("SELECT a.id, a.aleg_number, a.bleg_number, a.router_number::text, a.event_id, a.event_time::text FROM call_in_out_event a ,call_extension b where a.is_read=False and a.extension_id =b.id and b.extension_number=$1", userId) if err != nil { //log.Fatal("failed to scan", err) fmt.Println("failed to NwayEvents") fmt.Println(err) rest.Error(w, err.Error(), http.StatusInternalServerError) return } fmt.Println("after check") NwayEvents := make([]NwayEvent, 0) defer rows.Close() var id int64 //var my sql.NullString var alegNumber string var blegNumber string var routeNumber sql.NullString var eventId int var eventTime string for rows.Next() { fmt.Println("Sacn to NwayEvents") err := rows.Scan(&id, &alegNumber, &blegNumber, &routeNumber, &eventId, &eventTime) if err != nil { fmt.Println(err.Error()) rest.Error(w, err.Error(), http.StatusInternalServerError) return } stmt, err := DB.Prepare("update call_in_out_event set is_read=True where id=$1") if err != nil { fmt.Println(err.Error()) rest.Error(w, err.Error(), http.StatusInternalServerError) return } _, err = stmt.Exec(id) if err != nil { fmt.Println(err.Error()) rest.Error(w, err.Error(), http.StatusInternalServerError) return } var ne NwayEvent ne.AlegNumber = alegNumber ne.BlegNumber = blegNumber ne.EventTime = eventTime ne.EventId = eventId ne.RouteNumber = routeNumber.String NwayEvents = append(NwayEvents, ne) //fmt.Println(result) } w.WriteJson( NwayEvents, ) }
func (u Util) SimpleJsonValidationReason(w rest.ResponseWriter, code int, err []error) { errorMessage := decodeValidatorErrors(err) w.WriteHeader(code) w.WriteJson(types.Json{ "reason": errorMessage, }) }
func handleCacheGet(w rest.ResponseWriter, r *rest.Request) { res := CacheResMulti{} lockStore.Lock() lockStats.Lock() for key, item := range store { if curCnt, ok := storeStats[key]; ok { curCnt++ if curCnt >= 100 { delete(store, key) delete(storeStats, key) item.DeleteLocal(key) } else { storeStats[key] = curCnt item.IncLocal(key, false) } } else { storeStats[key] = 1 } res.Items = append(res.Items, *item) } lockStore.Unlock() lockStats.Unlock() w.WriteJson(res) }
// PostCluster updates or inserts a new cluster definition func PostCluster(w rest.ResponseWriter, r *rest.Request) { dbConn, err := util.GetConnection(CLUSTERADMIN_DB) if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), 400) return } defer dbConn.Close() //logit.Info.Println("PostCluster: in PostCluster") cluster := types.Cluster{} err = r.DecodeJsonPayload(&cluster) if err != nil { logit.Error.Println("error in decode" + err.Error()) rest.Error(w, err.Error(), http.StatusInternalServerError) return } err = secimpl.Authorize(dbConn, cluster.Token, "perm-cluster") if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), http.StatusUnauthorized) return } if cluster.Name == "" { logit.Error.Println("PostCluster: error in Name") rest.Error(w, "cluster name required", http.StatusBadRequest) return } //logit.Info.Println("PostCluster: have ID=" + cluster.ID + " Name=" + cluster.Name + " type=" + cluster.ClusterType + " status=" + cluster.Status) dbcluster := types.Cluster{} dbcluster.ID = cluster.ID dbcluster.ProjectID = cluster.ProjectID dbcluster.Name = cluster.Name dbcluster.ClusterType = cluster.ClusterType dbcluster.Status = cluster.Status dbcluster.Containers = cluster.Containers if cluster.ID == "" { strid, err := admindb.InsertCluster(dbConn, dbcluster) newid := strconv.Itoa(strid) if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), http.StatusBadRequest) return } cluster.ID = newid } else { //logit.Info.Println("PostCluster: about to call UpdateCluster") err2 := admindb.UpdateCluster(dbConn, dbcluster) if err2 != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), http.StatusBadRequest) return } } w.WriteJson(&cluster) }
func (api *Api) GetUser(w rest.ResponseWriter, r *rest.Request) { id := r.PathParam("id") user := &User{} rows, err := api.DB.Query("SELECT * FROM " + TABLENAME + " WHERE ID = " + id) if err != nil { log.Fatal(err) } if rows.Next() { var id int var name string if err := rows.Scan(&id, &name); err != nil { log.Fatal(err) } user = &User{Id: id, Name: name} } else { rest.NotFound(w, r) return } if err := rows.Err(); err != nil { log.Fatal(err) } w.WriteJson(&user) }
func appInfoHandler(w rest.ResponseWriter, r *rest.Request) { var marathonApps marathon.MarathonAppsGlobalInfoResponse fasthttp.JsonReqAndResHandler(goCore.MarathonAppsUrl, nil, &marathonApps, "GET") appsCnt := len(marathonApps.Apps) // should not code like this: appsGlobalInfos := [appsCnt]entity.AppsGlobalInfo{} appsGlobalInfos := make([]dto.AppsGlobalInfoResponse, appsCnt) for i, v := range marathonApps.Apps { var perApp dto.AppsGlobalInfoResponse if strings.LastIndex(v.Id, "/") == -1 { perApp.Id = v.Id } else { perApp.Id = v.Id[strings.LastIndex(v.Id, "/")+1:] } perApp.Cpus = strconv.FormatFloat(v.Cpus, 'f', 1, 64) perApp.CurrentInstances = strconv.Itoa(v.TasksRunning) fmt.Println(v) if strings.LastIndex(v.Id, "/") <= 0 { // exclude like /zk or zk perApp.Group = "No Groups" } else { perApp.Group = v.Id[0:strings.LastIndex(v.Id, "/")] } perApp.Instances = strconv.Itoa(v.Instances) perApp.Mem = strconv.FormatFloat(v.Mem, 'f', 1, 64) if v.TasksHealthy == 0 && v.TasksUnhealthy == 0 { // when no and healthy check perApp.Healthy = "100" } else { perApp.Healthy = strconv.FormatFloat(float64(v.TasksHealthy)/float64(v.TasksHealthy+v.TasksUnhealthy), 'f', 1, 64) } perApp.FormatStatus(v.TasksStaged) appsGlobalInfos[i] = perApp } w.WriteJson(appsGlobalInfos) }
// StartCluster starts all nodes in a cluster func StartCluster(w rest.ResponseWriter, r *rest.Request) { dbConn, err := util.GetConnection(CLUSTERADMIN_DB) if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), 400) return } defer dbConn.Close() err = secimpl.Authorize(dbConn, r.PathParam("Token"), "perm-cluster") if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), http.StatusUnauthorized) return } ID := r.PathParam("ID") if ID == "" { logit.Error.Println("StartCluster: error cluster ID required") rest.Error(w, "cluster ID required", http.StatusBadRequest) return } cluster, err := admindb.GetCluster(dbConn, ID) if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), http.StatusBadRequest) } //start docker containers containers, err := admindb.GetAllContainersForCluster(dbConn, cluster.ID) if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), http.StatusBadRequest) } i := 0 i = 0 var response swarmapi.DockerStartResponse for i = range containers { req := &swarmapi.DockerStartRequest{} req.ContainerName = containers[i].Name logit.Info.Println("will attempt to start container " + req.ContainerName) response, err = swarmapi.DockerStart(req) if err != nil { logit.Error.Println("StartCluster: error when trying to start container" + err.Error()) } logit.Info.Println("StartCluster: started " + response.Output) i++ } status := types.SimpleStatus{} status.Status = "OK" w.WriteHeader(http.StatusOK) w.WriteJson(&status) }
func Translate(w rest.ResponseWriter, r *rest.Request) { request := &RequestObject{} r.DecodeJsonPayload(request) c := translator.Translate(request.Text, request.Lang) w.WriteJson(c) }
func HandleImageList(w rest.ResponseWriter, r *rest.Request) { lock.Lock() cmd := exec.Command("zfs", "list", "-H", "-t", "volume") stdout, err := cmd.Output() lock.Unlock() if err != nil { return } lines := strings.Split(string(stdout), "\n") imas := make([]Images, 0) for _, line := range lines { if strings.Contains(line, "ima-") { ima := Images{} n := strings.Split(line, "\t")[0] n = strings.Split(n, "/")[1] ima.Imageid = n ima.Os = getImaOs(ima.Imageid) imas = append(imas, ima) } } w.WriteJson(imas) }
func Register(w rest.ResponseWriter, r *rest.Request) { var form struct { Id string `json:"username"` Pass string `json:"password"` } r.DecodeJsonPayload(&form) if form.Pass == "" { rest.Error(w, "Invalid input", 400) return } res, err := userRepository.GetUserById(form.Id) if res != "" { rest.Error(w, "[username]exists", 400) return } user := &domain.User{Id: form.Id, Pass: domain.HashPassword(form.Pass)} bytes, _ := json.Marshal(user) userRepository.SaveUserById(form.Id, string(bytes)) res, err = userRepository.GetUserById(form.Id) log.Println(res, err) w.WriteJson(map[string]string{"Status": "OK"}) }
func KeysList(w rest.ResponseWriter, r *rest.Request) { user := r.Env["USER"].(*domain.User) user.Pass = "" w.WriteJson(user) }
func DockerStop(w rest.ResponseWriter, r *rest.Request) { logit.Info.Println("DockerStop called") req := DockerStopRequest{} err := r.DecodeJsonPayload(&req) if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), http.StatusInternalServerError) return } docker, err3 := dockerapi.NewClient("unix://var/run/docker.sock") if err3 != nil { logit.Error.Println("can't get connection to docker socket") rest.Error(w, err3.Error(), http.StatusInternalServerError) return } err3 = docker.StopContainer(req.ContainerName, 10) if err3 != nil { logit.Error.Println("can't stop container " + req.ContainerName) rest.Error(w, err3.Error(), http.StatusInternalServerError) return } var response DockerStopResponse response.Output = "success" w.WriteJson(&response) }
func getApiVersion(w rest.ResponseWriter, r *rest.Request) { w.WriteJson( map[string]string{ "version": "1", }, ) }
func GetAllCountries(w rest.ResponseWriter, r *rest.Request) { w.WriteJson( []Country{ Country{ Code: "FR", Name: "France", }, Country{ Code: "US", Name: "United States", }, }, ) w.WriteJson( []NwayEvent{ NwayEvent{ //id: 1, AlegNumber: "1001", BlegNumber: "18621575408", RouteNumber: "7362372", //event_id: 1, EventTime: "2014-11-10 12:01:09", }, NwayEvent{ //id: 1, AlegNumber: "1001", BlegNumber: "18621575408", RouteNumber: "7362372", //event_id: 1, EventTime: "2014-11-10 12:01:33", }, }, ) }
// Require a write key. // Create a event. func HandleCreateEvent(w rest.ResponseWriter, req *rest.Request) { if err := RequireWriteKey(w, req); err != nil { rest.Error(w, err.Error(), err.(StatusError).Code) return } project := currentProject(req) event := req.PathParam("event_name") var data CreateSingleEventParams var err error if err = eventData(req, &data); err != nil { rest.Error(w, err.Error(), http.StatusBadRequest) return } events := make(map[string][]interface{}) events[event] = []interface{}{data} result, err := createEvent(project, event, data) if err != nil { rest.Error(w, err.Error(), http.StatusBadRequest) } else { w.WriteJson(result) } }
func AuthenticationAPI(w rest.ResponseWriter, req *rest.Request) { fmt.Println(":: AuthenticationAPI ::") ip, _ := net.LookupIP(req.PathParam("host")) // rest.Error(w, err.Error(), http.StatusInternalServerError) w.WriteJson(&ip) w.WriteJson(map[string]interface{}{"Body": ip}) }
// RefreshHandler can be used to refresh a token. The token still needs to be valid on refresh. // Shall be put under an endpoint that is using the JWTMiddleware. // Reply will be of the form {"token": "TOKEN"}. func (mw *JWTMiddleware) RefreshHandler(writer rest.ResponseWriter, request *rest.Request) { token, err := mw.parseToken(request) // Token should be valid anyway as the RefreshHandler is authed if err != nil { mw.unauthorized(writer) return } origIat := int64(token.Claims["orig_iat"].(float64)) if origIat < time.Now().Add(-mw.MaxRefresh).Unix() { mw.unauthorized(writer) return } newToken := jwt.New(jwt.GetSigningMethod(mw.SigningAlgorithm)) for key := range token.Claims { newToken.Claims[key] = token.Claims[key] } newToken.Claims["id"] = token.Claims["id"] newToken.Claims["exp"] = time.Now().Add(mw.Timeout).Unix() newToken.Claims["orig_iat"] = origIat tokenString, err := newToken.SignedString(mw.Key) if err != nil { mw.unauthorized(writer) return } writer.WriteJson(resultToken{Token: tokenString}) }
// CreateCard creates a new card entry. func CreateCard(w rest.ResponseWriter, r *rest.Request) { var err error c, err := card.New() if err != nil { log.Printf("CreateCard: Failed to create card: %s", err) rest.Error(w, "Failed to create card", 500) return } decoder := json.NewDecoder(r.Body) err = decoder.Decode(&c) if err != nil { log.Printf("CreateCard: Failed to decode request body: %s", err) rest.Error(w, "Failed to decode request body", 500) return } if err := card.GetHandler().SaveCard(*c); err != nil { log.Printf("CreateCard: Failed to save card: %s", err) rest.Error(w, "Failed to create card", 500) return } log.Printf("CreateCard: Card save was successful (%s)", c.Cid) w.WriteJson(c) }
func (routes *Routes) sendRegistrationResponse(w rest.ResponseWriter, r *rest.Request, sir *store.ServiceInstance) { routes.logger.WithFields(log.Fields{ "namespace": r.Env["REMOTE_USER"], }).Infof("Instance %s registered", sir) ttl := uint32(sir.TTL / time.Second) linksURL := r.BaseUrl() if middleware.IsUsingSecureConnection(r) { // request came in over a secure connection, continue using it linksURL.Scheme = "https" } links := BuildLinks(linksURL.String(), sir.ID) instance := &ServiceInstance{ ID: sir.ID, TTL: ttl, Links: links, } w.Header().Set("Location", links.Self) w.WriteHeader(http.StatusCreated) if err := w.WriteJson(instance); err != nil { routes.logger.WithFields(log.Fields{ "namespace": r.Env["REMOTE_USER"], "error": err, }).Warnf("Failed to write registration response for instance %s", sir) i18n.Error(r, w, http.StatusInternalServerError, i18n.ErrorEncoding) } }
// GetChallenge Return with the next card to recal. func GetChallenge(w rest.ResponseWriter, r *rest.Request) { var challenge *learning.Challenge ls := r.PathParam("learning_service") service, err := learning.GetService(ls) if err != nil { log.Println("GetChallenge: Failed to load learning service", err) rest.Error(w, "Failed to get challenge", 404) } uid, err := uuid.NewV4() if err != nil { log.Printf("GetChallenge: Failed to generate new UUID: %s", err) rest.Error(w, "Failed to get challenge", 404) } challenge, err = service.WhatToLearn(uid.String()) if err != nil { log.Println("GetChallenge: Failed to load next challange", err) rest.Error(w, "Failed to get challenge", 404) } log.Printf("GetChallenge: challenge: +%v", challenge) w.WriteJson(challenge) }
// GetCluster returns a given cluster definition func GetCluster(w rest.ResponseWriter, r *rest.Request) { dbConn, err := util.GetConnection(CLUSTERADMIN_DB) if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), 400) return } defer dbConn.Close() err = secimpl.Authorize(dbConn, r.PathParam("Token"), "perm-read") if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), http.StatusUnauthorized) return } ID := r.PathParam("ID") results, err := admindb.GetCluster(dbConn, ID) if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), http.StatusBadRequest) } cluster := types.Cluster{} cluster.ID = results.ID cluster.ProjectID = results.ProjectID cluster.Name = results.Name cluster.ClusterType = results.ClusterType cluster.Status = results.Status cluster.CreateDate = results.CreateDate cluster.Containers = results.Containers //logit.Info.Println("GetCluser:db call results=" + results.ID) w.WriteJson(&cluster) }
func loginUser(w rest.ResponseWriter, r *rest.Request, db neutrino.DbService) { var u bson.M if err := r.DecodeJsonPayload(&u); err != nil { RestError(w, err) return } existingUser, err := db.FindId(u["email"].(string), nil) if err != nil { RestError(w, err) return } err = bcrypt.CompareHashAndPassword(existingUser["password"].([]byte), []byte(u["password"].(string))) if err != nil { RestError(w, err) return } token := jwt.New(jwt.GetSigningMethod("HS256")) token.Claims["user"] = u["email"].(string) token.Claims["expiration"] = time.Now().Add(time.Minute + 60).Unix() tokenStr, err := token.SignedString([]byte("")) if err != nil { RestError(w, err) return } w.WriteJson(map[string]string{"token": tokenStr}) }
func (api *Api) PostUser(w rest.ResponseWriter, r *rest.Request) { user := User{} err := r.DecodeJsonPayload(&user) if err != nil { rest.Error(w, err.Error(), http.StatusInternalServerError) return } lastInsertId, err := api.DB.Query("INSERT INTO " + TABLENAME + "(" + COLNAME + ") OUTPUT Inserted.ID VALUES('" + user.Name + "')") if err != nil { fmt.Println(err) return } if lastInsertId.Next() { var id int if err := lastInsertId.Scan(&id); err != nil { log.Fatal(err) } user.Id = id } else { rest.NotFound(w, r) return } if err := lastInsertId.Err(); err != nil { log.Fatal(err) } w.WriteJson(&user) }
func PostTransportTraffic(w rest.ResponseWriter, r *rest.Request) { form := shared.TransportTraffic{} err := r.DecodeJsonPayload(&form) if err != nil { apiutils.WriteRestError(w, apierrors.NewInternalError(err)) return } transportTrafficMu.Lock() defer transportTrafficMu.Unlock() transportTraffic = form if lg.V(10) { if len(transportTrafficLog) == 6 { lg.Infof("transport traffic: %.0fkb/s %.0fkb/s %.0fkb/s %.0fkb/s %.0fkb/s %.0fkb/s", (transportTrafficLog[0].Throughput)/1024, (transportTrafficLog[1].Throughput)/1024, (transportTrafficLog[2].Throughput)/1024, (transportTrafficLog[3].Throughput)/1024, (transportTrafficLog[4].Throughput)/1024, (transportTrafficLog[5].Throughput)/1024, ) transportTrafficLog = make([]shared.TransportTraffic, 0) } if transportTraffic.Throughput > 1024 { transportTrafficLog = append(transportTrafficLog, form) } } response := true w.WriteJson(response) }
func Post(w rest.ResponseWriter, r *rest.Request) { host := Host{} err := r.DecodeJsonPayload(&host) if err != nil { rest.Error(w, err.Error(), http.StatusInternalServerError) return } if host.Id == "" { rest.Error(w, "id required", 400) return } if host.Address == "" { rest.Error(w, "address required", 400) return } ra, err := net.ResolveIPAddr("ip4:icmp", host.Address) if err != nil { rest.Error(w, err.Error(), 400) return } lock.Lock() q := make(chan bool, 1) // chan for stop ping store[host.Id] = &HostStore{ host, time.Now(), 0.0, 0.0, 0.0, 0.0, 0, ring.New(DefCircleLen), q} go ping(host.Id, ra, time.Second*DefRTT, q, &lock, store) lock.Unlock() w.WriteJson(&host) }
func StopPgpool(w rest.ResponseWriter, r *rest.Request) { logit.Info.Println("StopPgpool called") response := StopPgpoolResponse{} req := StopPgpoolRequest{} err := r.DecodeJsonPayload(&req) if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), http.StatusInternalServerError) return } var cmd *exec.Cmd cmd = exec.Command("stop-pgpool.sh", req.Path) var out bytes.Buffer var stderr bytes.Buffer cmd.Stdout = &out cmd.Stderr = &stderr err = cmd.Run() if err != nil { logit.Error.Println(err.Error()) rest.Error(w, err.Error(), 400) return } response.Output = out.String() response.Status = "OK" w.WriteJson(&response) }
func (u Util) FailedToAuthenticate(w rest.ResponseWriter) { w.WriteHeader(401) w.WriteJson(types.Json{ "response": "Failed to authenticate user request", "reason": "Missing, illegal or expired token", }) }
// GetQueues ... func GetQueues(w rest.ResponseWriter, r *rest.Request) { accountID, applicationName, _, err := queueParams(r) if err != nil { rest.Error(w, err.Error(), http.StatusInternalServerError) return } b := GetBase(r) lp := parseListQuery(r) var queues []*models.Queue lr := &models.ListResult{ List: &queues, } if err := b.GetQueues(accountID, applicationName, lp, lr); err != nil { rest.Error(w, err.Error(), http.StatusInternalServerError) return } if lr.Count == 0 { rest.NotFound(w, r) return } rt := make([]*Queue, len(queues)) for idx, queue := range queues { rt[idx] = NewQueueFromModel(queue) } w.WriteJson(models.ListResult{ List: rt, HasMore: lr.HasMore, Total: lr.Total, Count: lr.Count, Page: lr.Page, Pages: lr.Pages, }) }
// POST /releases.json func ReleasesPOST(w rest.ResponseWriter, r *rest.Request) { // Parse params from JSON val := new(struct { Method string `json:"method"` Params *simplejson.Json `json:"params"` }) decoder := json.NewDecoder(r.Body) err := decoder.Decode(&val) if err != nil { log.Println(err) } // Extract filters to apply to releases device, _ := val.Params.Get("device").String() channels, _ := val.Params.Get("channels").StringArray() // Prep JSON data data := map[string]interface{}{ "id": nil, "result": database.ReleasesListJSON(device, channels), "error": nil, } js, _ := json.Marshal(data) w.Header().Set("Content-Type", "application/json") w.WriteJson(js) }
// GetAttempts ... func GetAttempts(w rest.ResponseWriter, r *rest.Request) { accountID, applicationName, taskName, err := taskParams(r) if err != nil { rest.Error(w, err.Error(), http.StatusInternalServerError) return } b := GetBase(r) lp := parseListQuery(r) var attempts []*models.Attempt lr := &models.ListResult{ List: &attempts, } if err := b.GetAttempts(accountID, applicationName, taskName, lp, lr); err != nil { rest.Error(w, err.Error(), http.StatusInternalServerError) return } if lr.Count == 0 { rest.NotFound(w, r) return } rt := make([]*Attempt, len(attempts)) for idx, attempt := range attempts { rt[idx] = NewAttemptFromModel(attempt) } w.WriteJson(models.ListResult{ List: rt, HasMore: lr.HasMore, Total: lr.Total, Count: lr.Count, Page: lr.Page, Pages: lr.Pages, }) }