mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-08 00:26:37 +08:00
[优化] 优化代码
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
package controller
|
package controller
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
|
||||||
"openflare/service"
|
"openflare/service"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
@@ -164,12 +163,7 @@ func GetAccessLogIPTrend(c *gin.Context) {
|
|||||||
// @Router /api/access-logs/cleanup [post]
|
// @Router /api/access-logs/cleanup [post]
|
||||||
func CleanupAccessLogs(c *gin.Context) {
|
func CleanupAccessLogs(c *gin.Context) {
|
||||||
var input service.AccessLogCleanupInput
|
var input service.AccessLogCleanupInput
|
||||||
if err := c.ShouldBindJSON(&input); err != nil {
|
if !bindJSON(c, &input) {
|
||||||
c.JSON(http.StatusBadRequest, gin.H{
|
|
||||||
"success": false,
|
|
||||||
"message": "参数错误",
|
|
||||||
"error": err.Error(),
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
result, err := service.CleanupAccessLogs(input)
|
result, err := service.CleanupAccessLogs(input)
|
||||||
|
|||||||
@@ -26,8 +26,7 @@ import (
|
|||||||
// @Router /api/agent/nodes/register [post]
|
// @Router /api/agent/nodes/register [post]
|
||||||
func AgentRegister(c *gin.Context) {
|
func AgentRegister(c *gin.Context) {
|
||||||
var payload service.AgentNodePayload
|
var payload service.AgentNodePayload
|
||||||
if err := decodeJSONBody(c.Request.Body, &payload); err != nil {
|
if !bindJSON(c, &payload) {
|
||||||
respondBadRequest(c, "")
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
payload.IP = service.ResolveReportedNodeIP(payload.IP, c.Request.RemoteAddr)
|
payload.IP = service.ResolveReportedNodeIP(payload.IP, c.Request.RemoteAddr)
|
||||||
@@ -60,8 +59,7 @@ func AgentRegister(c *gin.Context) {
|
|||||||
// @Router /api/agent/nodes/heartbeat [post]
|
// @Router /api/agent/nodes/heartbeat [post]
|
||||||
func AgentHeartbeat(c *gin.Context) {
|
func AgentHeartbeat(c *gin.Context) {
|
||||||
var payload service.AgentNodePayload
|
var payload service.AgentNodePayload
|
||||||
if err := decodeJSONBody(c.Request.Body, &payload); err != nil {
|
if !bindJSON(c, &payload) {
|
||||||
respondBadRequest(c, "")
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
payload.IP = service.ResolveReportedNodeIP(payload.IP, c.Request.RemoteAddr)
|
payload.IP = service.ResolveReportedNodeIP(payload.IP, c.Request.RemoteAddr)
|
||||||
@@ -111,8 +109,7 @@ func AgentGetActiveConfig(c *gin.Context) {
|
|||||||
// @Router /api/agent/apply-logs [post]
|
// @Router /api/agent/apply-logs [post]
|
||||||
func AgentReportApplyLog(c *gin.Context) {
|
func AgentReportApplyLog(c *gin.Context) {
|
||||||
var payload service.ApplyLogPayload
|
var payload service.ApplyLogPayload
|
||||||
if err := decodeJSONBody(c.Request.Body, &payload); err != nil {
|
if !bindJSON(c, &payload) {
|
||||||
respondBadRequest(c, "")
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -301,8 +298,7 @@ func GetApplyLogs(c *gin.Context) {
|
|||||||
// @Router /api/apply-logs/cleanup [post]
|
// @Router /api/apply-logs/cleanup [post]
|
||||||
func CleanupApplyLogs(c *gin.Context) {
|
func CleanupApplyLogs(c *gin.Context) {
|
||||||
var input service.ApplyLogCleanupInput
|
var input service.ApplyLogCleanupInput
|
||||||
if err := c.ShouldBindJSON(&input); err != nil {
|
if !bindJSON(c, &input) {
|
||||||
respondBadRequest(c, "")
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
result, err := service.CleanupApplyLogs(input)
|
result, err := service.CleanupApplyLogs(input)
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
package controller
|
package controller
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
|
||||||
"openflare/service"
|
"openflare/service"
|
||||||
"strconv"
|
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
)
|
)
|
||||||
@@ -18,17 +16,10 @@ import (
|
|||||||
func GetConfigVersions(c *gin.Context) {
|
func GetConfigVersions(c *gin.Context) {
|
||||||
versions, err := service.ListConfigVersions()
|
versions, err := service.ListConfigVersions()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondFailure(c, err.Error())
|
||||||
"success": false,
|
|
||||||
"message": err.Error(),
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondSuccess(c, versions)
|
||||||
"success": true,
|
|
||||||
"message": "",
|
|
||||||
"data": versions,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetConfigVersion godoc
|
// GetConfigVersion godoc
|
||||||
@@ -41,27 +32,16 @@ func GetConfigVersions(c *gin.Context) {
|
|||||||
// @Failure 400 {object} map[string]interface{}
|
// @Failure 400 {object} map[string]interface{}
|
||||||
// @Router /api/config-versions/{id} [get]
|
// @Router /api/config-versions/{id} [get]
|
||||||
func GetConfigVersion(c *gin.Context) {
|
func GetConfigVersion(c *gin.Context) {
|
||||||
id, err := strconv.ParseUint(c.Param("id"), 10, 64)
|
id, ok := parseIDParam(c)
|
||||||
if err != nil || id == 0 {
|
if !ok {
|
||||||
c.JSON(http.StatusBadRequest, gin.H{
|
|
||||||
"success": false,
|
|
||||||
"message": "invalid id",
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
version, err := service.GetConfigVersionDetail(uint(id))
|
version, err := service.GetConfigVersionDetail(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondFailure(c, err.Error())
|
||||||
"success": false,
|
|
||||||
"message": err.Error(),
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondSuccess(c, version)
|
||||||
"success": true,
|
|
||||||
"message": "",
|
|
||||||
"data": version,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetActiveConfigVersion godoc
|
// GetActiveConfigVersion godoc
|
||||||
@@ -74,17 +54,10 @@ func GetConfigVersion(c *gin.Context) {
|
|||||||
func GetActiveConfigVersion(c *gin.Context) {
|
func GetActiveConfigVersion(c *gin.Context) {
|
||||||
version, err := service.GetActiveConfigVersion()
|
version, err := service.GetActiveConfigVersion()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondFailure(c, "当前没有激活版本")
|
||||||
"success": false,
|
|
||||||
"message": "当前没有激活版本",
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondSuccess(c, version)
|
||||||
"success": true,
|
|
||||||
"message": "",
|
|
||||||
"data": version,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PreviewConfigVersion godoc
|
// PreviewConfigVersion godoc
|
||||||
@@ -97,17 +70,10 @@ func GetActiveConfigVersion(c *gin.Context) {
|
|||||||
func PreviewConfigVersion(c *gin.Context) {
|
func PreviewConfigVersion(c *gin.Context) {
|
||||||
preview, err := service.PreviewConfigVersion()
|
preview, err := service.PreviewConfigVersion()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondFailure(c, err.Error())
|
||||||
"success": false,
|
|
||||||
"message": err.Error(),
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondSuccess(c, preview)
|
||||||
"success": true,
|
|
||||||
"message": "",
|
|
||||||
"data": preview,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DiffConfigVersion godoc
|
// DiffConfigVersion godoc
|
||||||
@@ -120,17 +86,10 @@ func PreviewConfigVersion(c *gin.Context) {
|
|||||||
func DiffConfigVersion(c *gin.Context) {
|
func DiffConfigVersion(c *gin.Context) {
|
||||||
diff, err := service.DiffConfigVersion()
|
diff, err := service.DiffConfigVersion()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondFailure(c, err.Error())
|
||||||
"success": false,
|
|
||||||
"message": err.Error(),
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondSuccess(c, diff)
|
||||||
"success": true,
|
|
||||||
"message": "",
|
|
||||||
"data": diff,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PublishConfigVersion godoc
|
// PublishConfigVersion godoc
|
||||||
@@ -145,17 +104,10 @@ func PublishConfigVersion(c *gin.Context) {
|
|||||||
force := c.Query("force") == "true"
|
force := c.Query("force") == "true"
|
||||||
result, err := service.PublishConfigVersion(username, force)
|
result, err := service.PublishConfigVersion(username, force)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondFailure(c, err.Error())
|
||||||
"success": false,
|
|
||||||
"message": err.Error(),
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondSuccess(c, result.Version)
|
||||||
"success": true,
|
|
||||||
"message": "",
|
|
||||||
"data": result.Version,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ActivateConfigVersion godoc
|
// ActivateConfigVersion godoc
|
||||||
@@ -168,27 +120,16 @@ func PublishConfigVersion(c *gin.Context) {
|
|||||||
// @Failure 400 {object} map[string]interface{}
|
// @Failure 400 {object} map[string]interface{}
|
||||||
// @Router /api/config-versions/{id}/activate [post]
|
// @Router /api/config-versions/{id}/activate [post]
|
||||||
func ActivateConfigVersion(c *gin.Context) {
|
func ActivateConfigVersion(c *gin.Context) {
|
||||||
id, err := strconv.ParseUint(c.Param("id"), 10, 64)
|
id, ok := parseIDParam(c)
|
||||||
if err != nil || id == 0 {
|
if !ok {
|
||||||
c.JSON(http.StatusBadRequest, gin.H{
|
|
||||||
"success": false,
|
|
||||||
"message": "invalid id",
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
version, err := service.ActivateConfigVersion(uint(id))
|
version, err := service.ActivateConfigVersion(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondFailure(c, err.Error())
|
||||||
"success": false,
|
|
||||||
"message": err.Error(),
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondSuccess(c, version)
|
||||||
"success": true,
|
|
||||||
"message": "",
|
|
||||||
"data": version,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type CleanupConfigVersionRequest struct {
|
type CleanupConfigVersionRequest struct {
|
||||||
@@ -206,26 +147,17 @@ type CleanupConfigVersionRequest struct {
|
|||||||
// @Router /api/config-versions/cleanup [post]
|
// @Router /api/config-versions/cleanup [post]
|
||||||
func CleanupConfigVersions(c *gin.Context) {
|
func CleanupConfigVersions(c *gin.Context) {
|
||||||
var req CleanupConfigVersionRequest
|
var req CleanupConfigVersionRequest
|
||||||
if err := c.ShouldBindJSON(&req); err != nil {
|
if !bindJSON(c, &req) {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
|
||||||
"success": false,
|
|
||||||
"message": "参数错误",
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
deletedCount, err := service.CleanupConfigVersions(req.KeepCount)
|
deletedCount, err := service.CleanupConfigVersions(req.KeepCount)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondFailure(c, err.Error())
|
||||||
"success": false,
|
|
||||||
"message": err.Error(),
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondSuccessWithExtras(c, map[string]interface{}{"deleted_count": deletedCount}, gin.H{
|
||||||
"success": true,
|
|
||||||
"message": "清理成功",
|
"message": "清理成功",
|
||||||
"data": map[string]interface{}{"deleted_count": deletedCount},
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
package controller
|
package controller
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"io"
|
|
||||||
"net/http"
|
|
||||||
"openflare/service"
|
"openflare/service"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
@@ -24,23 +21,16 @@ type serverUpgradeRequest struct {
|
|||||||
// @Summary Get latest GitHub release
|
// @Summary Get latest GitHub release
|
||||||
// @Tags Update
|
// @Tags Update
|
||||||
// @Produce json
|
// @Produce json
|
||||||
|
// @Security BearerAuth
|
||||||
// @Success 200 {object} map[string]interface{}
|
// @Success 200 {object} map[string]interface{}
|
||||||
// @Router /api/update/latest-release [get]
|
// @Router /api/update/latest-release [get]
|
||||||
func GetLatestRelease(c *gin.Context) {
|
func GetLatestRelease(c *gin.Context) {
|
||||||
release, err := service.GetLatestServerRelease(c.Request.Context(), c.Query("channel"))
|
release, err := service.GetLatestServerRelease(c.Request.Context(), c.Query("channel"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondFailure(c, err.Error())
|
||||||
"success": false,
|
|
||||||
"message": err.Error(),
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
respondSuccess(c, release)
|
||||||
c.JSON(http.StatusOK, gin.H{
|
|
||||||
"success": true,
|
|
||||||
"message": "",
|
|
||||||
"data": release,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpgradeServer godoc
|
// UpgradeServer godoc
|
||||||
@@ -52,27 +42,19 @@ func GetLatestRelease(c *gin.Context) {
|
|||||||
func UpgradeServer(c *gin.Context) {
|
func UpgradeServer(c *gin.Context) {
|
||||||
var request serverUpgradeRequest
|
var request serverUpgradeRequest
|
||||||
if c.Request.ContentLength > 0 {
|
if c.Request.ContentLength > 0 {
|
||||||
if err := c.ShouldBindJSON(&request); err != nil && !errors.Is(err, io.EOF) {
|
if err := decodeOptionalJSONBody(c.Request.Body, &request); err != nil {
|
||||||
c.JSON(http.StatusBadRequest, gin.H{
|
respondBadRequest(c, "无效的参数")
|
||||||
"success": false,
|
|
||||||
"message": "无效的参数",
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
release, err := service.ScheduleServerUpgrade(request.Channel)
|
release, err := service.ScheduleServerUpgrade(request.Channel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondFailure(c, err.Error())
|
||||||
"success": false,
|
|
||||||
"message": err.Error(),
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondSuccessWithExtras(c, release, gin.H{
|
||||||
"success": true,
|
|
||||||
"message": "服务升级任务已启动,下载完成后将自动重启。",
|
"message": "服务升级任务已启动,下载完成后将自动重启。",
|
||||||
"data": release,
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,19 +104,13 @@ func StreamServerUpgradeLogs(c *gin.Context) {
|
|||||||
func UploadManualServerBinary(c *gin.Context) {
|
func UploadManualServerBinary(c *gin.Context) {
|
||||||
fileHeader, err := c.FormFile("binary")
|
fileHeader, err := c.FormFile("binary")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondFailure(c, "请先选择要上传的服务端二进制文件。")
|
||||||
"success": false,
|
|
||||||
"message": "请先选择要上传的服务端二进制文件。",
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
file, err := fileHeader.Open()
|
file, err := fileHeader.Open()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondFailure(c, "读取上传文件失败。")
|
||||||
"success": false,
|
|
||||||
"message": "读取上传文件失败。",
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer func() {
|
defer func() {
|
||||||
@@ -143,10 +119,7 @@ func UploadManualServerBinary(c *gin.Context) {
|
|||||||
|
|
||||||
info, err := service.UploadManualServerBinary(c.Request.Context(), fileHeader.Filename, file)
|
info, err := service.UploadManualServerBinary(c.Request.Context(), fileHeader.Filename, file)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondFailure(c, err.Error())
|
||||||
"success": false,
|
|
||||||
"message": err.Error(),
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,10 +128,8 @@ func UploadManualServerBinary(c *gin.Context) {
|
|||||||
message = "已完成上传并检查升级包版本。"
|
message = "已完成上传并检查升级包版本。"
|
||||||
}
|
}
|
||||||
|
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondSuccessWithExtras(c, info, gin.H{
|
||||||
"success": true,
|
|
||||||
"message": message,
|
"message": message,
|
||||||
"data": info,
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -171,26 +142,17 @@ func UploadManualServerBinary(c *gin.Context) {
|
|||||||
// @Router /api/update/manual-upgrade [post]
|
// @Router /api/update/manual-upgrade [post]
|
||||||
func ConfirmManualServerUpgrade(c *gin.Context) {
|
func ConfirmManualServerUpgrade(c *gin.Context) {
|
||||||
var request confirmManualUpgradeRequest
|
var request confirmManualUpgradeRequest
|
||||||
if err := c.ShouldBindJSON(&request); err != nil {
|
if !bindJSON(c, &request) {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
|
||||||
"success": false,
|
|
||||||
"message": "升级确认参数无效。",
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
info, err := service.ConfirmManualServerUpgrade(request.UploadToken)
|
info, err := service.ConfirmManualServerUpgrade(request.UploadToken)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondFailure(c, err.Error())
|
||||||
"success": false,
|
|
||||||
"message": err.Error(),
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
c.JSON(http.StatusOK, gin.H{
|
respondSuccessWithExtras(c, info, gin.H{
|
||||||
"success": true,
|
|
||||||
"message": "服务升级任务已启动,确认无误后将自动重启。",
|
"message": "服务升级任务已启动,确认无误后将自动重启。",
|
||||||
"data": info,
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user