Files
leonpan/routers/controllers/admin.go

600 lines
16 KiB
Go
Raw Normal View History

2020-02-22 16:22:04 +08:00
package controllers
import (
"github.com/cloudreve/Cloudreve/v4/pkg/serializer"
"github.com/cloudreve/Cloudreve/v4/service/admin"
"github.com/gin-gonic/gin"
2020-02-22 16:22:04 +08:00
)
// 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
2020-02-22 16:22:04 +08:00
}
c.JSON(200, serializer.Response{Data: res})
2020-02-22 16:22:04 +08:00
}
2020-02-23 10:19:13 +08:00
// 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})
2020-02-23 10:19:13 +08:00
}
// 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
2020-02-23 10:19:13 +08:00
}
c.JSON(200, serializer.Response{Data: res})
2020-02-23 10:19:13 +08:00
}
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})
}
2020-02-23 15:33:53 +08:00
func AdminGetQueueMetrics(c *gin.Context) {
res, err := admin.GetQueueMetrics(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
return
2020-02-23 15:33:53 +08:00
}
c.JSON(200, serializer.Response{Data: res})
}
2020-02-23 15:33:53 +08:00
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})
2020-02-23 15:33:53 +08:00
}
2020-02-23 18:40:14 +08:00
// 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
2020-02-23 18:40:14 +08:00
}
c.JSON(200, serializer.Response{})
2020-02-23 18:40:14 +08:00
}
2020-02-24 15:52:13 +08:00
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})
}
Feat: aria2 download and transfer in slave node (#1040) * Feat: retrieve nodes from data table * Feat: master node ping slave node in REST API * Feat: master send scheduled ping request * Feat: inactive nodes recover loop * Modify: remove database operations from aria2 RPC caller implementation * Feat: init aria2 client in master node * Feat: Round Robin load balancer * Feat: create and monitor aria2 task in master node * Feat: salve receive and handle heartbeat * Fix: Node ID will be 0 in download record generated in older version * Feat: sign request headers with all `X-` prefix * Feat: API call to slave node will carry meta data in headers * Feat: call slave aria2 rpc method from master * Feat: get slave aria2 task status Feat: encode slave response data using gob * Feat: aria2 callback to master node / cancel or select task to slave node * Fix: use dummy aria2 client when caller initialize failed in master node * Feat: slave aria2 status event callback / salve RPC auth * Feat: prototype for slave driven filesystem * Feat: retry for init aria2 client in master node * Feat: init request client with global options * Feat: slave receive async task from master * Fix: competition write in request header * Refactor: dependency initialize order * Feat: generic message queue implementation * Feat: message queue implementation * Feat: master waiting slave transfer result * Feat: slave transfer file in stateless policy * Feat: slave transfer file in slave policy * Feat: slave transfer file in local policy * Feat: slave transfer file in OneDrive policy * Fix: failed to initialize update checker http client * Feat: list slave nodes for dashboard * Feat: test aria2 rpc connection in slave * Feat: add and save node * Feat: add and delete node in node pool * Fix: temp file cannot be removed when aria2 task fails * Fix: delete node in admin panel * Feat: edit node and get node info * Modify: delete unused settings
2021-10-31 09:41:56 +08:00
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
2020-02-26 15:11:06 +08:00
}
c.JSON(200, serializer.Response{Data: res})
2020-02-26 15:11:06 +08:00
}
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
2020-02-26 15:11:06 +08:00
}
c.JSON(200, serializer.Response{Data: res})
2020-02-26 15:11:06 +08:00
}
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
2020-02-26 15:11:06 +08:00
}
c.JSON(200, serializer.Response{})
2020-02-26 15:11:06 +08:00
}
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
2020-02-27 11:17:59 +08:00
}
c.JSON(200, serializer.Response{Data: res})
2020-02-27 11:17:59 +08:00
}
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
2020-02-26 15:11:06 +08:00
}
c.JSON(200, serializer.Response{Data: res})
2020-02-26 15:11:06 +08:00
}
2020-02-27 15:12:15 +08:00
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
2020-02-27 15:12:15 +08:00
}
c.JSON(200, serializer.Response{})
2020-02-27 15:12:15 +08:00
}
2020-03-01 16:25:56 +08:00
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
2020-03-01 16:25:56 +08:00
}
c.JSON(200, serializer.Response{Data: res})
2020-03-01 16:25:56 +08:00
}
2020-03-01 17:57:18 +08:00
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
2020-03-01 17:57:18 +08:00
}
c.JSON(200, serializer.Response{})
2020-03-01 17:57:18 +08:00
}
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})
}
2020-03-07 13:00:51 +08:00
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
2020-03-07 13:00:51 +08:00
}
c.JSON(200, serializer.Response{Data: res})
2020-03-07 13:00:51 +08:00
}
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
2020-03-07 13:00:51 +08:00
}
c.JSON(200, serializer.Response{Data: res})
2020-03-07 13:00:51 +08:00
}
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,
// })
// }
//
2020-03-07 13:00:51 +08:00
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
2020-03-07 13:00:51 +08:00
}
c.JSON(200, serializer.Response{})
2020-03-07 13:00:51 +08:00
}
// 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
2020-03-07 13:00:51 +08:00
}
c.JSON(200, serializer.Response{})
2020-03-07 13:00:51 +08:00
}
2020-03-07 14:04:18 +08:00
// 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
2020-03-07 14:04:18 +08:00
}
c.JSON(200, serializer.Response{Data: res})
2020-03-07 14:04:18 +08:00
}
2020-03-08 10:49:34 +08:00
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
2020-03-08 10:49:34 +08:00
}
c.JSON(200, serializer.Response{Data: res})
2020-03-08 10:49:34 +08:00
}
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
2020-03-08 10:49:34 +08:00
}
c.JSON(200, serializer.Response{Data: res})
2020-03-08 10:49:34 +08:00
}
2020-03-08 12:54:04 +08:00
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
2020-03-08 12:54:04 +08:00
}
c.JSON(200, serializer.Response{})
2020-03-08 12:54:04 +08:00
}
// 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
2020-03-08 12:54:04 +08:00
}
c.JSON(200, serializer.Response{})
2020-03-08 12:54:04 +08:00
}
2020-03-08 13:53:13 +08:00
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
2020-03-08 13:53:13 +08:00
}
c.JSON(200, serializer.Response{Data: res})
2020-03-08 13:53:13 +08:00
}
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
2020-03-08 13:53:13 +08:00
}
c.JSON(200, serializer.Response{Data: res})
2020-03-08 13:53:13 +08:00
}
2020-03-09 10:17:59 +08:00
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
2020-03-09 10:17:59 +08:00
}
c.JSON(200, serializer.Response{Data: res})
2020-03-09 10:17:59 +08:00
}
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
2020-03-09 10:17:59 +08:00
}
c.JSON(200, serializer.Response{Data: res})
2020-03-09 10:17:59 +08:00
}
2020-03-09 10:59:42 +08:00
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
2020-03-09 10:59:42 +08:00
}
c.JSON(200, serializer.Response{})
2020-03-09 10:59:42 +08:00
}
2020-03-09 12:30:43 +08:00
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
2020-03-09 12:30:43 +08:00
}
c.JSON(200, serializer.Response{Data: res})
2020-03-09 12:30:43 +08:00
}
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
2020-03-09 12:30:43 +08:00
}
c.JSON(200, serializer.Response{Data: res})
2020-03-09 12:30:43 +08:00
}
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
2020-03-09 12:30:43 +08:00
}
c.JSON(200, serializer.Response{Data: res})
2020-03-09 12:30:43 +08:00
}
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
2020-03-09 12:30:43 +08:00
}
}
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})
}
Feat: aria2 download and transfer in slave node (#1040) * Feat: retrieve nodes from data table * Feat: master node ping slave node in REST API * Feat: master send scheduled ping request * Feat: inactive nodes recover loop * Modify: remove database operations from aria2 RPC caller implementation * Feat: init aria2 client in master node * Feat: Round Robin load balancer * Feat: create and monitor aria2 task in master node * Feat: salve receive and handle heartbeat * Fix: Node ID will be 0 in download record generated in older version * Feat: sign request headers with all `X-` prefix * Feat: API call to slave node will carry meta data in headers * Feat: call slave aria2 rpc method from master * Feat: get slave aria2 task status Feat: encode slave response data using gob * Feat: aria2 callback to master node / cancel or select task to slave node * Fix: use dummy aria2 client when caller initialize failed in master node * Feat: slave aria2 status event callback / salve RPC auth * Feat: prototype for slave driven filesystem * Feat: retry for init aria2 client in master node * Feat: init request client with global options * Feat: slave receive async task from master * Fix: competition write in request header * Refactor: dependency initialize order * Feat: generic message queue implementation * Feat: message queue implementation * Feat: master waiting slave transfer result * Feat: slave transfer file in stateless policy * Feat: slave transfer file in slave policy * Feat: slave transfer file in local policy * Feat: slave transfer file in OneDrive policy * Fix: failed to initialize update checker http client * Feat: list slave nodes for dashboard * Feat: test aria2 rpc connection in slave * Feat: add and save node * Feat: add and delete node in node pool * Fix: temp file cannot be removed when aria2 task fails * Fix: delete node in admin panel * Feat: edit node and get node info * Modify: delete unused settings
2021-10-31 09:41:56 +08:00
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
Feat: aria2 download and transfer in slave node (#1040) * Feat: retrieve nodes from data table * Feat: master node ping slave node in REST API * Feat: master send scheduled ping request * Feat: inactive nodes recover loop * Modify: remove database operations from aria2 RPC caller implementation * Feat: init aria2 client in master node * Feat: Round Robin load balancer * Feat: create and monitor aria2 task in master node * Feat: salve receive and handle heartbeat * Fix: Node ID will be 0 in download record generated in older version * Feat: sign request headers with all `X-` prefix * Feat: API call to slave node will carry meta data in headers * Feat: call slave aria2 rpc method from master * Feat: get slave aria2 task status Feat: encode slave response data using gob * Feat: aria2 callback to master node / cancel or select task to slave node * Fix: use dummy aria2 client when caller initialize failed in master node * Feat: slave aria2 status event callback / salve RPC auth * Feat: prototype for slave driven filesystem * Feat: retry for init aria2 client in master node * Feat: init request client with global options * Feat: slave receive async task from master * Fix: competition write in request header * Refactor: dependency initialize order * Feat: generic message queue implementation * Feat: message queue implementation * Feat: master waiting slave transfer result * Feat: slave transfer file in stateless policy * Feat: slave transfer file in slave policy * Feat: slave transfer file in local policy * Feat: slave transfer file in OneDrive policy * Fix: failed to initialize update checker http client * Feat: list slave nodes for dashboard * Feat: test aria2 rpc connection in slave * Feat: add and save node * Feat: add and delete node in node pool * Fix: temp file cannot be removed when aria2 task fails * Fix: delete node in admin panel * Feat: edit node and get node info * Modify: delete unused settings
2021-10-31 09:41:56 +08:00
}
c.JSON(200, serializer.Response{})
Feat: aria2 download and transfer in slave node (#1040) * Feat: retrieve nodes from data table * Feat: master node ping slave node in REST API * Feat: master send scheduled ping request * Feat: inactive nodes recover loop * Modify: remove database operations from aria2 RPC caller implementation * Feat: init aria2 client in master node * Feat: Round Robin load balancer * Feat: create and monitor aria2 task in master node * Feat: salve receive and handle heartbeat * Fix: Node ID will be 0 in download record generated in older version * Feat: sign request headers with all `X-` prefix * Feat: API call to slave node will carry meta data in headers * Feat: call slave aria2 rpc method from master * Feat: get slave aria2 task status Feat: encode slave response data using gob * Feat: aria2 callback to master node / cancel or select task to slave node * Fix: use dummy aria2 client when caller initialize failed in master node * Feat: slave aria2 status event callback / salve RPC auth * Feat: prototype for slave driven filesystem * Feat: retry for init aria2 client in master node * Feat: init request client with global options * Feat: slave receive async task from master * Fix: competition write in request header * Refactor: dependency initialize order * Feat: generic message queue implementation * Feat: message queue implementation * Feat: master waiting slave transfer result * Feat: slave transfer file in stateless policy * Feat: slave transfer file in slave policy * Feat: slave transfer file in local policy * Feat: slave transfer file in OneDrive policy * Fix: failed to initialize update checker http client * Feat: list slave nodes for dashboard * Feat: test aria2 rpc connection in slave * Feat: add and save node * Feat: add and delete node in node pool * Fix: temp file cannot be removed when aria2 task fails * Fix: delete node in admin panel * Feat: edit node and get node info * Modify: delete unused settings
2021-10-31 09:41:56 +08:00
}
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
Feat: aria2 download and transfer in slave node (#1040) * Feat: retrieve nodes from data table * Feat: master node ping slave node in REST API * Feat: master send scheduled ping request * Feat: inactive nodes recover loop * Modify: remove database operations from aria2 RPC caller implementation * Feat: init aria2 client in master node * Feat: Round Robin load balancer * Feat: create and monitor aria2 task in master node * Feat: salve receive and handle heartbeat * Fix: Node ID will be 0 in download record generated in older version * Feat: sign request headers with all `X-` prefix * Feat: API call to slave node will carry meta data in headers * Feat: call slave aria2 rpc method from master * Feat: get slave aria2 task status Feat: encode slave response data using gob * Feat: aria2 callback to master node / cancel or select task to slave node * Fix: use dummy aria2 client when caller initialize failed in master node * Feat: slave aria2 status event callback / salve RPC auth * Feat: prototype for slave driven filesystem * Feat: retry for init aria2 client in master node * Feat: init request client with global options * Feat: slave receive async task from master * Fix: competition write in request header * Refactor: dependency initialize order * Feat: generic message queue implementation * Feat: message queue implementation * Feat: master waiting slave transfer result * Feat: slave transfer file in stateless policy * Feat: slave transfer file in slave policy * Feat: slave transfer file in local policy * Feat: slave transfer file in OneDrive policy * Fix: failed to initialize update checker http client * Feat: list slave nodes for dashboard * Feat: test aria2 rpc connection in slave * Feat: add and save node * Feat: add and delete node in node pool * Fix: temp file cannot be removed when aria2 task fails * Fix: delete node in admin panel * Feat: edit node and get node info * Modify: delete unused settings
2021-10-31 09:41:56 +08:00
}
c.JSON(200, serializer.Response{Data: res})
Feat: aria2 download and transfer in slave node (#1040) * Feat: retrieve nodes from data table * Feat: master node ping slave node in REST API * Feat: master send scheduled ping request * Feat: inactive nodes recover loop * Modify: remove database operations from aria2 RPC caller implementation * Feat: init aria2 client in master node * Feat: Round Robin load balancer * Feat: create and monitor aria2 task in master node * Feat: salve receive and handle heartbeat * Fix: Node ID will be 0 in download record generated in older version * Feat: sign request headers with all `X-` prefix * Feat: API call to slave node will carry meta data in headers * Feat: call slave aria2 rpc method from master * Feat: get slave aria2 task status Feat: encode slave response data using gob * Feat: aria2 callback to master node / cancel or select task to slave node * Fix: use dummy aria2 client when caller initialize failed in master node * Feat: slave aria2 status event callback / salve RPC auth * Feat: prototype for slave driven filesystem * Feat: retry for init aria2 client in master node * Feat: init request client with global options * Feat: slave receive async task from master * Fix: competition write in request header * Refactor: dependency initialize order * Feat: generic message queue implementation * Feat: message queue implementation * Feat: master waiting slave transfer result * Feat: slave transfer file in stateless policy * Feat: slave transfer file in slave policy * Feat: slave transfer file in local policy * Feat: slave transfer file in OneDrive policy * Fix: failed to initialize update checker http client * Feat: list slave nodes for dashboard * Feat: test aria2 rpc connection in slave * Feat: add and save node * Feat: add and delete node in node pool * Fix: temp file cannot be removed when aria2 task fails * Fix: delete node in admin panel * Feat: edit node and get node info * Modify: delete unused settings
2021-10-31 09:41:56 +08:00
}
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
Feat: aria2 download and transfer in slave node (#1040) * Feat: retrieve nodes from data table * Feat: master node ping slave node in REST API * Feat: master send scheduled ping request * Feat: inactive nodes recover loop * Modify: remove database operations from aria2 RPC caller implementation * Feat: init aria2 client in master node * Feat: Round Robin load balancer * Feat: create and monitor aria2 task in master node * Feat: salve receive and handle heartbeat * Fix: Node ID will be 0 in download record generated in older version * Feat: sign request headers with all `X-` prefix * Feat: API call to slave node will carry meta data in headers * Feat: call slave aria2 rpc method from master * Feat: get slave aria2 task status Feat: encode slave response data using gob * Feat: aria2 callback to master node / cancel or select task to slave node * Fix: use dummy aria2 client when caller initialize failed in master node * Feat: slave aria2 status event callback / salve RPC auth * Feat: prototype for slave driven filesystem * Feat: retry for init aria2 client in master node * Feat: init request client with global options * Feat: slave receive async task from master * Fix: competition write in request header * Refactor: dependency initialize order * Feat: generic message queue implementation * Feat: message queue implementation * Feat: master waiting slave transfer result * Feat: slave transfer file in stateless policy * Feat: slave transfer file in slave policy * Feat: slave transfer file in local policy * Feat: slave transfer file in OneDrive policy * Fix: failed to initialize update checker http client * Feat: list slave nodes for dashboard * Feat: test aria2 rpc connection in slave * Feat: add and save node * Feat: add and delete node in node pool * Fix: temp file cannot be removed when aria2 task fails * Fix: delete node in admin panel * Feat: edit node and get node info * Modify: delete unused settings
2021-10-31 09:41:56 +08:00
}
c.JSON(200, serializer.Response{Data: res})
Feat: aria2 download and transfer in slave node (#1040) * Feat: retrieve nodes from data table * Feat: master node ping slave node in REST API * Feat: master send scheduled ping request * Feat: inactive nodes recover loop * Modify: remove database operations from aria2 RPC caller implementation * Feat: init aria2 client in master node * Feat: Round Robin load balancer * Feat: create and monitor aria2 task in master node * Feat: salve receive and handle heartbeat * Fix: Node ID will be 0 in download record generated in older version * Feat: sign request headers with all `X-` prefix * Feat: API call to slave node will carry meta data in headers * Feat: call slave aria2 rpc method from master * Feat: get slave aria2 task status Feat: encode slave response data using gob * Feat: aria2 callback to master node / cancel or select task to slave node * Fix: use dummy aria2 client when caller initialize failed in master node * Feat: slave aria2 status event callback / salve RPC auth * Feat: prototype for slave driven filesystem * Feat: retry for init aria2 client in master node * Feat: init request client with global options * Feat: slave receive async task from master * Fix: competition write in request header * Refactor: dependency initialize order * Feat: generic message queue implementation * Feat: message queue implementation * Feat: master waiting slave transfer result * Feat: slave transfer file in stateless policy * Feat: slave transfer file in slave policy * Feat: slave transfer file in local policy * Feat: slave transfer file in OneDrive policy * Fix: failed to initialize update checker http client * Feat: list slave nodes for dashboard * Feat: test aria2 rpc connection in slave * Feat: add and save node * Feat: add and delete node in node pool * Fix: temp file cannot be removed when aria2 task fails * Fix: delete node in admin panel * Feat: edit node and get node info * Modify: delete unused settings
2021-10-31 09:41:56 +08:00
}
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
Feat: aria2 download and transfer in slave node (#1040) * Feat: retrieve nodes from data table * Feat: master node ping slave node in REST API * Feat: master send scheduled ping request * Feat: inactive nodes recover loop * Modify: remove database operations from aria2 RPC caller implementation * Feat: init aria2 client in master node * Feat: Round Robin load balancer * Feat: create and monitor aria2 task in master node * Feat: salve receive and handle heartbeat * Fix: Node ID will be 0 in download record generated in older version * Feat: sign request headers with all `X-` prefix * Feat: API call to slave node will carry meta data in headers * Feat: call slave aria2 rpc method from master * Feat: get slave aria2 task status Feat: encode slave response data using gob * Feat: aria2 callback to master node / cancel or select task to slave node * Fix: use dummy aria2 client when caller initialize failed in master node * Feat: slave aria2 status event callback / salve RPC auth * Feat: prototype for slave driven filesystem * Feat: retry for init aria2 client in master node * Feat: init request client with global options * Feat: slave receive async task from master * Fix: competition write in request header * Refactor: dependency initialize order * Feat: generic message queue implementation * Feat: message queue implementation * Feat: master waiting slave transfer result * Feat: slave transfer file in stateless policy * Feat: slave transfer file in slave policy * Feat: slave transfer file in local policy * Feat: slave transfer file in OneDrive policy * Fix: failed to initialize update checker http client * Feat: list slave nodes for dashboard * Feat: test aria2 rpc connection in slave * Feat: add and save node * Feat: add and delete node in node pool * Fix: temp file cannot be removed when aria2 task fails * Fix: delete node in admin panel * Feat: edit node and get node info * Modify: delete unused settings
2021-10-31 09:41:56 +08:00
}
}
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
Feat: aria2 download and transfer in slave node (#1040) * Feat: retrieve nodes from data table * Feat: master node ping slave node in REST API * Feat: master send scheduled ping request * Feat: inactive nodes recover loop * Modify: remove database operations from aria2 RPC caller implementation * Feat: init aria2 client in master node * Feat: Round Robin load balancer * Feat: create and monitor aria2 task in master node * Feat: salve receive and handle heartbeat * Fix: Node ID will be 0 in download record generated in older version * Feat: sign request headers with all `X-` prefix * Feat: API call to slave node will carry meta data in headers * Feat: call slave aria2 rpc method from master * Feat: get slave aria2 task status Feat: encode slave response data using gob * Feat: aria2 callback to master node / cancel or select task to slave node * Fix: use dummy aria2 client when caller initialize failed in master node * Feat: slave aria2 status event callback / salve RPC auth * Feat: prototype for slave driven filesystem * Feat: retry for init aria2 client in master node * Feat: init request client with global options * Feat: slave receive async task from master * Fix: competition write in request header * Refactor: dependency initialize order * Feat: generic message queue implementation * Feat: message queue implementation * Feat: master waiting slave transfer result * Feat: slave transfer file in stateless policy * Feat: slave transfer file in slave policy * Feat: slave transfer file in local policy * Feat: slave transfer file in OneDrive policy * Fix: failed to initialize update checker http client * Feat: list slave nodes for dashboard * Feat: test aria2 rpc connection in slave * Feat: add and save node * Feat: add and delete node in node pool * Fix: temp file cannot be removed when aria2 task fails * Fix: delete node in admin panel * Feat: edit node and get node info * Modify: delete unused settings
2021-10-31 09:41:56 +08:00
}
c.JSON(200, serializer.Response{Data: res})
Feat: aria2 download and transfer in slave node (#1040) * Feat: retrieve nodes from data table * Feat: master node ping slave node in REST API * Feat: master send scheduled ping request * Feat: inactive nodes recover loop * Modify: remove database operations from aria2 RPC caller implementation * Feat: init aria2 client in master node * Feat: Round Robin load balancer * Feat: create and monitor aria2 task in master node * Feat: salve receive and handle heartbeat * Fix: Node ID will be 0 in download record generated in older version * Feat: sign request headers with all `X-` prefix * Feat: API call to slave node will carry meta data in headers * Feat: call slave aria2 rpc method from master * Feat: get slave aria2 task status Feat: encode slave response data using gob * Feat: aria2 callback to master node / cancel or select task to slave node * Fix: use dummy aria2 client when caller initialize failed in master node * Feat: slave aria2 status event callback / salve RPC auth * Feat: prototype for slave driven filesystem * Feat: retry for init aria2 client in master node * Feat: init request client with global options * Feat: slave receive async task from master * Fix: competition write in request header * Refactor: dependency initialize order * Feat: generic message queue implementation * Feat: message queue implementation * Feat: master waiting slave transfer result * Feat: slave transfer file in stateless policy * Feat: slave transfer file in slave policy * Feat: slave transfer file in local policy * Feat: slave transfer file in OneDrive policy * Fix: failed to initialize update checker http client * Feat: list slave nodes for dashboard * Feat: test aria2 rpc connection in slave * Feat: add and save node * Feat: add and delete node in node pool * Fix: temp file cannot be removed when aria2 task fails * Fix: delete node in admin panel * Feat: edit node and get node info * Modify: delete unused settings
2021-10-31 09:41:56 +08:00
}