mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-06 06:40:27 +08:00
创建集群时增加“只允许绑定的域名访问”选项
This commit is contained in:
@@ -97,11 +97,6 @@ func (this *ClusterHelper) createSettingMenu(cluster *pb.NodeCluster, info *pb.F
|
||||
"isActive": selectedItem == "basic",
|
||||
"isOn": true,
|
||||
})
|
||||
items = append(items, maps.Map{
|
||||
"name": "服务设置",
|
||||
"url": "/clusters/cluster/settings/global-server-config?clusterId=" + clusterId,
|
||||
"isActive": selectedItem == "globalServerConfig",
|
||||
})
|
||||
items = append(items, maps.Map{
|
||||
"name": "缓存设置",
|
||||
"url": "/clusters/cluster/settings/cache?clusterId=" + clusterId,
|
||||
@@ -158,6 +153,12 @@ func (this *ClusterHelper) createSettingMenu(cluster *pb.NodeCluster, info *pb.F
|
||||
"isOn": info != nil && info.HasDDoSProtection,
|
||||
})
|
||||
|
||||
items = append(items, maps.Map{
|
||||
"name": "服务设置",
|
||||
"url": "/clusters/cluster/settings/global-server-config?clusterId=" + clusterId,
|
||||
"isActive": selectedItem == "globalServerConfig",
|
||||
})
|
||||
|
||||
items = append(items, maps.Map{
|
||||
"name": "-",
|
||||
})
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/dns/domains/domainutils"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
|
||||
"github.com/iwind/TeaGo/actions"
|
||||
)
|
||||
|
||||
@@ -55,6 +56,9 @@ func (this *CreateAction) RunPost(params struct {
|
||||
// WAF策略
|
||||
HttpFirewallPolicyId int64
|
||||
|
||||
// 服务配置
|
||||
MatchDomainStrictly bool
|
||||
|
||||
// SSH相关
|
||||
GrantId int64
|
||||
InstallDir string
|
||||
@@ -93,6 +97,15 @@ func (this *CreateAction) RunPost(params struct {
|
||||
|
||||
// TODO 检查DnsDomainId的有效性
|
||||
|
||||
// 全局服务配置
|
||||
var globalServerConfig = serverconfigs.DefaultGlobalServerConfig()
|
||||
globalServerConfig.HTTPAll.MatchDomainStrictly = params.MatchDomainStrictly
|
||||
globalServerConfigJSON, err := json.Marshal(globalServerConfig)
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
return
|
||||
}
|
||||
|
||||
// 系统服务
|
||||
var systemServices = map[string]any{}
|
||||
if params.SystemdServiceIsOn {
|
||||
@@ -116,6 +129,7 @@ func (this *CreateAction) RunPost(params struct {
|
||||
HttpCachePolicyId: params.CachePolicyId,
|
||||
HttpFirewallPolicyId: params.HttpFirewallPolicyId,
|
||||
SystemServicesJSON: systemServicesJSON,
|
||||
GlobalServerConfigJSON: globalServerConfigJSON,
|
||||
})
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
|
||||
@@ -7,7 +7,6 @@ import (
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
|
||||
"github.com/iwind/TeaGo/actions"
|
||||
"github.com/iwind/TeaGo/maps"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -65,7 +64,7 @@ func (this *IndexAction) RunPost(params struct {
|
||||
DefaultDomain string
|
||||
}) {
|
||||
// 创建日志
|
||||
defer this.CreateLog(oplogs.LevelInfo, "保存代理服务全局配置")
|
||||
defer this.CreateLog(oplogs.LevelInfo, "保存网站服务全局配置")
|
||||
|
||||
if len(params.GlobalConfigJSON) == 0 {
|
||||
this.Fail("错误的配置信息,请刷新当前页面后重试")
|
||||
@@ -84,27 +83,6 @@ func (this *IndexAction) RunPost(params struct {
|
||||
allowMismatchDomains = append(allowMismatchDomains, domain)
|
||||
}
|
||||
}
|
||||
globalConfig.HTTPAll.AllowMismatchDomains = allowMismatchDomains
|
||||
|
||||
// 不匹配域名的动作
|
||||
switch params.DomainMismatchAction {
|
||||
case "close":
|
||||
globalConfig.HTTPAll.DomainMismatchAction = &serverconfigs.DomainMismatchAction{
|
||||
Code: "close",
|
||||
Options: nil,
|
||||
}
|
||||
case "page":
|
||||
if params.DomainMismatchActionPageStatusCode <= 0 {
|
||||
params.DomainMismatchActionPageStatusCode = 404
|
||||
}
|
||||
globalConfig.HTTPAll.DomainMismatchAction = &serverconfigs.DomainMismatchAction{
|
||||
Code: "page",
|
||||
Options: maps.Map{
|
||||
"statusCode": params.DomainMismatchActionPageStatusCode,
|
||||
"contentHTML": params.DomainMismatchActionPageContentHTML,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// TCP端口范围
|
||||
if params.TcpAllPortRangeMin < 1024 {
|
||||
|
||||
@@ -47,6 +47,6 @@ Vue.component("checkbox", {
|
||||
},
|
||||
template: `<div class="ui checkbox">
|
||||
<input type="checkbox" :name="name" :value="elementValue" :id="elementId" @change="change" v-model="newValue"/>
|
||||
<label :for="elementId" style="font-size: 0.85em!important;"><slot></slot></label>
|
||||
<label :for="elementId"><slot></slot></label>
|
||||
</div>`
|
||||
})
|
||||
@@ -23,6 +23,13 @@
|
||||
<p class="comment">为可选项。集群中的网站服务可以自行设置是否启用此设置。</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>只允许绑定的域名访问</td>
|
||||
<td>
|
||||
<checkbox name="matchDomainStrictly" value="1"></checkbox>
|
||||
<p class="comment">选中后,表示只有已经绑定(<tip-icon content="已经绑定的域名:为在网站设置--“域名”设置页中已经填入的域名。"></tip-icon>)的域名才允许访问;不选中表示访问一个不存在的域名时默认选择第一个网站。</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h4>节点安装选项 <span class="grey small">(可选)</span></h4>
|
||||
@@ -31,7 +38,7 @@
|
||||
<td class="title">默认SSH登录方式</td>
|
||||
<td>
|
||||
<grant-selector></grant-selector>
|
||||
<p class="comment">当节点没有单独设置SSH登录方式时,默认使用此设置。</p>
|
||||
<p class="comment">当前集群下节点统一的登录设置;当节点没有单独设置SSH登录方式时,默认使用此设置。</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -42,7 +49,7 @@
|
||||
目录。</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr v-show="false">
|
||||
<td>自动加入Systemd服务</td>
|
||||
<td>
|
||||
<checkbox name="systemdServiceIsOn" checked="checked"></checkbox>
|
||||
|
||||
Reference in New Issue
Block a user