diff --git a/goKMS/qkdnManager/server.go b/goKMS/qkdnManager/server.go index 8d496bc54dcbbe5a8d8e6093dd55865cb0bcfa90..1cbf5c9811354778d99fc053cc0f194abbaf0fd8 100644 --- a/goKMS/qkdnManager/server.go +++ b/goKMS/qkdnManager/server.go @@ -3,6 +3,7 @@ package qkdnmanager import ( "encoding/json" "errors" + "fmt" "net/http" "time" @@ -18,12 +19,14 @@ const operationalState = "operationalState" const qkdInterface = "qkdInterface" const interCKMSInterface = "interCKMSInterface" const akmsInterface = "akmsInterface" +const setKeyStore = "setKeyStore" var endpoints = map[string]string{ operationalState: "/operationalState", qkdInterface: "/qkdInterface", interCKMSInterface: "/interCKMSInterface", akmsInterface: "/akmsInterface", + setKeyStore: "/setKeyStore", } type QkdnManagerServer struct { @@ -72,6 +75,7 @@ func (qs *QkdnManagerServer) addHandlersToMux(mux *http.ServeMux) { mux.HandleFunc(APIPrefix+endpoints[qkdInterface], qs.handleHttpQkdInterface) mux.HandleFunc(APIPrefix+endpoints[interCKMSInterface], qs.handleHttpInterCKMSInterface) mux.HandleFunc(APIPrefix+endpoints[akmsInterface], qs.handleHttpAkmsInterface) + mux.HandleFunc(APIPrefix+endpoints[setKeyStore], qs.handleSetKeyStore) } func (qs *QkdnManagerServer) startServer() { @@ -153,7 +157,7 @@ func (qs *QkdnManagerServer) handleHttpInterCKMSInterface(w http.ResponseWriter, } func (qs *QkdnManagerServer) handleHttpAkmsInterface(w http.ResponseWriter, r *http.Request) { - logrus.Debugf("Handler for AkmsInterface got requestfrom: %s", r.RemoteAddr) + logrus.Debugf("Handler for AkmsInterface got request from: %s", r.RemoteAddr) data := &KmsData{ KMS_ID: qs.kms.GetID(), @@ -172,3 +176,29 @@ func (qs *QkdnManagerServer) handleHttpAkmsInterface(w http.ResponseWriter, r *h logrus.Error(err) } } + +func (qs *QkdnManagerServer) handleSetKeyStore(w http.ResponseWriter, r *http.Request) { + logrus.Debugf("Handler for SetKeyStore got request from: %s", r.RemoteAddr) + + err := r.ParseForm() + if err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + keyFillLevel := r.Form.Get("KeyFillLevel") + peerIDs, ok := r.Form["PeerIds"] + if !ok { + http.Error(w, fmt.Sprintf("No peer IDs provided."), http.StatusBadRequest) + return + } + fetch := r.Form.Get("Fetch") + + logrus.Debugf("KeyFillLevel: %s, PeerIDs: %v, Fetch: %s", keyFillLevel, peerIDs, fetch) + + w.WriteHeader(http.StatusOK) + _, err = w.Write([]byte("OK\n")) + if err != nil { + logrus.Error(err) + } +}