123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package main
- import (
- "encoding/json"
- "net/http"
- prout "imuslab.com/arozos/mod/prouter"
- )
- func backup_init() {
- //Register HybridBackup storage restore endpoints
- router := prout.NewModuleRouter(prout.RouterOption{
- AdminOnly: false,
- UserHandler: userHandler,
- DeniedHandler: func(w http.ResponseWriter, r *http.Request) {
- sendErrorResponse(w, "Permission Denied")
- },
- })
- router.HandleFunc("/system/backup/listRestorable", backup_listRestorable)
- }
- func backup_listRestorable(w http.ResponseWriter, r *http.Request) {
- //Get user accessiable storage pools
- userinfo, err := userHandler.GetUserInfoFromRequest(w, r)
- if err != nil {
- sendErrorResponse(w, "User not logged in")
- return
- }
- //Get Vroot ID from request
- vroot, err := mv(r, "vroot", true)
- if err != nil {
- sendErrorResponse(w, "Invalid vroot given")
- return
- }
- //Get fsh from the id
- fsh, err := GetFsHandlerByUUID(vroot)
- if err != nil {
- sendErrorResponse(w, err.Error())
- return
- }
- //Get the user's storage pool and list restorable by the user's storage pool access
- restorableReport, err := userinfo.HomeDirectories.HyperBackupManager.ListRestorable(fsh.UUID)
- if err != nil {
- sendErrorResponse(w, err.Error())
- return
- }
- js, _ := json.Marshal(restorableReport)
- sendJSONResponse(w, string(js))
- }
|