mirror of
https://github.com/Li4n0/revsuit.git
synced 2026-09-27 00:51:55 +08:00
feat(platform): support custom admin path prefix (#25)
This commit is contained in:
Vendored
+1
-1
@@ -1 +1 @@
|
|||||||
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>RevSuit Control Panel</title><link href="css/chunk-016c45cf.css" rel="prefetch"><link href="css/chunk-0cb5e9e6.css" rel="prefetch"><link href="css/chunk-1da7f23b.css" rel="prefetch"><link href="css/chunk-247d6284.css" rel="prefetch"><link href="css/chunk-330a7e95.css" rel="prefetch"><link href="css/chunk-3d13e56e.css" rel="prefetch"><link href="css/chunk-43748c28.css" rel="prefetch"><link href="css/chunk-49fbda44.css" rel="prefetch"><link href="css/chunk-e039e75a.css" rel="prefetch"><link href="css/chunk-fef965c2.css" rel="prefetch"><link href="js/chunk-016c45cf.js" rel="prefetch"><link href="js/chunk-08f9fbe8.js" rel="prefetch"><link href="js/chunk-0cb5e9e6.js" rel="prefetch"><link href="js/chunk-1da7f23b.js" rel="prefetch"><link href="js/chunk-247d6284.js" rel="prefetch"><link href="js/chunk-330a7e95.js" rel="prefetch"><link href="js/chunk-3d13e56e.js" rel="prefetch"><link href="js/chunk-43748c28.js" rel="prefetch"><link href="js/chunk-49fbda44.js" rel="prefetch"><link href="js/chunk-b241c712.js" rel="prefetch"><link href="js/chunk-e039e75a.js" rel="prefetch"><link href="js/chunk-fef965c2.js" rel="prefetch"><link href="css/app.css" rel="preload" as="style"><link href="css/chunk-vendors.css" rel="preload" as="style"><link href="js/app.js" rel="preload" as="script"><link href="js/chunk-vendors.js" rel="preload" as="script"><link href="css/chunk-vendors.css" rel="stylesheet"><link href="css/app.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but revsuit-frontend doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.js"></script><script src="js/app.js"></script></body></html>
|
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>RevSuit Control Panel</title><link href="css/chunk-016c45cf.css" rel="prefetch"><link href="css/chunk-0cb5e9e6.css" rel="prefetch"><link href="css/chunk-193ec343.css" rel="prefetch"><link href="css/chunk-36508a38.css" rel="prefetch"><link href="css/chunk-43748c28.css" rel="prefetch"><link href="css/chunk-46a53d26.css" rel="prefetch"><link href="css/chunk-49fbda44.css" rel="prefetch"><link href="css/chunk-5fb70d83.css" rel="prefetch"><link href="css/chunk-72839f90.css" rel="prefetch"><link href="css/chunk-740736c7.css" rel="prefetch"><link href="js/chunk-016c45cf.js" rel="prefetch"><link href="js/chunk-0cb5e9e6.js" rel="prefetch"><link href="js/chunk-193ec343.js" rel="prefetch"><link href="js/chunk-27186dd0.js" rel="prefetch"><link href="js/chunk-36508a38.js" rel="prefetch"><link href="js/chunk-43748c28.js" rel="prefetch"><link href="js/chunk-46a53d26.js" rel="prefetch"><link href="js/chunk-49fbda44.js" rel="prefetch"><link href="js/chunk-5fb70d83.js" rel="prefetch"><link href="js/chunk-72839f90.js" rel="prefetch"><link href="js/chunk-740736c7.js" rel="prefetch"><link href="js/chunk-b241c712.js" rel="prefetch"><link href="css/app.css" rel="preload" as="style"><link href="css/chunk-vendors.css" rel="preload" as="style"><link href="js/app.js" rel="preload" as="script"><link href="js/chunk-vendors.js" rel="preload" as="script"><link href="css/chunk-vendors.css" rel="stylesheet"><link href="css/app.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but revsuit-frontend doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.js"></script><script src="js/app.js"></script></body></html>
|
||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
-1
File diff suppressed because one or more lines are too long
Vendored
+1
File diff suppressed because one or more lines are too long
Vendored
-1
File diff suppressed because one or more lines are too long
Vendored
+1
File diff suppressed because one or more lines are too long
Vendored
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Vendored
-1
File diff suppressed because one or more lines are too long
Vendored
+1
File diff suppressed because one or more lines are too long
Vendored
+1
File diff suppressed because one or more lines are too long
Vendored
+1
File diff suppressed because one or more lines are too long
Vendored
+1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
-1
File diff suppressed because one or more lines are too long
Vendored
-1
File diff suppressed because one or more lines are too long
Vendored
+4
-4
File diff suppressed because one or more lines are too long
@@ -2,7 +2,7 @@ import axios from 'axios'
|
|||||||
import {store} from "@/main";
|
import {store} from "@/main";
|
||||||
|
|
||||||
const service = axios.create({
|
const service = axios.create({
|
||||||
baseURL: '/revsuit/api/', // api的base_url
|
baseURL: location.pathname.slice(0, -'/admin/'.length) + "/api", // api的base_url
|
||||||
timeout: 5000, // request timeout
|
timeout: 5000, // request timeout
|
||||||
validateStatus: function (status) {
|
validateStatus: function (status) {
|
||||||
if (status === 403) {
|
if (status === 403) {
|
||||||
|
|||||||
@@ -17,7 +17,8 @@
|
|||||||
<a-select-option value='error'>ERROR</a-select-option>
|
<a-select-option value='error'>ERROR</a-select-option>
|
||||||
<a-select-option value='fatal'>FATAL</a-select-option>
|
<a-select-option value='fatal'>FATAL</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
<a-input :disabled="key ==='Addr' && parent==='Http'" v-else v-model="form[key]"/>
|
<a-input :disabled="(key ==='Addr'||key==='AdminPathPrefix') && parent==='Http'" v-else
|
||||||
|
v-model="form[key]"/>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ module.exports = {
|
|||||||
'/api': {
|
'/api': {
|
||||||
target: 'http://localhost:10000',
|
target: 'http://localhost:10000',
|
||||||
pathRewrite: {
|
pathRewrite: {
|
||||||
'^/revsuit/api': '/revsuit/api'
|
'^/api': '/revsuit/api'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
version: 1.1
|
version: 1.2
|
||||||
addr: :10000
|
addr: :10000
|
||||||
token:
|
token:
|
||||||
domain:
|
domain:
|
||||||
external_ip: # You need to make sure that your target can access the server through this ip.
|
external_ip: # You need to make sure that your target can access the server through this ip.
|
||||||
|
admin_path_prefix: "/revsuit"
|
||||||
database: revsuit.db
|
database: revsuit.db
|
||||||
log_level: info
|
log_level: info
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ type Config struct {
|
|||||||
Token string
|
Token string
|
||||||
Domain string
|
Domain string
|
||||||
ExternalIP string `yaml:"external_ip"`
|
ExternalIP string `yaml:"external_ip"`
|
||||||
|
AdminPathPrefix string `yaml:"admin_path_prefix"`
|
||||||
Database string
|
Database string
|
||||||
LogLevel string `yaml:"log_level"`
|
LogLevel string `yaml:"log_level"`
|
||||||
Notice noticeConfig
|
Notice noticeConfig
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ import (
|
|||||||
log "unknwon.dev/clog/v2"
|
log "unknwon.dev/clog/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
func auth(c *gin.Context) {
|
func (revsuit *Revsuit) auth(c *gin.Context) {
|
||||||
c.SetSameSite(http.SameSiteLaxMode)
|
c.SetSameSite(http.SameSiteLaxMode)
|
||||||
c.SetCookie("token", c.Request.Header["Token"][0], 0, "/revsuit/api/", "", false, true)
|
c.SetCookie("token", c.Request.Header["Token"][0], 0, revsuit.config.AdminPathPrefix, "", false, true)
|
||||||
c.String(200, "pong")
|
c.String(200, "pong")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package server
|
|||||||
import (
|
import (
|
||||||
"io/fs"
|
"io/fs"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"path"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/li4n0/revsuit/frontend"
|
"github.com/li4n0/revsuit/frontend"
|
||||||
@@ -28,7 +29,7 @@ func (revsuit *Revsuit) registerRouter() {
|
|||||||
|
|
||||||
func (revsuit *Revsuit) registerPlatformRouter() {
|
func (revsuit *Revsuit) registerPlatformRouter() {
|
||||||
// /api need Authorization
|
// /api need Authorization
|
||||||
api := revsuit.http.Router.Group("/revsuit/api")
|
api := revsuit.http.Router.Group(revsuit.config.AdminPathPrefix + "/api")
|
||||||
api.Use(func(c *gin.Context) {
|
api.Use(func(c *gin.Context) {
|
||||||
cookieToken, err := c.Request.Cookie("token")
|
cookieToken, err := c.Request.Cookie("token")
|
||||||
if !(c.Request.Header.Get("Token") == revsuit.http.Token || err == nil && cookieToken.Value == revsuit.http.Token) {
|
if !(c.Request.Header.Get("Token") == revsuit.http.Token || err == nil && cookieToken.Value == revsuit.http.Token) {
|
||||||
@@ -39,7 +40,7 @@ func (revsuit *Revsuit) registerPlatformRouter() {
|
|||||||
revsuit.http.ApiGroup = api
|
revsuit.http.ApiGroup = api
|
||||||
|
|
||||||
//platform routers
|
//platform routers
|
||||||
api.GET("/auth", auth)
|
api.GET("/auth", revsuit.auth)
|
||||||
api.GET("/events", revsuit.events)
|
api.GET("/events", revsuit.events)
|
||||||
api.GET("/ping", ping)
|
api.GET("/ping", ping)
|
||||||
api.GET("/version", version)
|
api.GET("/version", version)
|
||||||
@@ -53,7 +54,7 @@ func (revsuit *Revsuit) registerHttpRouter() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Failed to sub path `dist`: %v", err)
|
log.Fatal("Failed to sub path `dist`: %v", err)
|
||||||
}
|
}
|
||||||
revsuit.http.Router.StaticFS("/revsuit/admin", http.FS(fe))
|
revsuit.http.Router.StaticFS(path.Clean(revsuit.config.AdminPathPrefix+"/admin"), http.FS(fe))
|
||||||
|
|
||||||
// init settings router group
|
// init settings router group
|
||||||
settingsGroup := revsuit.http.ApiGroup.Group("setting")
|
settingsGroup := revsuit.http.ApiGroup.Group("setting")
|
||||||
|
|||||||
@@ -153,6 +153,7 @@ func (revsuit *Revsuit) getPlatformConfig(c *gin.Context) {
|
|||||||
res["Addr"] = revsuit.config.Addr
|
res["Addr"] = revsuit.config.Addr
|
||||||
res["Token"] = revsuit.config.Token
|
res["Token"] = revsuit.config.Token
|
||||||
res["Domain"] = revsuit.config.Domain
|
res["Domain"] = revsuit.config.Domain
|
||||||
|
res["AdminPathPrefix"] = revsuit.config.AdminPathPrefix
|
||||||
res["ExternalIP"] = revsuit.config.ExternalIP
|
res["ExternalIP"] = revsuit.config.ExternalIP
|
||||||
res["Database"] = revsuit.config.Database
|
res["Database"] = revsuit.config.Database
|
||||||
res["LogLevel"] = revsuit.config.LogLevel
|
res["LogLevel"] = revsuit.config.LogLevel
|
||||||
|
|||||||
Reference in New Issue
Block a user