diff options
| author | MHSanaei <ho3ein.sanaei@gmail.com> | 2023-05-07 14:06:43 +0300 |
|---|---|---|
| committer | MHSanaei <ho3ein.sanaei@gmail.com> | 2023-05-07 14:06:43 +0300 |
| commit | 9d47d74a7a076921d157188ae82ea83e66c96d09 (patch) | |
| tree | 9d2d89dcddc840c2aca076e2eeacfa2f8400f227 | |
| parent | 92f5dfed1ca7ed51f197c6b3f631212a47545b5d (diff) | |
design update
| -rw-r--r-- | web/assets/ant-design-vue@1.7.2/antd.min.css | 8 | ||||
| -rw-r--r-- | web/assets/js/model/xray.js | 2 | ||||
| -rw-r--r-- | web/html/xui/client_bulk_modal.html | 15 | ||||
| -rw-r--r-- | web/html/xui/form/client.html | 26 | ||||
| -rw-r--r-- | web/html/xui/form/inbound.html | 2 | ||||
| -rw-r--r-- | web/html/xui/form/protocol/shadowsocks.html | 14 | ||||
| -rw-r--r-- | web/html/xui/form/protocol/trojan.html | 180 | ||||
| -rw-r--r-- | web/html/xui/form/protocol/vless.html | 192 | ||||
| -rw-r--r-- | web/html/xui/form/protocol/vmess.html | 175 | ||||
| -rw-r--r-- | web/html/xui/inbounds.html | 8 |
10 files changed, 325 insertions, 297 deletions
diff --git a/web/assets/ant-design-vue@1.7.2/antd.min.css b/web/assets/ant-design-vue@1.7.2/antd.min.css index 696a6b06..846bbe54 100644 --- a/web/assets/ant-design-vue@1.7.2/antd.min.css +++ b/web/assets/ant-design-vue@1.7.2/antd.min.css @@ -1362,7 +1362,7 @@ to{transform:scale(1.6);opacity:0} .ant-tabs:after,.ant-tabs:before{display:table;content:""} .ant-tabs:after{clear:both} .ant-tabs-ink-bar{position:absolute;bottom:1px;left:0;z-index:1;box-sizing:border-box;width:0;height:2px;background-color:#1890ff;transform-origin:0 0} -.ant-tabs-bar{margin:1.5rem 1.5rem 0rem 1.5rem !important;border-bottom:2px solid rgb(153 153 153 / 20%);outline:0} +.ant-tabs-bar{margin:1.5rem 1.5rem 0rem 1.5rem!important;border-bottom:2px solid rgb(153 153 153 / 20%);outline:0} .ant-tabs-bar,.ant-tabs-nav-container{transition:padding .3s cubic-bezier(.645,.045,.355,1)} .ant-tabs-nav-container{position:relative;box-sizing:border-box;margin-bottom:-1px;overflow:hidden;font-size:14px;line-height:1.5;white-space:nowrap;zoom:1} .ant-tabs-nav-container:after,.ant-tabs-nav-container:before{display:table;content:""} @@ -3261,7 +3261,7 @@ textarea.ant-input-number{max-width:100%;height:auto;min-height:32px;line-height .ant-input-number-handler-down:hover{height:60%!important} .ant-input-number-handler-down-disabled,.ant-input-number-handler-up-disabled{cursor:not-allowed} .ant-input-number-handler-down-disabled:hover .ant-input-number-handler-down-inner,.ant-input-number-handler-up-disabled:hover .ant-input-number-handler-up-inner{color:rgba(0,0,0,.25)} -.ant-layout{display:flex;flex:auto;flex-direction:column;min-height:0;background:#f0f2f5} +.ant-layout{display:flex;flex:auto;flex-direction:column;min-height:0;background:#fff} .ant-layout,.ant-layout *{box-sizing:border-box} .ant-layout.ant-layout-has-sider{flex-direction:row} .ant-layout.ant-layout-has-sider>.ant-layout,.ant-layout.ant-layout-has-sider>.ant-layout-content{overflow-x:hidden} @@ -3278,9 +3278,9 @@ textarea.ant-input-number{max-width:100%;height:auto;min-height:32px;line-height .ant-layout-sider-zero-width-trigger{position:absolute;top:64px;right:-36px;z-index:1;width:36px;height:42px;color:#fff;font-size:18px;line-height:42px;text-align:center;background:#001529;border-radius:0 4px 4px 0;cursor:pointer;transition:background .3s ease} .ant-layout-sider-zero-width-trigger:hover{background:#192c3e} .ant-layout-sider-zero-width-trigger-right{left:-36px;border-radius:4px 0 0 4px} -.ant-layout-sider-light{background:#fff} +.ant-layout-sider-light{background:#f7f7f7} .ant-layout-sider-light .ant-layout-sider-trigger,.ant-layout-sider-light .ant-layout-sider-zero-width-trigger{color:rgba(0,0,0,.65);background:#fff} -.ant-list{box-sizing:border-box;margin: 1.5em;padding:0;color:rgba(0,0,0,.65);font-size:14px;font-variant:tabular-nums;line-height:1.5;list-style:none;font-feature-settings:"tnum";position:relative} +.ant-list{box-sizing:border-box;margin:1.5em;padding:0;color:rgba(0,0,0,.65);font-size:14px;font-variant:tabular-nums;line-height:1.5;list-style:none;font-feature-settings:"tnum";position:relative} .ant-list *{outline:0} .ant-list-pagination{margin-top:24px;text-align:right} .ant-list-pagination .ant-pagination-options{text-align:left} diff --git a/web/assets/js/model/xray.js b/web/assets/js/model/xray.js index 22573a23..37717c9e 100644 --- a/web/assets/js/model/xray.js +++ b/web/assets/js/model/xray.js @@ -939,7 +939,7 @@ class Inbound extends XrayCommonClass { this._protocol = protocol; this.settings = Inbound.Settings.getSettings(protocol); if (protocol === Protocols.TROJAN) { - this.tls = true; + this.tls = false; } } diff --git a/web/html/xui/client_bulk_modal.html b/web/html/xui/client_bulk_modal.html index 274f8588..e856c6df 100644 --- a/web/html/xui/client_bulk_modal.html +++ b/web/html/xui/client_bulk_modal.html @@ -33,6 +33,12 @@ <span slot="label">{{ i18n "pages.client.clientCount" }}</span> <a-input-number v-model="clientsBulkModal.quantity" :min="1" :max="100"></a-input-number> </a-form-item> + <a-form-item label="Subscription"> + <a-input v-model.trim="clientsBulkModal.subId"></a-input> + </a-form-item> + <a-form-item label="Telegram ID"> + <a-input v-model.trim="clientsBulkModal.tgId"></a-input> + </a-form-item> <a-form-item> <span slot="label"> <span>{{ i18n "pages.inbounds.IPLimit" }}</span> @@ -45,6 +51,7 @@ </span> <a-input-number v-model="clientsBulkModal.limitIp" min="0"></a-input-number> </a-form-item> + <br> <a-form-item v-if="clientsBulkModal.inbound.xtls" label="Flow"> <a-select v-model="clientsBulkModal.flow" style="width: 200px" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> <a-select-option value="">{{ i18n "none" }}</a-select-option> @@ -57,12 +64,6 @@ <a-select-option v-for="key in TLS_FLOW_CONTROL" :value="key">[[ key ]]</a-select-option> </a-select> </a-form-item> - <a-form-item label="Subscription"> - <a-input v-model.trim="clientsBulkModal.subId"></a-input> - </a-form-item> - <a-form-item label="Telegram ID"> - <a-input v-model.trim="clientsBulkModal.tgId"></a-input> - </a-form-item> <a-form-item> <span slot="label"> <span >{{ i18n "pages.inbounds.totalFlow" }}</span> (GB) @@ -75,9 +76,11 @@ </span> <a-input-number v-model="clientsBulkModal.totalGB" :min="0"></a-input-number> </a-form-item> + <br> <a-form-item label='{{ i18n "pages.client.delayedStart" }}'> <a-switch v-model="clientsBulkModal.delayedStart" @click="clientsBulkModal.expiryTime=0"></a-switch> </a-form-item> + <br> <a-form-item label='{{ i18n "pages.client.expireDays" }}' v-if="clientsBulkModal.delayedStart"> <a-input-number v-model="delayedExpireDays" :min="0"></a-input-number> </a-form-item> diff --git a/web/html/xui/form/client.html b/web/html/xui/form/client.html index 1740e74b..017bd7dc 100644 --- a/web/html/xui/form/client.html +++ b/web/html/xui/form/client.html @@ -3,6 +3,10 @@ <template v-if="isEdit"> <a-tag v-if="isExpiry || isTrafficExhausted" color="red" style="margin-bottom: 10px;display: block;text-align: center;">Account is (Expired|Traffic Ended) And Disabled</a-tag> </template> + <a-form-item label='{{ i18n "pages.inbounds.enable" }}'> + <a-switch v-model="client.enable"></a-switch> + </a-form-item> + <br> <a-form-item> <span slot="label"> <span>{{ i18n "pages.inbounds.Email" }}</span> @@ -13,17 +17,14 @@ <a-icon type="sync" @click="getNewEmail(client)"></a-icon> </a-tooltip> </span> - <a-input v-model.trim="client.email" style="width: 150px;" ></a-input> - </a-form-item> - <a-form-item label='{{ i18n "pages.inbounds.enable" }}'> - <a-switch v-model="client.enable"></a-switch> + <a-input v-model.trim="client.email" style="width: 200px;" ></a-input> </a-form-item> <a-form-item label="Password" v-if="inbound.protocol === Protocols.TROJAN || inbound.protocol === Protocols.SHADOWSOCKS"> <a-icon v-if="inbound.protocol === Protocols.SHADOWSOCKS" @click="client.password = RandomUtil.randomShadowsocksPassword()" type="sync"> </a-icon> - <a-input v-model.trim="client.password" style="width: 150px;" ></a-input> + <a-input v-model.trim="client.password" style="width: 300px;" ></a-input> </a-form-item> <a-form-item label='{{ i18n "additional" }} ID' v-if="inbound.protocol === Protocols.VMESS"> - <a-input-number v-model="client.alterId" style="width: 70px;"></a-input-number> + <a-input-number v-model="client.alterId"></a-input-number> </a-form-item> <a-form-item label="ID" v-if="inbound.protocol === Protocols.VMESS || inbound.protocol === Protocols.VLESS"> <a-input v-model.trim="client.id" style="width: 300px;"></a-input> @@ -44,7 +45,7 @@ <a-icon type="question-circle" theme="filled"></a-icon> </a-tooltip> </span> - <a-input-number v-model="client.limitIp" min="0" style="width: 70px;"></a-input-number> + <a-input-number v-model="client.limitIp" min="0"></a-input-number> </a-form-item> <a-form-item v-if="client.email && client.limitIp > 0 && isEdit"> <span slot="label"> @@ -69,13 +70,14 @@ </a-textarea> </a-form> </a-form-item> + <br> <a-form-item v-if="inbound.xtls" label="Flow"> <a-select v-model="client.flow" style="width: 200px" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> <a-select-option value="">{{ i18n "none" }}</a-select-option> <a-select-option v-for="key in XTLS_FLOW_CONTROL" :value="key">[[ key ]]</a-select-option> </a-select> </a-form-item> - <a-form-item v-else-if="inbound.canEnableTlsFlow()" label="Flow" layout="inline"> + <a-form-item v-else-if="inbound.canEnableTlsFlow()" label="Flow"> <a-select v-model="client.flow" style="width: 200px" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> <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> @@ -91,9 +93,9 @@ <a-icon type="question-circle" theme="filled"></a-icon> </a-tooltip> </span> - <a-input-number v-model="client._totalGB":min="0" style="width: 70px;"></a-input-number> + <a-input-number v-model="client._totalGB":min="0"></a-input-number> <template v-if="isEdit && clientStats"> - <span>{{ i18n "usage" }}:</span> + <br><span> {{ i18n "usage" }}:</span> <a-tag :color="statsColor"> [[ sizeFormat(clientStats.up) ]] / [[ sizeFormat(clientStats.down) ]] @@ -103,11 +105,13 @@ <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-tooltip> - </template> + </template> </a-form-item> + <br> <a-form-item label='{{ i18n "pages.client.delayedStart" }}'> <a-switch v-model="clientModal.delayedStart" @click="client._expiryTime=0"></a-switch> </a-form-item> + <br> <a-form-item label='{{ i18n "pages.client.expireDays" }}' v-if="clientModal.delayedStart"> <a-input-number v-model="delayedExpireDays" :min="0"></a-input-number> </a-form-item> diff --git a/web/html/xui/form/inbound.html b/web/html/xui/form/inbound.html index 603ca46a..3c40447e 100644 --- a/web/html/xui/form/inbound.html +++ b/web/html/xui/form/inbound.html @@ -24,9 +24,11 @@ </span> <a-input v-model.trim="inbound.listen"></a-input> </a-form-item> + <br> <a-form-item label='{{ i18n "pages.inbounds.port" }}'> <a-input-number v-model="inbound.port"></a-input-number> </a-form-item> + <br> <a-form-item> <span slot="label"> <span >{{ i18n "pages.inbounds.totalFlow" }}</span> (GB) diff --git a/web/html/xui/form/protocol/shadowsocks.html b/web/html/xui/form/protocol/shadowsocks.html index b143cff1..c739ae10 100644 --- a/web/html/xui/form/protocol/shadowsocks.html +++ b/web/html/xui/form/protocol/shadowsocks.html @@ -1,5 +1,5 @@ {{define "form/shadowsocks"}} -<a-form layout="inline"> +<a-form layout="inline" style="padding: 10px 0px;"> <a-collapse activeKey="0" v-for="(client, index) in inbound.settings.shadowsockses.slice(0,1)" v-if="!isEdit"> <a-collapse-panel header='{{ i18n "pages.inbounds.client" }}'> <a-form-item> @@ -16,7 +16,7 @@ </a-form-item> <a-form-item label="Password"> <a-icon @click="client.password = RandomUtil.randomShadowsocksPassword()" type="sync"> </a-icon> - <a-input v-model.trim="client.password" style="width: 150px;"></a-input> + <a-input v-model.trim="client.password" style="width: 250px;"></a-input> </a-form-item> <a-form-item label="Subscription" v-if="client.email"> <a-input v-model.trim="client.subId"></a-input> @@ -34,8 +34,9 @@ <a-icon type="question-circle" theme="filled"></a-icon> </a-tooltip> </span> - <a-input-number v-model="client.limitIp" min="0" style="width: 70px;"></a-input-number> + <a-input-number v-model="client.limitIp" min="0"></a-input-number> </a-form-item> + <br> <a-form-item> <span slot="label"> <span >{{ i18n "pages.inbounds.totalFlow" }}</span> (GB) @@ -48,13 +49,15 @@ </span> <a-input-number v-model="client._totalGB" :min="0"></a-input-number> </a-form-item> + <br> <a-form-item label='{{ i18n "pages.client.delayedStart" }}'> <a-switch v-model="delayedStart" @click="client._expiryTime=0"></a-switch> </a-form-item> + <br> <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> + <a-form-item v-else> <span slot="label"> <span >{{ i18n "pages.inbounds.expireDate" }}</span> <a-tooltip> @@ -82,6 +85,8 @@ </table> </a-collapse-panel> </a-collapse> +</a-form> +<a-form layout="inline"> <a-form-item label='{{ i18n "encryption" }}'> <a-select v-model="inbound.settings.method" style="width: 250px;" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> <a-select-option v-for="method in SSMethods" :value="method">[[ method ]]</a-select-option> @@ -97,4 +102,5 @@ <a-select-option value="udp">UDP</a-select-option> </a-select> </a-form-item> +</a-form> {{end}}
\ No newline at end of file diff --git a/web/html/xui/form/protocol/trojan.html b/web/html/xui/form/protocol/trojan.html index cee59c34..9c392926 100644 --- a/web/html/xui/form/protocol/trojan.html +++ b/web/html/xui/form/protocol/trojan.html @@ -1,92 +1,96 @@ {{define "form/trojan"}} -<a-form layout="inline"> -<a-collapse activeKey="0" v-for="(client, index) in inbound.settings.trojans.slice(0,1)" v-if="!isEdit"> - <a-collapse-panel header='{{ i18n "pages.inbounds.client" }}'> - <a-form-item> - <span slot="label"> - <span>{{ i18n "pages.inbounds.Email" }}</span> - <a-tooltip> - <template slot="title"> - <span>{{ i18n "pages.inbounds.EmailDesc" }}</span> - </template> - <a-icon type="sync" @click="getNewEmail(client)"></a-icon> - </a-tooltip> - </span> - <a-input v-model.trim="client.email" style="width: 150px;"></a-input> - </a-form-item> - <a-form-item label="Password"> - <a-input v-model.trim="client.password" style="width: 150px;"></a-input> - </a-form-item> - <a-form-item label="Subscription" v-if="client.email"> - <a-input v-model.trim="client.subId"></a-input> - </a-form-item> - <a-form-item label="Telegram Username" v-if="client.email"> - <a-input v-model.trim="client.tgId"></a-input> - </a-form-item> - <a-form-item> - <span slot="label"> - <span>{{ i18n "pages.inbounds.IPLimit" }}</span> - <a-tooltip> - <template slot="title"> - <span>{{ i18n "pages.inbounds.IPLimitDesc" }}</span> - </template> - <a-icon type="question-circle" theme="filled"></a-icon> - </a-tooltip> - </span> - <a-input-number v-model="client.limitIp" min="0" style="width: 70px;"></a-input-number> - </a-form-item> - <a-form-item v-if="inbound.xtls" label="Flow"> - <a-select v-model="client.flow" style="width: 150px" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> - <a-select-option value="">{{ i18n "none" }}</a-select-option> - <a-select-option v-for="key in XTLS_FLOW_CONTROL" :value="key">[[ key ]]</a-select-option> - </a-select> - </a-form-item> - <a-form-item> - <span slot="label"> - <span >{{ i18n "pages.inbounds.totalFlow" }}</span> (GB) - <a-tooltip> - <template slot="title"> - 0 <span>{{ i18n "pages.inbounds.meansNoLimit" }}</span> - </template> - <a-icon type="question-circle" theme="filled"></a-icon> - </a-tooltip> - </span> - <a-input-number v-model="client._totalGB" :min="0"></a-input-number> - </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-form-item> - <a-form-item> - <span slot="label"> - <span >{{ i18n "pages.inbounds.expireDate" }}</span> - <a-tooltip> - <template slot="title"> - <span>{{ i18n "pages.inbounds.leaveBlankToNeverExpire" }}</span> - </template> - <a-icon type="question-circle" theme="filled"></a-icon> - </a-tooltip> - </span> - <a-date-picker :show-time="{ format: 'HH:mm:ss' }" format="YYYY-MM-DD HH:mm:ss" - :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''" - v-model="client._expiryTime" style="width: 170px;"></a-date-picker> - </a-form-item> - </a-collapse-panel> -</a-collapse> -<a-collapse v-else> - <a-collapse-panel :header="'{{ i18n "pages.client.clientCount"}} : ' + inbound.settings.trojans.length"> - <table width="100%"> - <tr class="client-table-header"> - <th v-for="col in Object.keys(inbound.settings.trojans[0]).slice(0, 3)">[[ col ]]</th> - </tr> - <tr v-for="(client, index) in inbound.settings.trojans" :class="index % 2 == 1 ? 'client-table-odd-row' : ''"> - <td v-for="col in Object.values(client).slice(0, 3)">[[ col ]]</td> - </tr> - </table> - </a-collapse-panel> -</a-collapse> +<a-form layout="inline" style="padding: 10px 0px;"> + <a-collapse activeKey="0" v-for="(client, index) in inbound.settings.trojans.slice(0,1)" v-if="!isEdit"> + <a-collapse-panel header='{{ i18n "pages.inbounds.client" }}'> + <a-form-item> + <span slot="label"> + <span>{{ i18n "pages.inbounds.Email" }}</span> + <a-tooltip> + <template slot="title"> + <span>{{ i18n "pages.inbounds.EmailDesc" }}</span> + </template> + <a-icon type="sync" @click="getNewEmail(client)"></a-icon> + </a-tooltip> + </span> + <a-input v-model.trim="client.email" style="width: 150px;"></a-input> + </a-form-item> + <a-form-item label="Password"> + <a-input v-model.trim="client.password" style="width: 150px;"></a-input> + </a-form-item> + <a-form-item label="Subscription" v-if="client.email"> + <a-input v-model.trim="client.subId"></a-input> + </a-form-item> + <a-form-item label="Telegram Username" v-if="client.email"> + <a-input v-model.trim="client.tgId"></a-input> + </a-form-item> + <a-form-item> + <span slot="label"> + <span>{{ i18n "pages.inbounds.IPLimit" }}</span> + <a-tooltip> + <template slot="title"> + <span>{{ i18n "pages.inbounds.IPLimitDesc" }}</span> + </template> + <a-icon type="question-circle" theme="filled"></a-icon> + </a-tooltip> + </span> + <a-input-number v-model="client.limitIp" min="0"></a-input-number> + </a-form-item> + <br> + <a-form-item v-if="inbound.xtls" label="Flow"> + <a-select v-model="client.flow" style="width: 150px" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> + <a-select-option value="">{{ i18n "none" }}</a-select-option> + <a-select-option v-for="key in XTLS_FLOW_CONTROL" :value="key">[[ key ]]</a-select-option> + </a-select> + </a-form-item> + <a-form-item> + <span slot="label"> + <span >{{ i18n "pages.inbounds.totalFlow" }}</span> (GB) + <a-tooltip> + <template slot="title"> + 0 <span>{{ i18n "pages.inbounds.meansNoLimit" }}</span> + </template> + <a-icon type="question-circle" theme="filled"></a-icon> + </a-tooltip> + </span> + <a-input-number v-model="client._totalGB" :min="0"></a-input-number> + </a-form-item> + <br> + <a-form-item label='{{ i18n "pages.client.delayedStart" }}'> + <a-switch v-model="delayedStart" @click="client._expiryTime=0"></a-switch> + </a-form-item> + <br> + <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> + <span slot="label"> + <span >{{ i18n "pages.inbounds.expireDate" }}</span> + <a-tooltip> + <template slot="title"> + <span>{{ i18n "pages.inbounds.leaveBlankToNeverExpire" }}</span> + </template> + <a-icon type="question-circle" theme="filled"></a-icon> + </a-tooltip> + </span> + <a-date-picker :show-time="{ format: 'HH:mm:ss' }" format="YYYY-MM-DD HH:mm:ss" + :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''" + v-model="client._expiryTime" style="width: 170px;"></a-date-picker> + </a-form-item> + </a-collapse-panel> + </a-collapse> + <a-collapse v-else> + <a-collapse-panel :header="'{{ i18n "pages.client.clientCount"}} : ' + inbound.settings.trojans.length"> + <table width="100%"> + <tr class="client-table-header"> + <th v-for="col in Object.keys(inbound.settings.trojans[0]).slice(0, 3)">[[ col ]]</th> + </tr> + <tr v-for="(client, index) in inbound.settings.trojans" :class="index % 2 == 1 ? 'client-table-odd-row' : ''"> + <td v-for="col in Object.values(client).slice(0, 3)">[[ col ]]</td> + </tr> + </table> + </a-collapse-panel> + </a-collapse> +</a-form> <template v-if="inbound.isTcp"> <a-form layout="inline"> <a-form-item label="Fallbacks"> diff --git a/web/html/xui/form/protocol/vless.html b/web/html/xui/form/protocol/vless.html index c25ff574..c9547ae9 100644 --- a/web/html/xui/form/protocol/vless.html +++ b/web/html/xui/form/protocol/vless.html @@ -1,98 +1,102 @@ {{define "form/vless"}} -<a-form layout="inline"> -<a-collapse activeKey="0" v-for="(client, index) in inbound.settings.vlesses.slice(0,1)" v-if="!isEdit"> - <a-collapse-panel header='{{ i18n "pages.inbounds.client" }}'> - <a-form-item> - <span slot="label"> - <span>{{ i18n "pages.inbounds.Email" }}</span> - <a-tooltip> - <template slot="title"> - <span>{{ i18n "pages.inbounds.EmailDesc" }}</span> - </template> - <a-icon type="sync" @click="getNewEmail(client)"></a-icon> - </a-tooltip> - </span> - <a-input v-model.trim="client.email" style="width: 150px;"></a-input> - </a-form-item> - <a-form-item label="ID"> - <a-input v-model.trim="client.id" style="width: 300px;"></a-input> - </a-form-item> - <a-form-item label="Subscription" v-if="client.email"> - <a-input v-model.trim="client.subId"></a-input> - </a-form-item> - <a-form-item label="Telegram Username" v-if="client.email"> - <a-input v-model.trim="client.tgId"></a-input> - </a-form-item> - <a-form-item> - <span slot="label"> - <span>{{ i18n "pages.inbounds.IPLimit" }}</span> - <a-tooltip> - <template slot="title"> - <span>{{ i18n "pages.inbounds.IPLimitDesc" }}</span> - </template> - <a-icon type="question-circle" theme="filled"></a-icon> - </a-tooltip> - </span> - <a-input-number v-model="client.limitIp" min="0" style="width: 70px;"></a-input-number> - </a-form-item> - <a-form-item v-if="inbound.xtls" label="Flow"> - <a-select v-model="inbound.settings.vlesses[index].flow" style="width: 200px" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> - <a-select-option value="" selected>{{ i18n "none" }}</a-select-option> - <a-select-option v-for="key in XTLS_FLOW_CONTROL" :value="key">[[ key ]]</a-select-option> - </a-select> - </a-form-item> - <a-form-item v-else-if="inbound.canEnableTlsFlow()" label="Flow" layout="inline"> - <a-select v-model="inbound.settings.vlesses[index].flow" style="width: 200px" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> - <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> - </a-form-item> - <a-form-item> - <span slot="label"> - <span >{{ i18n "pages.inbounds.totalFlow" }}</span> (GB) - <a-tooltip> - <template slot="title"> - 0 <span>{{ i18n "pages.inbounds.meansNoLimit" }}</span> - </template> - <a-icon type="question-circle" theme="filled"></a-icon> - </a-tooltip> - </span> - <a-input-number v-model="client._totalGB" :min="0"></a-input-number> - </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-form-item> - <a-form-item> - <span slot="label"> - <span >{{ i18n "pages.inbounds.expireDate" }}</span> - <a-tooltip> - <template slot="title"> - <span>{{ i18n "pages.inbounds.leaveBlankToNeverExpire" }}</span> - </template> - <a-icon type="question-circle" theme="filled"></a-icon> - </a-tooltip> - </span> - <a-date-picker :show-time="{ format: 'HH:mm:ss' }" format="YYYY-MM-DD HH:mm:ss" - :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''" - v-model="client._expiryTime" style="width: 170px;"></a-date-picker> - </a-form-item> - </a-collapse-panel> -</a-collapse> -<a-collapse v-else> - <a-collapse-panel :header="'{{ i18n "pages.client.clientCount"}} : ' + inbound.settings.vlesses.length"> - <table width="100%"> - <tr class="client-table-header"> - <th v-for="col in Object.keys(inbound.settings.vlesses[0]).slice(0, 3)">[[ col ]]</th> - </tr> - <tr v-for="(client, index) in inbound.settings.vlesses" :class="index % 2 == 1 ? 'client-table-odd-row' : ''"> - <td v-for="col in Object.values(client).slice(0, 3)">[[ col ]]</td> - </tr> - </table> - </a-collapse-panel> -</a-collapse> +<a-form layout="inline" style="padding: 10px 0px;"> + <a-collapse activeKey="0" v-for="(client, index) in inbound.settings.vlesses.slice(0,1)" v-if="!isEdit"> + <a-collapse-panel header='{{ i18n "pages.inbounds.client" }}'> + <a-form-item> + <span slot="label"> + <span>{{ i18n "pages.inbounds.Email" }}</span> + <a-tooltip> + <template slot="title"> + <span>{{ i18n "pages.inbounds.EmailDesc" }}</span> + </template> + <a-icon type="sync" @click="getNewEmail(client)"></a-icon> + </a-tooltip> + </span> + <a-input v-model.trim="client.email" style="width: 150px;"></a-input> + </a-form-item> + <a-form-item label="ID"> + <a-input v-model.trim="client.id" style="width: 300px;"></a-input> + </a-form-item> + <a-form-item label="Subscription" v-if="client.email"> + <a-input v-model.trim="client.subId"></a-input> + </a-form-item> + <a-form-item label="Telegram Username" v-if="client.email"> + <a-input v-model.trim="client.tgId"></a-input> + </a-form-item> + <a-form-item> + <span slot="label"> + <span>{{ i18n "pages.inbounds.IPLimit" }}</span> + <a-tooltip> + <template slot="title"> + <span>{{ i18n "pages.inbounds.IPLimitDesc" }}</span> + </template> + <a-icon type="question-circle" theme="filled"></a-icon> + </a-tooltip> + </span> + <a-input-number v-model="client.limitIp" min="0"></a-input-number> + </a-form-item> + <br> + <a-form-item v-if="inbound.xtls" label="Flow"> + <a-select v-model="inbound.settings.vlesses[index].flow" style="width: 200px" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> + <a-select-option value="" selected>{{ i18n "none" }}</a-select-option> + <a-select-option v-for="key in XTLS_FLOW_CONTROL" :value="key">[[ key ]]</a-select-option> + </a-select> + </a-form-item> + <a-form-item v-else-if="inbound.canEnableTlsFlow()" label="Flow"> + <a-select v-model="inbound.settings.vlesses[index].flow" style="width: 200px" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> + <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> + </a-form-item> + <a-form-item> + <span slot="label"> + <span >{{ i18n "pages.inbounds.totalFlow" }}</span> (GB) + <a-tooltip> + <template slot="title"> + 0 <span>{{ i18n "pages.inbounds.meansNoLimit" }}</span> + </template> + <a-icon type="question-circle" theme="filled"></a-icon> + </a-tooltip> + </span> + <a-input-number v-model="client._totalGB" :min="0"></a-input-number> + </a-form-item> + <br> + <a-form-item label='{{ i18n "pages.client.delayedStart" }}'> + <a-switch v-model="delayedStart" @click="client._expiryTime=0"></a-switch> + </a-form-item> + <br> + <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> + <span slot="label"> + <span >{{ i18n "pages.inbounds.expireDate" }}</span> + <a-tooltip> + <template slot="title"> + <span>{{ i18n "pages.inbounds.leaveBlankToNeverExpire" }}</span> + </template> + <a-icon type="question-circle" theme="filled"></a-icon> + </a-tooltip> + </span> + <a-date-picker :show-time="{ format: 'HH:mm:ss' }" format="YYYY-MM-DD HH:mm:ss" + :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''" + v-model="client._expiryTime" style="width: 170px;"></a-date-picker> + </a-form-item> + </a-collapse-panel> + </a-collapse> + <a-collapse v-else> + <a-collapse-panel :header="'{{ i18n "pages.client.clientCount"}} : ' + inbound.settings.vlesses.length"> + <table width="100%"> + <tr class="client-table-header"> + <th v-for="col in Object.keys(inbound.settings.vlesses[0]).slice(0, 3)">[[ col ]]</th> + </tr> + <tr v-for="(client, index) in inbound.settings.vlesses" :class="index % 2 == 1
|
