Merge pull request #66 from cloudflare/kyle/export

Add export endpoint, permitting backing up the vault.
This commit is contained in:
Nick Sullivan
2015-07-10 14:13:33 -07:00
2 changed files with 30 additions and 0 deletions

View File

@@ -85,6 +85,11 @@ type ModifyRequest struct {
Command string
}
type ExportRequest struct {
Name string
Password string
}
// These structures map the JSON responses that will be sent from the API
type ResponseData struct {
@@ -421,3 +426,27 @@ func Owners(jsonIn []byte) ([]byte, error) {
return json.Marshal(OwnersData{Status: "ok", Owners: names})
}
// Export returns a backed up vault.
func Export(jsonIn []byte) ([]byte, error) {
var req ExportRequest
err := json.Unmarshal(jsonIn, &req)
if err != nil {
log.Println("Error unmarshaling input:", err)
return jsonStatusError(err)
}
err = validateUser(req.Name, req.Password, true)
if err != nil {
log.Println("Unauthorized attempt to export disk records")
return jsonStatusError(err)
}
out, err := json.Marshal(records)
if err != nil {
log.Println("Error exporting vault:", err)
return jsonStatusError(err)
}
return jsonResponse(out)
}

View File

@@ -35,6 +35,7 @@ var functions = map[string]func([]byte) ([]byte, error){
"/decrypt": core.Decrypt,
"/owners": core.Owners,
"/modify": core.Modify,
"/export": core.Export,
}
type userRequest struct {