mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-05 16:57:51 +08:00
peer update functionality
This commit is contained in:
@@ -21,6 +21,7 @@ import (
|
||||
func groupHandlers(r *mux.Router) {
|
||||
r.HandleFunc("/api/groups", securityCheck(http.HandlerFunc(getGroups))).Methods("GET")
|
||||
r.HandleFunc("/api/groups", securityCheck(http.HandlerFunc(createGroup))).Methods("POST")
|
||||
r.HandleFunc("/api/groups/{groupname}/keyupdate", securityCheck(http.HandlerFunc(keyUpdate))).Methods("POST")
|
||||
r.HandleFunc("/api/groups/{groupname}", securityCheck(http.HandlerFunc(getGroup))).Methods("GET")
|
||||
r.HandleFunc("/api/groups/{groupname}/numnodes", securityCheck(http.HandlerFunc(getGroupNodeNumber))).Methods("GET")
|
||||
r.HandleFunc("/api/groups/{groupname}", securityCheck(http.HandlerFunc(updateGroup))).Methods("PUT")
|
||||
@@ -193,6 +194,59 @@ func getGroup(w http.ResponseWriter, r *http.Request) {
|
||||
json.NewEncoder(w).Encode(group)
|
||||
}
|
||||
|
||||
func keyUpdate(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
|
||||
var params = mux.Vars(r)
|
||||
|
||||
var group models.Group
|
||||
|
||||
group, err := functions.GetParentGroup(params["groupname"])
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
group.KeyUpdateTimeStamp = time.Now().Unix()
|
||||
|
||||
collection := mongoconn.Client.Database("netmaker").Collection("groups")
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||
|
||||
filter := bson.M{"nameid": params["groupname"]}
|
||||
|
||||
// prepare update model.
|
||||
update := bson.D{
|
||||
{"$set", bson.D{
|
||||
{"addressrange", group.AddressRange},
|
||||
{"displayname", group.DisplayName},
|
||||
{"defaultlistenport", group.DefaultListenPort},
|
||||
{"defaultpostup", group.DefaultPostUp},
|
||||
{"defaultpreup", group.DefaultPreUp},
|
||||
{"defaultkeepalive", group.DefaultKeepalive},
|
||||
{"keyupdatetimestamp", group.KeyUpdateTimeStamp},
|
||||
{"defaultsaveconfig", group.DefaultSaveConfig},
|
||||
{"defaultinterface", group.DefaultInterface},
|
||||
{"nodeslastmodified", group.NodesLastModified},
|
||||
{"grouplastmodified", group.GroupLastModified},
|
||||
{"allowmanualsignup", group.AllowManualSignUp},
|
||||
{"defaultcheckininterval", group.DefaultCheckInInterval},
|
||||
}},
|
||||
}
|
||||
|
||||
errN := collection.FindOneAndUpdate(ctx, filter, update).Decode(&group)
|
||||
|
||||
defer cancel()
|
||||
|
||||
if errN != nil {
|
||||
mongoconn.GetError(errN, w)
|
||||
fmt.Println(errN)
|
||||
return
|
||||
}
|
||||
|
||||
json.NewEncoder(w).Encode(group)
|
||||
}
|
||||
|
||||
//Update a group
|
||||
func updateGroup(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
@@ -405,6 +459,7 @@ func createGroup(w http.ResponseWriter, r *http.Request) {
|
||||
group.SetDefaults()
|
||||
group.SetNodesLastModified()
|
||||
group.SetGroupLastModified()
|
||||
group.KeyUpdateTimeStamp = time.Now().Unix()
|
||||
|
||||
|
||||
collection := mongoconn.Client.Database("netmaker").Collection("groups")
|
||||
|
Reference in New Issue
Block a user