mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2025-05-10 18:05:48 +02:00
feat: build with no embedded front-end files
This commit is contained in:
parent
b090564a34
commit
a560d98acf
10 changed files with 91 additions and 35 deletions
|
@ -7,7 +7,7 @@ tmp_dir = "tmp"
|
||||||
|
|
||||||
[build]
|
[build]
|
||||||
# Just plain old shell command. You could use `make` as well.
|
# Just plain old shell command. You could use `make` as well.
|
||||||
cmd = "CGO_ENABLED=1 go build -tags=jsoniter -ldflags=\"-X 'github.com/0xJacky/Nginx-UI/settings.buildTime=$(date +%s)'\" -v -o ./tmp/main ."
|
cmd = "CGO_ENABLED=1 go build -tags=jsoniter,unembed -ldflags=\"-X 'github.com/0xJacky/Nginx-UI/settings.buildTime=$(date +%s)'\" -v -o ./tmp/main ."
|
||||||
# Binary file yields from `cmd`.
|
# Binary file yields from `cmd`.
|
||||||
bin = "tmp/main"
|
bin = "tmp/main"
|
||||||
# Customize binary.
|
# Customize binary.
|
||||||
|
|
10
.idea/nginx-ui.iml
generated
10
.idea/nginx-ui.iml
generated
|
@ -1,6 +1,14 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<module type="WEB_MODULE" version="4">
|
<module type="WEB_MODULE" version="4">
|
||||||
<component name="Go" enabled="true" />
|
<component name="Go" enabled="true">
|
||||||
|
<buildTags>
|
||||||
|
<option name="customFlags">
|
||||||
|
<array>
|
||||||
|
<option value="unembed" />
|
||||||
|
</array>
|
||||||
|
</option>
|
||||||
|
</buildTags>
|
||||||
|
</component>
|
||||||
<component name="NewModuleRootManager">
|
<component name="NewModuleRootManager">
|
||||||
<content url="file://$MODULE_DIR$" />
|
<content url="file://$MODULE_DIR$" />
|
||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="inheritedJdk" />
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
//go:build !unembed
|
||||||
|
|
||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -6,3 +8,5 @@ import (
|
||||||
|
|
||||||
//go:embed i18n.json dist/* dist/*/* src/language/* src/language/*/*
|
//go:embed i18n.json dist/* dist/*/* src/language/* src/language/*/*
|
||||||
var DistFS embed.FS
|
var DistFS embed.FS
|
||||||
|
|
||||||
|
var VersionPath = "dist/version.json"
|
||||||
|
|
10
app/app_unembed.go
Normal file
10
app/app_unembed.go
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
//go:build unembed
|
||||||
|
|
||||||
|
package app
|
||||||
|
|
||||||
|
import "embed"
|
||||||
|
|
||||||
|
//go:embed i18n.json src/language/* src/language/*/* src/version.json
|
||||||
|
var DistFS embed.FS
|
||||||
|
|
||||||
|
var VersionPath = "src/version.json"
|
29
internal/middleware/embed.go
Normal file
29
internal/middleware/embed.go
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
//go:build !unembed
|
||||||
|
|
||||||
|
package middleware
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io/fs"
|
||||||
|
"net/http"
|
||||||
|
"path"
|
||||||
|
|
||||||
|
"github.com/0xJacky/Nginx-UI/app"
|
||||||
|
"github.com/gin-contrib/static"
|
||||||
|
"github.com/uozi-tech/cosy/logger"
|
||||||
|
)
|
||||||
|
|
||||||
|
func MustFs(dir string) (serverFileSystem static.ServeFileSystem) {
|
||||||
|
|
||||||
|
sub, err := fs.Sub(app.DistFS, path.Join("dist", dir))
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
logger.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
serverFileSystem = ServerFileSystemType{
|
||||||
|
http.FS(sub),
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
|
@ -2,16 +2,14 @@ package middleware
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"github.com/0xJacky/Nginx-UI/app"
|
|
||||||
"github.com/0xJacky/Nginx-UI/internal/user"
|
|
||||||
"github.com/0xJacky/Nginx-UI/settings"
|
|
||||||
"github.com/gin-contrib/static"
|
|
||||||
"github.com/gin-gonic/gin"
|
|
||||||
"github.com/uozi-tech/cosy/logger"
|
|
||||||
"io/fs"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/0xJacky/Nginx-UI/internal/user"
|
||||||
|
"github.com/0xJacky/Nginx-UI/settings"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"github.com/uozi-tech/cosy/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
func AuthRequired() gin.HandlerFunc {
|
func AuthRequired() gin.HandlerFunc {
|
||||||
|
@ -72,22 +70,6 @@ func (f ServerFileSystemType) Exists(prefix string, _path string) bool {
|
||||||
return err == nil
|
return err == nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func MustFs(dir string) (serverFileSystem static.ServeFileSystem) {
|
|
||||||
|
|
||||||
sub, err := fs.Sub(app.DistFS, path.Join("dist", dir))
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logger.Error(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
serverFileSystem = ServerFileSystemType{
|
|
||||||
http.FS(sub),
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func CacheJs() gin.HandlerFunc {
|
func CacheJs() gin.HandlerFunc {
|
||||||
return func(c *gin.Context) {
|
return func(c *gin.Context) {
|
||||||
if strings.Contains(c.Request.URL.String(), "js") {
|
if strings.Contains(c.Request.URL.String(), "js") {
|
||||||
|
|
|
@ -2,11 +2,12 @@ package upgrader
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"github.com/0xJacky/Nginx-UI/app"
|
|
||||||
"github.com/pkg/errors"
|
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
|
||||||
|
"github.com/0xJacky/Nginx-UI/app"
|
||||||
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
type RuntimeInfo struct {
|
type RuntimeInfo struct {
|
||||||
|
@ -43,7 +44,7 @@ func GetRuntimeInfo() (r RuntimeInfo, err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetCurrentVersion() (c CurVersion, err error) {
|
func GetCurrentVersion() (c CurVersion, err error) {
|
||||||
verJson, err := app.DistFS.ReadFile("dist/version.json")
|
verJson, err := app.DistFS.ReadFile(app.VersionPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = errors.Wrap(err, "service.GetCurrentVersion ReadFile err")
|
err = errors.Wrap(err, "service.GetCurrentVersion ReadFile err")
|
||||||
return
|
return
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package router
|
package router
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
"github.com/0xJacky/Nginx-UI/api/analytic"
|
"github.com/0xJacky/Nginx-UI/api/analytic"
|
||||||
"github.com/0xJacky/Nginx-UI/api/certificate"
|
"github.com/0xJacky/Nginx-UI/api/certificate"
|
||||||
"github.com/0xJacky/Nginx-UI/api/cluster"
|
"github.com/0xJacky/Nginx-UI/api/cluster"
|
||||||
|
@ -19,19 +21,14 @@ import (
|
||||||
"github.com/0xJacky/Nginx-UI/api/upstream"
|
"github.com/0xJacky/Nginx-UI/api/upstream"
|
||||||
"github.com/0xJacky/Nginx-UI/api/user"
|
"github.com/0xJacky/Nginx-UI/api/user"
|
||||||
"github.com/0xJacky/Nginx-UI/internal/middleware"
|
"github.com/0xJacky/Nginx-UI/internal/middleware"
|
||||||
"github.com/gin-contrib/static"
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/uozi-tech/cosy"
|
"github.com/uozi-tech/cosy"
|
||||||
"net/http"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func InitRouter() {
|
func InitRouter() {
|
||||||
r := cosy.GetEngine()
|
r := cosy.GetEngine()
|
||||||
r.Use(
|
|
||||||
middleware.CacheJs(),
|
initEmbedRoute(r)
|
||||||
middleware.IPWhiteList(),
|
|
||||||
static.Serve("/", middleware.MustFs("")),
|
|
||||||
)
|
|
||||||
|
|
||||||
r.NoRoute(func(c *gin.Context) {
|
r.NoRoute(func(c *gin.Context) {
|
||||||
c.JSON(http.StatusNotFound, gin.H{
|
c.JSON(http.StatusNotFound, gin.H{
|
||||||
|
|
17
router/routers_embed.go
Normal file
17
router/routers_embed.go
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
//go:build !unembed
|
||||||
|
|
||||||
|
package router
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/0xJacky/Nginx-UI/internal/middleware"
|
||||||
|
"github.com/gin-contrib/static"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
|
func initEmbedRoute(r *gin.Engine) {
|
||||||
|
r.Use(
|
||||||
|
middleware.CacheJs(),
|
||||||
|
middleware.IPWhiteList(),
|
||||||
|
static.Serve("/", middleware.MustFs("")),
|
||||||
|
)
|
||||||
|
}
|
8
router/routers_unembed.go
Normal file
8
router/routers_unembed.go
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
//go:build unembed
|
||||||
|
|
||||||
|
package router
|
||||||
|
|
||||||
|
import "github.com/gin-gonic/gin"
|
||||||
|
|
||||||
|
func initEmbedRoute(r *gin.Engine) {
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue