refactor: project directory structure

This commit is contained in:
0xJacky 2023-11-26 18:59:12 +08:00
parent c1193a5b8c
commit e5a5889931
No known key found for this signature in database
GPG key ID: B6E4A6E4A561BAF0
367 changed files with 710 additions and 756 deletions

View file

@ -1,4 +1,4 @@
.git
frontend/node_modules
app/node_modules
.idea
tmp

View file

@ -2,8 +2,8 @@ package api
import (
"fmt"
"github.com/0xJacky/Nginx-UI/server/internal/analytic"
"github.com/0xJacky/Nginx-UI/server/internal/logger"
analytic2 "github.com/0xJacky/Nginx-UI/internal/analytic"
"github.com/0xJacky/Nginx-UI/internal/logger"
"github.com/shirou/gopsutil/v3/cpu"
"github.com/shirou/gopsutil/v3/host"
"github.com/shirou/gopsutil/v3/load"
@ -28,8 +28,8 @@ type Stat struct {
Uptime uint64 `json:"uptime"`
LoadAvg *load.AvgStat `json:"loadavg"`
CPU CPUStat `json:"cpu"`
Memory analytic.MemStat `json:"memory"`
Disk analytic.DiskStat `json:"disk"`
Memory analytic2.MemStat `json:"memory"`
Disk analytic2.DiskStat `json:"disk"`
Network net.IOCountersStat `json:"network"`
}
@ -51,7 +51,7 @@ func Analytic(c *gin.Context) {
var stat Stat
for {
stat.Memory, err = analytic.GetMemoryStat()
stat.Memory, err = analytic2.GetMemoryStat()
if err != nil {
logger.Error(err)
@ -76,7 +76,7 @@ func Analytic(c *gin.Context) {
stat.LoadAvg, _ = load.Avg()
stat.Disk, err = analytic.GetDiskStat()
stat.Disk, err = analytic2.GetDiskStat()
if err != nil {
logger.Error(err)
@ -105,14 +105,14 @@ func Analytic(c *gin.Context) {
func GetAnalyticInit(c *gin.Context) {
cpuInfo, _ := cpu.Info()
network, _ := net.IOCounters(false)
memory, err := analytic.GetMemoryStat()
memory, err := analytic2.GetMemoryStat()
if err != nil {
logger.Error(err)
return
}
diskStat, err := analytic.GetDiskStat()
diskStat, err := analytic2.GetDiskStat()
if err != nil {
logger.Error(err)
@ -138,17 +138,17 @@ func GetAnalyticInit(c *gin.Context) {
"host": hostInfo,
"cpu": gin.H{
"info": cpuInfo,
"user": analytic.CpuUserRecord,
"total": analytic.CpuTotalRecord,
"user": analytic2.CpuUserRecord,
"total": analytic2.CpuTotalRecord,
},
"network": gin.H{
"init": _net,
"bytesRecv": analytic.NetRecvRecord,
"bytesSent": analytic.NetSentRecord,
"bytesRecv": analytic2.NetRecvRecord,
"bytesSent": analytic2.NetSentRecord,
},
"disk_io": gin.H{
"writes": analytic.DiskWriteRecord,
"reads": analytic.DiskReadRecord,
"writes": analytic2.DiskWriteRecord,
"reads": analytic2.DiskReadRecord,
},
"memory": memory,
"disk": diskStat,
@ -173,7 +173,7 @@ func GetNodeStat(c *gin.Context) {
for {
// write
err = ws.WriteJSON(analytic.GetNodeStat())
err = ws.WriteJSON(analytic2.GetNodeStat())
if err != nil || websocket.IsUnexpectedCloseError(err,
websocket.CloseGoingAway,
websocket.CloseNoStatusReceived,
@ -203,7 +203,7 @@ func GetNodesAnalytic(c *gin.Context) {
for {
// write
err = ws.WriteJSON(analytic.NodeMap)
err = ws.WriteJSON(analytic2.NodeMap)
if err != nil || websocket.IsUnexpectedCloseError(err,
websocket.CloseGoingAway,
websocket.CloseNoStatusReceived,

View file

@ -1,7 +1,7 @@
package api
import (
"github.com/0xJacky/Nginx-UI/server/internal/logger"
"github.com/0xJacky/Nginx-UI/internal/logger"
"github.com/gin-gonic/gin"
val "github.com/go-playground/validator/v10"
"net/http"

View file

@ -2,10 +2,10 @@ package api
import (
"fmt"
"github.com/0xJacky/Nginx-UI/model"
"github.com/0xJacky/Nginx-UI/settings"
"net/http"
"github.com/0xJacky/Nginx-UI/server/model"
"github.com/0xJacky/Nginx-UI/server/settings"
"github.com/casdoor/casdoor-go-sdk/casdoorsdk"
"github.com/gin-gonic/gin"
"github.com/pkg/errors"

View file

@ -1,7 +1,7 @@
package api
import (
"github.com/0xJacky/Nginx-UI/server/model"
"github.com/0xJacky/Nginx-UI/model"
"github.com/gin-gonic/gin"
"github.com/unknwon/com"
"net/http"

View file

@ -1,11 +1,11 @@
package api
import (
"github.com/0xJacky/Nginx-UI/server/internal/cert"
"github.com/0xJacky/Nginx-UI/server/internal/cert/dns"
"github.com/0xJacky/Nginx-UI/server/internal/logger"
"github.com/0xJacky/Nginx-UI/server/internal/nginx"
"github.com/0xJacky/Nginx-UI/server/model"
cert2 "github.com/0xJacky/Nginx-UI/internal/cert"
"github.com/0xJacky/Nginx-UI/internal/cert/dns"
"github.com/0xJacky/Nginx-UI/internal/logger"
"github.com/0xJacky/Nginx-UI/internal/nginx"
"github.com/0xJacky/Nginx-UI/model"
"github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
"github.com/spf13/cast"
@ -69,7 +69,7 @@ func IssueCert(c *gin.Context) {
}(ws)
// read
buffer := &cert.ConfigPayload{}
buffer := &cert2.ConfigPayload{}
err = ws.ReadJSON(buffer)
@ -88,13 +88,13 @@ func IssueCert(c *gin.Context) {
logChan := make(chan string, 1)
errChan := make(chan error, 1)
go cert.IssueCert(buffer, logChan, errChan)
go cert2.IssueCert(buffer, logChan, errChan)
go handleIssueCertLogChan(ws, logChan)
// block, until errChan closes
for err = range errChan {
errLog := &cert.AutoCertErrorLog{}
errLog := &cert2.AutoCertErrorLog{}
errLog.SetCertModel(&certModel)
errLog.Exit("issue cert", err)
@ -169,7 +169,7 @@ func getCert(c *gin.Context, certModel *model.Cert) {
sslCertificationBytes, _ = os.ReadFile(certModel.SSLCertificatePath)
}
pubKey, err := cert.GetCertInfo(certModel.SSLCertificatePath)
pubKey, err := cert2.GetCertInfo(certModel.SSLCertificatePath)
if err != nil {
ErrHandler(c, err)

View file

@ -1,10 +1,10 @@
package api
import (
"github.com/0xJacky/Nginx-UI/server/internal/config_list"
"github.com/0xJacky/Nginx-UI/server/internal/logger"
"github.com/0xJacky/Nginx-UI/server/internal/nginx"
"github.com/0xJacky/Nginx-UI/server/query"
"github.com/0xJacky/Nginx-UI/internal/config_list"
"github.com/0xJacky/Nginx-UI/internal/logger"
nginx2 "github.com/0xJacky/Nginx-UI/internal/nginx"
"github.com/0xJacky/Nginx-UI/query"
"github.com/gin-gonic/gin"
"github.com/sashabaranov/go-openai"
"net/http"
@ -22,7 +22,7 @@ func GetConfigs(c *gin.Context) {
"is_dir": "bool",
}
configFiles, err := os.ReadDir(nginx.GetConfPath(dir))
configFiles, err := os.ReadDir(nginx2.GetConfPath(dir))
if err != nil {
ErrHandler(c, err)
@ -42,7 +42,7 @@ func GetConfigs(c *gin.Context) {
}
case mode&os.ModeSymlink != 0: // is a symbol
var targetPath string
targetPath, err = os.Readlink(nginx.GetConfPath(file.Name()))
targetPath, err = os.Readlink(nginx2.GetConfPath(file.Name()))
if err != nil {
logger.Error("Read Symlink Error", targetPath, err)
continue
@ -77,7 +77,7 @@ func GetConfigs(c *gin.Context) {
func GetConfig(c *gin.Context) {
name := c.Param("name")
path := nginx.GetConfPath("/", name)
path := nginx2.GetConfPath("/", name)
stat, err := os.Stat(path)
@ -130,7 +130,7 @@ func AddConfig(c *gin.Context) {
name := request.Name
content := request.Content
path := nginx.GetConfPath("/", name)
path := nginx2.GetConfPath("/", name)
if _, err = os.Stat(path); err == nil {
c.JSON(http.StatusNotAcceptable, gin.H{
@ -147,8 +147,8 @@ func AddConfig(c *gin.Context) {
}
}
output := nginx.Reload()
if nginx.GetLogLevel(output) >= nginx.Warn {
output := nginx2.Reload()
if nginx2.GetLogLevel(output) >= nginx2.Warn {
c.JSON(http.StatusInternalServerError, gin.H{
"message": output,
})
@ -174,7 +174,7 @@ func EditConfig(c *gin.Context) {
ErrHandler(c, err)
return
}
path := nginx.GetConfPath("/", name)
path := nginx2.GetConfPath("/", name)
content := request.Content
origContent, err := os.ReadFile(path)
@ -192,9 +192,9 @@ func EditConfig(c *gin.Context) {
}
}
output := nginx.Reload()
output := nginx2.Reload()
if nginx.GetLogLevel(output) >= nginx.Warn {
if nginx2.GetLogLevel(output) >= nginx2.Warn {
c.JSON(http.StatusInternalServerError, gin.H{
"message": output,
})

130
api/dns_credential.go Normal file
View file

@ -0,0 +1,130 @@
package api
import (
"github.com/0xJacky/Nginx-UI/internal/cert/dns"
model2 "github.com/0xJacky/Nginx-UI/model"
"github.com/0xJacky/Nginx-UI/query"
"github.com/gin-gonic/gin"
"github.com/spf13/cast"
"net/http"
)
func GetDnsCredential(c *gin.Context) {
id := cast.ToInt(c.Param("id"))
d := query.DnsCredential
dnsCredential, err := d.FirstByID(id)
if err != nil {
ErrHandler(c, err)
return
}
type apiDnsCredential struct {
model2.Model
Name string `json:"name"`
dns.Config
}
c.JSON(http.StatusOK, apiDnsCredential{
Model: dnsCredential.Model,
Name: dnsCredential.Name,
Config: *dnsCredential.Config,
})
}
func GetDnsCredentialList(c *gin.Context) {
d := query.DnsCredential
provider := c.Query("provider")
var data []*model2.DnsCredential
var err error
if provider != "" {
data, err = d.Where(d.Provider.Eq(provider)).Find()
} else {
data, err = d.Find()
}
if err != nil {
ErrHandler(c, err)
return
}
c.JSON(http.StatusOK, gin.H{
"data": data,
})
}
type DnsCredentialManageJson struct {
Name string `json:"name" binding:"required"`
Provider string `json:"provider"`
dns.Config
}
func AddDnsCredential(c *gin.Context) {
var json DnsCredentialManageJson
if !BindAndValid(c, &json) {
return
}
json.Config.Name = json.Provider
dnsCredential := model2.DnsCredential{
Name: json.Name,
Config: &json.Config,
Provider: json.Provider,
}
d := query.DnsCredential
err := d.Create(&dnsCredential)
if err != nil {
ErrHandler(c, err)
return
}
c.JSON(http.StatusOK, dnsCredential)
}
func EditDnsCredential(c *gin.Context) {
id := cast.ToInt(c.Param("id"))
var json DnsCredentialManageJson
if !BindAndValid(c, &json) {
return
}
d := query.DnsCredential
dnsCredential, err := d.FirstByID(id)
if err != nil {
ErrHandler(c, err)
return
}
json.Config.Name = json.Provider
_, err = d.Where(d.ID.Eq(dnsCredential.ID)).Updates(&model2.DnsCredential{
Name: json.Name,
Config: &json.Config,
Provider: json.Provider,
})
if err != nil {
ErrHandler(c, err)
return
}
GetDnsCredential(c)
}
func DeleteDnsCredential(c *gin.Context) {
id := cast.ToInt(c.Param("id"))
d := query.DnsCredential
dnsCredential, err := d.FirstByID(id)
if err != nil {
ErrHandler(c, err)
return
}
err = d.DeleteByID(dnsCredential.ID)
if err != nil {
ErrHandler(c, err)
return
}
c.JSON(http.StatusNoContent, nil)
}

View file

@ -1,19 +1,19 @@
package api
import (
"github.com/0xJacky/Nginx-UI/server/internal/cert"
"github.com/0xJacky/Nginx-UI/server/internal/config_list"
"github.com/0xJacky/Nginx-UI/server/internal/helper"
"github.com/0xJacky/Nginx-UI/server/internal/logger"
"github.com/0xJacky/Nginx-UI/server/internal/nginx"
"github.com/0xJacky/Nginx-UI/server/model"
"github.com/0xJacky/Nginx-UI/server/query"
"github.com/gin-gonic/gin"
"github.com/sashabaranov/go-openai"
"net/http"
"os"
"strings"
"time"
"github.com/0xJacky/Nginx-UI/internal/cert"
"github.com/0xJacky/Nginx-UI/internal/config_list"
helper2 "github.com/0xJacky/Nginx-UI/internal/helper"
"github.com/0xJacky/Nginx-UI/internal/logger"
nginx2 "github.com/0xJacky/Nginx-UI/internal/nginx"
"github.com/0xJacky/Nginx-UI/model"
"github.com/0xJacky/Nginx-UI/query"
"github.com/gin-gonic/gin"
"github.com/sashabaranov/go-openai"
"net/http"
"os"
"strings"
"time"
)
func GetDomains(c *gin.Context) {
@ -27,14 +27,14 @@ func GetDomains(c *gin.Context) {
"modify": "time",
}
configFiles, err := os.ReadDir(nginx.GetConfPath("sites-available"))
configFiles, err := os.ReadDir(nginx2.GetConfPath("sites-available"))
if err != nil {
ErrHandler(c, err)
return
}
enabledConfig, err := os.ReadDir(nginx.GetConfPath("sites-enabled"))
enabledConfig, err := os.ReadDir(nginx2.GetConfPath("sites-enabled"))
if err != nil {
ErrHandler(c, err)
@ -88,7 +88,7 @@ func GetDomain(c *gin.Context) {
name = rewriteName.(string)
}
path := nginx.GetConfPath("sites-available", name)
path := nginx2.GetConfPath("sites-available", name)
file, err := os.Stat(path)
if os.IsNotExist(err) {
c.JSON(http.StatusNotFound, gin.H{
@ -99,7 +99,7 @@ func GetDomain(c *gin.Context) {
enabled := true
if _, err := os.Stat(nginx.GetConfPath("sites-enabled", name)); os.IsNotExist(err) {
if _, err := os.Stat(nginx2.GetConfPath("sites-enabled", name)); os.IsNotExist(err) {
enabled = false
}
@ -149,7 +149,7 @@ func GetDomain(c *gin.Context) {
}
c.Set("maybe_error", "nginx_config_syntax_error")
config, err := nginx.ParseNgxConfig(path)
config, err := nginx2.ParseNgxConfig(path)
if err != nil {
ErrHandler(c, err)
@ -218,9 +218,9 @@ func SaveDomain(c *gin.Context) {
return
}
path := nginx.GetConfPath("sites-available", name)
path := nginx2.GetConfPath("sites-available", name)
if !json.Overwrite && helper.FileExists(path) {
if !json.Overwrite && helper2.FileExists(path) {
c.JSON(http.StatusNotAcceptable, gin.H{
"message": "File exists",
})
@ -232,24 +232,24 @@ func SaveDomain(c *gin.Context) {
ErrHandler(c, err)
return
}
enabledConfigFilePath := nginx.GetConfPath("sites-enabled", name)
enabledConfigFilePath := nginx2.GetConfPath("sites-enabled", name)
// rename the config file if needed
if name != json.Name {
newPath := nginx.GetConfPath("sites-available", json.Name)
newPath := nginx2.GetConfPath("sites-available", json.Name)
s := query.Site
_, err = s.Where(s.Path.Eq(path)).Update(s.Path, newPath)
// check if dst file exists, do not rename
if helper.FileExists(newPath) {
if helper2.FileExists(newPath) {
c.JSON(http.StatusNotAcceptable, gin.H{
"message": "File exists",
})
return
}
// recreate soft link
if helper.FileExists(enabledConfigFilePath) {
if helper2.FileExists(enabledConfigFilePath) {
_ = os.Remove(enabledConfigFilePath)
enabledConfigFilePath = nginx.GetConfPath("sites-enabled", json.Name)
enabledConfigFilePath = nginx2.GetConfPath("sites-enabled", json.Name)
err = os.Symlink(newPath, enabledConfigFilePath)
if err != nil {
@ -268,12 +268,12 @@ func SaveDomain(c *gin.Context) {
c.Set("rewriteConfigFileName", name)
}
enabledConfigFilePath = nginx.GetConfPath("sites-enabled", name)
if helper.FileExists(enabledConfigFilePath) {
enabledConfigFilePath = nginx2.GetConfPath("sites-enabled", name)
if helper2.FileExists(enabledConfigFilePath) {
// Test nginx configuration
output := nginx.TestConf()
output := nginx2.TestConf()
if nginx.GetLogLevel(output) > nginx.Warn {
if nginx2.GetLogLevel(output) > nginx2.Warn {
c.JSON(http.StatusInternalServerError, gin.H{
"message": output,
"error": "nginx_config_syntax_error",
@ -281,9 +281,9 @@ func SaveDomain(c *gin.Context) {
return
}
output = nginx.Reload()
output = nginx2.Reload()
if nginx.GetLogLevel(output) > nginx.Warn {
if nginx2.GetLogLevel(output) > nginx2.Warn {
c.JSON(http.StatusInternalServerError, gin.H{
"message": output,
})
@ -295,8 +295,8 @@ func SaveDomain(c *gin.Context) {
}
func EnableDomain(c *gin.Context) {
configFilePath := nginx.GetConfPath("sites-available", c.Param("name"))
enabledConfigFilePath := nginx.GetConfPath("sites-enabled", c.Param("name"))
configFilePath := nginx2.GetConfPath("sites-available", c.Param("name"))
enabledConfigFilePath := nginx2.GetConfPath("sites-enabled", c.Param("name"))
_, err := os.Stat(configFilePath)
@ -315,9 +315,9 @@ func EnableDomain(c *gin.Context) {
}
// Test nginx config, if not pass then disable the site.
output := nginx.TestConf()
output := nginx2.TestConf()
if nginx.GetLogLevel(output) > nginx.Warn {
if nginx2.GetLogLevel(output) > nginx2.Warn {
_ = os.Remove(enabledConfigFilePath)
c.JSON(http.StatusInternalServerError, gin.H{
"message": output,
@ -325,9 +325,9 @@ func EnableDomain(c *gin.Context) {
return
}
output = nginx.Reload()
output = nginx2.Reload()
if nginx.GetLogLevel(output) > nginx.Warn {
if nginx2.GetLogLevel(output) > nginx2.Warn {
c.JSON(http.StatusInternalServerError, gin.H{
"message": output,
})
@ -340,7 +340,7 @@ func EnableDomain(c *gin.Context) {
}
func DisableDomain(c *gin.Context) {
enabledConfigFilePath := nginx.GetConfPath("sites-enabled", c.Param("name"))
enabledConfigFilePath := nginx2.GetConfPath("sites-enabled", c.Param("name"))
_, err := os.Stat(enabledConfigFilePath)
@ -364,9 +364,9 @@ func DisableDomain(c *gin.Context) {
return
}
output := nginx.Reload()
output := nginx2.Reload()
if nginx.GetLogLevel(output) > nginx.Warn {
if nginx2.GetLogLevel(output) > nginx2.Warn {
c.JSON(http.StatusInternalServerError, gin.H{
"message": output,
})
@ -381,8 +381,8 @@ func DisableDomain(c *gin.Context) {
func DeleteDomain(c *gin.Context) {
var err error
name := c.Param("name")
availablePath := nginx.GetConfPath("sites-available", name)
enabledPath := nginx.GetConfPath("sites-enabled", name)
availablePath := nginx2.GetConfPath("sites-available", name)
enabledPath := nginx2.GetConfPath("sites-enabled", name)
if _, err = os.Stat(availablePath); os.IsNotExist(err) {
c.JSON(http.StatusNotFound, gin.H{
@ -418,7 +418,7 @@ func AddDomainToAutoCert(c *gin.Context) {
name := c.Param("name")
var json struct {
model.Cert
model.Cert
Domains []string `json:"domains"`
}
@ -480,17 +480,17 @@ func DuplicateSite(c *gin.Context) {
return
}
src := nginx.GetConfPath("sites-available", name)
dst := nginx.GetConfPath("sites-available", json.Name)
src := nginx2.GetConfPath("sites-available", name)
dst := nginx2.GetConfPath("sites-available", json.Name)
if helper.FileExists(dst) {
if helper2.FileExists(dst) {
c.JSON(http.StatusNotAcceptable, gin.H{
"message": "File exists",
})
return
}
_, err := helper.CopyFile(src, dst)
_, err := helper2.CopyFile(src, dst)
if err != nil {
ErrHandler(c, err)
@ -512,7 +512,7 @@ func DomainEditByAdvancedMode(c *gin.Context) {
}
name := c.Param("name")
path := nginx.GetConfPath("sites-available", name)
path := nginx2.GetConfPath("sites-available", name)
s := query.Site

View file

@ -1,10 +1,10 @@
package api
import (
"github.com/0xJacky/Nginx-UI/server/internal/analytic"
"github.com/0xJacky/Nginx-UI/server/internal/environment"
"github.com/0xJacky/Nginx-UI/server/model"
"github.com/0xJacky/Nginx-UI/server/query"
"github.com/0xJacky/Nginx-UI/internal/analytic"
"github.com/0xJacky/Nginx-UI/internal/environment"
"github.com/0xJacky/Nginx-UI/model"
"github.com/0xJacky/Nginx-UI/query"
"github.com/gin-gonic/gin"
"github.com/spf13/cast"
"net/http"

View file

@ -1,10 +1,10 @@
package api
import (
"github.com/0xJacky/Nginx-UI/server/internal/boot"
"github.com/0xJacky/Nginx-UI/server/model"
"github.com/0xJacky/Nginx-UI/server/query"
"github.com/0xJacky/Nginx-UI/server/settings"
"github.com/0xJacky/Nginx-UI/internal/boot"
"github.com/0xJacky/Nginx-UI/model"
"github.com/0xJacky/Nginx-UI/query"
"github.com/0xJacky/Nginx-UI/settings"
"github.com/gin-gonic/gin"
"github.com/google/uuid"
"golang.org/x/crypto/bcrypt"

View file

@ -2,10 +2,10 @@ package api
import (
"encoding/json"
"github.com/0xJacky/Nginx-UI/server/internal/helper"
"github.com/0xJacky/Nginx-UI/server/internal/logger"
"github.com/0xJacky/Nginx-UI/server/internal/nginx"
"github.com/0xJacky/Nginx-UI/server/settings"
"github.com/0xJacky/Nginx-UI/internal/helper"
"github.com/0xJacky/Nginx-UI/internal/logger"
nginx2 "github.com/0xJacky/Nginx-UI/internal/nginx"
"github.com/0xJacky/Nginx-UI/settings"
"github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
"github.com/hpcloud/tail"
@ -106,9 +106,9 @@ func GetNginxLogPage(c *gin.Context) {
func getLogPath(control *controlStruct) (logPath string, err error) {
switch control.Type {
case "site":
var config *nginx.NgxConfig
path := nginx.GetConfPath("sites-available", control.ConfName)
config, err = nginx.ParseNgxConfig(path)
var config *nginx2.NgxConfig
path := nginx2.GetConfPath("sites-available", control.ConfName)
config, err = nginx2.ParseNgxConfig(path)
if err != nil {
err = errors.Wrap(err, "error parsing ngx config")
return

View file

@ -1,14 +1,14 @@
package api
import (
"github.com/0xJacky/Nginx-UI/server/internal/nginx"
"github.com/gin-gonic/gin"
"net/http"
"os"
nginx2 "github.com/0xJacky/Nginx-UI/internal/nginx"
"github.com/gin-gonic/gin"
"net/http"
"os"
)
func BuildNginxConfig(c *gin.Context) {
var ngxConf nginx.NgxConfig
var ngxConf nginx2.NgxConfig
if !BindAndValid(c, &ngxConf) {
return
}
@ -28,7 +28,7 @@ func TokenizeNginxConfig(c *gin.Context) {
}
c.Set("maybe_error", "nginx_config_syntax_error")
ngxConfig := nginx.ParseNgxConfigByContent(json.Content)
ngxConfig := nginx2.ParseNgxConfigByContent(json.Content)
c.JSON(http.StatusOK, ngxConfig)
@ -45,12 +45,12 @@ func FormatNginxConfig(c *gin.Context) {
c.Set("maybe_error", "nginx_config_syntax_error")
c.JSON(http.StatusOK, gin.H{
"content": nginx.FmtCode(json.Content),
"content": nginx2.FmtCode(json.Content),
})
}
func NginxStatus(c *gin.Context) {
pidPath := nginx.GetNginxPIDPath()
pidPath := nginx2.GetNginxPIDPath()
running := true
if fileInfo, err := os.Stat(pidPath); err != nil || fileInfo.Size() == 0 { // fileInfo.Size() == 0 no process id
@ -63,25 +63,25 @@ func NginxStatus(c *gin.Context) {
}
func ReloadNginx(c *gin.Context) {
output := nginx.Reload()
output := nginx2.Reload()
c.JSON(http.StatusOK, gin.H{
"message": output,
"level": nginx.GetLogLevel(output),
"level": nginx2.GetLogLevel(output),
})
}
func TestNginx(c *gin.Context) {
output := nginx.TestConf()
output := nginx2.TestConf()
c.JSON(http.StatusOK, gin.H{
"message": output,
"level": nginx.GetLogLevel(output),
"level": nginx2.GetLogLevel(output),
})
}
func RestartNginx(c *gin.Context) {
output := nginx.Restart()
output := nginx2.Restart()
c.JSON(http.StatusOK, gin.H{
"message": output,
"level": nginx.GetLogLevel(output),
"level": nginx2.GetLogLevel(output),
})
}

View file

@ -1,8 +1,8 @@
package api
import (
"github.com/0xJacky/Nginx-UI/server/internal/analytic"
"github.com/0xJacky/Nginx-UI/server/internal/upgrader"
analytic2 "github.com/0xJacky/Nginx-UI/internal/analytic"
"github.com/0xJacky/Nginx-UI/internal/upgrader"
"github.com/dustin/go-humanize"
"github.com/gin-gonic/gin"
"github.com/shirou/gopsutil/v3/cpu"
@ -24,11 +24,11 @@ func GetCurrentNode(c *gin.Context) {
return
}
cpuInfo, _ := cpu.Info()
memory, _ := analytic.GetMemoryStat()
memory, _ := analytic2.GetMemoryStat()
ver, _ := upgrader.GetCurrentVersion()
diskUsage, _ := disk.Usage(".")
nodeInfo := analytic.NodeInfo{
nodeInfo := analytic2.NodeInfo{
NodeRuntimeInfo: runtimeInfo,
CPUNum: len(cpuInfo),
MemoryTotal: memory.Total,
@ -36,9 +36,9 @@ func GetCurrentNode(c *gin.Context) {
Version: ver.Version,
}
stat := analytic.GetNodeStat()
stat := analytic2.GetNodeStat()
c.JSON(http.StatusOK, analytic.Node{
c.JSON(http.StatusOK, analytic2.Node{
NodeInfo: nodeInfo,
NodeStat: stat,
})

View file

@ -3,9 +3,9 @@ package api
import (
"context"
"fmt"
"github.com/0xJacky/Nginx-UI/server/model"
"github.com/0xJacky/Nginx-UI/server/query"
"github.com/0xJacky/Nginx-UI/server/settings"
"github.com/0xJacky/Nginx-UI/model"
"github.com/0xJacky/Nginx-UI/query"
"github.com/0xJacky/Nginx-UI/settings"
"github.com/gin-gonic/gin"
"github.com/pkg/errors"
"github.com/sashabaranov/go-openai"

View file

@ -1,8 +1,8 @@
package api
import (
"github.com/0xJacky/Nginx-UI/server/internal/logger"
"github.com/0xJacky/Nginx-UI/server/internal/pty"
"github.com/0xJacky/Nginx-UI/internal/logger"
"github.com/0xJacky/Nginx-UI/internal/pty"
"github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
"net/http"

View file

@ -2,7 +2,7 @@ package api
import (
"fmt"
"github.com/0xJacky/Nginx-UI/server/settings"
"github.com/0xJacky/Nginx-UI/settings"
"github.com/gin-gonic/gin"
"net/http"
"net/url"

View file

@ -1,8 +1,8 @@
package api
import (
"github.com/0xJacky/Nginx-UI/server/internal/nginx"
"github.com/0xJacky/Nginx-UI/server/internal/template"
"github.com/0xJacky/Nginx-UI/internal/nginx"
"github.com/0xJacky/Nginx-UI/internal/template"
"github.com/gin-gonic/gin"
"net/http"
)

View file

@ -1,9 +1,9 @@
package api
import (
"github.com/0xJacky/Nginx-UI/server/internal/translation"
"github.com/gin-gonic/gin"
"net/http"
"github.com/0xJacky/Nginx-UI/internal/translation"
"github.com/gin-gonic/gin"
"net/http"
)
func GetTranslation(c *gin.Context) {

View file

@ -1,9 +1,9 @@
package api
import (
"github.com/0xJacky/Nginx-UI/server/internal/logger"
"github.com/0xJacky/Nginx-UI/server/internal/upgrader"
"github.com/0xJacky/Nginx-UI/server/settings"
"github.com/0xJacky/Nginx-UI/internal/logger"
"github.com/0xJacky/Nginx-UI/internal/upgrader"
"github.com/0xJacky/Nginx-UI/settings"
"github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
"net/http"

View file

@ -1,13 +1,13 @@
package api
import (
"github.com/0xJacky/Nginx-UI/server/model"
"github.com/0xJacky/Nginx-UI/server/query"
"github.com/0xJacky/Nginx-UI/server/settings"
"github.com/gin-gonic/gin"
"github.com/spf13/cast"
"golang.org/x/crypto/bcrypt"
"net/http"
"github.com/0xJacky/Nginx-UI/model"
"github.com/0xJacky/Nginx-UI/query"
"github.com/0xJacky/Nginx-UI/settings"
"github.com/gin-gonic/gin"
"github.com/spf13/cast"
"golang.org/x/crypto/bcrypt"
"net/http"
)
func GetUsers(c *gin.Context) {

View file

@ -10,27 +10,15 @@ lerna-debug.log*
# deps
node_modules
dist
dist-ssr
*.local
.yarn
cache
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# Yarn
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions

View file

@ -1,4 +1,4 @@
package frontend
package app
import (
"embed"

View file

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 963 B

After

Width:  |  Height:  |  Size: 963 B

Before After
Before After

Some files were not shown because too many files have changed in this diff Show more