2022-10-28 09:04:57 +00:00
|
|
|
package v1
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/1Panel-dev/1Panel/backend/app/api/v1/helper"
|
|
|
|
"github.com/1Panel-dev/1Panel/backend/app/dto"
|
2022-12-13 09:20:13 +00:00
|
|
|
"github.com/1Panel-dev/1Panel/backend/app/dto/request"
|
2022-10-28 09:04:57 +00:00
|
|
|
"github.com/1Panel-dev/1Panel/backend/constant"
|
2022-11-30 02:34:44 +00:00
|
|
|
"github.com/1Panel-dev/1Panel/backend/global"
|
2022-10-28 09:04:57 +00:00
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
)
|
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website
|
2023-01-05 03:57:03 +00:00
|
|
|
// @Summary Page websites
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Description 获取网站列表分页
|
|
|
|
// @Accept json
|
|
|
|
// @Param request body request.WebsiteSearch true "request"
|
|
|
|
// @Success 200 {object} dto.PageResult
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/search [post]
|
2022-11-02 07:19:14 +00:00
|
|
|
func (b *BaseApi) PageWebsite(c *gin.Context) {
|
2022-12-13 09:20:13 +00:00
|
|
|
var req request.WebsiteSearch
|
2022-11-02 07:19:14 +00:00
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
|
|
|
return
|
|
|
|
}
|
2022-12-13 09:20:13 +00:00
|
|
|
total, websites, err := websiteService.PageWebsite(req)
|
2022-11-02 07:19:14 +00:00
|
|
|
if err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, dto.PageResult{
|
|
|
|
Total: total,
|
|
|
|
Items: websites,
|
|
|
|
})
|
|
|
|
}
|
2022-10-28 09:04:57 +00:00
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website
|
2023-01-05 03:57:03 +00:00
|
|
|
// @Summary List websites
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Description 获取网站列表
|
|
|
|
// @Success 200 {anrry} response.WebsiteDTO
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/list [get]
|
2023-01-03 08:56:36 +00:00
|
|
|
func (b *BaseApi) GetWebsites(c *gin.Context) {
|
|
|
|
websites, err := websiteService.GetWebsites()
|
|
|
|
if err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, websites)
|
|
|
|
}
|
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website
|
2023-01-05 03:57:03 +00:00
|
|
|
// @Summary List website names
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Description 获取网站列表
|
|
|
|
// @Success 200 {anrry} string
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/options [get]
|
2022-11-30 07:47:11 +00:00
|
|
|
func (b *BaseApi) GetWebsiteOptions(c *gin.Context) {
|
|
|
|
websites, err := websiteService.GetWebsiteOptions()
|
|
|
|
if err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, websites)
|
|
|
|
}
|
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website
|
|
|
|
// @Summary Create website
|
|
|
|
// @Description 创建网站
|
|
|
|
// @Accept json
|
|
|
|
// @Param request body request.WebsiteCreate true "request"
|
|
|
|
// @Success 200
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites [post]
|
|
|
|
// @x-panel-log {"bodyKeys":["primaryDomain"],"paramKeys":[],"BeforeFuntions":[],"formatZH":"创建网站 [primaryDomain]","formatEN":"Create website [primaryDomain]"}
|
2022-11-02 07:19:14 +00:00
|
|
|
func (b *BaseApi) CreateWebsite(c *gin.Context) {
|
2022-12-13 09:20:13 +00:00
|
|
|
var req request.WebsiteCreate
|
2022-10-28 09:04:57 +00:00
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
|
|
|
return
|
|
|
|
}
|
2023-02-08 10:12:13 +00:00
|
|
|
tx, ctx := helper.GetTxAndContext()
|
|
|
|
err := websiteService.CreateWebsite(ctx, req)
|
2022-10-28 09:04:57 +00:00
|
|
|
if err != nil {
|
2023-02-08 10:12:13 +00:00
|
|
|
tx.Rollback()
|
2022-10-28 09:04:57 +00:00
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
2023-02-08 10:12:13 +00:00
|
|
|
tx.Commit()
|
2022-10-28 09:04:57 +00:00
|
|
|
helper.SuccessWithData(c, nil)
|
|
|
|
}
|
2022-11-02 07:19:14 +00:00
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website
|
|
|
|
// @Summary Operate website
|
|
|
|
// @Description 操作网站
|
|
|
|
// @Accept json
|
|
|
|
// @Param request body request.WebsiteOp true "request"
|
|
|
|
// @Success 200
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/operate [post]
|
|
|
|
// @x-panel-log {"bodyKeys":["id", "operate"],"paramKeys":[],"BeforeFuntions":[{"input_colume":"id","input_value":"id","isList":false,"db":"websites","output_colume":"primary_domain","output_value":"domain"}],"formatZH":"[operate] 网站 [domain]","formatEN":"[operate] website [domain]"}
|
2022-12-26 08:09:21 +00:00
|
|
|
func (b *BaseApi) OpWebsite(c *gin.Context) {
|
|
|
|
var req request.WebsiteOp
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
err := websiteService.OpWebsite(req)
|
|
|
|
if err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, nil)
|
|
|
|
}
|
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website
|
|
|
|
// @Summary Backup website
|
|
|
|
// @Description 备份网站
|
|
|
|
// @Accept json
|
|
|
|
// @Param request body request.WebsiteResourceReq true "request"
|
|
|
|
// @Success 200
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/backup [post]
|
|
|
|
// @x-panel-log {"bodyKeys":["id"],"paramKeys":[],"BeforeFuntions":[{"input_colume":"id","input_value":"id","isList":false,"db":"websites","output_colume":"primary_domain","output_value":"domain"}],"formatZH":"备份网站 [domain]","formatEN":"Backup website [domain]"}
|
2022-11-29 09:39:10 +00:00
|
|
|
func (b *BaseApi) BackupWebsite(c *gin.Context) {
|
2022-12-23 03:08:28 +00:00
|
|
|
var req request.WebsiteResourceReq
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
2022-11-29 09:39:10 +00:00
|
|
|
return
|
|
|
|
}
|
2022-12-23 03:08:28 +00:00
|
|
|
if err := websiteService.Backup(req.ID); err != nil {
|
2022-11-29 09:39:10 +00:00
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, nil)
|
|
|
|
}
|
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website
|
|
|
|
// @Summary Recover website by upload
|
|
|
|
// @Description 从上传恢复网站
|
|
|
|
// @Accept json
|
|
|
|
// @Param request body request.WebsiteRecoverByFile true "request"
|
|
|
|
// @Success 200
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/recover/byupload [post]
|
|
|
|
// @x-panel-log {"bodyKeys":["websiteName","fileDir","fileName"],"paramKeys":[],"BeforeFuntions":[],"formatZH":"[websiteName] 从上传恢复 [fileDir]/[fileName]","formatEN":"[websiteName] recover from uploads [fileDir]/[fileName]"}
|
2022-12-01 08:21:49 +00:00
|
|
|
func (b *BaseApi) RecoverWebsiteByUpload(c *gin.Context) {
|
2022-12-13 09:20:13 +00:00
|
|
|
var req request.WebsiteRecoverByFile
|
2022-12-01 08:21:49 +00:00
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if err := global.VALID.Struct(req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := websiteService.RecoverByUpload(req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, nil)
|
|
|
|
}
|
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website
|
|
|
|
// @Summary Recover website
|
|
|
|
// @Description 从备份恢复网站
|
|
|
|
// @Accept json
|
|
|
|
// @Param request body request.WebsiteRecover true "request"
|
|
|
|
// @Success 200
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/recover [post]
|
|
|
|
// @x-panel-log {"bodyKeys":["websiteName","backupName"],"paramKeys":[],"BeforeFuntions":[],"formatZH":"[websiteName] 从备份恢复 [backupName]","formatEN":"[websiteName] recover from backups [backupName]"}
|
2022-11-30 02:34:44 +00:00
|
|
|
func (b *BaseApi) RecoverWebsite(c *gin.Context) {
|
2022-12-13 09:20:13 +00:00
|
|
|
var req request.WebsiteRecover
|
2022-11-30 02:34:44 +00:00
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if err := global.VALID.Struct(req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := websiteService.Recover(req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, nil)
|
|
|
|
}
|
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website
|
|
|
|
// @Summary Delete website
|
|
|
|
// @Description 删除网站
|
|
|
|
// @Accept json
|
|
|
|
// @Param request body request.WebsiteDelete true "request"
|
|
|
|
// @Success 200
|
|
|
|
// @Security ApiKeyAuth
|
2023-01-05 03:57:03 +00:00
|
|
|
// @Router /websites/del [post]
|
2023-01-04 14:31:51 +00:00
|
|
|
// @x-panel-log {"bodyKeys":["id"],"paramKeys":[],"BeforeFuntions":[{"input_colume":"id","input_value":"id","isList":false,"db":"websites","output_colume":"primary_domain","output_value":"domain"}],"formatZH":"删除网站 [domain]","formatEN":"Delete website [domain]"}
|
2022-12-13 09:20:13 +00:00
|
|
|
func (b *BaseApi) DeleteWebsite(c *gin.Context) {
|
|
|
|
var req request.WebsiteDelete
|
2022-11-02 07:19:14 +00:00
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
|
|
|
return
|
|
|
|
}
|
2022-12-13 09:20:13 +00:00
|
|
|
err := websiteService.DeleteWebsite(req)
|
2022-11-02 07:19:14 +00:00
|
|
|
if err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, nil)
|
|
|
|
}
|
2022-11-03 09:06:48 +00:00
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website
|
|
|
|
// @Summary Update website
|
|
|
|
// @Description 更新网站
|
|
|
|
// @Accept json
|
|
|
|
// @Param request body request.WebsiteUpdate true "request"
|
|
|
|
// @Success 200
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/update [post]
|
|
|
|
// @x-panel-log {"bodyKeys":["primaryDomain"],"paramKeys":[],"BeforeFuntions":[],"formatZH":"更新网站 [primaryDomain]","formatEN":"Update website [primaryDomain]"}
|
2022-12-13 09:20:13 +00:00
|
|
|
func (b *BaseApi) UpdateWebsite(c *gin.Context) {
|
|
|
|
var req request.WebsiteUpdate
|
2022-11-08 09:21:13 +00:00
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if err := websiteService.UpdateWebsite(req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, nil)
|
|
|
|
}
|
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website
|
|
|
|
// @Summary Search website by id
|
|
|
|
// @Description 通过 id 查询网站
|
|
|
|
// @Accept json
|
|
|
|
// @Param id path integer true "request"
|
|
|
|
// @Success 200 {object} response.WebsiteDTO
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/:id [get]
|
2022-12-13 09:20:13 +00:00
|
|
|
func (b *BaseApi) GetWebsite(c *gin.Context) {
|
2022-11-08 09:21:13 +00:00
|
|
|
id, err := helper.GetParamID(c)
|
|
|
|
if err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInternalServer, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
website, err := websiteService.GetWebsite(id)
|
|
|
|
if err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, website)
|
|
|
|
}
|
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website Nginx
|
|
|
|
// @Summary Search website nginx by id
|
|
|
|
// @Description 通过 id 查询网站 nginx
|
|
|
|
// @Accept json
|
|
|
|
// @Param id path integer true "request"
|
|
|
|
// @Success 200 {object} response.FileInfo
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/:id/nginx [get]
|
2022-12-13 09:20:13 +00:00
|
|
|
func (b *BaseApi) GetWebsiteNginx(c *gin.Context) {
|
2022-11-19 09:16:02 +00:00
|
|
|
id, err := helper.GetParamID(c)
|
|
|
|
if err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInternalServer, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
fileInfo, err := websiteService.GetWebsiteNginxConfig(id)
|
|
|
|
if err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, fileInfo)
|
|
|
|
}
|
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website Domain
|
|
|
|
// @Summary Search website domains by websiteId
|
|
|
|
// @Description 通过网站 id 查询域名
|
|
|
|
// @Accept json
|
|
|
|
// @Param websiteId path integer true "request"
|
|
|
|
// @Success 200 {anrry} model.WebsiteDomain
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/domains/:websiteId [get]
|
2022-11-03 09:06:48 +00:00
|
|
|
func (b *BaseApi) GetWebDomains(c *gin.Context) {
|
|
|
|
websiteId, err := helper.GetIntParamByKey(c, "websiteId")
|
|
|
|
if err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInternalServer, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
list, err := websiteService.GetWebsiteDomain(websiteId)
|
|
|
|
if err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, list)
|
|
|
|
}
|
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website Domain
|
|
|
|
// @Summary Delete website domain
|
|
|
|
// @Description 删除网站域名
|
|
|
|
// @Accept json
|
|
|
|
// @Param request body request.WebsiteDomainDelete true "request"
|
|
|
|
// @Success 200
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/domains/del [post]
|
|
|
|
// @x-panel-log {"bodyKeys":["id"],"paramKeys":[],"BeforeFuntions":[{"input_colume":"id","input_value":"id","isList":false,"db":"website_domains","output_colume":"domain","output_value":"domain"}],"formatZH":"删除域名 [domain]","formatEN":"Delete domain [domain]"}
|
2022-11-03 09:06:48 +00:00
|
|
|
func (b *BaseApi) DeleteWebDomain(c *gin.Context) {
|
2022-12-13 09:20:13 +00:00
|
|
|
var req request.WebsiteDomainDelete
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
2022-11-03 09:06:48 +00:00
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2022-12-13 09:20:13 +00:00
|
|
|
if err := websiteService.DeleteWebsiteDomain(req.ID); err != nil {
|
2022-11-03 09:06:48 +00:00
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, nil)
|
|
|
|
}
|
2022-11-03 10:02:07 +00:00
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website Domain
|
|
|
|
// @Summary Create website domain
|
|
|
|
// @Description 创建网站域名
|
|
|
|
// @Accept json
|
|
|
|
// @Param request body request.WebsiteDomainCreate true "request"
|
|
|
|
// @Success 200 {object} model.WebsiteDomain
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/domains [post]
|
|
|
|
// @x-panel-log {"bodyKeys":["domain"],"paramKeys":[],"BeforeFuntions":[],"formatZH":"创建域名 [domain]","formatEN":"Create domain [domain]"}
|
2022-11-03 10:02:07 +00:00
|
|
|
func (b *BaseApi) CreateWebDomain(c *gin.Context) {
|
2022-12-13 09:20:13 +00:00
|
|
|
var req request.WebsiteDomainCreate
|
2022-11-03 10:02:07 +00:00
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
domain, err := websiteService.CreateWebsiteDomain(req)
|
|
|
|
if err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, domain)
|
|
|
|
}
|
2022-11-07 08:19:05 +00:00
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website Nginx
|
|
|
|
// @Summary Load nginx conf
|
|
|
|
// @Description 获取 nginx 配置
|
|
|
|
// @Accept json
|
|
|
|
// @Param request body request.NginxScopeReq true "request"
|
|
|
|
// @Success 200 {object} response.WebsiteNginxConfig
|
|
|
|
// @Security ApiKeyAuth
|
2023-01-05 03:57:03 +00:00
|
|
|
// @Router /websites/config [post]
|
2022-11-07 08:19:05 +00:00
|
|
|
func (b *BaseApi) GetNginxConfig(c *gin.Context) {
|
2022-12-13 10:54:46 +00:00
|
|
|
var req request.NginxScopeReq
|
2022-11-07 08:19:05 +00:00
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
config, err := websiteService.GetNginxConfigByScope(req)
|
|
|
|
if err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, config)
|
|
|
|
}
|
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website Nginx
|
|
|
|
// @Summary Update nginx conf
|
|
|
|
// @Description 更新 nginx 配置
|
|
|
|
// @Accept json
|
|
|
|
// @Param request body request.NginxConfigUpdate true "request"
|
|
|
|
// @Success 200
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/config/update [post]
|
|
|
|
// @x-panel-log {"bodyKeys":["websiteId"],"paramKeys":[],"BeforeFuntions":[{"input_colume":"id","input_value":"websiteId","isList":false,"db":"websites","output_colume":"primary_domain","output_value":"domain"}],"formatZH":"nginx 配置修改 [domain]","formatEN":"Nginx conf update [domain]"}
|
2022-11-07 08:19:05 +00:00
|
|
|
func (b *BaseApi) UpdateNginxConfig(c *gin.Context) {
|
2022-12-13 10:54:46 +00:00
|
|
|
var req request.NginxConfigUpdate
|
2022-11-07 08:19:05 +00:00
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if err := websiteService.UpdateNginxConfigByScope(req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, nil)
|
|
|
|
}
|
2022-11-20 10:32:56 +00:00
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website HTTPS
|
|
|
|
// @Summary Load https conf
|
|
|
|
// @Description 获取 https 配置
|
|
|
|
// @Accept json
|
|
|
|
// @Param id path integer true "request"
|
|
|
|
// @Success 200 {object} response.WebsiteHTTPS
|
|
|
|
// @Security ApiKeyAuth
|
2023-01-05 03:57:03 +00:00
|
|
|
// @Router /websites/:id/https [get]
|
2022-11-20 10:32:56 +00:00
|
|
|
func (b *BaseApi) GetHTTPSConfig(c *gin.Context) {
|
|
|
|
id, err := helper.GetParamID(c)
|
|
|
|
if err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInternalServer, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
res, err := websiteService.GetWebsiteHTTPS(id)
|
|
|
|
if err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, res)
|
|
|
|
}
|
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website HTTPS
|
|
|
|
// @Summary Update https conf
|
|
|
|
// @Description 更新 https 配置
|
|
|
|
// @Accept json
|
|
|
|
// @Param request body request.WebsiteHTTPSOp true "request"
|
2023-01-05 03:57:03 +00:00
|
|
|
// @Success 200 {object} response.WebsiteHTTPS
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/:id/https [post]
|
|
|
|
// @x-panel-log {"bodyKeys":["websiteId"],"paramKeys":[],"BeforeFuntions":[{"input_colume":"id","input_value":"websiteId","isList":false,"db":"websites","output_colume":"primary_domain","output_value":"domain"}],"formatZH":"更新网站 [domain] https 配置","formatEN":"Update website https [domain] conf"}
|
2022-11-20 10:32:56 +00:00
|
|
|
func (b *BaseApi) UpdateHTTPSConfig(c *gin.Context) {
|
2022-12-13 09:20:13 +00:00
|
|
|
var req request.WebsiteHTTPSOp
|
2022-11-20 10:32:56 +00:00
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
|
|
|
return
|
|
|
|
}
|
2022-12-28 08:07:43 +00:00
|
|
|
tx, ctx := helper.GetTxAndContext()
|
|
|
|
res, err := websiteService.OpWebsiteHTTPS(ctx, req)
|
2022-11-20 10:32:56 +00:00
|
|
|
if err != nil {
|
2022-12-28 08:07:43 +00:00
|
|
|
tx.Rollback()
|
2022-11-20 10:32:56 +00:00
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
2022-12-28 08:07:43 +00:00
|
|
|
tx.Commit()
|
2022-11-20 10:32:56 +00:00
|
|
|
helper.SuccessWithData(c, res)
|
|
|
|
}
|
2022-12-04 09:45:54 +00:00
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website
|
|
|
|
// @Summary Check before create website
|
|
|
|
// @Description 网站创建前检查
|
|
|
|
// @Accept json
|
|
|
|
// @Param request body request.WebsiteInstallCheckReq true "request"
|
|
|
|
// @Success 200 {anrry} request.WebsitePreInstallCheck
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/check [post]
|
2022-12-04 09:45:54 +00:00
|
|
|
func (b *BaseApi) CreateWebsiteCheck(c *gin.Context) {
|
2022-12-13 09:20:13 +00:00
|
|
|
var req request.WebsiteInstallCheckReq
|
2022-12-04 09:45:54 +00:00
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
data, err := websiteService.PreInstallCheck(req)
|
|
|
|
if err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, data)
|
|
|
|
}
|
2022-12-06 03:42:11 +00:00
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website WAF
|
|
|
|
// @Summary Load websit waf conf
|
|
|
|
// @Description 获取网站 waf 配置
|
|
|
|
// @Accept json
|
|
|
|
// @Param request body request.WebsiteWafReq true "request"
|
2023-01-05 03:57:03 +00:00
|
|
|
// @Success 200 {object} response.WebsiteWafConfig
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/waf/config [post]
|
2022-12-06 03:42:11 +00:00
|
|
|
func (b *BaseApi) GetWebsiteWafConfig(c *gin.Context) {
|
|
|
|
var req request.WebsiteWafReq
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
data, err := websiteService.GetWafConfig(req)
|
|
|
|
if err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, data)
|
|
|
|
}
|
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website WAF
|
|
|
|
// @Summary Update website waf conf
|
|
|
|
// @Description 更新 网站 waf 配置
|
|
|
|
// @Accept json
|
|
|
|
// @Param request body request.WebsiteWafUpdate true "request"
|
|
|
|
// @Success 200
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/waf/update [post]
|
|
|
|
// @x-panel-log {"bodyKeys":["websiteId"],"paramKeys":[],"BeforeFuntions":[{"input_colume":"id","input_value":"websiteId","isList":false,"db":"websites","output_colume":"primary_domain","output_value":"domain"}],"formatZH":"WAF 配置修改 [domain]","formatEN":"WAF conf update [domain]"}
|
2022-12-06 03:42:11 +00:00
|
|
|
func (b *BaseApi) UpdateWebsiteWafConfig(c *gin.Context) {
|
|
|
|
var req request.WebsiteWafUpdate
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if err := websiteService.UpdateWafConfig(req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, nil)
|
|
|
|
}
|
2022-12-28 03:37:04 +00:00
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website Nginx
|
|
|
|
// @Summary Update website nginx conf
|
|
|
|
// @Description 更新 网站 nginx 配置
|
|
|
|
// @Accept json
|
|
|
|
// @Param request body request.WebsiteNginxUpdate true "request"
|
|
|
|
// @Success 200
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/nginx/update [post]
|
|
|
|
// @x-panel-log {"bodyKeys":["id"],"paramKeys":[],"BeforeFuntions":[{"input_colume":"id","input_value":"id","isList":false,"db":"websites","output_colume":"primary_domain","output_value":"domain"}],"formatZH":"[domain] Nginx 配置修改","formatEN":"[domain] Nginx conf update"}
|
2022-12-28 03:37:04 +00:00
|
|
|
func (b *BaseApi) UpdateWebsiteNginxConfig(c *gin.Context) {
|
|
|
|
var req request.WebsiteNginxUpdate
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if err := websiteService.UpdateNginxConfigFile(req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, nil)
|
|
|
|
}
|
2022-12-30 09:39:17 +00:00
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website
|
|
|
|
// @Summary Operate website log
|
|
|
|
// @Description 操作网站日志
|
|
|
|
// @Accept json
|
|
|
|
// @Param request body request.WebsiteLogReq true "request"
|
|
|
|
// @Success 200 {object} response.WebsiteLog
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/log [post]
|
|
|
|
// @x-panel-log {"bodyKeys":["id", "operate"],"paramKeys":[],"BeforeFuntions":[{"input_colume":"id","input_value":"id","isList":false,"db":"websites","output_colume":"primary_domain","output_value":"domain"}],"formatZH":"[domain][operate] 日志","formatEN":"[domain][operate] logs"}
|
2022-12-30 09:39:17 +00:00
|
|
|
func (b *BaseApi) OpWebsiteLog(c *gin.Context) {
|
|
|
|
var req request.WebsiteLogReq
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
res, err := websiteService.OpWebsiteLog(req)
|
|
|
|
if err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, res)
|
|
|
|
}
|
2023-01-03 08:56:36 +00:00
|
|
|
|
2023-01-04 14:31:51 +00:00
|
|
|
// @Tags Website
|
|
|
|
// @Summary Change default server
|
|
|
|
// @Description 操作网站日志
|
|
|
|
// @Accept json
|
|
|
|
// @Param request body request.WebsiteDefaultUpdate true "request"
|
|
|
|
// @Success 200
|
|
|
|
// @Security ApiKeyAuth
|
|
|
|
// @Router /websites/default/server [post]
|
|
|
|
// @x-panel-log {"bodyKeys":["id", "operate"],"paramKeys":[],"BeforeFuntions":[{"input_colume":"id","input_value":"id","isList":false,"db":"websites","output_colume":"primary_domain","output_value":"domain"}],"formatZH":"修改默认 server => [domain]","formatEN":"Change default server => [domain]"}
|
2023-01-03 08:56:36 +00:00
|
|
|
func (b *BaseApi) ChangeDefaultServer(c *gin.Context) {
|
|
|
|
var req request.WebsiteDefaultUpdate
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if err := websiteService.ChangeDefaultServer(req.ID); err != nil {
|
|
|
|
helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrTypeInternalServer, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
helper.SuccessWithData(c, nil)
|
|
|
|
}
|