mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-06 06:40:27 +08:00
68 lines
1.4 KiB
Go
68 lines
1.4 KiB
Go
package node
|
||
|
||
import (
|
||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
||
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
|
||
"github.com/iwind/TeaGo/actions"
|
||
"net"
|
||
"net/url"
|
||
"regexp"
|
||
"strings"
|
||
)
|
||
|
||
// CreateAddrPopupAction 添加地址
|
||
type CreateAddrPopupAction struct {
|
||
actionutils.ParentAction
|
||
}
|
||
|
||
func (this *CreateAddrPopupAction) Init() {
|
||
this.Nav("", "", "")
|
||
}
|
||
|
||
func (this *CreateAddrPopupAction) RunGet(params struct {
|
||
}) {
|
||
this.Show()
|
||
}
|
||
|
||
func (this *CreateAddrPopupAction) RunPost(params struct {
|
||
Protocol string
|
||
Addr string
|
||
Must *actions.Must
|
||
}) {
|
||
params.Must.
|
||
Field("addr", params.Addr).
|
||
Require("请输入访问地址")
|
||
|
||
// 兼容URL
|
||
if regexp.MustCompile(`^(?i)(http|https)://`).MatchString(params.Addr) {
|
||
u, err := url.Parse(params.Addr)
|
||
if err != nil {
|
||
this.FailField("addr", "错误的访问地址,不需要添加http://或https://")
|
||
}
|
||
params.Addr = u.Host
|
||
}
|
||
|
||
// 自动添加端口
|
||
if !strings.Contains(params.Addr, ":") {
|
||
switch params.Protocol {
|
||
case "http":
|
||
params.Addr += ":80"
|
||
case "https":
|
||
params.Addr += ":443"
|
||
}
|
||
}
|
||
|
||
host, port, err := net.SplitHostPort(params.Addr)
|
||
if err != nil {
|
||
this.FailField("addr", "错误的访问地址")
|
||
}
|
||
|
||
var addrConfig = &serverconfigs.NetworkAddressConfig{
|
||
Protocol: serverconfigs.Protocol(params.Protocol),
|
||
Host: host,
|
||
PortRange: port,
|
||
}
|
||
this.Data["addr"] = addrConfig
|
||
this.Success()
|
||
}
|