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)) }