Files
EdgeAdmin/web/public/js/components/common/network-addresses-box.js

122 lines
3.5 KiB
JavaScript
Raw Normal View History

2020-09-13 20:37:07 +08:00
Vue.component("network-addresses-box", {
2022-07-27 16:55:19 +08:00
props: ["v-server-type", "v-addresses", "v-protocol", "v-name", "v-from", "v-support-range", "v-url"],
2020-09-13 20:37:07 +08:00
data: function () {
let addresses = this.vAddresses
if (addresses == null) {
addresses = []
}
2020-09-16 09:09:10 +08:00
let protocol = this.vProtocol
if (protocol == null) {
protocol = ""
}
2020-10-04 14:27:05 +08:00
let name = this.vName
if (name == null) {
name = "addresses"
}
2021-06-28 21:09:22 +08:00
let from = this.vFrom
if (from == null) {
from = ""
}
2020-09-13 20:37:07 +08:00
return {
2020-09-16 09:09:10 +08:00
addresses: addresses,
2020-10-04 14:27:05 +08:00
protocol: protocol,
2021-06-28 21:09:22 +08:00
name: name,
2021-10-10 20:17:40 +08:00
from: from
2020-09-13 20:37:07 +08:00
}
},
watch: {
"vServerType": function () {
this.addresses = []
},
"vAddresses": function () {
if (this.vAddresses != null) {
this.addresses = this.vAddresses
}
2020-09-13 20:37:07 +08:00
}
},
methods: {
addAddr: function () {
let that = this
2020-10-11 10:51:13 +08:00
window.UPDATING_ADDR = null
2022-07-27 16:55:19 +08:00
let url = this.vUrl
if (url == null) {
url = "/servers/addPortPopup"
}
teaweb.popup(url + "?serverType=" + this.vServerType + "&protocol=" + this.protocol + "&from=" + this.from + "&supportRange=" + (this.supportRange() ? 1 : 0), {
2021-10-10 16:30:21 +08:00
height: "18em",
2020-09-13 20:37:07 +08:00
callback: function (resp) {
2020-10-04 14:27:05 +08:00
var addr = resp.data.address
2021-10-10 16:30:21 +08:00
if (that.addresses.$find(function (k, v) {
return addr.host == v.host && addr.portRange == v.portRange && addr.protocol == v.protocol
}) != null) {
teaweb.warn("要添加的网络地址已经存在")
return
}
2020-10-04 14:27:05 +08:00
that.addresses.push(addr)
2020-09-13 20:37:07 +08:00
if (["https", "https4", "https6"].$contains(addr.protocol)) {
2020-10-04 14:27:05 +08:00
this.tlsProtocolName = "HTTPS"
2020-09-13 20:37:07 +08:00
} else if (["tls", "tls4", "tls6"].$contains(addr.protocol)) {
2020-10-04 14:27:05 +08:00
this.tlsProtocolName = "TLS"
2020-09-13 20:37:07 +08:00
}
2020-10-04 14:27:05 +08:00
// 发送事件
that.$emit("change", that.addresses)
2020-09-13 20:37:07 +08:00
}
})
},
removeAddr: function (index) {
this.addresses.$remove(index);
2020-10-04 14:27:05 +08:00
2020-10-11 10:51:13 +08:00
// 发送事件
this.$emit("change", this.addresses)
},
updateAddr: function (index, addr) {
let that = this
window.UPDATING_ADDR = addr
2022-07-27 16:55:19 +08:00
let url = this.vUrl
if (url == null) {
url = "/servers/addPortPopup"
}
teaweb.popup(url + "?serverType=" + this.vServerType + "&protocol=" + this.protocol + "&from=" + this.from + "&supportRange=" + (this.supportRange() ? 1 : 0), {
2021-10-10 16:30:21 +08:00
height: "18em",
2020-10-11 10:51:13 +08:00
callback: function (resp) {
var addr = resp.data.address
Vue.set(that.addresses, index, addr)
if (["https", "https4", "https6"].$contains(addr.protocol)) {
this.tlsProtocolName = "HTTPS"
} else if (["tls", "tls4", "tls6"].$contains(addr.protocol)) {
this.tlsProtocolName = "TLS"
}
// 发送事件
that.$emit("change", that.addresses)
}
})
2020-10-04 14:27:05 +08:00
// 发送事件
this.$emit("change", this.addresses)
2021-10-10 20:17:40 +08:00
},
supportRange: function () {
return this.vSupportRange || (this.vServerType == "tcpProxy" || this.vServerType == "udpProxy")
2020-09-13 20:37:07 +08:00
}
},
template: `<div>
2020-10-04 14:27:05 +08:00
<input type="hidden" :name="name" :value="JSON.stringify(addresses)"/>
2020-09-13 20:37:07 +08:00
<div v-if="addresses.length > 0">
2020-11-21 15:56:53 +08:00
<div class="ui label small basic" v-for="(addr, index) in addresses">
2021-10-10 16:30:21 +08:00
{{addr.protocol}}://<span v-if="addr.host.length > 0">{{addr.host.quoteIP()}}</span><span v-if="addr.host.length == 0">*</span>:<span v-if="addr.portRange.indexOf('-')<0">{{addr.portRange}}</span><span v-else style="font-style: italic">{{addr.portRange}}</span>
2020-10-11 10:51:13 +08:00
<a href="" @click.prevent="updateAddr(index, addr)" title="修改"><i class="icon pencil small"></i></a>
2020-09-13 20:37:07 +08:00
<a href="" @click.prevent="removeAddr(index)" title="删除"><i class="icon remove"></i></a> </div>
<div class="ui divider"></div>
</div>
<a href="" @click.prevent="addAddr()">[添加端口绑定]</a>
</div>`
})