You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cloudreve/routers/controllers/admin.go

600 lines
16 KiB

package controllers
import (
"github.com/cloudreve/Cloudreve/v4/pkg/serializer"
"github.com/cloudreve/Cloudreve/v4/service/admin"
"github.com/gin-gonic/gin"
)
// AdminSummary 获取管理站点概况
func AdminSummary(c *gin.Context) {
service := ParametersFromContext[*admin.SummaryService](c, admin.SummaryParamCtx{})
res, err := service.Summary(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
// AdminGetSettings 获取站点设定项
func AdminGetSettings(c *gin.Context) {
service := ParametersFromContext[*admin.GetSettingService](c, admin.GetSettingParamCtx{})
res, err := service.GetSetting(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminSetSettings(c *gin.Context) {
service := ParametersFromContext[*admin.SetSettingService](c, admin.SetSettingParamCtx{})
res, err := service.SetSetting(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
// AdminListGroups 获取用户组列表
func AdminListGroups(c *gin.Context) {
service := ParametersFromContext[*admin.AdminListService](c, admin.AdminListServiceParamsCtx{})
res, err := service.List(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminFetchWopi(c *gin.Context) {
service := ParametersFromContext[*admin.FetchWOPIDiscoveryService](c, admin.FetchWOPIDiscoveryParamCtx{})
res, err := service.Fetch(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
// AdminTestThumbGenerator Tests thumb generator
func AdminTestThumbGenerator(c *gin.Context) {
service := ParametersFromContext[*admin.ThumbGeneratorTestService](c, admin.ThumbGeneratorTestParamCtx{})
res, err := service.Test(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminGetQueueMetrics(c *gin.Context) {
res, err := admin.GetQueueMetrics(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminListPolicies(c *gin.Context) {
service := ParametersFromContext[*admin.AdminListService](c, admin.AdminListServiceParamsCtx{})
res, err := service.Policies(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminGetPolicy(c *gin.Context) {
service := ParametersFromContext[*admin.SingleStoragePolicyService](c, admin.GetStoragePolicyParamCtx{})
res, err := service.Get(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
// AdminSendTestMail 发送测试邮件
func AdminSendTestMail(c *gin.Context) {
service := ParametersFromContext[*admin.TestSMTPService](c, admin.TestSMTPParamCtx{})
err := service.Test(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{})
}
func AdminCreatePolicy(c *gin.Context) {
service := ParametersFromContext[*admin.CreateStoragePolicyService](c, admin.CreateStoragePolicyParamCtx{})
res, err := service.Create(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminUpdatePolicy(c *gin.Context) {
service := ParametersFromContext[*admin.UpdateStoragePolicyService](c, admin.UpdateStoragePolicyParamCtx{})
res, err := service.Update(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminListNodes(c *gin.Context) {
service := ParametersFromContext[*admin.AdminListService](c, admin.AdminListServiceParamsCtx{})
res, err := service.Nodes(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminGetNode(c *gin.Context) {
service := ParametersFromContext[*admin.SingleNodeService](c, admin.SingleNodeParamCtx{})
res, err := service.Get(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminClearEntityUrlCache(c *gin.Context) {
admin.ClearEntityUrlCache(c)
c.JSON(200, serializer.Response{})
}
func AdminCreateStoragePolicyCors(c *gin.Context) {
service := ParametersFromContext[*admin.CreateStoragePolicyCorsService](c, admin.CreateStoragePolicyCorsParamCtx{})
err := service.Create(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{})
}
func AdminOdOAuthURL(c *gin.Context) {
service := ParametersFromContext[*admin.GetOauthRedirectService](c, admin.GetOauthRedirectParamCtx{})
res, err := service.GetOAuth(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminGetPolicyOAuthCallbackURL(c *gin.Context) {
res := admin.GetPolicyOAuthURL(c)
c.JSON(200, serializer.Response{Data: res})
}
func AdminGetPolicyOAuthStatus(c *gin.Context) {
service := ParametersFromContext[*admin.SingleStoragePolicyService](c, admin.GetStoragePolicyParamCtx{})
res, err := service.GetOauthCredentialStatus(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminFinishOauthCallback(c *gin.Context) {
service := ParametersFromContext[*admin.FinishOauthCallbackService](c, admin.FinishOauthCallbackParamCtx{})
err := service.Finish(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{})
}
func AdminGetSharePointDriverRoot(c *gin.Context) {
service := ParametersFromContext[*admin.SingleStoragePolicyService](c, admin.GetStoragePolicyParamCtx{})
res, err := service.GetSharePointDriverRoot(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminDeletePolicy(c *gin.Context) {
service := ParametersFromContext[*admin.SingleStoragePolicyService](c, admin.GetStoragePolicyParamCtx{})
err := service.Delete(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{})
}
func AdminGetGroup(c *gin.Context) {
service := ParametersFromContext[*admin.SingleGroupService](c, admin.SingleGroupParamCtx{})
res, err := service.Get(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminCreateGroup(c *gin.Context) {
service := ParametersFromContext[*admin.UpsertGroupService](c, admin.UpsertGroupParamCtx{})
res, err := service.Create(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminUpdateGroup(c *gin.Context) {
service := ParametersFromContext[*admin.UpsertGroupService](c, admin.UpsertGroupParamCtx{})
res, err := service.Update(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminListUsers(c *gin.Context) {
service := ParametersFromContext[*admin.AdminListService](c, admin.AdminListServiceParamsCtx{})
res, err := service.Users(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminGetUser(c *gin.Context) {
service := ParametersFromContext[*admin.SingleUserService](c, admin.SingleUserParamCtx{})
res, err := service.Get(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminUpdateUser(c *gin.Context) {
service := ParametersFromContext[*admin.UpsertUserService](c, admin.UpsertUserParamCtx{})
res, err := service.Update(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminCreateUser(c *gin.Context) {
service := ParametersFromContext[*admin.UpsertUserService](c, admin.UpsertUserParamCtx{})
res, err := service.Create(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
// func AdminHashIDEncode(c *gin.Context) {
// service := ParametersFromContext[*admin.HashIDService](c, admin.HashIDParamCtx{})
// resp, err := service.Encode(c)
// if err != nil {
// c.JSON(200, serializer.Err(c, err))
// c.Abort()
// return
// }
//
// c.JSON(200, serializer.Response{
// Data: resp,
// })
// }
//
// func AdminHashIDDecode(c *gin.Context) {
// service := ParametersFromContext[*admin.HashIDService](c, admin.HashIDParamCtx{})
// resp, err := service.Decode(c)
// if err != nil {
// c.JSON(200, serializer.Err(c, err))
// c.Abort()
// return
// }
//
// c.JSON(200, serializer.Response{
// Data: resp,
// })
// }
//
// func AdminBsEncode(c *gin.Context) {
// service := ParametersFromContext[*admin.BsEncodeService](c, admin.BsEncodeParamCtx{})
// resp, err := service.Encode(c)
// if err != nil {
// c.JSON(200, serializer.Err(c, err))
// c.Abort()
// return
// }
//
// c.JSON(200, serializer.Response{
// Data: resp,
// })
// }
//
// func AdminBsDecode(c *gin.Context) {
// service := ParametersFromContext[*admin.BsDecodeService](c, admin.BsDecodeParamCtx{})
// resp, err := service.Decode(c)
// if err != nil {
// c.JSON(200, serializer.Err(c, err))
// c.Abort()
// return
// }
//
// c.JSON(200, serializer.Response{
// Data: resp,
// })
// }
//
func AdminDeleteGroup(c *gin.Context) {
service := ParametersFromContext[*admin.SingleGroupService](c, admin.SingleGroupParamCtx{})
err := service.Delete(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{})
}
// AdminTestSlave 测试从机可用性
func AdminTestSlave(c *gin.Context) {
service := ParametersFromContext[*admin.TestNodeService](c, admin.TestNodeParamCtx{})
err := service.Test(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{})
}
// AdminTestDownloader 测试下载器连接
func AdminTestDownloader(c *gin.Context) {
service := ParametersFromContext[*admin.TestNodeDownloaderService](c, admin.TestNodeDownloaderParamCtx{})
res, err := service.Test(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminCreateNode(c *gin.Context) {
service := ParametersFromContext[*admin.UpsertNodeService](c, admin.UpsertNodeParamCtx{})
res, err := service.Create(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminUpdateNode(c *gin.Context) {
service := ParametersFromContext[*admin.UpsertNodeService](c, admin.UpsertNodeParamCtx{})
res, err := service.Update(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminDeleteNode(c *gin.Context) {
service := ParametersFromContext[*admin.SingleNodeService](c, admin.SingleNodeParamCtx{})
err := service.Delete(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{})
}
// AdminDeleteUser 批量删除用户
func AdminDeleteUser(c *gin.Context) {
service := ParametersFromContext[*admin.BatchUserService](c, admin.BatchUserParamCtx{})
err := service.Delete(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{})
}
func AdminListFiles(c *gin.Context) {
service := ParametersFromContext[*admin.AdminListService](c, admin.AdminListServiceParamsCtx{})
res, err := service.Files(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminGetFile(c *gin.Context) {
service := ParametersFromContext[*admin.SingleFileService](c, admin.SingleFileParamCtx{})
res, err := service.Get(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminUpdateFile(c *gin.Context) {
service := ParametersFromContext[*admin.UpsertFileService](c, admin.UpsertFileParamCtx{})
res, err := service.Update(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminGetFileUrl(c *gin.Context) {
service := ParametersFromContext[*admin.SingleFileService](c, admin.SingleFileParamCtx{})
res, err := service.Url(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminBatchDeleteFile(c *gin.Context) {
service := ParametersFromContext[*admin.BatchFileService](c, admin.BatchFileParamCtx{})
err := service.Delete(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{})
}
func AdminListEntities(c *gin.Context) {
service := ParametersFromContext[*admin.AdminListService](c, admin.AdminListServiceParamsCtx{})
res, err := service.Entities(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminGetEntity(c *gin.Context) {
service := ParametersFromContext[*admin.SingleEntityService](c, admin.SingleEntityParamCtx{})
res, err := service.Get(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminGetEntityUrl(c *gin.Context) {
service := ParametersFromContext[*admin.SingleEntityService](c, admin.SingleEntityParamCtx{})
res, err := service.Url(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminBatchDeleteEntity(c *gin.Context) {
service := ParametersFromContext[*admin.BatchEntityService](c, admin.BatchEntityParamCtx{})
err := service.Delete(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
}
func AdminCleanupTask(c *gin.Context) {
service := ParametersFromContext[*admin.CleanupTaskService](c, admin.CleanupTaskParameterCtx{})
err := service.CleanupTask(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{})
}
func AdminListTasks(c *gin.Context) {
service := ParametersFromContext[*admin.AdminListService](c, admin.AdminListServiceParamsCtx{})
res, err := service.Tasks(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminGetTask(c *gin.Context) {
service := ParametersFromContext[*admin.SingleTaskService](c, admin.SingleTaskParamCtx{})
res, err := service.Get(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminBatchDeleteTask(c *gin.Context) {
service := ParametersFromContext[*admin.BatchTaskService](c, admin.BatchTaskParamCtx{})
err := service.Delete(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{})
}
func AdminListShares(c *gin.Context) {
service := ParametersFromContext[*admin.AdminListService](c, admin.AdminListServiceParamsCtx{})
res, err := service.Shares(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminGetShare(c *gin.Context) {
service := ParametersFromContext[*admin.SingleShareService](c, admin.SingleShareParamCtx{})
res, err := service.Get(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}
func AdminBatchDeleteShare(c *gin.Context) {
service := ParametersFromContext[*admin.BatchShareService](c, admin.BatchShareParamCtx{})
err := service.Delete(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
}
func AdminCalibrateStorage(c *gin.Context) {
service := ParametersFromContext[*admin.SingleUserService](c, admin.SingleUserParamCtx{})
res, err := service.CalibrateStorage(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
}
c.JSON(200, serializer.Response{Data: res})
}