This commit is contained in:
GoEdgeLab
2024-07-27 15:42:58 +08:00
parent 7279dc873f
commit d7d0c8fbfe
490 changed files with 2158 additions and 738 deletions

View File

@@ -18,7 +18,7 @@
</div>
</td>
</tr>
<tr>
<tr v-if="!asyncCreateCert">
<td>证书用户 *</td>
<td>
<div v-if="users.length > 0">
@@ -35,6 +35,24 @@
</div>
</td>
</tr>
<tr>
<td>异步申请证书</td>
<td>
<checkbox name="asyncCreateCert" v-model="asyncCreateCert">启用</checkbox>
<p class="comment">建议域名多的时候勾选,异步并发执行证书申请,申请成功后会自动绑定到服务</p>
</td>
</tr>
<tr v-if="asyncCreateCert">
<td>证书类型</td>
<td class="ui fields inline">
<div class="ui field">
<select class="ui dropdown" name="providerCode" v-model="providerCode">
<option value="letsencrypt">Let's Encrypt</option>
</select>
</div>
<p class="comment">选择证书类型。</p>
</td>
</tr>
</table>
<submit-btn v-if="!isRequesting">提交</submit-btn>

View File

@@ -1,6 +1,8 @@
Tea.context(function () {
this.isRequesting = false
this.userId = 0
this.asyncCreateCert = false
this.providerCode = "letsencrypt"
this.remove = function (index) {
this.serverNames.$remove(index)

View File

@@ -5,6 +5,7 @@
<span class="item disabled">|</span>
<menu-item :href="'/servers/server/settings/waf/ipadmin/countries?serverId=' + serverId + '&firewallPolicyId='+firewallPolicyId" code="country">国家/地区封禁</menu-item>
<menu-item :href="'/servers/server/settings/waf/ipadmin/provinces?serverId=' + serverId + '&firewallPolicyId='+firewallPolicyId" code="province">省份封禁</menu-item>
<menu-item :href="'/servers/server/settings/waf/ipadmin/providers?serverId=' + serverId + '&firewallPolicyId='+firewallPolicyId" code="provider">运营商封禁</menu-item>
<menu-item :href="'/servers/server/settings/waf/ipadmin/allowList?serverId=' + serverId + '&firewallPolicyId='+firewallPolicyId" code="allowList">白名单</menu-item>
<menu-item :href="'/servers/server/settings/waf/ipadmin/denyList?serverId=' + serverId + '&firewallPolicyId='+firewallPolicyId" code="denyList">黑名单</menu-item>
<menu-item :href="'/servers/server/settings/waf/ipadmin/greyList?serverId=' + serverId + '&firewallPolicyId='+firewallPolicyId" code="greyList">灰名单</menu-item>

View File

@@ -0,0 +1,59 @@
{$layout}
{$template "../../settings_menu"}
{$template "/left_menu_with_menu"}
<div class="right-box with-menu">
{$template "../menu"}
<warning-message v-if="!featureIsOn">尚未为当前用户开通此功能。</warning-message>
{$ if .featureIsOn}
<warning-message v-if="!wafIsOn">当前WAF未启用设置将在<a :href="'/servers/server/settings/waf?serverId=' + serverId">[启用Web防火墙]</a>后生效。</warning-message>
<warning-message v-if="clusterFirewallPolicy != null && clusterFirewallPolicy.mode != 'defend'">当前网站所在集群的WAF策略模式为
<span v-if="clusterFirewallPolicy.modeInfo != null"><strong>{{clusterFirewallPolicy.modeInfo.name}}</strong></span>
<span v-else>非防御模式</span>,当前设置将不会生效。
</warning-message>
<form method="post" class="ui form" data-tea-action="$" data-tea-success="success">
<input type="hidden" name="firewallPolicyId" :value="firewallPolicyId"/>
<input type="hidden" name="exceptURLPatternsJSON" :value="JSON.stringify(exceptURLPatterns)"/>
<input type="hidden" name="onlyURLPatternsJSON" :value="JSON.stringify(onlyURLPatterns)"/>
<table class="ui table selectable definition">
<tr>
<td class="title">仅允许的运营商</td>
<td>
<http-firewall-provider-selector :v-providers="allowedProviders" :v-type="'allow'" @change="changeAllowedProviders"></http-firewall-provider-selector>
</td>
</tr>
<tr>
<td class="title">仅封禁的运营商</td>
<td>
<p class="comment" v-if="allowedProviders.length > 0">由于你已设置"仅允许的运营商",所以不需要再设置封禁运营商。</p>
<http-firewall-provider-selector :v-providers="deniedProviders" :v-type="'deny'" v-show="allowedProviders.length == 0"></http-firewall-provider-selector>
</td>
</tr>
<tr>
<td colspan="2"><more-options-indicator></more-options-indicator></td>
</tr>
<tbody v-show="moreOptionsVisible">
<tr>
<td>例外URL &nbsp;<tip-icon content="对这些URL将不做任何限制。"></tip-icon></td>
<td><url-patterns-box v-model="exceptURLPatterns"></url-patterns-box></td>
</tr>
<tr>
<td>限制URL &nbsp;<tip-icon content="只对这些URL做限制。"></tip-icon></td>
<td><url-patterns-box v-model="onlyURLPatterns"></url-patterns-box></td>
</tr>
<tr>
<td>提示内容</td>
<td>
<textarea v-model="providerHTML" name="providerHTML" rows="3"></textarea>
<p class="comment">当客户端所在运营商被封禁时提示页面的HTML内容不填则表示使用默认的提示内容支持请求变量。</p>
</td>
</tr>
</tbody>
</table>
<submit-btn></submit-btn>
</form>
{$end}
</div>

View File

@@ -0,0 +1,11 @@
Tea.context(function () {
this.success = function () {
teaweb.success("保存成功", function () {
teaweb.reload()
})
}
this.changeAllowedProviders = function (event) {
this.allowedProviders = event.providers
}
})

View File

@@ -0,0 +1,10 @@
.providers-list .item {
float: left;
width: 12em;
margin-bottom: 0.5em;
}
.providers-list .item .checkbox label {
font-size: 12px !important;
cursor: pointer !important;
}

View File

@@ -0,0 +1,32 @@
{$layout "layout_popup"}
<h3 v-show="type == 'allow'">选择允许的运营商</h3>
<h3 v-show="type == 'deny'">选择封禁的运营商</h3>
<form class="ui form">
<table class="ui table">
<tr>
<td>
<first-menu>
<div class="item right">
<div class="ui checkbox" @click.prevent="checkAll">
<input type="checkbox" v-model="isCheckingAll"/>
<label>全选</label>
</div>
</div>
</first-menu>
<div class="providers-list" style="margin-top:0.5em">
<div class="item" v-for="provider in providers">
<div class="ui checkbox" @click.prevent="selectProvider(provider)">
<input type="checkbox" v-model="provider.isChecked"/>
<label>{{provider.name}}</label>
</div>
</div>
</div>
<div class="clear"></div>
</td>
</tr>
</table>
<button class="ui button primary" type="button" @click.prevent="submit">确定</button>
</form>

View File

@@ -0,0 +1,46 @@
Tea.context(function () {
this.isCheckingAll = false
this.countSelectedProviders = this.providers.$count(function (k, provider) {
return provider.isChecked
})
this.selectProvider = function (provider) {
provider.isChecked = !provider.isChecked
this.change()
}
this.deselectProvider = function (provider) {
provider.isChecked = false
this.change()
}
this.checkAll = function () {
this.isCheckingAll = !this.isCheckingAll
let that = this
this.providers.forEach(function (provider) {
provider.isChecked = that.isCheckingAll
})
this.change()
}
this.change = function () {
}
this.submit = function () {
let selectedProviders = []
this.providers.forEach(function (provider) {
if (provider.isChecked) {
selectedProviders.push(provider)
}
})
NotifyPopup({
code: 200,
data: {
selectedProviders: selectedProviders
}
})
}
})