mirror of https://github.com/allinssl/allinssl
138 lines
4.1 KiB
Go
138 lines
4.1 KiB
Go
package route
|
|
|
|
import (
|
|
"ALLinSSL/backend/app/api"
|
|
"ALLinSSL/backend/app/api/monitor"
|
|
"ALLinSSL/backend/public"
|
|
"ALLinSSL/static"
|
|
"github.com/gin-gonic/gin"
|
|
"io/fs"
|
|
"net/http"
|
|
"strings"
|
|
)
|
|
|
|
func Register(r *gin.Engine) {
|
|
v1 := r.Group("/v1")
|
|
|
|
login := v1.Group("/login")
|
|
{
|
|
login.POST("/sign", api.Sign)
|
|
login.POST("/sign-out", api.SignOut)
|
|
login.GET("/get_code", api.GetCode)
|
|
}
|
|
|
|
_monitor := v1.Group("/monitor")
|
|
{
|
|
_monitor.POST("/get_list", monitor.GetMonitorList)
|
|
_monitor.POST("/add_monitor", monitor.AddMonitor)
|
|
_monitor.POST("/upd_monitor", monitor.UpdMonitor)
|
|
_monitor.POST("/del_monitor", monitor.DelMonitor)
|
|
_monitor.POST("/set_monitor", monitor.SetMonitor)
|
|
_monitor.POST("/get_monitor_info", monitor.GetMonitorInfo)
|
|
_monitor.POST("/get_err_record", monitor.GetErrRecord)
|
|
_monitor.POST("/file_add_monitor", monitor.FileAddMonitor)
|
|
_monitor.GET("/template", monitor.GetTemplate)
|
|
}
|
|
|
|
workflow := v1.Group("/workflow")
|
|
{
|
|
workflow.POST("/get_list", api.GetWorkflowList)
|
|
workflow.POST("/add_workflow", api.AddWorkflow)
|
|
workflow.POST("/del_workflow", api.DelWorkflow)
|
|
workflow.POST("/upd_workflow", api.UpdWorkflow)
|
|
workflow.POST("/exec_type", api.UpdExecType)
|
|
workflow.POST("/active", api.UpdActive)
|
|
workflow.POST("/execute_workflow", api.ExecuteWorkflow)
|
|
workflow.POST("/get_workflow_history", api.GetWorkflowHistory)
|
|
workflow.POST("/get_exec_log", api.GetExecLog)
|
|
workflow.POST("/stop", api.StopWorkflow)
|
|
}
|
|
access := v1.Group("/access")
|
|
{
|
|
access.POST("/get_list", api.GetAccessList)
|
|
access.POST("/add_access", api.AddAccess)
|
|
access.POST("/del_access", api.DelAccess)
|
|
access.POST("/upd_access", api.UpdateAccess)
|
|
access.POST("/get_all", api.GetAllAccess)
|
|
access.POST("/test_access", api.TestAccess)
|
|
access.POST("/get_sites", api.GetSiteList)
|
|
|
|
access.POST("/get_eab_list", api.GetEABList)
|
|
access.POST("/add_eab", api.AddEAB)
|
|
access.POST("/del_eab", api.DelEAB)
|
|
access.POST("/upd_eab", api.UpdEAB)
|
|
access.POST("/get_all_eab", api.GetAllEAB)
|
|
|
|
// 插件先放这里
|
|
access.POST("/get_plugin_actions", api.GetPluginActions)
|
|
access.POST("/get_plugins", api.GetPlugins)
|
|
}
|
|
// acme账户
|
|
acmeAccount := v1.Group("/acme_account")
|
|
{
|
|
acmeAccount.POST("/get_list", api.GetAccountList)
|
|
acmeAccount.POST("/get_ca_list", api.GetCaList)
|
|
acmeAccount.POST("/add_account", api.AddAccount)
|
|
acmeAccount.POST("/del_account", api.DelAccount)
|
|
acmeAccount.POST("/upd_account", api.UpdateAccount)
|
|
}
|
|
cert := v1.Group("/cert")
|
|
{
|
|
cert.POST("/get_list", api.GetCertList)
|
|
cert.POST("/upload_cert", api.UploadCert)
|
|
cert.POST("/del_cert", api.DelCert)
|
|
cert.GET("/download", api.DownloadCert)
|
|
}
|
|
report := v1.Group("/report")
|
|
{
|
|
report.POST("/get_list", api.GetReportList)
|
|
report.POST("/add_report", api.AddReport)
|
|
report.POST("/del_report", api.DelReport)
|
|
report.POST("/upd_report", api.UpdReport)
|
|
report.POST("/notify_test", api.NotifyTest)
|
|
}
|
|
setting := v1.Group("/setting")
|
|
{
|
|
setting.POST("/get_setting", api.GetSetting)
|
|
setting.POST("/save_setting", api.SaveSetting)
|
|
setting.POST("/shutdown", api.Shutdown)
|
|
setting.POST("/restart", api.Restart)
|
|
setting.POST("/get_version", api.GetVersion)
|
|
}
|
|
overview := v1.Group("/overview")
|
|
{
|
|
overview.POST("/get_overviews", api.GetOverview)
|
|
}
|
|
|
|
// 静态资源:/static -> build/static
|
|
staticFS, _ := fs.Sub(static.BuildFS, "build/static")
|
|
r.StaticFS("/static", http.FS(staticFS))
|
|
r.StaticFS("/auto-deploy/static", http.FS(staticFS))
|
|
r.StaticFS("/monitor/static", http.FS(staticFS))
|
|
|
|
// favicon.ico
|
|
r.GET("/favicon.ico", func(c *gin.Context) {
|
|
data, err := static.BuildFS.ReadFile("build/favicon.ico")
|
|
if err != nil {
|
|
c.Status(http.StatusNotFound)
|
|
return
|
|
}
|
|
c.Data(http.StatusOK, "image/x-icon", data)
|
|
})
|
|
|
|
// 其他路由:返回 index.html
|
|
r.NoRoute(func(c *gin.Context) {
|
|
// 如果是 API 请求,返回 JSON 的 404
|
|
if strings.HasPrefix(c.Request.URL.Path, "/v1/") {
|
|
public.FailMsg(c, "请求的资源不存在")
|
|
return
|
|
}
|
|
data, err := static.BuildFS.ReadFile("build/index.html")
|
|
if err != nil {
|
|
c.String(http.StatusInternalServerError, "页面加载失败")
|
|
return
|
|
}
|
|
c.Data(http.StatusOK, "text/html; charset=utf-8", data)
|
|
})
|
|
}
|