Initial commit (code only without large binaries)
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
{$layout "layout_popup"}
|
||||
|
||||
<h3>创建高防实例</h3>
|
||||
|
||||
<form class="ui form" data-tea-action="$" data-tea-success="success">
|
||||
<csrf-token></csrf-token>
|
||||
<table class="ui table definition selectable">
|
||||
<tr v-if="packageId > 0">
|
||||
<td>所属产品</td>
|
||||
<td>{{packageSummary}}
|
||||
<input type="hidden" name="packageId" :value="packageId"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tbody v-if="packageId == 0">
|
||||
<tr>
|
||||
<td>所属线路 *</td>
|
||||
<td>
|
||||
<div v-if="networks.length > 0">
|
||||
<select class="ui dropdown auto-width" name="networkId" v-model="networkId">
|
||||
<option value="0">[选择线路]</option>
|
||||
<option v-for="network in networks" :value="network.id">{{network.name}}</option>
|
||||
</select>
|
||||
</div>
|
||||
<span class="red" v-if="networks.length == 0">尚未创建线路和产品。</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>所属产品 *</td>
|
||||
<td>
|
||||
<div v-show="networkId > 0">
|
||||
<select class="ui dropdown auto-width" name="packageId">
|
||||
<option value="0">[选择产品]</option>
|
||||
<option v-for="p in packages" :value="p.id" v-if="p.networkId == networkId">{{p.summary}}</option>
|
||||
</select>
|
||||
</div>
|
||||
<span v-if="networkId == 0" class="grey">请先选择线路</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tr>
|
||||
<td class="title">部署集群 *</td>
|
||||
<td>
|
||||
<node-cluster-combo-box></node-cluster-combo-box>
|
||||
<p class="comment">用于防护的网站部署的集群。</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>高防IP *</td>
|
||||
<td>
|
||||
<values-box name="ipAddresses" placeholder="x.x.x.x" maxlength="64" :validator="ipValidator"></values-box>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<submit-btn>保存</submit-btn>
|
||||
</form>
|
||||
@@ -0,0 +1,13 @@
|
||||
Tea.context(function () {
|
||||
this.ipValidator = function (ip) {
|
||||
if (teaweb.validateIP(ip)) {
|
||||
return {
|
||||
isOk: true
|
||||
}
|
||||
}
|
||||
return {
|
||||
isOk: false,
|
||||
message: "请输入正确的IP"
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,92 @@
|
||||
{$layout}
|
||||
{$template "../menu"}
|
||||
|
||||
<second-menu>
|
||||
<menu-item v-if="selectedPackage != null && selectedPackage.id > 0"><span class="ui label" style="font-weight: normal">{{selectedPackage.summary}}</span> <a href="/clusters/anti-ddos/instances" title="清除条件"><i class="icon remove small"></i></a></menu-item>
|
||||
<span class="item disabled" v-if="selectedPackage != null && selectedPackage.id > 0" style="padding-left: 0">|</span>
|
||||
<menu-item @click.prevent="createInstance()">[创建高防实例]</menu-item>
|
||||
</second-menu>
|
||||
|
||||
<div v-show="selectedPackageId == 0">
|
||||
<form class="ui form" action="/clusters/anti-ddos/instances" method="get">
|
||||
<div class="ui fields inline">
|
||||
<div class="ui field">
|
||||
<select class="ui dropdown" name="networkId" v-model="networkId">
|
||||
<option value="0">[线路]</option>
|
||||
<option v-for="network in networks" :value="network.id">{{network.name}}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="ui field">
|
||||
<input type="text" name="ip" placeholder="高防IP" v-model="ip" maxlength="64"/>
|
||||
</div>
|
||||
<div class="ui field">
|
||||
<button type="submit" class="ui button">搜索</button>
|
||||
|
||||
<a href="/clusters/anti-ddos/instances" v-if="networkId > 0 || ip.length > 0">[清除缓存]</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div class="margin"></div>
|
||||
</div>
|
||||
|
||||
<div v-if="instances.length == 0">
|
||||
<p class="comment">暂时还没有高防实例。</p>
|
||||
</div>
|
||||
|
||||
<div v-if="instances.length > 0">
|
||||
<table class="ui table selectable celled">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>所属线路</th>
|
||||
<th>防护带宽</th>
|
||||
<th>业务带宽</th>
|
||||
<th>部署集群</th>
|
||||
<th class="three wide">高防IP</th>
|
||||
<th class="three wide">租用用户</th>
|
||||
<th class="width5">状态</th>
|
||||
<th class="two op">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tr v-for="instance in instances">
|
||||
<td>
|
||||
<span v-if="instance.network != null && instance.network.id > 0">{{instance.network.name}}</span>
|
||||
<span v-else class="red">已删除</span>
|
||||
</td>
|
||||
<td>
|
||||
<div v-if="instance.package != null && instance.package.id > 0">
|
||||
{{instance.package.protectionBandwidthSize}}
|
||||
{{instance.package.protectionBandwidthUnit.toBitUpper()}}
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div v-if="instance.package != null && instance.package.id > 0">
|
||||
{{instance.package.serverBandwidthSize}}
|
||||
{{instance.package.serverBandwidthUnit.toBitUpper()}}
|
||||
</div>
|
||||
<span v-else class="red">已删除</span>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="instance.cluster != null && instance.cluster.id > 0">{{instance.cluster.name}}</span>
|
||||
<span v-else class="red">已删除</span>
|
||||
</td>
|
||||
<td>
|
||||
<div v-for="ipAddr in instance.ipAddresses"><keyword :v-word="ip">{{ipAddr}}</keyword></div>
|
||||
</td>
|
||||
<td>
|
||||
<div v-if="instance.user != null && instance.user.id > 0"><user-link :v-user="instance.user"></user-link>
|
||||
<div>
|
||||
<span class="small grey">到{{instance.userDayTo}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<span v-else class="disabled">暂无</span>
|
||||
</td>
|
||||
<td><label-on :v-is-on="instance.isOn"></label-on></td>
|
||||
<td>
|
||||
<a href="" @click.prevent="updateInstance(instance.id)">修改</a>
|
||||
<a href="" @click.prevent="deleteInstance(instance.id)">删除</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<page-box></page-box>
|
||||
</div>
|
||||
@@ -0,0 +1,44 @@
|
||||
Tea.context(function () {
|
||||
this.createInstance = function () {
|
||||
let packageId = 0
|
||||
if (this.selectedPackage != null) {
|
||||
packageId = this.selectedPackage.id
|
||||
} else if (this.packageId > 0) {
|
||||
packageId = this.packageId
|
||||
}
|
||||
|
||||
teaweb.popup(".createPopup?networkId=" + this.networkId + "&packageId=" + packageId, {
|
||||
height: "24em",
|
||||
callback: function () {
|
||||
teaweb.successRefresh("保存成功")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
this.updateInstance = function (instanceId) {
|
||||
teaweb.popup(".instance.updatePopup?instanceId=" + instanceId, {
|
||||
height: "24em",
|
||||
callback: function () {
|
||||
teaweb.successRefresh("保存成功")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
this.deleteInstance = function (instanceId) {
|
||||
let that = this
|
||||
teaweb.confirm("确定要删除当前实例吗?", function () {
|
||||
that.$post(".instance.delete")
|
||||
.params({
|
||||
instanceId: instanceId
|
||||
})
|
||||
.success(function () {
|
||||
teaweb.successRefresh("删除成功")
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
String.prototype.toBitUpper = function () {
|
||||
let unit = this
|
||||
return unit.replace(/bps$/, "").replace(/b$/, "").toUpperCase() + "bps"
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,42 @@
|
||||
{$layout "layout_popup"}
|
||||
|
||||
<h3>修改高防实例</h3>
|
||||
|
||||
<form class="ui form" data-tea-action="$" data-tea-success="success">
|
||||
<csrf-token></csrf-token>
|
||||
<input type="hidden" name="instanceId" :value="instanceId"/>
|
||||
<table class="ui table definition selectable">
|
||||
<tr>
|
||||
<td>所属产品</td>
|
||||
<td>
|
||||
<span v-if="instance.package != null">{{instance.package.summary}}</span>
|
||||
<span v-else class="red">已被删除</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="title">部署集群 *</td>
|
||||
<td>
|
||||
<node-cluster-combo-box :v-cluster-id="instance.clusterId"></node-cluster-combo-box>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>高防IP *</td>
|
||||
<td>
|
||||
<values-box name="ipAddresses" placeholder="x.x.x.x" maxlength="64" :validator="ipValidator" :v-values="instance.ipAddresses"></values-box>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"><more-options-indicator></more-options-indicator></td>
|
||||
</tr>
|
||||
<tbody v-show="moreOptionsVisible">
|
||||
<tr>
|
||||
<td>启用当前实例</td>
|
||||
<td>
|
||||
<checkbox name="isOn" v-model="instance.isOn"></checkbox>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<submit-btn>保存</submit-btn>
|
||||
</form>
|
||||
@@ -0,0 +1,13 @@
|
||||
Tea.context(function () {
|
||||
this.ipValidator = function (ip) {
|
||||
if (teaweb.validateIP(ip)) {
|
||||
return {
|
||||
isOk: true
|
||||
}
|
||||
}
|
||||
return {
|
||||
isOk: false,
|
||||
message: "请输入正确的IP"
|
||||
}
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user