mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-08 07:50:28 +08:00
实现源站端口跟随功能
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package servers
|
package servers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"github.com/TeaOSLab/EdgeAdmin/internal/oplogs"
|
"github.com/TeaOSLab/EdgeAdmin/internal/oplogs"
|
||||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/configutils"
|
"github.com/TeaOSLab/EdgeCommon/pkg/configutils"
|
||||||
@@ -33,6 +34,10 @@ func (this *AddOriginPopupAction) RunPost(params struct {
|
|||||||
Protocol string
|
Protocol string
|
||||||
Addr string
|
Addr string
|
||||||
|
|
||||||
|
DomainsJSON []byte
|
||||||
|
Host string
|
||||||
|
FollowPort bool
|
||||||
|
|
||||||
Must *actions.Must
|
Must *actions.Must
|
||||||
}) {
|
}) {
|
||||||
params.Must.
|
params.Must.
|
||||||
@@ -50,7 +55,7 @@ func (this *AddOriginPopupAction) RunPost(params struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
addr = regexp.MustCompile(`\s+`).ReplaceAllString(addr, "")
|
addr = regexp.MustCompile(`\s+`).ReplaceAllString(addr, "")
|
||||||
portIndex := strings.LastIndex(addr, ":")
|
var portIndex = strings.LastIndex(addr, ":")
|
||||||
if portIndex < 0 {
|
if portIndex < 0 {
|
||||||
if params.Protocol == "http" {
|
if params.Protocol == "http" {
|
||||||
addr += ":80"
|
addr += ":80"
|
||||||
@@ -82,6 +87,21 @@ func (this *AddOriginPopupAction) RunPost(params struct {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 专属域名
|
||||||
|
var domains = []string{}
|
||||||
|
if len(params.DomainsJSON) > 0 {
|
||||||
|
err := json.Unmarshal(params.DomainsJSON, &domains)
|
||||||
|
if err != nil {
|
||||||
|
this.ErrorPage(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 去除可能误加的斜杠
|
||||||
|
for index, domain := range domains {
|
||||||
|
domains[index] = strings.TrimSuffix(domain, "/")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
resp, err := this.RPC().OriginRPC().CreateOrigin(this.AdminContext(), &pb.CreateOriginRequest{
|
resp, err := this.RPC().OriginRPC().CreateOrigin(this.AdminContext(), &pb.CreateOriginRequest{
|
||||||
Name: "",
|
Name: "",
|
||||||
Addr: &pb.NetworkAddress{
|
Addr: &pb.NetworkAddress{
|
||||||
@@ -92,6 +112,9 @@ func (this *AddOriginPopupAction) RunPost(params struct {
|
|||||||
Description: "",
|
Description: "",
|
||||||
Weight: 10,
|
Weight: 10,
|
||||||
IsOn: true,
|
IsOn: true,
|
||||||
|
Domains: domains,
|
||||||
|
Host: params.Host,
|
||||||
|
FollowPort: params.FollowPort,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
reverseProxyRef := &serverconfigs.ReverseProxyRef{}
|
var reverseProxyRef = &serverconfigs.ReverseProxyRef{}
|
||||||
err = json.Unmarshal(reverseProxyResp.ReverseProxyRefJSON, reverseProxyRef)
|
err = json.Unmarshal(reverseProxyResp.ReverseProxyRefJSON, reverseProxyRef)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
@@ -42,7 +42,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
}
|
}
|
||||||
this.Data["reverseProxyRef"] = reverseProxyRef
|
this.Data["reverseProxyRef"] = reverseProxyRef
|
||||||
|
|
||||||
reverseProxy := &serverconfigs.ReverseProxyConfig{}
|
var reverseProxy = &serverconfigs.ReverseProxyConfig{}
|
||||||
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
|
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
@@ -50,21 +50,22 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
}
|
}
|
||||||
this.Data["reverseProxyConfig"] = reverseProxy
|
this.Data["reverseProxyConfig"] = reverseProxy
|
||||||
|
|
||||||
primaryOriginMaps := []maps.Map{}
|
var primaryOriginMaps = []maps.Map{}
|
||||||
backupOriginMaps := []maps.Map{}
|
var backupOriginMaps = []maps.Map{}
|
||||||
for _, originConfig := range reverseProxy.PrimaryOrigins {
|
for _, originConfig := range reverseProxy.PrimaryOrigins {
|
||||||
if len(originConfig.Domains) == 0 {
|
if len(originConfig.Domains) == 0 {
|
||||||
originConfig.Domains = []string{}
|
originConfig.Domains = []string{}
|
||||||
}
|
}
|
||||||
m := maps.Map{
|
var m = maps.Map{
|
||||||
"id": originConfig.Id,
|
"id": originConfig.Id,
|
||||||
"weight": originConfig.Weight,
|
"weight": originConfig.Weight,
|
||||||
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
||||||
"name": originConfig.Name,
|
"name": originConfig.Name,
|
||||||
"isOn": originConfig.IsOn,
|
"isOn": originConfig.IsOn,
|
||||||
"domains": originConfig.Domains,
|
"domains": originConfig.Domains,
|
||||||
"hasCert": originConfig.Cert != nil,
|
"hasCert": originConfig.Cert != nil,
|
||||||
"host": originConfig.RequestHost,
|
"host": originConfig.RequestHost,
|
||||||
|
"followPort": originConfig.FollowPort,
|
||||||
}
|
}
|
||||||
primaryOriginMaps = append(primaryOriginMaps, m)
|
primaryOriginMaps = append(primaryOriginMaps, m)
|
||||||
}
|
}
|
||||||
@@ -72,15 +73,16 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
if len(originConfig.Domains) == 0 {
|
if len(originConfig.Domains) == 0 {
|
||||||
originConfig.Domains = []string{}
|
originConfig.Domains = []string{}
|
||||||
}
|
}
|
||||||
m := maps.Map{
|
var m = maps.Map{
|
||||||
"id": originConfig.Id,
|
"id": originConfig.Id,
|
||||||
"weight": originConfig.Weight,
|
"weight": originConfig.Weight,
|
||||||
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
||||||
"name": originConfig.Name,
|
"name": originConfig.Name,
|
||||||
"isOn": originConfig.IsOn,
|
"isOn": originConfig.IsOn,
|
||||||
"domains": originConfig.Domains,
|
"domains": originConfig.Domains,
|
||||||
"hasCert": originConfig.Cert != nil,
|
"hasCert": originConfig.Cert != nil,
|
||||||
"host": originConfig.RequestHost,
|
"host": originConfig.RequestHost,
|
||||||
|
"followPort": originConfig.FollowPort,
|
||||||
}
|
}
|
||||||
backupOriginMaps = append(backupOriginMaps, m)
|
backupOriginMaps = append(backupOriginMaps, m)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
reverseProxyRef := &serverconfigs.ReverseProxyRef{}
|
var reverseProxyRef = &serverconfigs.ReverseProxyRef{}
|
||||||
err = json.Unmarshal(reverseProxyResp.ReverseProxyRefJSON, reverseProxyRef)
|
err = json.Unmarshal(reverseProxyResp.ReverseProxyRefJSON, reverseProxyRef)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
@@ -42,7 +42,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
}
|
}
|
||||||
this.Data["reverseProxyRef"] = reverseProxyRef
|
this.Data["reverseProxyRef"] = reverseProxyRef
|
||||||
|
|
||||||
reverseProxy := &serverconfigs.ReverseProxyConfig{}
|
var reverseProxy = &serverconfigs.ReverseProxyConfig{}
|
||||||
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
|
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
@@ -50,21 +50,22 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
}
|
}
|
||||||
this.Data["reverseProxyConfig"] = reverseProxy
|
this.Data["reverseProxyConfig"] = reverseProxy
|
||||||
|
|
||||||
primaryOriginMaps := []maps.Map{}
|
var primaryOriginMaps = []maps.Map{}
|
||||||
backupOriginMaps := []maps.Map{}
|
var backupOriginMaps = []maps.Map{}
|
||||||
for _, originConfig := range reverseProxy.PrimaryOrigins {
|
for _, originConfig := range reverseProxy.PrimaryOrigins {
|
||||||
if len(originConfig.Domains) == 0 {
|
if len(originConfig.Domains) == 0 {
|
||||||
originConfig.Domains = []string{}
|
originConfig.Domains = []string{}
|
||||||
}
|
}
|
||||||
m := maps.Map{
|
m := maps.Map{
|
||||||
"id": originConfig.Id,
|
"id": originConfig.Id,
|
||||||
"weight": originConfig.Weight,
|
"weight": originConfig.Weight,
|
||||||
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
||||||
"name": originConfig.Name,
|
"name": originConfig.Name,
|
||||||
"isOn": originConfig.IsOn,
|
"isOn": originConfig.IsOn,
|
||||||
"domains": originConfig.Domains,
|
"domains": originConfig.Domains,
|
||||||
"hasCert": originConfig.Cert != nil,
|
"hasCert": originConfig.Cert != nil,
|
||||||
"host": originConfig.RequestHost,
|
"host": originConfig.RequestHost,
|
||||||
|
"followPort": originConfig.FollowPort,
|
||||||
}
|
}
|
||||||
primaryOriginMaps = append(primaryOriginMaps, m)
|
primaryOriginMaps = append(primaryOriginMaps, m)
|
||||||
}
|
}
|
||||||
@@ -73,14 +74,15 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
originConfig.Domains = []string{}
|
originConfig.Domains = []string{}
|
||||||
}
|
}
|
||||||
m := maps.Map{
|
m := maps.Map{
|
||||||
"id": originConfig.Id,
|
"id": originConfig.Id,
|
||||||
"weight": originConfig.Weight,
|
"weight": originConfig.Weight,
|
||||||
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
||||||
"name": originConfig.Name,
|
"name": originConfig.Name,
|
||||||
"isOn": originConfig.IsOn,
|
"isOn": originConfig.IsOn,
|
||||||
"domains": originConfig.Domains,
|
"domains": originConfig.Domains,
|
||||||
"hasCert": originConfig.Cert != nil,
|
"hasCert": originConfig.Cert != nil,
|
||||||
"host": originConfig.RequestHost,
|
"host": originConfig.RequestHost,
|
||||||
|
"followPort": originConfig.FollowPort,
|
||||||
}
|
}
|
||||||
backupOriginMaps = append(backupOriginMaps, m)
|
backupOriginMaps = append(backupOriginMaps, m)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
reverseProxyRef := &serverconfigs.ReverseProxyRef{}
|
var reverseProxyRef = &serverconfigs.ReverseProxyRef{}
|
||||||
err = json.Unmarshal(reverseProxyResp.ReverseProxyRefJSON, reverseProxyRef)
|
err = json.Unmarshal(reverseProxyResp.ReverseProxyRefJSON, reverseProxyRef)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
@@ -42,7 +42,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
}
|
}
|
||||||
this.Data["reverseProxyRef"] = reverseProxyRef
|
this.Data["reverseProxyRef"] = reverseProxyRef
|
||||||
|
|
||||||
reverseProxy := &serverconfigs.ReverseProxyConfig{}
|
var reverseProxy = &serverconfigs.ReverseProxyConfig{}
|
||||||
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
|
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
@@ -50,21 +50,22 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
}
|
}
|
||||||
this.Data["reverseProxyConfig"] = reverseProxy
|
this.Data["reverseProxyConfig"] = reverseProxy
|
||||||
|
|
||||||
primaryOriginMaps := []maps.Map{}
|
var primaryOriginMaps = []maps.Map{}
|
||||||
backupOriginMaps := []maps.Map{}
|
var backupOriginMaps = []maps.Map{}
|
||||||
for _, originConfig := range reverseProxy.PrimaryOrigins {
|
for _, originConfig := range reverseProxy.PrimaryOrigins {
|
||||||
if len(originConfig.Domains) == 0 {
|
if len(originConfig.Domains) == 0 {
|
||||||
originConfig.Domains = []string{}
|
originConfig.Domains = []string{}
|
||||||
}
|
}
|
||||||
m := maps.Map{
|
var m = maps.Map{
|
||||||
"id": originConfig.Id,
|
"id": originConfig.Id,
|
||||||
"weight": originConfig.Weight,
|
"weight": originConfig.Weight,
|
||||||
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
||||||
"name": originConfig.Name,
|
"name": originConfig.Name,
|
||||||
"isOn": originConfig.IsOn,
|
"isOn": originConfig.IsOn,
|
||||||
"domains": originConfig.Domains,
|
"domains": originConfig.Domains,
|
||||||
"hasCert": originConfig.Cert != nil,
|
"hasCert": originConfig.Cert != nil,
|
||||||
"host": originConfig.RequestHost,
|
"host": originConfig.RequestHost,
|
||||||
|
"followPort": originConfig.FollowPort,
|
||||||
}
|
}
|
||||||
primaryOriginMaps = append(primaryOriginMaps, m)
|
primaryOriginMaps = append(primaryOriginMaps, m)
|
||||||
}
|
}
|
||||||
@@ -72,15 +73,16 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
if len(originConfig.Domains) == 0 {
|
if len(originConfig.Domains) == 0 {
|
||||||
originConfig.Domains = []string{}
|
originConfig.Domains = []string{}
|
||||||
}
|
}
|
||||||
m := maps.Map{
|
var m = maps.Map{
|
||||||
"id": originConfig.Id,
|
"id": originConfig.Id,
|
||||||
"weight": originConfig.Weight,
|
"weight": originConfig.Weight,
|
||||||
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
||||||
"name": originConfig.Name,
|
"name": originConfig.Name,
|
||||||
"isOn": originConfig.IsOn,
|
"isOn": originConfig.IsOn,
|
||||||
"domains": originConfig.Domains,
|
"domains": originConfig.Domains,
|
||||||
"hasCert": originConfig.Cert != nil,
|
"hasCert": originConfig.Cert != nil,
|
||||||
"host": originConfig.RequestHost,
|
"host": originConfig.RequestHost,
|
||||||
|
"followPort": originConfig.FollowPort,
|
||||||
}
|
}
|
||||||
backupOriginMaps = append(backupOriginMaps, m)
|
backupOriginMaps = append(backupOriginMaps, m)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,14 +26,14 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
serverType := serverTypeResp.Type
|
var serverType = serverTypeResp.Type
|
||||||
|
|
||||||
reverseProxyResp, err := this.RPC().HTTPLocationRPC().FindAndInitHTTPLocationReverseProxyConfig(this.AdminContext(), &pb.FindAndInitHTTPLocationReverseProxyConfigRequest{LocationId: params.LocationId})
|
reverseProxyResp, err := this.RPC().HTTPLocationRPC().FindAndInitHTTPLocationReverseProxyConfig(this.AdminContext(), &pb.FindAndInitHTTPLocationReverseProxyConfigRequest{LocationId: params.LocationId})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
reverseProxyRef := &serverconfigs.ReverseProxyRef{}
|
var reverseProxyRef = &serverconfigs.ReverseProxyRef{}
|
||||||
err = json.Unmarshal(reverseProxyResp.ReverseProxyRefJSON, reverseProxyRef)
|
err = json.Unmarshal(reverseProxyResp.ReverseProxyRefJSON, reverseProxyRef)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
@@ -41,7 +41,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
}
|
}
|
||||||
this.Data["reverseProxyRef"] = reverseProxyRef
|
this.Data["reverseProxyRef"] = reverseProxyRef
|
||||||
|
|
||||||
reverseProxy := &serverconfigs.ReverseProxyConfig{}
|
var reverseProxy = &serverconfigs.ReverseProxyConfig{}
|
||||||
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
|
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
@@ -51,21 +51,22 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
|
|
||||||
this.Data["serverType"] = serverType
|
this.Data["serverType"] = serverType
|
||||||
|
|
||||||
primaryOriginMaps := []maps.Map{}
|
var primaryOriginMaps = []maps.Map{}
|
||||||
backupOriginMaps := []maps.Map{}
|
var backupOriginMaps = []maps.Map{}
|
||||||
for _, originConfig := range reverseProxy.PrimaryOrigins {
|
for _, originConfig := range reverseProxy.PrimaryOrigins {
|
||||||
if len(originConfig.Domains) == 0 {
|
if len(originConfig.Domains) == 0 {
|
||||||
originConfig.Domains = []string{}
|
originConfig.Domains = []string{}
|
||||||
}
|
}
|
||||||
m := maps.Map{
|
var m = maps.Map{
|
||||||
"id": originConfig.Id,
|
"id": originConfig.Id,
|
||||||
"weight": originConfig.Weight,
|
"weight": originConfig.Weight,
|
||||||
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
||||||
"name": originConfig.Name,
|
"name": originConfig.Name,
|
||||||
"isOn": originConfig.IsOn,
|
"isOn": originConfig.IsOn,
|
||||||
"domains": originConfig.Domains,
|
"domains": originConfig.Domains,
|
||||||
"hasCert": originConfig.Cert != nil,
|
"hasCert": originConfig.Cert != nil,
|
||||||
"host": originConfig.RequestHost,
|
"host": originConfig.RequestHost,
|
||||||
|
"followPort": originConfig.FollowPort,
|
||||||
}
|
}
|
||||||
primaryOriginMaps = append(primaryOriginMaps, m)
|
primaryOriginMaps = append(primaryOriginMaps, m)
|
||||||
}
|
}
|
||||||
@@ -73,15 +74,16 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
if len(originConfig.Domains) == 0 {
|
if len(originConfig.Domains) == 0 {
|
||||||
originConfig.Domains = []string{}
|
originConfig.Domains = []string{}
|
||||||
}
|
}
|
||||||
m := maps.Map{
|
var m = maps.Map{
|
||||||
"id": originConfig.Id,
|
"id": originConfig.Id,
|
||||||
"weight": originConfig.Weight,
|
"weight": originConfig.Weight,
|
||||||
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
||||||
"name": originConfig.Name,
|
"name": originConfig.Name,
|
||||||
"isOn": originConfig.IsOn,
|
"isOn": originConfig.IsOn,
|
||||||
"domains": originConfig.Domains,
|
"domains": originConfig.Domains,
|
||||||
"hasCert": originConfig.Cert != nil,
|
"hasCert": originConfig.Cert != nil,
|
||||||
"host": originConfig.RequestHost,
|
"host": originConfig.RequestHost,
|
||||||
|
"followPort": originConfig.FollowPort,
|
||||||
}
|
}
|
||||||
backupOriginMaps = append(backupOriginMaps, m)
|
backupOriginMaps = append(backupOriginMaps, m)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ func (this *AddPopupAction) RunPost(params struct {
|
|||||||
|
|
||||||
DomainsJSON []byte
|
DomainsJSON []byte
|
||||||
Host string
|
Host string
|
||||||
|
FollowPort bool
|
||||||
|
|
||||||
Description string
|
Description string
|
||||||
IsOn bool
|
IsOn bool
|
||||||
@@ -208,6 +209,7 @@ func (this *AddPopupAction) RunPost(params struct {
|
|||||||
CertRefJSON: certRefJSON,
|
CertRefJSON: certRefJSON,
|
||||||
Domains: domains,
|
Domains: domains,
|
||||||
Host: params.Host,
|
Host: params.Host,
|
||||||
|
FollowPort: params.FollowPort,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
|
|||||||
@@ -110,6 +110,7 @@ func (this *UpdatePopupAction) RunGet(params struct {
|
|||||||
"cert": config.Cert,
|
"cert": config.Cert,
|
||||||
"domains": config.Domains,
|
"domains": config.Domains,
|
||||||
"host": config.RequestHost,
|
"host": config.RequestHost,
|
||||||
|
"followPort": config.FollowPort,
|
||||||
}
|
}
|
||||||
|
|
||||||
this.Show()
|
this.Show()
|
||||||
@@ -135,6 +136,7 @@ func (this *UpdatePopupAction) RunPost(params struct {
|
|||||||
|
|
||||||
DomainsJSON []byte
|
DomainsJSON []byte
|
||||||
Host string
|
Host string
|
||||||
|
FollowPort bool
|
||||||
|
|
||||||
Description string
|
Description string
|
||||||
IsOn bool
|
IsOn bool
|
||||||
@@ -274,6 +276,7 @@ func (this *UpdatePopupAction) RunPost(params struct {
|
|||||||
CertRefJSON: certRefJSON,
|
CertRefJSON: certRefJSON,
|
||||||
Domains: domains,
|
Domains: domains,
|
||||||
Host: params.Host,
|
Host: params.Host,
|
||||||
|
FollowPort: params.FollowPort,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
serverType := serverTypeResp.Type
|
var serverType = serverTypeResp.Type
|
||||||
|
|
||||||
// 当前是否有分组设置
|
// 当前是否有分组设置
|
||||||
groupResp, err := this.RPC().ServerGroupRPC().FindEnabledServerGroupConfigInfo(this.AdminContext(), &pb.FindEnabledServerGroupConfigInfoRequest{ServerId: params.ServerId})
|
groupResp, err := this.RPC().ServerGroupRPC().FindEnabledServerGroupConfigInfo(this.AdminContext(), &pb.FindEnabledServerGroupConfigInfoRequest{ServerId: params.ServerId})
|
||||||
@@ -60,7 +60,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
reverseProxyRef := &serverconfigs.ReverseProxyRef{}
|
var reverseProxyRef = &serverconfigs.ReverseProxyRef{}
|
||||||
err = json.Unmarshal(reverseProxyResp.ReverseProxyRefJSON, reverseProxyRef)
|
err = json.Unmarshal(reverseProxyResp.ReverseProxyRefJSON, reverseProxyRef)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
@@ -68,7 +68,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
}
|
}
|
||||||
this.Data["reverseProxyRef"] = reverseProxyRef
|
this.Data["reverseProxyRef"] = reverseProxyRef
|
||||||
|
|
||||||
reverseProxy := &serverconfigs.ReverseProxyConfig{}
|
var reverseProxy = &serverconfigs.ReverseProxyConfig{}
|
||||||
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
|
err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
@@ -78,21 +78,22 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
|
|
||||||
this.Data["serverType"] = serverType
|
this.Data["serverType"] = serverType
|
||||||
|
|
||||||
primaryOriginMaps := []maps.Map{}
|
var primaryOriginMaps = []maps.Map{}
|
||||||
backupOriginMaps := []maps.Map{}
|
var backupOriginMaps = []maps.Map{}
|
||||||
for _, originConfig := range reverseProxy.PrimaryOrigins {
|
for _, originConfig := range reverseProxy.PrimaryOrigins {
|
||||||
if len(originConfig.Domains) == 0 {
|
if len(originConfig.Domains) == 0 {
|
||||||
originConfig.Domains = []string{}
|
originConfig.Domains = []string{}
|
||||||
}
|
}
|
||||||
m := maps.Map{
|
var m = maps.Map{
|
||||||
"id": originConfig.Id,
|
"id": originConfig.Id,
|
||||||
"weight": originConfig.Weight,
|
"weight": originConfig.Weight,
|
||||||
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
||||||
"name": originConfig.Name,
|
"name": originConfig.Name,
|
||||||
"isOn": originConfig.IsOn,
|
"isOn": originConfig.IsOn,
|
||||||
"domains": originConfig.Domains,
|
"domains": originConfig.Domains,
|
||||||
"hasCert": originConfig.Cert != nil,
|
"hasCert": originConfig.Cert != nil,
|
||||||
"host": originConfig.RequestHost,
|
"host": originConfig.RequestHost,
|
||||||
|
"followPort": originConfig.FollowPort,
|
||||||
}
|
}
|
||||||
primaryOriginMaps = append(primaryOriginMaps, m)
|
primaryOriginMaps = append(primaryOriginMaps, m)
|
||||||
}
|
}
|
||||||
@@ -100,15 +101,16 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
if len(originConfig.Domains) == 0 {
|
if len(originConfig.Domains) == 0 {
|
||||||
originConfig.Domains = []string{}
|
originConfig.Domains = []string{}
|
||||||
}
|
}
|
||||||
m := maps.Map{
|
var m = maps.Map{
|
||||||
"id": originConfig.Id,
|
"id": originConfig.Id,
|
||||||
"weight": originConfig.Weight,
|
"weight": originConfig.Weight,
|
||||||
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
"addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange,
|
||||||
"name": originConfig.Name,
|
"name": originConfig.Name,
|
||||||
"isOn": originConfig.IsOn,
|
"isOn": originConfig.IsOn,
|
||||||
"domains": originConfig.Domains,
|
"domains": originConfig.Domains,
|
||||||
"hasCert": originConfig.Cert != nil,
|
"hasCert": originConfig.Cert != nil,
|
||||||
"host": originConfig.RequestHost,
|
"host": originConfig.RequestHost,
|
||||||
|
"followPort": originConfig.FollowPort,
|
||||||
}
|
}
|
||||||
backupOriginMaps = append(backupOriginMaps, m)
|
backupOriginMaps = append(backupOriginMaps, m)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,11 +29,14 @@ Vue.component("combo-box", {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 设定菜单宽度
|
// 设定菜单宽度
|
||||||
let inputWidth = this.$refs.searchBox.offsetWidth
|
let searchBox = this.$refs.searchBox
|
||||||
if (inputWidth != null && inputWidth > 0) {
|
if (searchBox != null) {
|
||||||
this.$refs.menu.style.width = inputWidth + "px"
|
let inputWidth = searchBox.offsetWidth
|
||||||
} else if (this.styleWidth.length > 0) {
|
if (inputWidth != null && inputWidth > 0) {
|
||||||
this.$refs.menu.style.width = this.styleWidth
|
this.$refs.menu.style.width = inputWidth + "px"
|
||||||
|
} else if (this.styleWidth.length > 0) {
|
||||||
|
this.$refs.menu.style.width = this.styleWidth
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data: function () {
|
data: function () {
|
||||||
|
|||||||
@@ -86,10 +86,11 @@ Vue.component("origin-list-table", {
|
|||||||
</thead>
|
</thead>
|
||||||
<tr v-for="origin in vOrigins">
|
<tr v-for="origin in vOrigins">
|
||||||
<td :class="{disabled:!origin.isOn}"><a href="" @click.prevent="updateOrigin(origin.id)">{{origin.addr}} <i class="icon expand small"></i></a>
|
<td :class="{disabled:!origin.isOn}"><a href="" @click.prevent="updateOrigin(origin.id)">{{origin.addr}} <i class="icon expand small"></i></a>
|
||||||
<div style="margin-top: 0.3em" v-if="origin.name.length > 0 || origin.hasCert || (origin.host != null && origin.host.length > 0) || (origin.domains != null && origin.domains.length > 0)">
|
<div style="margin-top: 0.3em" v-if="origin.name.length > 0 || origin.hasCert || (origin.host != null && origin.host.length > 0) || origin.followPort || (origin.domains != null && origin.domains.length > 0)">
|
||||||
<tiny-basic-label v-if="origin.name.length > 0">{{origin.name}}</tiny-basic-label>
|
<tiny-basic-label v-if="origin.name.length > 0">{{origin.name}}</tiny-basic-label>
|
||||||
<tiny-basic-label v-if="origin.hasCert">证书</tiny-basic-label>
|
<tiny-basic-label v-if="origin.hasCert">证书</tiny-basic-label>
|
||||||
<tiny-basic-label v-if="origin.host != null && origin.host.length > 0">主机名: {{origin.host}}</tiny-basic-label>
|
<tiny-basic-label v-if="origin.host != null && origin.host.length > 0">主机名: {{origin.host}}</tiny-basic-label>
|
||||||
|
<tiny-basic-label v-if="origin.followPort">端口跟随</tiny-basic-label>
|
||||||
<span v-if="origin.domains != null && origin.domains.length > 0"><tiny-basic-label v-for="domain in origin.domains">匹配: {{domain}}</tiny-basic-label></span>
|
<span v-if="origin.domains != null && origin.domains.length > 0"><tiny-basic-label v-for="domain in origin.domains">匹配: {{domain}}</tiny-basic-label></span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -14,13 +14,13 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- TCP -->
|
<!-- TCP -->
|
||||||
<select class="ui dropdown auto-width" name="protocol" v-if="serverType == 'tcpProxy'">
|
<select class="ui dropdown auto-width" name="protocol" v-if="serverType == 'tcpProxy'" v-model="protocol">
|
||||||
<option value="tcp">TCP</option>
|
<option value="tcp">TCP</option>
|
||||||
<option value="tls">TLS</option>
|
<option value="tls">TLS</option>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- UDP -->
|
<!-- UDP -->
|
||||||
<select class="ui dropdown auto-width" name="protocol" v-if="serverType == 'udpProxy'">
|
<select class="ui dropdown auto-width" name="protocol" v-if="serverType == 'udpProxy'" v-model="protocol">
|
||||||
<option value="udp">UDP</option>
|
<option value="udp">UDP</option>
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
@@ -32,6 +32,38 @@
|
|||||||
<p class="comment"><span class="red" v-if="addrError.length > 0">{{addrError}}</span>源站服务器地址,通常是一个IP(或域名)加端口<span v-if="serverType == 'httpProxy'">,不需要加 http:// 或 https://</span>。</p>
|
<p class="comment"><span class="red" v-if="addrError.length > 0">{{addrError}}</span>源站服务器地址,通常是一个IP(或域名)加端口<span v-if="serverType == 'httpProxy'">,不需要加 http:// 或 https://</span>。</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2"><more-options-indicator></more-options-indicator></td>
|
||||||
|
</tr>
|
||||||
|
<tbody v-show="moreOptionsVisible">
|
||||||
|
<tr v-if="protocol == 'https' || protocol == 'tls'">
|
||||||
|
<td>{{protocol.toUpperCase()}}证书</td>
|
||||||
|
<td>
|
||||||
|
<ssl-certs-box :v-single-mode="true" :v-view-size="'mini'" :v-description="'可以选择连接源站使用的证书。'"></ssl-certs-box>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-if="isHTTP || protocol == 'tls'">
|
||||||
|
<td>回源主机名</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="host" placeholder="比如example.com" maxlength="100"/>
|
||||||
|
<p class="comment">请求源站时的Host,用于修改源站接收到的域名<span v-if="isHTTP">,自定义Host内容中支持请求变量</span>。</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-if="isHTTP">
|
||||||
|
<td>专属域名</td>
|
||||||
|
<td>
|
||||||
|
<domains-box></domains-box>
|
||||||
|
<p class="comment">默认不需要填写,表示支持所有域名。如果填写了专属域名,表示这些源站只会在所列的专属域名被访问时才生效。</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>端口跟随</td>
|
||||||
|
<td>
|
||||||
|
<checkbox name="followPort"></checkbox>
|
||||||
|
<p class="comment">选中后表示源站的端口保持和用户访问的服务端口保持一致;此时的源站地址中的端口号可以任意填写。</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<submit-btn></submit-btn>
|
<submit-btn></submit-btn>
|
||||||
</form>
|
</form>
|
||||||
@@ -4,8 +4,14 @@ Tea.context(function () {
|
|||||||
|
|
||||||
this.addrError = ""
|
this.addrError = ""
|
||||||
|
|
||||||
|
// 当前服务协议
|
||||||
|
this.isHTTP = (this.serverType == "httpProxy" || this.serverType == "httpWeb")
|
||||||
if (this.serverType == "httpProxy") {
|
if (this.serverType == "httpProxy") {
|
||||||
this.protocol = "http"
|
this.protocol = "http"
|
||||||
|
} else if (this.serverType == "tcpProxy") {
|
||||||
|
this.protocol = "tcp"
|
||||||
|
} else if (this.serverType == "udpProxy") {
|
||||||
|
this.protocol = "udp"
|
||||||
}
|
}
|
||||||
|
|
||||||
this.changeProtocol = function () {
|
this.changeProtocol = function () {
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ Tea.context(function () {
|
|||||||
|
|
||||||
this.addOrigin = function () {
|
this.addOrigin = function () {
|
||||||
teaweb.popup("/servers/addOriginPopup?serverType=" + this.serverType, {
|
teaweb.popup("/servers/addOriginPopup?serverType=" + this.serverType, {
|
||||||
|
height: "27em",
|
||||||
callback: function (resp) {
|
callback: function (resp) {
|
||||||
this.origins.push(resp.data.origin);
|
this.origins.push(resp.data.origin);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ Tea.context(function () {
|
|||||||
this.success = NotifyReloadSuccess("保存成功")
|
this.success = NotifyReloadSuccess("保存成功")
|
||||||
|
|
||||||
this.updateOn = function (b) {
|
this.updateOn = function (b) {
|
||||||
teaweb.confirm(b ? "确定要启用反向代理服务吗?" : "确定要停用反向代理服务吗?", function () {
|
teaweb.confirm(b ? "确定要启用源站吗?" : "确定要停用源站服务吗?", function () {
|
||||||
this.$post(".updateOn")
|
this.$post(".updateOn")
|
||||||
.params({
|
.params({
|
||||||
"serverId": this.serverId,
|
"serverId": this.serverId,
|
||||||
|
|||||||
@@ -59,6 +59,13 @@
|
|||||||
<p class="comment">默认不需要填写,表示支持所有域名。如果填写了专属域名,表示这些源站只会在所列的专属域名被访问时才生效。</p>
|
<p class="comment">默认不需要填写,表示支持所有域名。如果填写了专属域名,表示这些源站只会在所列的专属域名被访问时才生效。</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>端口跟随</td>
|
||||||
|
<td>
|
||||||
|
<checkbox name="followPort"></checkbox>
|
||||||
|
<p class="comment">选中后表示源站的端口保持和用户访问的服务端口保持一致;此时的源站地址中的端口号可以任意填写。</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>权重</td>
|
<td>权重</td>
|
||||||
<td>
|
<td>
|
||||||
|
|||||||
@@ -60,6 +60,13 @@
|
|||||||
<p class="comment">默认不需要填写,表示支持所有域名。如果填写了专属域名,表示这些源站只会在所列的专属域名被访问时才生效。</p>
|
<p class="comment">默认不需要填写,表示支持所有域名。如果填写了专属域名,表示这些源站只会在所列的专属域名被访问时才生效。</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>端口跟随</td>
|
||||||
|
<td>
|
||||||
|
<checkbox name="followPort" v-model="origin.followPort"></checkbox>
|
||||||
|
<p class="comment">选中后表示源站的端口保持和用户访问的服务端口保持一致;此时的源站地址中的端口号可以任意填写。</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>权重</td>
|
<td>权重</td>
|
||||||
<td>
|
<td>
|
||||||
|
|||||||
Reference in New Issue
Block a user