diff options
| author | MHSanaei <ho3ein.sanaei@gmail.com> | 2026-05-04 14:20:24 +0300 |
|---|---|---|
| committer | MHSanaei <ho3ein.sanaei@gmail.com> | 2026-05-04 14:20:24 +0300 |
| commit | e19061d513b8c4fb2207b4a553a96ea086089612 (patch) | |
| tree | 8a05450f0f6d3e8a2a182976b1a38bf5cca824ea /web/html/form | |
| parent | 51e2fb6dbfb6f3f21b3f578c15c3dc0d47c4a66e (diff) | |
TLS: Remove ECH Force Query
Diffstat (limited to 'web/html/form')
24 files changed, 931 insertions, 2070 deletions
diff --git a/web/html/form/client.html b/web/html/form/client.html index 9c6a7f8a..989bb471 100644 --- a/web/html/form/client.html +++ b/web/html/form/client.html @@ -1,11 +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> @@ -16,33 +10,22 @@ <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"> <span>{{ i18n "reset" }}</span> </template> {{ i18n "password" }} - <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)" - type="sync" - > + <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)" + type="sync"> </a-icon> </a-tooltip> </template> @@ -55,42 +38,26 @@ <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> + <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-select-option v-for="key in USERS_SECURITY" :value="key" - >[[ key ]]</a-select-option - > + <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> </a-form-item> <a-form-item v-if="client.email && app.subSettings?.enable"> @@ -100,10 +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> @@ -118,11 +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> @@ -139,9 +99,7 @@ </template> <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"> @@ -160,25 +118,15 @@ </span> </a-tooltip> <a-form layout="block"> - <a-textarea - id="clientIPs" - readonly - @click="getDBClientIps(client.email)" - placeholder="Click To Get IPs" - :auto-size="{ minRows: 5, maxRows: 10 }" - > + <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 - > + <a-select-option v-for="key in TLS_FLOW_CONTROL" :value="key">[[ key ]]</a-select-option> </a-select> </a-form-item> <a-form-item> @@ -201,45 +149,28 @@ </a-tag> <a-tooltip> <template slot="title">{{ i18n "pages.inbounds.resetTraffic" }}</template> - <a-icon - type="retweet" - @click="resetClientTraffic(client.email,clientStats.inboundId,$event.target)" - v-if="client.email.length > 0" - ></a-icon> + <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-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-input-number v-model.number="delayedExpireDays" :min="0"></a-input-number> </a-form-item> <a-form-item v-else> <template slot="label"> <a-tooltip> - <template slot="title" - >{{ i18n "pages.inbounds.leaveBlankToNeverExpire" }}</template - > + <template slot="title">{{ i18n "pages.inbounds.leaveBlankToNeverExpire" }}</template> {{ i18n "pages.inbounds.expireDate" }} <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"> @@ -253,4 +184,4 @@ <a-input-number v-model.number="client.reset" :min="0"></a-input-number> </a-form-item> </a-form> -{{end}} +{{end}}
\ No newline at end of file diff --git a/web/html/form/outbound.html b/web/html/form/outbound.html index a425f3d4..400e55d6 100644 --- a/web/html/form/outbound.html +++ b/web/html/form/outbound.html @@ -1,36 +1,18 @@ {{define "form/outbound"}} <!-- base --> -<a-tabs - :active-key="outModal.activeKey" - :style="{ padding: '0', backgroundColor: 'transparent' }" - @change="(activeKey) => {outModal.toggleJson(activeKey == '2'); }" -> +<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-option v-for="x,y in Protocols" :value="x" - >[[ y ]]</a-select-option - > + <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> </a-form-item> - <a-form-item - label='{{ i18n "pages.xray.outbound.tag" }}' - has-feedback - :validate-status="outModal.duplicateTag? 'warning' : 'success'" - > - <a-input - v-model.trim="outbound.tag" - @change="outModal.check()" - placeholder='{{ i18n "pages.xray.outbound.tagDesc" }}' - ></a-input> + <a-form-item label='{{ i18n "pages.xray.outbound.tag" }}' has-feedback + :validate-status="outModal.duplicateTag? 'warning' : 'success'"> + <a-input v-model.trim="outbound.tag" @change="outModal.check()" + placeholder='{{ i18n "pages.xray.outbound.tagDesc" }}'></a-input> </a-form-item> <a-form-item label='{{ i18n "pages.xray.outbound.sendThrough" }}'> <a-input v-model="outbound.sendThrough"></a-input> @@ -39,109 +21,66 @@ <!-- 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-option v-for="s in OutboundDomainStrategies" :value="s" - >[[ s ]]</a-select-option - > + <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> </a-form-item> <a-form-item label="Redirect"> <a-input v-model="outbound.settings.redirect"></a-input> </a-form-item> <a-form-item label="IPs Blocked"> - <a-select - mode="tags" - v-model="outbound.settings.ipsBlocked" - :style="{ width: '100%' }" - :dropdown-class-name="themeSwitcher.currentTheme" - :token-separators="[',']" - placeholder="IP/CIDR/geoip:*/ext:*" - > + <a-select mode="tags" v-model="outbound.settings.ipsBlocked" :style="{ width: '100%' }" + :dropdown-class-name="themeSwitcher.currentTheme" :token-separators="[',']" + placeholder="IP/CIDR/geoip:*/ext:*"> </a-select> </a-form-item> <a-form-item label="Fragment"> - <a-switch - :checked="Object.keys(outbound.settings.fragment).length >0" - @change="checked => outbound.settings.fragment = checked ? new Outbound.FreedomSettings.Fragment() : {}" - > + <a-switch :checked="Object.keys(outbound.settings.fragment).length >0" + @change="checked => outbound.settings.fragment = checked ? new Outbound.FreedomSettings.Fragment() : {}"> </a-switch> </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-option v-for="s in ['1-3','tlshello']" :value="s" - >[[ s ]]</a-select-option - > + <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> </a-form-item> <a-form-item label="Length"> <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> <!-- Switch for Noises --> <a-form-item label="Noises"> - <a-switch - :checked="outbound.settings.noises.length > 0" - @change="checked => outbound.settings.noises = checked ? [new Outbound.FreedomSettings.Noise()] : []" - > + <a-switch :checked="outbound.settings.noises.length > 0" + @change="checked => outbound.settings.noises = checked ? [new Outbound.FreedomSettings.Noise()] : []"> </a-switch> </a-form-item> <!-- 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" - :label-col="{ md: {span:8} }" - :wrapper-col="{ md: {span:14} }" - > + <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" + <a-icon v-if="outbound.settings.noises.length > 1" type="delete" @click="() => outbound.settings.delNoise(index)" - :style="{ color: 'rgb(255, 77, 79)', cursor: 'pointer' }" - ></a-icon> + :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"> @@ -151,13 +90,8 @@ <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-option v-for="s in ['ip','ipv4','ipv6']" :value="s" - >[[ s ]]</a-select-option - > + <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> </a-form-item> </a-form> @@ -167,13 +101,8 @@ <!-- 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-option v-for="s in ['', 'none','http']" :value="s" - >[[ s ]]</a-select-option - > + <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> </a-form-item> </template> @@ -181,47 +110,25 @@ <!-- 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-option v-for="s in ['udp','tcp']" :value="s" - >[[ s ]]</a-select-option - > + <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="Rules"> - <a-button - icon="plus" - type="primary" - size="small" - @click="outbound.settings.addRule()" - ></a-button> + <a-button icon="plus" type="primary" size="small" @click="outbound.settings.addRule()"></a-button> </a-form-item> - <a-form - v-for="(rule, index) in outbound.settings.rules" - :colon="false" - :label-col="{ md: {span:8} }" - :wrapper-col="{ md: {span:14} }" - > + <a-form v-for="(rule, index) in outbound.settings.rules" :colon="false" :label-col="{ md: {span:8} }" + :wrapper-col="{ md: {span:14} }"> <a-divider :style="{ margin: '0' }"> Rule [[ index + 1 ]] - <a-icon - type="delete" - @click="() => outbound.settings.delRule(index)" - :style="{ color: 'rgb(255, 77, 79)', cursor: 'pointer' }" - ></a-icon> + <a-icon type="delete" @click="() => outbound.settings.delRule(index)" + :style="{ color: 'rgb(255, 77, 79)', cursor: 'pointer' }"></a-icon> </a-divider> <a-form-item label="Action"> - <a-select - v-model="rule.action" - :dropdown-class-name="themeSwitcher.currentTheme" - > - <a-select-option v-for="action in DNSRuleActions" :value="action" - >[[ action ]]</a-select-option - > + <a-select v-model="rule.action" :dropdown-class-name="themeSwitcher.currentTheme"> + <a-select-option v-for="action in DNSRuleActions" :value="action">[[ action ]]</a-select-option> </a-select> </a-form-item> @@ -235,10 +142,7 @@ <a-icon type="question-circle"></a-icon> </a-tooltip> </template> - <a-input - v-model.trim="rule.qtype" - placeholder="1,3,23-24" - ></a-input> + <a-input v-model.trim="rule.qtype" placeholder="1,3,23-24"></a-input> </a-form-item> <a-form-item> @@ -251,10 +155,7 @@ <a-icon type="question-circle"></a-icon> </a-tooltip> </template> - <a-input - v-model.trim="rule.domain" - placeholder="domain:example.com,full:example.com" - ></a-input> + <a-input v-model.trim="rule.domain" placeholder="domain:example.com,full:example.com"></a-input> </a-form-item> </a-form> </template> @@ -280,10 +181,8 @@ <span>{{ i18n "reset" }}</span> </template> {{ i18n "pages.xray.wireguard.secretKey" }} - <a-icon - type="sync" - @click="[outbound.settings.pubKey, outbound.settings.secretKey] = Object.values(Wireguard.generateKeypair())" - > + <a-icon type="sync" + @click="[outbound.settings.pubKey, outbound.settings.secretKey] = Object.values(Wireguard.generateKeypair())"> </a-icon> </a-tooltip> </template> @@ -293,28 +192,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> @@ -331,27 +217,15 @@ <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} }" - :wrapper-col="{ md: {span:14} }" - > + <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" - type="delete" + <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> + :style="{ color: 'rgb(255, 77, 79)', cursor: 'pointer' }"></a-icon> </a-divider> <a-form-item label='{{ i18n "pages.xray.wireguard.endpoint" }}'> <a-input v-model.trim="peer.endpoint"></a-input> @@ -365,33 +239,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" - @click="peer.allowedIPs.splice(index, 1)" - ></a-button> + <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> @@ -402,18 +260,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> @@ -421,13 +273,8 @@ <!-- 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-option v-for="key in USERS_SECURITY" :value="key" - >[[ key ]]</a-select-option - > + <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> </a-form-item> </template> @@ -440,71 +287,35 @@ </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-option value selected - >{{ i18n "none" }}</a-select-option - > - <a-select-option v-for="key in TLS_FLOW_CONTROL" :value="key" - >[[ key ]]</a-select-option
contacts: admin@thfree.ru |
