diff options
| author | MHSanaei <ho3ein.sanaei@gmail.com> | 2026-04-20 17:38:33 +0300 |
|---|---|---|
| committer | MHSanaei <ho3ein.sanaei@gmail.com> | 2026-04-20 17:55:06 +0300 |
| commit | 04b4fb438487ada373fb3e6437b4cdb28b5174de (patch) | |
| tree | 3814ae9d0e10d2ee8e061bd3ff5495aab0ca48c4 /web | |
| parent | ae5ad505d04fa347eb96a0d2bfb54ff541c3b709 (diff) | |
finalmask
Co-Authored-By: Alireza Ahmadi <alireza7@gmail.com>
Diffstat (limited to 'web')
24 files changed, 1332 insertions, 1217 deletions
diff --git a/web/assets/js/model/outbound.js b/web/assets/js/model/outbound.js index b8ec4c12..c0e7b03d 100644 --- a/web/assets/js/model/outbound.js +++ b/web/assets/js/model/outbound.js @@ -579,6 +579,8 @@ class UdpMask extends CommonClass { case 'header-dns': case 'xdns': return { domain: settings.domain || '' }; + case 'xicmp': + return { ip: settings.ip || '', id: settings.id ?? 0 }; case 'mkcp-original': case 'header-dtls': case 'header-srtp': @@ -586,6 +588,12 @@ class UdpMask extends CommonClass { case 'header-wechat': case 'header-wireguard': return {}; // No settings needed + case 'header-custom': + return { client: [], server: [] }; + case 'noise': + return { reset: 0, noise: [] }; + case 'sudoku': + return { ascii: '', customTable: '', customTables: [], paddingMin: 0, paddingMax: 0 }; default: return settings; } diff --git a/web/html/form/client.html b/web/html/form/client.html index da19fe8f..ef0cfb0a 100644 --- a/web/html/form/client.html +++ b/web/html/form/client.html @@ -1,6 +1,5 @@ {{define "form/client"}} -<a-form layout="horizontal" v-if="client" :colon="false" - :label-col="{ md: {span:8} }" :wrapper-col="{ md: {span:14} }"> +<a-form layout="horizontal" v-if="client" :colon="false" :label-col="{ md: {span:8} }" :wrapper-col="{ md: {span:14} }"> <a-form-item label='{{ i18n "pages.inbounds.enable" }}'> <a-switch v-model="client.enable"></a-switch> </a-form-item> @@ -11,14 +10,12 @@ <span>{{ i18n "pages.inbounds.emailDesc" }}</span> </template> {{ i18n "pages.inbounds.email" }} - <a-icon type="sync" - @click="client.email = RandomUtil.randomLowerAndNum(9)"></a-icon> + <a-icon type="sync" @click="client.email = RandomUtil.randomLowerAndNum(9)"></a-icon> </a-tooltip> </template> <a-input v-model.trim="client.email"></a-input> </a-form-item> - <a-form-item - v-if="inbound.protocol === Protocols.TROJAN || inbound.protocol === Protocols.SHADOWSOCKS"> + <a-form-item v-if="inbound.protocol === Protocols.TROJAN || inbound.protocol === Protocols.SHADOWSOCKS"> <template slot="label"> <a-tooltip> <template slot="title"> @@ -28,8 +25,7 @@ <a-icon v-if="inbound.protocol === Protocols.SHADOWSOCKS" @click="client.password = RandomUtil.randomShadowsocksPassword(inbound.settings.method)" type="sync"></a-icon> - <a-icon v-if="inbound.protocol === Protocols.TROJAN" - @click="client.password = RandomUtil.randomSeq(10)" + <a-icon v-if="inbound.protocol === Protocols.TROJAN" @click="client.password = RandomUtil.randomSeq(10)" type="sync"> </a-icon> </a-tooltip> </template> @@ -42,29 +38,24 @@ <span>{{ i18n "reset" }}</span> </template> Auth Password - <a-icon @click="client.auth = RandomUtil.randomSeq(10)" - type="sync"></a-icon> + <a-icon @click="client.auth = RandomUtil.randomSeq(10)" type="sync"></a-icon> </a-tooltip> </template> <a-input v-model.trim="client.auth"></a-input> </a-form-item> - <a-form-item - v-if="inbound.protocol === Protocols.VMESS || inbound.protocol === Protocols.VLESS"> + <a-form-item v-if="inbound.protocol === Protocols.VMESS || inbound.protocol === Protocols.VLESS"> <template slot="label"> <a-tooltip> <template slot="title"> <span>{{ i18n "reset" }}</span> </template> - ID <a-icon @click="client.id = RandomUtil.randomUUID()" - type="sync"></a-icon> + ID <a-icon @click="client.id = RandomUtil.randomUUID()" type="sync"></a-icon> </a-tooltip> </template> <a-input v-model.trim="client.id"></a-input> </a-form-item> - <a-form-item v-if="inbound.protocol === Protocols.VMESS" - label='{{ i18n "security" }}'> - <a-select v-model="client.security" - :dropdown-class-name="themeSwitcher.currentTheme"> + <a-form-item v-if="inbound.protocol === Protocols.VMESS" label='{{ i18n "security" }}'> + <a-select v-model="client.security" :dropdown-class-name="themeSwitcher.currentTheme"> <a-select-option v-for="key in USERS_SECURITY" :value="key">[[ key ]]</a-select-option> </a-select> @@ -76,8 +67,7 @@ <span>{{ i18n "pages.inbounds.subscriptionDesc" }}</span> </template> Subscription - <a-icon @click="client.subId = RandomUtil.randomLowerAndNum(16)" - type="sync"></a-icon> + <a-icon @click="client.subId = RandomUtil.randomLowerAndNum(16)" type="sync"></a-icon> </a-tooltip> </template> <a-input v-model.trim="client.subId"></a-input> @@ -92,8 +82,7 @@ <a-icon type="question-circle"></a-icon> </a-tooltip> </template> - <a-input-number :style="{ width: '50%' }" v-model.number="client.tgId" - min="0"></a-input-number> + <a-input-number :style="{ width: '50%' }" v-model.number="client.tgId" min="0"></a-input-number> </a-form-item> <a-form-item v-if="client.email" label='{{ i18n "comment" }}'> <a-input v-model.trim="client.comment"></a-input> @@ -108,11 +97,9 @@ <a-icon type="question-circle"></a-icon> </a-tooltip> </template> - <a-input-number v-model.number="client.limitIp" - min="0"></a-input-number> + <a-input-number v-model.number="client.limitIp" min="0"></a-input-number> </a-form-item> - <a-form-item - v-if="app.ipLimitEnable && client.limitIp > 0 && client.email && isEdit"> + <a-form-item v-if="app.ipLimitEnable && client.limitIp > 0 && client.email && isEdit"> <template slot="label"> <a-tooltip> <template slot="title"> @@ -127,21 +114,17 @@ <span>{{ i18n "pages.inbounds.IPLimitlogclear" }}</span> </template> <span :style="{ color: '#FF4D4F' }"> - <a-icon type="delete" - @click="clearDBClientIps(client.email)"></a-icon> + <a-icon type="delete" @click="clearDBClientIps(client.email)"></a-icon> </span> </a-tooltip> <a-form layout="block"> - <a-textarea id="clientIPs" readonly - @click="getDBClientIps(client.email)" - placeholder="Click To Get IPs" + <a-textarea id="clientIPs" readonly @click="getDBClientIps(client.email)" placeholder="Click To Get IPs" :auto-size="{ minRows: 5, maxRows: 10 }"> </a-textarea> </a-form> </a-form-item> <a-form-item v-if="inbound.canEnableTlsFlow()" label='Flow'> - <a-select v-model="client.flow" - :dropdown-class-name="themeSwitcher.currentTheme"> + <a-select v-model="client.flow" :dropdown-class-name="themeSwitcher.currentTheme"> <a-select-option value selected>{{ i18n "none" }}</a-select-option> <a-select-option v-for="key in TLS_FLOW_CONTROL" :value="key">[[ key ]]</a-select-option> @@ -157,12 +140,10 @@ <a-icon type="question-circle"></a-icon> </a-tooltip> </template> - <a-input-number v-model.number="client._totalGB" - :min="0"></a-input-number> + <a-input-number v-model.number="client._totalGB" :min="0"></a-input-number> </a-form-item> <a-form-item v-if="isEdit && clientStats" label='{{ i18n "usage" }}'> - <a-tag - :color="ColorUtils.clientUsageColor(clientStats, app.trafficDiff)"> + <a-tag :color="ColorUtils.clientUsageColor(clientStats, app.trafficDiff)"> [[ SizeFormatter.sizeFormat(clientStats.up) ]] / [[ SizeFormatter.sizeFormat(clientStats.down) ]] ([[ SizeFormatter.sizeFormat(clientStats.up + clientStats.down) ]]) @@ -170,19 +151,15 @@ <a-tooltip> <template slot="title">{{ i18n "pages.inbounds.resetTraffic" }}</template> - <a-icon type="retweet" - @click="resetClientTraffic(client.email,clientStats.inboundId,$event.target)" + <a-icon type="retweet" @click="resetClientTraffic(client.email,clientStats.inboundId,$event.target)" v-if="client.email.length > 0"></a-icon> </a-tooltip> </a-form-item> <a-form-item label='{{ i18n "pages.client.delayedStart" }}'> - <a-switch v-model="delayedStart" - @click="client._expiryTime=0"></a-switch> + <a-switch v-model="delayedStart" @click="client._expiryTime=0"></a-switch> </a-form-item> - <a-form-item v-if="delayedStart" - label='{{ i18n "pages.client.expireDays" }}'> - <a-input-number v-model.number="delayedExpireDays" - :min="0"></a-input-number> + <a-form-item v-if="delayedStart" label='{{ i18n "pages.client.expireDays" }}'> + <a-input-number v-model.number="delayedExpireDays" :min="0"></a-input-number> </a-form-item> <a-form-item v-else> <template slot="label"> @@ -193,14 +170,10 @@ <a-icon type="question-circle"></a-icon> </a-tooltip> </template> - <a-date-picker v-if="datepicker == 'gregorian'" - :show-time="{ format: 'HH:mm:ss' }" format="YYYY-MM-DD HH:mm:ss" - :dropdown-class-name="themeSwitcher.currentTheme" - v-model="client._expiryTime"></a-date-picker> - <a-persian-datepicker v-else - placeholder='{{ i18n "pages.settings.datepickerPlaceholder" }}' - value="client._expiryTime" - v-model="client._expiryTime"></a-persian-datepicker> + <a-date-picker v-if="datepicker == 'gregorian'" :show-time="{ format: 'HH:mm:ss' }" format="YYYY-MM-DD HH:mm:ss" + :dropdown-class-name="themeSwitcher.currentTheme" v-model="client._expiryTime"></a-date-picker> + <a-persian-datepicker v-else placeholder='{{ i18n "pages.settings.datepickerPlaceholder" }}' + value="client._expiryTime" v-model="client._expiryTime"></a-persian-datepicker> <a-tag color="red" v-if="isEdit && isExpiry">Expired</a-tag> </a-form-item> <a-form-item v-if="client.expiryTime != 0"> diff --git a/web/html/form/inbound.html b/web/html/form/inbound.html index 4e89024d..736a1fd4 100644 --- a/web/html/form/inbound.html +++ b/web/html/form/inbound.html @@ -1,7 +1,6 @@ {{define "form/inbound"}} <!-- base --> -<a-form :colon="false" :label-col="{ md: {span:8} }" - :wrapper-col="{ md: {span:14} }"> +<a-form :colon="false" :label-col="{ md: {span:8} }" :wrapper-col="{ md: {span:14} }"> <a-form-item label='{{ i18n "enable" }}'> <a-switch v-model="dbInbound.enable"></a-switch> </a-form-item> @@ -10,8 +9,7 @@ </a-form-item> <a-form-item label='{{ i18n "protocol" }}'> - <a-select v-model="inbound.protocol" :disabled="isEdit" - :dropdown-class-name="themeSwitcher.currentTheme"> + <a-select v-model="inbound.protocol" :disabled="isEdit" :dropdown-class-name="themeSwitcher.currentTheme"> <a-select-option v-for="p in Protocols" :key="p" :value="p">[[ p ]]</a-select-option> </a-select> @@ -31,8 +29,7 @@ </a-form-item> <a-form-item label='{{ i18n "pages.inbounds.port" }}'> - <a-input-number v-model.number="inbound.port" :min="1" - :max="65535"></a-input-number> + <a-input-number v-model.number="inbound.port" :min="1" :max="65535"></a-input-number> </a-form-item> <a-form-item> @@ -45,8 +42,7 @@ <a-icon type="question-circle"></a-icon> </a-tooltip> </template> - <a-input-number v-model.number="dbInbound.totalGB" - :min="0"></a-input-number> + <a-input-number v-model.number="dbInbound.totalGB" :min="0"></a-input-number> </a-form-item> <a-form-item> @@ -55,10 +51,8 @@ <template slot="title"> <span>{{ i18n "pages.inbounds.periodicTrafficResetDesc" }}</span> - <br - v-if="dbInbound.lastTrafficResetTime && dbInbound.lastTrafficResetTime > 0"> - <span - v-if="dbInbound.lastTrafficResetTime && dbInbound.lastTrafficResetTime > 0"> + <br v-if="dbInbound.lastTrafficResetTime && dbInbound.lastTrafficResetTime > 0"> + <span v-if="dbInbound.lastTrafficResetTime && dbInbound.lastTrafficResetTime > 0"> <strong>{{ i18n "pages.inbounds.lastReset" }}:</strong> <span>[[ IntlUtil.formatDate(dbInbound.lastTrafficResetTime) @@ -69,8 +63,7 @@ <a-icon type="question-circle"></a-icon> </a-tooltip> </template> - <a-select v-model="dbInbound.trafficReset" - :dropdown-class-name="themeSwitcher.currentTheme"> + <a-select v-model="dbInbound.trafficReset" :dropdown-class-name="themeSwitcher.currentTheme"> <a-select-option value="never">{{ i18n "pages.inbounds.periodicTrafficReset.never" }}</a-select-option> <a-select-option value="hourly">{{ i18n @@ -98,13 +91,10 @@ <a-icon type="question-circle"></a-icon> </a-tooltip> </template> - <a-date-picker :style="{ width: '100%' }" - v-if="datepicker == 'gregorian'" :show-time="{ format: 'HH:mm:ss' }" - format="YYYY-MM-DD HH:mm:ss" - :dropdown-class-name="themeSwitcher.currentTheme" + <a-date-picker :style="{ width: '100%' }" v-if="datepicker == 'gregorian'" :show-time="{ format: 'HH:mm:ss' }" + format="YYYY-MM-DD HH:mm:ss" :dropdown-class-name="themeSwitcher.currentTheme" v-model="dbInbound._expiryTime"></a-date-picker> - <a-persian-datepicker v-else - placeholder='{{ i18n "pages.settings.datepickerPlaceholder" }}' + <a-persian-datepicker v-else placeholder='{{ i18n "pages.settings.datepickerPlaceholder" }}' value="dbInbound._expiryTime" v-model="dbInbound._expiryTime"> </a-persian-datepicker> </a-form-item> diff --git a/web/html/form/outbound.html b/web/html/form/outbound.html index 21bc11fc..0deb8ee1 100644 --- a/web/html/form/outbound.html +++ b/web/html/form/outbound.html @@ -1,14 +1,11 @@ {{define "form/outbound"}} <!-- base --> -<a-tabs :active-key="outModal.activeKey" - :style="{ padding: '0', backgroundColor: 'transparent' }" +<a-tabs :active-key="outModal.activeKey" :style="{ padding: '0', backgroundColor: 'transparent' }" @change="(activeKey) => {outModal.toggleJson(activeKey == '2'); }"> <a-tab-pane key="1" tab="Form"> - <a-form :colon="false" :label-col="{ md: {span:8} }" - :wrapper-col="{ md: {span:14} }"> + <a-form :colon="false" :label-col="{ md: {span:8} }" :wrapper-col="{ md: {span:14} }"> <a-form-item label='{{ i18n "protocol" }}'> - <a-select v-model="outbound.protocol" - :dropdown-class-name="themeSwitcher.currentTheme"> + <a-select v-model="outbound.protocol" :dropdown-class-name="themeSwitcher.currentTheme"> <a-select-option v-for="x,y in Protocols" :value="x">[[ y ]]</a-select-option> </a-select> @@ -25,8 +22,7 @@ <!-- freedom settings--> <template v-if="outbound.protocol === Protocols.Freedom"> <a-form-item label='Strategy'> - <a-select v-model="outbound.settings.domainStrategy" - :dropdown-class-name="themeSwitcher.currentTheme"> + <a-select v-model="outbound.settings.domainStrategy" :dropdown-class-name="themeSwitcher.currentTheme"> <a-select-option v-for="s in OutboundDomainStrategies" :value="s">[[ s ]]</a-select-option> </a-select> @@ -41,8 +37,7 @@ </a-form-item> <template v-if="Object.keys(outbound.settings.fragment).length >0"> <a-form-item label='Packets'> - <a-select v-model="outbound.settings.fragment.packets" - :dropdown-class-name="themeSwitcher.currentTheme"> + <a-select v-model="outbound.settings.fragment.packets" :dropdown-class-name="themeSwitcher.currentTheme"> <a-select-option v-for="s in ['1-3','tlshello']" :value="s">[[ s ]]</a-select-option> </a-select> @@ -51,12 +46,10 @@ <a-input v-model.trim="outbound.settings.fragment.length"></a-input> </a-form-item> <a-form-item label='Interval'> - <a-input - v-model.trim="outbound.settings.fragment.interval"></a-input> + <a-input v-model.trim="outbound.settings.fragment.interval"></a-input> </a-form-item> <a-form-item label='Max Split'> - <a-input - v-model.trim="outbound.settings.fragment.maxSplit"></a-input> + <a-input v-model.trim="outbound.settings.fragment.maxSplit"></a-input> </a-form-item> </template> @@ -70,13 +63,11 @@ <!-- Add Noise Button --> <template v-if="outbound.settings.noises.length > 0"> <a-form-item label="Noises"> - <a-button icon="plus" type="primary" size="small" - @click="outbound.settings.addNoise()"></a-button> + <a-button icon="plus" type="primary" size="small" @click="outbound.settings.addNoise()"></a-button> </a-form-item> <!-- Noise Configurations --> - <a-form v-for="(noise, index) in outbound.settings.noises" - :key="index" :colon="false" + <a-form v-for="(noise, index) in outbound.settings.noises" :key="index" :colon="false" :label-col="{ md: {span:8} }" :wrapper-col="{ md: {span:14} }"> <a-divider :style="{ margin: '0' }"> Noise [[ index + 1 ]] <a-icon v-if="outbound.settings.noises.length > 1" type="delete" @@ -84,10 +75,8 @@ :style="{ color: 'rgb(255, 77, 79)', cursor: 'pointer' }"></a-icon> </a-divider> <a-form-item label='Type'> - <a-select v-model="noise.type" - :dropdown-class-name="themeSwitcher.currentTheme"> - <a-select-option v-for="s in ['rand','base64','str', 'hex']" - :value="s">[[ s ]]</a-select-option> + <a-select v-model="noise.type" :dropdown-class-name="themeSwitcher.currentTheme"> + <a-select-option v-for="s in ['rand','base64','str', 'hex']" :value="s">[[ s ]]</a-select-option> </a-select> </a-form-item> <a-form-item label='Packet'> @@ -97,8 +86,7 @@ <a-input v-model.trim="noise.delay"></a-input> </a-form-item> <a-form-item label='Apply To'> - <a-select v-model="noise.applyTo" - :dropdown-class-name="themeSwitcher.currentTheme"> + <a-select v-model="noise.applyTo" :dropdown-class-name="themeSwitcher.currentTheme"> <a-select-option v-for="s in ['ip','ipv4','ipv6']" :value="s">[[ s ]]</a-select-option> </a-select> @@ -110,8 +98,7 @@ <!-- blackhole settings --> <template v-if="outbound.protocol === Protocols.Blackhole"> <a-form-item label='Response Type'> - <a-select v-model="outbound.settings.type" - :dropdown-class-name="themeSwitcher.currentTheme"> + <a-select v-model="outbound.settings.type" :dropdown-class-name="themeSwitcher.currentTheme"> <a-select-option v-for="s in ['', 'none','http']" :value="s">[[ s ]]</a-select-option> </a-select> @@ -121,21 +108,18 @@ <!-- dns settings --> <template v-if="outbound.protocol === Protocols.DNS"> <a-form-item label='{{ i18n "pages.inbounds.network" }}'> - <a-select v-model="outbound.settings.network" - :dropdown-class-name="themeSwitcher.currentTheme"> + <a-select v-model="outbound.settings.network" :dropdown-class-name="themeSwitcher.currentTheme"> <a-select-option v-for="s in ['udp','tcp']" :value="s">[[ s ]]</a-select-option> </a-select> </a-form-item> <a-form-item label='non-IP queries'> - <a-select v-model="outbound.settings.nonIPQuery" - :dropdown-class-name="themeSwitcher.currentTheme"> + <a-select v-model="outbound.settings.nonIPQuery" :dropdown-class-name="themeSwitcher.currentTheme"> <a-select-option v-for="s in ['reject','drop','skip']" :value="s">[[ s ]]</a-select-option> </a-select> </a-form-item> - <a-form-item v-if="outbound.settings.nonIPQuery === 'skip'" - label='Block Types'> + <a-form-item v-if="outbound.settings.nonIPQuery === 'skip'" label='Block Types'> <a-input v-model.number="outbound.settings.blockTypes"></a-input> </a-form-item> </template> @@ -172,19 +156,15 @@ <a-input disabled v-model="outbound.settings.pubKey"></a-input> </a-form-item> <a-form-item label='{{ i18n "pages.xray.wireguard.domainStrategy" }}'> - <a-select v-model="outbound.settings.domainStrategy" - :dropdown-class-name="themeSwitcher.currentTheme"> - <a-select-option v-for="wds in ['', ...WireguardDomainStrategy]" - :value="wds">[[ wds ]]</a-select-option> + <a-select v-model="outbound.settings.domainStrategy" :dropdown-class-name="themeSwitcher.currentTheme"> + <a-select-option v-for="wds in ['', ...WireguardDomainStrategy]" :value="wds">[[ wds ]]</a-select-option> </a-select> </a-form-item> <a-form-item label='MTU'> - <a-input-number v-model.number="outbound.settings.mtu" - min="0"></a-input-number> + <a-input-number v-model.number="outbound.settings.mtu" min="0"></a-input-number> </a-form-item> <a-form-item label='Workers'> - <a-input-number v-model.number="outbound.settings.workers" - min="0"></a-input-number> + <a-input-number v-model.number="outbound.settings.workers" min="0"></a-input-number> </a-form-item> <a-form-item label='No Kernel Tun'> <a-switch v-model="outbound.settings.noKernelTun"></a-switch> @@ -200,14 +180,11 @@ <a-input v-model="outbound.settings.reserved"></a-input> </a-form-item> <a-form-item label="Peers"> - <a-button icon="plus" type="primary" size="small" - @click="outbound.settings.addPeer()"></a-button> + <a-button icon="plus" type="primary" size="small" @click="outbound.settings.addPeer()"></a-button> </a-form-item> - <a-form v-for="(peer, index) in outbound.settings.peers" :colon="false" - :label-col="{ md: {span:8} }" + <a-form v-for="(peer, index) in outbound.settings.peers" :colon="false" :label-col="{ md: {span:8} }" :wrapper-col="{ md: {span:14} }"> - <a-divider :style="{ margin: '0' }"> Peer [[ index + 1 ]] <a-icon - v-if="outbound.settings.peers.length>1" + <a-divider :style="{ margin: '0' }"> Peer [[ index + 1 ]] <a-icon v-if="outbound.settings.peers.length>1" type="delete" @click="() => outbound.settings.delPeer(index)" :style="{ color: 'rgb(255, 77, 79)', cursor: 'pointer' }"></a-icon> </a-divider> @@ -223,21 +200,17 @@ <a-form-item> <template slot="label"> {{ i18n "pages.xray.wireguard.allowedIPs" }} - <a-button icon="plus" type="primary" size="small" - @click="peer.allowedIPs.push('')"></a-button> + <a-button icon="plus" type="primary" size="small" @click="peer.allowedIPs.push('')"></a-button> </template> - <template v-for="(aip, index) in peer.allowedIPs" - :style="{ marginBottom: '10px' }"> + <template v-for="(aip, index) in peer.allowedIPs" :style="{ marginBottom: '10px' }"> <a-input v-model.trim="peer.allowedIPs[index]"> - <a-button icon="minus" v-if="peer.allowedIPs.length>1" - slot="addonAfter" size="small" + <a-button icon="minus" v-if="peer.allowedIPs.length>1" slot="addonAfter" size="small" @click="peer.allowedIPs.splice(index, 1)"></a-button> </a-input> </template> </a-form-item> <a-form-item label='Keep Alive'> - <a-input-number v-model.number="peer.keepAlive" - :min="0"></a-input-number> + <a-input-number v-model.number="peer.keepAlive" :min="0"></a-input-number> </a-form-item> </a-form> </template> @@ -248,14 +221,12 @@ <a-input v-model.trim="outbound.settings.address"></a-input> </a-form-item> <a-form-item label='{{ i18n "pages.inbounds.port" }}'> - <a-input-number v-model.number="outbound.settings.port" :min="1" - :max="65532"></a-input-number> + <a-input-number v-model.number="outbound.settings.port" :min="1" :max="65532"></a-input-number> </a-form-item> </template> <!-- VLESS/VMess user settings --> - <template - v-if="[Protocols.VMess, Protocols.VLESS].includes(outbound.protocol)"> + <template v-if="[Protocols.VMess, Protocols.VLESS].includes(outbound.protocol)"> <a-form-item label='ID'> <a-input v-model.trim="outbound.settings.id"></a-input> </a-form-item> @@ -263,8 +234,7 @@ <!-- vmess settings --> <template v-if="outbound.protocol === Protocols.VMess"> <a-form-item label='Security'> - <a-select v-model="outbound.settings.security" - :dropdown-class-name="themeSwitcher.currentTheme"> + <a-select v-model="outbound.settings.security" :dropdown-class-name="themeSwitcher.currentTheme"> <a-select-option v-for="key in USERS_SECURITY" :value="key">[[ key ]]</a-select-option> </a-select> @@ -279,8 +249,7 @@ </template> <template v-if="outbound.canEnableTlsFlow()"> <a-form-item label='Flow'> - <a-select v-model="outbound.settings.flow" - :dropdown-class-name="themeSwitcher.currentTheme"> + <a-select v-model="outbound.settings.flow" :dropdown-class-name="themeSwitcher.currentTheme"> <a-select-option value selected>{{ i18n "none" }}</a-select-option> <a-select-option v-for="key in TLS_FLOW_CONTROL" :value="key">[[ @@ -291,35 +260,26 @@ <!-- XTLS Vision Advanced Settings --> <template v-if="outbound.canEnableVisionSeed()"> <a-form-item label="Vision Pre-Connect"> - <a-input-number v-model.number="outbound.settings.testpre" :min="0" - :max="10" :style="{ width: '100%' }" + <a-input-number v-model.number="outbound.settings.testpre" :min="0" :max="10" :style="{ width: '100%' }" placeholder="0"></a-input-number> </a-form-item> <a-form-item label="Vision Seed"> <a-row :gutter="8"> <a-col :span="6"> - <a-input-number v-model.number="outbound.settings.testseed[0]" - :min="0" :max="9999" - :style="{ width: '100%' }" placeholder="900" - addon-before="[0]"></a-input-number> + <a-input-number v-model.number="outbound.settings.testseed[0]" :min="0" :max="9999" + :style="{ width: '100%' }" placeholder="900" addon-before="[0]"></a-input-number> </a-col> <a-col :span="6"> - <a-input-number v-model.number="outbound.settings.testseed[1]" - :min="0" :max="9999" - :style="{ width: '100%' }" placeholder="500" - addon-before="[1]"></a-input-number> + <a-input-number v-model.number="outbound.settings.testseed[1]" :min="0" :max="9999" + :style="{ width: '100%' }" placeholder="500" addon-before="[1]"></a-input-number> </a-col> <a-col :span="6"> - <a-input-number v-model.number="outbound.settings.testseed[2]" - :min="0" :max="9999" - :style="{ width: '100%' }" placeholder="900" - addon-before="[2]"></a-input-number> + <a-input-number v-model.number="outbound.settings.testseed[2]" :min="0" :max="9999" + :style="{ width: '100%' }" placeholder="900" addon-before="[2]"></a-input-number> </a-col> <a-col :span="6"> - <a-input-number v-model.number="outbound.settings.testseed[3]" - :min="0" :max="9999" - :style="{ width: '100%' }" placeholder="256" - addon-before="[3]"></a-input-number> + <a-input-number v-model.number="outbound.settings.testseed[3]" :min="0" :max="9999" + :style="{ width: '100%' }" placeholder="256" addon-before="[3]"></a-input-number> </a-col> </a-row> </a-form-item> @@ -339,8 +299,7 @@ </template> <!-- trojan/shadowsocks --> - <template - v-if="[Protocols.Trojan, Protocols.Shadowsocks].includes(outbound.protocol)"> + <template v-if="[Protocols.Trojan, Protocols.Shadowsocks].includes(outbound.protocol)"> <a-form-item label='{{ i18n "password" }}'> <a-input v-model.trim="outbound.settings.password"></a-input> </a-form-item> @@ -349,10 +308,8 @@ <!-- shadowsocks --> <tem
|
