mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2026-04-18 09:15:20 +08:00
如果管理系统同时设置了HTTP和HTTPS端口,那么访问HTTP登录页时自动跳转到HTTPS地址
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
package adminserverutils
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/iwind/TeaGo"
|
||||
"github.com/iwind/TeaGo/Tea"
|
||||
"github.com/iwind/TeaGo/types"
|
||||
"gopkg.in/yaml.v3"
|
||||
"net"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
var ServerConfigIsChanged = false
|
||||
|
||||
const configFilename = "server.yaml"
|
||||
|
||||
// LoadServerConfig 读取当前服务配置
|
||||
func LoadServerConfig() (*TeaGo.ServerConfig, error) {
|
||||
configFile := Tea.ConfigFile(configFilename)
|
||||
data, err := os.ReadFile(configFile)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var serverConfig = &TeaGo.ServerConfig{}
|
||||
err = yaml.Unmarshal(data, serverConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return serverConfig, nil
|
||||
}
|
||||
|
||||
// WriteServerConfig 保存当前服务配置
|
||||
func WriteServerConfig(serverConfig *TeaGo.ServerConfig) error {
|
||||
data, err := yaml.Marshal(serverConfig)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = os.WriteFile(Tea.ConfigFile(configFilename), data, 0666)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ServerConfigIsChanged = true
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// ReadServerHTTPS 检查HTTPS地址
|
||||
func ReadServerHTTPS() (port int, err error) {
|
||||
config, err := LoadServerConfig()
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
if config == nil {
|
||||
return 0, errors.New("could not load server config")
|
||||
}
|
||||
|
||||
if config.Https.On && len(config.Https.Listen) > 0 {
|
||||
for _, listen := range config.Https.Listen {
|
||||
_, portString, splitErr := net.SplitHostPort(listen)
|
||||
if splitErr == nil {
|
||||
var portInt = types.Int(portString)
|
||||
if portInt > 0 {
|
||||
// 是否已经启动
|
||||
checkErr := func() error {
|
||||
conn, connErr := net.DialTimeout("tcp", ":"+portString, 1*time.Second)
|
||||
if connErr != nil {
|
||||
return connErr
|
||||
}
|
||||
_ = conn.Close()
|
||||
return nil
|
||||
}()
|
||||
if checkErr != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
port = portInt
|
||||
err = nil
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package server
|
||||
|
||||
import (
|
||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
||||
adminserverutils "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/server/admin-server-utils"
|
||||
)
|
||||
|
||||
type IndexAction struct {
|
||||
@@ -13,9 +14,9 @@ func (this *IndexAction) Init() {
|
||||
}
|
||||
|
||||
func (this *IndexAction) RunGet(params struct{}) {
|
||||
this.Data["serverIsChanged"] = serverConfigIsChanged
|
||||
this.Data["serverIsChanged"] = adminserverutils.ServerConfigIsChanged
|
||||
|
||||
serverConfig, err := loadServerConfig()
|
||||
serverConfig, err := adminserverutils.LoadServerConfig()
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
return
|
||||
|
||||
@@ -3,6 +3,7 @@ package server
|
||||
import (
|
||||
"github.com/TeaOSLab/EdgeAdmin/internal/utils"
|
||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
||||
adminserverutils "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/server/admin-server-utils"
|
||||
"github.com/iwind/TeaGo/actions"
|
||||
"net"
|
||||
)
|
||||
@@ -16,7 +17,7 @@ func (this *UpdateHTTPPopupAction) Init() {
|
||||
}
|
||||
|
||||
func (this *UpdateHTTPPopupAction) RunGet(params struct{}) {
|
||||
serverConfig, err := loadServerConfig()
|
||||
serverConfig, err := adminserverutils.LoadServerConfig()
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
return
|
||||
@@ -38,7 +39,7 @@ func (this *UpdateHTTPPopupAction) RunPost(params struct {
|
||||
this.Fail("请输入绑定地址")
|
||||
}
|
||||
|
||||
serverConfig, err := loadServerConfig()
|
||||
serverConfig, err := adminserverutils.LoadServerConfig()
|
||||
if err != nil {
|
||||
this.Fail("保存失败:" + err.Error())
|
||||
}
|
||||
@@ -58,7 +59,7 @@ func (this *UpdateHTTPPopupAction) RunPost(params struct {
|
||||
}
|
||||
serverConfig.Http.Listen = listen
|
||||
|
||||
err = writeServerConfig(serverConfig)
|
||||
err = adminserverutils.WriteServerConfig(serverConfig)
|
||||
if err != nil {
|
||||
this.Fail("保存失败:" + err.Error())
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"encoding/json"
|
||||
"github.com/TeaOSLab/EdgeAdmin/internal/utils"
|
||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
||||
adminserverutils "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/settings/server/admin-server-utils"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/sslconfigs"
|
||||
"github.com/iwind/TeaGo/Tea"
|
||||
@@ -21,7 +22,7 @@ func (this *UpdateHTTPSPopupAction) Init() {
|
||||
}
|
||||
|
||||
func (this *UpdateHTTPSPopupAction) RunGet(params struct{}) {
|
||||
serverConfig, err := loadServerConfig()
|
||||
serverConfig, err := adminserverutils.LoadServerConfig()
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
return
|
||||
@@ -70,7 +71,7 @@ func (this *UpdateHTTPSPopupAction) RunPost(params struct {
|
||||
this.Fail("请输入绑定地址")
|
||||
}
|
||||
|
||||
serverConfig, err := loadServerConfig()
|
||||
serverConfig, err := adminserverutils.LoadServerConfig()
|
||||
if err != nil {
|
||||
this.Fail("保存失败:" + err.Error())
|
||||
}
|
||||
@@ -133,7 +134,7 @@ func (this *UpdateHTTPSPopupAction) RunPost(params struct {
|
||||
serverConfig.Https.Cert = "configs/https.cert.pem"
|
||||
}
|
||||
|
||||
err = writeServerConfig(serverConfig)
|
||||
err = adminserverutils.WriteServerConfig(serverConfig)
|
||||
if err != nil {
|
||||
this.Fail("保存配置失败:" + err.Error())
|
||||
}
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"github.com/iwind/TeaGo"
|
||||
"github.com/iwind/TeaGo/Tea"
|
||||
"gopkg.in/yaml.v3"
|
||||
"os"
|
||||
)
|
||||
|
||||
var serverConfigIsChanged = false
|
||||
|
||||
// 读取当前服务配置
|
||||
func loadServerConfig() (*TeaGo.ServerConfig, error) {
|
||||
configFile := Tea.ConfigFile("server.yaml")
|
||||
data, err := os.ReadFile(configFile)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
serverConfig := &TeaGo.ServerConfig{}
|
||||
err = yaml.Unmarshal(data, serverConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return serverConfig, nil
|
||||
}
|
||||
|
||||
// 保存当前服务配置
|
||||
func writeServerConfig(serverConfig *TeaGo.ServerConfig) error {
|
||||
data, err := yaml.Marshal(serverConfig)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = os.WriteFile(Tea.ConfigFile("server.yaml"), data, 0666)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
serverConfigIsChanged = true
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user