Update settings.html

This commit is contained in:
Tara Rostami 2024-03-14 22:52:52 +03:30 committed by GitHub
parent 1bd2f2b9f4
commit 62dbe9bf04
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -7,22 +7,18 @@
margin: 24px 16px; margin: 24px 16px;
} }
} }
@media (max-width: 768px) { @media (max-width: 768px) {
.ant-tabs-nav .ant-tabs-tab { .ant-tabs-nav .ant-tabs-tab {
margin: 0; margin: 0;
padding: 12px .5rem; padding: 12px .5rem;
} }
} }
.ant-tabs-bar { .ant-tabs-bar {
margin: 0; margin: 0;
} }
.ant-list-item { .ant-list-item {
display: block; display: block;
} }
.alert-msg { .alert-msg {
color: rgb(194, 117, 18); color: rgb(194, 117, 18);
font-weight: normal; font-weight: normal;
@ -55,7 +51,6 @@
color: inherit; color: inherit;
font-size: 24px; font-size: 24px;
} }
.collapse-title { .collapse-title {
color: inherit; color: inherit;
font-weight: bold; font-weight: bold;
@ -63,301 +58,276 @@
padding: 10px 20px; padding: 10px 20px;
border-bottom: 2px solid; border-bottom: 2px solid;
} }
.collapse-title > i { .collapse-title > i {
color: inherit; color: inherit;
font-size: 24px; font-size: 24px;
} }
</style> </style>
<body> <body>
<a-layout id="app" v-cloak :class="themeSwitcher.currentTheme"> <a-layout id="app" v-cloak :class="themeSwitcher.currentTheme">
{{ template "commonSider" . }} {{ template "commonSider" . }}
<a-layout id="content-layout"> <a-layout id="content-layout">
<a-layout-content> <a-layout-content>
<a-spin :spinning="spinning" :delay="500" tip='{{ i18n "loading"}}'> <a-spin :spinning="spinning" :delay="500" tip='{{ i18n "loading"}}'>
<transition name="list" appear> <transition name="list" appear>
<a-alert type="error" v-if="confAlerts.length>0" style="margin: 10px 5px;" <a-alert type="error" v-if="confAlerts.length>0" style="margin: 10px 5px;"
message='{{ i18n "secAlertTitle" }}' message='{{ i18n "secAlertTitle" }}'
color="red" color="red"
show-icon show-icon closable>
closable <template slot="description">
> <b>{{ i18n "secAlertConf" }}</b>
<template slot="description"> <ul><li v-for="a in confAlerts">[[ a ]]</li></ul>
<b>{{ i18n "secAlertConf" }}</b> </template>
<ul><li v-for="a in confAlerts">[[ a ]]</li></ul> </a-alert>
</template> </transition>
</a-alert> <a-space direction="vertical">
</transition> <a-card hoverable style="margin-bottom: .5rem; overflow-x: hidden;">
<a-space direction="vertical"> <a-row style="display: flex; flex-wrap: wrap; align-items: center;">
<a-card hoverable style="margin-bottom: .5rem; overflow-x: hidden;"> <a-col :xs="24" :sm="10" style="padding: 4px;">
<a-row style="display: flex; flex-wrap: wrap; align-items: center;"> <a-space direction="horizontal">
<a-col :xs="24" :sm="10" style="padding: 4px;"> <a-button type="primary" :disabled="saveBtnDisable" @click="updateAllSetting">{{ i18n "pages.settings.save" }}</a-button>
<a-space direction="horizontal"> <a-button type="danger" :disabled="!saveBtnDisable" @click="restartPanel">{{ i18n "pages.settings.restartPanel" }}</a-button>
<a-button type="primary" :disabled="saveBtnDisable" @click="updateAllSetting">{{ i18n "pages.settings.save" }}</a-button> </a-space>
<a-button type="danger" :disabled="!saveBtnDisable" @click="restartPanel">{{ i18n "pages.settings.restartPanel" }}</a-button> </a-col>
</a-space> <a-col :xs="24" :sm="14">
</a-col> <template>
<a-col :xs="24" :sm="14"> <div>
<template> <a-back-top :target="() => document.getElementById('content-layout')" visibility-height="200"></a-back-top>
<div> <a-alert type="warning" style="float: right; width: fit-content"
<a-back-top :target="() => document.getElementById('content-layout')" visibility-height="200"> message='{{ i18n "pages.settings.infoDesc" }}'
</a-back-top> show-icon>
<a-alert type="warning" style="float: right; width: fit-content" </a-alert>
message='{{ i18n "pages.settings.infoDesc" }}' </div>
show-icon </template>
> </a-col>
</div> </a-row>
</template> </a-card>
</a-col> <a-tabs default-active-key="1">
</a-row> <a-tab-pane key="1" tab='{{ i18n "pages.settings.panelSettings"}}'>
</a-card> <a-list item-layout="horizontal">
<a-tabs default-active-key="1"> <a-list-item>
<a-tab-pane key="1" tab='{{ i18n "pages.settings.panelSettings"}}'> <a-row style="padding: 20px">
<a-list item-layout="horizontal"> <a-col :lg="24" :xl="12">
<a-list-item> <a-list-item-meta title='{{ i18n "pages.settings.remarkModel"}}'>
<a-row style="padding: 20px"> <template slot="description">{{ i18n "pages.settings.sampleRemark"}}: <i>#[[ remarkSample ]]</i></template>
<a-col :lg="24" :xl="12"> </a-list-item-meta>
<a-list-item-meta title='{{ i18n "pages.settings.remarkModel"}}'> </a-col>
<template slot="description">{{ i18n "pages.settings.sampleRemark"}}: <i>#[[ remarkSample ]]</i></template> <a-col :lg="24" :xl="12">
</a-list-item-meta> <a-input-group style="width: 100%;">
</a-col> <a-select style="padding-right: .5rem; min-width: 80%; width: auto;"
<a-col :lg="24" :xl="12"> mode="multiple"
<a-input-group style="width: 100%;"> v-model="remarkModel"
<a-select style="padding-right: .5rem; min-width: 80%; width: auto;" :dropdown-class-name="themeSwitcher.currentTheme">
mode="multiple" <a-select-option v-for="(value, key) in remarkModels" :value="key">[[ value ]]</a-select-option>
v-model="remarkModel" </a-select>
:dropdown-class-name="themeSwitcher.currentTheme"> <a-select style="width: 20%;" v-model="remarkSeparator" :dropdown-class-name="themeSwitcher.currentTheme">
<a-select-option v-for="(value, key) in remarkModels" :value="key">[[ value ]]</a-select-option> <a-select-option v-for="key in remarkSeparators" :value="key">[[ key ]]</a-select-option>
</a-select> </a-select>
<a-select style="width: 20%;" v-model="remarkSeparator" :dropdown-class-name="themeSwitcher.currentTheme"> </a-input-group>
<a-select-option v-for="key in remarkSeparators" :value="key">[[ key ]]</a-select-option> </a-col>
</a-select> </a-row>
</a-input-group> </a-list-item>
</a-col> <setting-list-item type="text" title='{{ i18n "pages.settings.panelListeningIP"}}' desc='{{ i18n "pages.settings.panelListeningIPDesc"}}' v-model="allSetting.webListen"></setting-list-item>
</a-row> <setting-list-item type="text" title='{{ i18n "pages.settings.panelListeningDomain"}}' desc='{{ i18n "pages.settings.panelListeningDomainDesc"}}' v-model="allSetting.webDomain"></setting-list-item>
</a-list-item> <setting-list-item type="number" title='{{ i18n "pages.settings.panelPort"}}' desc='{{ i18n "pages.settings.panelPortDesc"}}' v-model="allSetting.webPort" :min="1" :max="65531"></setting-list-item>
<setting-list-item type="text" title='{{ i18n "pages.settings.panelListeningIP"}}' desc='{{ i18n "pages.settings.panelListeningIPDesc"}}' v-model="allSetting.webListen"></setting-list-item> <setting-list-item type="text" title='{{ i18n "pages.settings.publicKeyPath"}}' desc='{{ i18n "pages.settings.publicKeyPathDesc"}}' v-model="allSetting.webCertFile"></setting-list-item>
<setting-list-item type="text" title='{{ i18n "pages.settings.panelListeningDomain"}}' desc='{{ i18n "pages.settings.panelListeningDomainDesc"}}' v-model="allSetting.webDomain"></setting-list-item> <setting-list-item type="text" title='{{ i18n "pages.settings.privateKeyPath"}}' desc='{{ i18n "pages.settings.privateKeyPathDesc"}}' v-model="allSetting.webKeyFile"></setting-list-item>
<setting-list-item type="number" title='{{ i18n "pages.settings.panelPort"}}' desc='{{ i18n "pages.settings.panelPortDesc"}}' v-model="allSetting.webPort" :min="1" :max="65531"></setting-list-item> <setting-list-item type="text" title='{{ i18n "pages.settings.panelUrlPath"}}' desc='{{ i18n "pages.settings.panelUrlPathDesc"}}' v-model="allSetting.webBasePath"></setting-list-item>
<setting-list-item type="text" title='{{ i18n "pages.settings.publicKeyPath"}}' desc='{{ i18n "pages.settings.publicKeyPathDesc"}}' v-model="allSetting.webCertFile"></setting-list-item> <setting-list-item type="number" title='{{ i18n "pages.settings.sessionMaxAge" }}' desc='{{ i18n "pages.settings.sessionMaxAgeDesc" }}' v-model="allSetting.sessionMaxAge" :min="0"></setting-list-item>
<setting-list-item type="text" title='{{ i18n "pages.settings.privateKeyPath"}}' desc='{{ i18n "pages.settings.privateKeyPathDesc"}}' v-model="allSetting.webKeyFile"></setting-list-item> <setting-list-item type="number" title='{{ i18n "pages.settings.pageSize" }}' desc='{{ i18n "pages.settings.pageSizeDesc" }}' v-model="allSetting.pageSize" :min="0" :step="5"></setting-list-item>
<setting-list-item type="text" title='{{ i18n "pages.settings.panelUrlPath"}}' desc='{{ i18n "pages.settings.panelUrlPathDesc"}}' v-model="allSetting.webBasePath"></setting-list-item> <setting-list-item type="number" title='{{ i18n "pages.settings.expireTimeDiff" }}' desc='{{ i18n "pages.settings.expireTimeDiffDesc" }}' v-model="allSetting.expireDiff" :min="0"></setting-list-item>
<setting-list-item type="number" title='{{ i18n "pages.settings.sessionMaxAge" }}' desc='{{ i18n "pages.settings.sessionMaxAgeDesc" }}' v-model="allSetting.sessionMaxAge" :min="0"></setting-list-item> <setting-list-item type="number" title='{{ i18n "pages.settings.trafficDiff" }}' desc='{{ i18n "pages.settings.trafficDiffDesc" }}' v-model="allSetting.trafficDiff" :min="0"></setting-list-item>
<setting-list-item type="number" title='{{ i18n "pages.settings.pageSize" }}' desc='{{ i18n "pages.settings.pageSizeDesc" }}' v-model="allSetting.pageSize" :min="0" :step="5"></setting-list-item> <setting-list-item type="text" title='{{ i18n "pages.settings.timeZone"}}' desc='{{ i18n "pages.settings.timeZoneDesc"}}' v-model="allSetting.timeLocation"></setting-list-item>
<setting-list-item type="number" title='{{ i18n "pages.settings.expireTimeDiff" }}' desc='{{ i18n "pages.settings.expireTimeDiffDesc" }}' v-model="allSetting.expireDiff" :min="0"></setting-list-item> <a-list-item>
<setting-list-item type="number" title='{{ i18n "pages.settings.trafficDiff" }}' desc='{{ i18n "pages.settings.trafficDiffDesc" }}' v-model="allSetting.trafficDiff" :min="0"></setting-list-item> <a-row style="padding: 20px">
<setting-list-item type="text" title='{{ i18n "pages.settings.timeZone"}}' desc='{{ i18n "pages.settings.timeZoneDesc"}}' v-model="allSetting.timeLocation"></setting-list-item> <a-col :lg="24" :xl="12">
<a-list-item> <a-list-item-meta title='{{ i18n "pages.settings.datepicker"}}'>
<a-row style="padding: 20px"> <template slot="description">{{ i18n "pages.settings.datepickerDescription"}}</template>
<a-col :lg="24" :xl="12"> </a-list-item-meta>
<a-list-item-meta title='{{ i18n "pages.settings.datepicker"}}'> </a-col>
<template slot="description">{{ i18n "pages.settings.datepickerDescription"}}</template> <a-col :lg="24" :xl="12">
</a-list-item-meta> <template>
</a-col> <a-select style="width: 100%" :dropdown-class-name="themeSwitcher.currentTheme" v-model="datepicker">
<a-select-option v-for="item in datepickerList" :value="item.value">
<a-col :lg="24" :xl="12"> <span v-text="item.name"></span>
<template> </a-select-option>
<a-select style="width: 100%" </a-select>
:dropdown-class-name="themeSwitcher.currentTheme" </template>
v-model="datepicker"> </a-col>
<a-select-option v-for="item in datepickerList" :value="item.value"> </a-row>
<span v-text="item.name"></span> </a-list-item>
</a-select-option> <a-list-item>
</a-select> <a-row style="padding: 20px">
</template> <a-col :lg="24" :xl="12">
</a-col> <a-list-item-meta title="Language"></a-list-item-meta>
</a-row> </a-col>
</a-list-item> <a-col :lg="24" :xl="12">
<a-list-item> <template>
<a-row style="padding: 20px"> <a-select ref="selectLang"
<a-col :lg="24" :xl="12"> v-model="lang"
<a-list-item-meta title="Language" /> @change="setLang(lang)"
</a-col> :dropdown-class-name="themeSwitcher.currentTheme"
<a-col :lg="24" :xl="12"> style="width: 100%">
<template> <a-select-option :value="l.value" :label="l.value" v-for="l in supportLangs">
<a-select <span role="img" :aria-label="l.name" v-text="l.icon"></span> &nbsp;&nbsp; <span v-text="l.name"></span>
ref="selectLang" </a-select-option>
v-model="lang" </a-select>
@change="setLang(lang)" </template>
:dropdown-class-name="themeSwitcher.currentTheme" </a-col>
style="width: 100%" </a-row>
> </a-list-item>
<a-select-option :value="l.value" :label="l.value" v-for="l in supportLangs"> </a-list>
<span role="img" :aria-label="l.name" v-text="l.icon"></span> </a-tab-pane>
&nbsp;&nbsp;<span v-text="l.name"></span> <a-tab-pane key="2" tab='{{ i18n "pages.settings.securitySettings"}}' style="padding: 20px;">
</a-select-option> <a-divider>{{ i18n "pages.settings.security.admin"}}</a-divider>
</a-select> <a-form layout="horizontal" :colon="false" style="float: left; margin: 10px 0;" :label-col="{ md: {span:10} }" :wrapper-col="{ md: {span:14} }">
</template> <a-form-item label='{{ i18n "pages.settings.oldUsername"}}'>
</a-col> <a-input autocomplete="username" v-model="user.oldUsername"></a-input>
</a-row> </a-form-item>
</a-list-item> <a-form-item label='{{ i18n "pages.settings.currentPassword"}}'>
</a-list> <password-input autocomplete="current-password" v-model="user.oldPassword"></password-input>
</a-tab-pane> </a-form-item>
<a-tab-pane key="2" tab='{{ i18n "pages.settings.securitySettings"}}' style="padding: 20px;"> <a-form-item label='{{ i18n "pages.settings.newUsername"}}'>
<a-divider>{{ i18n "pages.settings.security.admin"}}</a-divider> <a-input v-model="user.newUsername"></a-input>
<a-form layout="horizontal" :colon="false" style="float: left; margin: 10px 0;" :label-col="{ md: {span:10} }" :wrapper-col="{ md: {span:14} }"> </a-form-item>
<a-form-item label='{{ i18n "pages.settings.oldUsername"}}'> <a-form-item label='{{ i18n "pages.settings.newPassword"}}'>
<a-input autocomplete="username" v-model="user.oldUsername"></a-input> <password-input autocomplete="new-password" v-model="user.newPassword"></password-input>
</a-form-item> </a-form-item>
<a-form-item label='{{ i18n "pages.settings.currentPassword"}}'> <a-form-item label=" ">
<password-input autocomplete="current-password" v-model="user.oldPassword"></password-input> <a-button type="primary" @click="updateUser">{{ i18n "confirm" }}</a-button>
</a-form-item> </a-form-item>
<a-form-item label='{{ i18n "pages.settings.newUsername"}}'> </a-form>
<a-input v-model="user.newUsername"></a-input> <a-divider>{{ i18n "pages.settings.security.secret"}}</a-divider>
</a-form-item> <a-form style="padding: 20px;">
<a-form-item label='{{ i18n "pages.settings.newPassword"}}'> <a-list-item>
<password-input autocomplete="new-password" v-model="user.newPassword"></password-input> <a-row>
</a-form-item> <a-col :lg="24" :xl="12">
<a-form-item label=" "> <a-list-item-meta title='{{ i18n "pages.settings.security.loginSecurity" }}'
<a-button type="primary" @click="updateUser">{{ i18n "confirm" }}</a-button> description='{{ i18n "pages.settings.security.loginSecurityDesc" }}'>
</a-form-item> </a-list-item-meta>
</a-form> </a-col>
<a-divider>{{ i18n "pages.settings.security.secret"}}</a-divider> <a-col :lg="24" :xl="12">
<a-form style="padding: 20px;"> <template>
<a-list-item> <a-switch @change="toggleToken(allSetting.secretEnable)" v-model="allSetting.secretEnable"></a-switch>
<a-row> <a-icon style="margin-left: 1rem;" v-if="allSetting.secretEnable" :spin="this.changeSecret" type="sync" @click="getNewSecret"></a-icon>
<a-col :lg="24" :xl="12"> </template>
<a-list-item-meta title='{{ i18n "pages.settings.security.loginSecurity" }}' description='{{ i18n "pages.settings.security.loginSecurityDesc" }}' /> </a-col>
</a-col> </a-row>
<a-col :lg="24" :xl="12"> </a-list-item>
<template> <a-list-item>
<a-switch @change="toggleToken(allSetting.secretEnable)" v-model="allSetting.secretEnable"></a-switch> <a-row>
<a-icon style="margin-left: 1rem;" v-if="allSetting.secretEnable" :spin="this.changeSecret" type="sync" @click="getNewSecret"></a-icon> <a-col :lg="24" :xl="12">
</template> <a-list-item-meta title='{{ i18n "pages.settings.security.secretToken" }}'
</a-col> description='{{ i18n "pages.settings.security.secretTokenDesc" }}'>
</a-row> </a-list-item-meta>
</a-list-item> </a-col>
<a-list-item> <a-col :lg="24" :xl="12">
<a-row> <template>
<a-col :lg="24" :xl="12"> <a-textarea type="text" :disabled="!allSetting.secretEnable" v-model="user.loginSecret"></a-textarea>
<a-list-item-meta title='{{ i18n "pages.settings.security.secretToken" }}' description='{{ i18n "pages.settings.security.secretTokenDesc" }}' /> </template>
</a-col> </a-col>
<a-col :lg="24" :xl="12"> </a-row>
<template> </a-list-item>
<a-textarea type="text" :disabled="!allSetting.secretEnable" v-model="user.loginSecret"></a-textarea> <a-button type="primary" :loading="this.changeSecret" @click="updateSecret">{{ i18n "confirm" }}</a-button>
</template> </a-form>
</a-col> </a-tab-pane>
</a-row> <a-tab-pane key="3" tab='{{ i18n "pages.settings.TGBotSettings"}}'>
</a-list-item> <a-list item-layout="horizontal">
<a-button type="primary" :loading="this.changeSecret" @click="updateSecret">{{ i18n "confirm" }}</a-button> <setting-list-item type="switch" title='{{ i18n "pages.settings.telegramBotEnable" }}' desc='{{ i18n "pages.settings.telegramBotEnableDesc" }}' v-model="allSetting.tgBotEnable"></setting-list-item>
</a-form> <setting-list-item type="text" title='{{ i18n "pages.settings.telegramToken"}}' desc='{{ i18n "pages.settings.telegramTokenDesc"}}' v-model="allSetting.tgBotToken"></setting-list-item>
</a-tab-pane> <setting-list-item type="text" title='{{ i18n "pages.settings.telegramChatId"}}' desc='{{ i18n "pages.settings.telegramChatIdDesc"}}' v-model="allSetting.tgBotChatId"></setting-list-item>
<a-tab-pane key="3" tab='{{ i18n "pages.settings.TGBotSettings"}}'> <setting-list-item type="text" title='{{ i18n "pages.settings.telegramNotifyTime"}}' desc='{{ i18n "pages.settings.telegramNotifyTimeDesc"}}' v-model="allSetting.tgRunTime"></setting-list-item>
<a-list item-layout="horizontal"> <setting-list-item type="switch" title='{{ i18n "pages.settings.tgNotifyBackup" }}' desc='{{ i18n "pages.settings.tgNotifyBackupDesc" }}' v-model="allSetting.tgBotBackup"></setting-list-item>
<setting-list-item type="switch" title='{{ i18n "pages.settings.telegramBotEnable" }}' desc='{{ i18n "pages.settings.telegramBotEnableDesc" }}' v-model="allSetting.tgBotEnable"></setting-list-item> <setting-list-item type="switch" title='{{ i18n "pages.settings.tgNotifyLogin" }}' desc='{{ i18n "pages.settings.tgNotifyLoginDesc" }}' v-model="allSetting.tgBotLoginNotify"></setting-list-item>
<setting-list-item type="text" title='{{ i18n "pages.settings.telegramToken"}}' desc='{{ i18n "pages.settings.telegramTokenDesc"}}' v-model="allSetting.tgBotToken"></setting-list-item> <setting-list-item type="number" title='{{ i18n "pages.settings.tgNotifyCpu" }}' desc='{{ i18n "pages.settings.tgNotifyCpuDesc" }}' v-model="allSetting.tgCpu" :min="0" :max="100"></setting-list-item>
<setting-list-item type="text" title='{{ i18n "pages.settings.telegramChatId"}}' desc='{{ i18n "pages.settings.telegramChatIdDesc"}}' v-model="allSetting.tgBotChatId"></setting-list-item> <setting-list-item type="text" title='{{ i18n "pages.settings.telegramProxy"}}' desc='{{ i18n "pages.settings.telegramProxyDesc"}}' v-model="allSetting.tgBotProxy" placeholder="socks5://user:pass@host:port"></setting-list-item>
<setting-list-item type="text" title='{{ i18n "pages.settings.telegramNotifyTime"}}' desc='{{ i18n "pages.settings.telegramNotifyTimeDesc"}}' v-model="allSetting.tgRunTime"></setting-list-item> <a-list-item>
<setting-list-item type="switch" title='{{ i18n "pages.settings.tgNotifyBackup" }}' desc='{{ i18n "pages.settings.tgNotifyBackupDesc" }}' v-model="allSetting.tgBotBackup"></setting-list-item> <a-row style="padding: 20px">
<setting-list-item type="switch" title='{{ i18n "pages.settings.tgNotifyLogin" }}' desc='{{ i18n "pages.settings.tgNotifyLoginDesc" }}' v-model="allSetting.tgBotLoginNotify"></setting-list-item> <a-col :lg="24" :xl="12">
<setting-list-item type="number" title='{{ i18n "pages.settings.tgNotifyCpu" }}' desc='{{ i18n "pages.settings.tgNotifyCpuDesc" }}' v-model="allSetting.tgCpu" :min="0" :max="100"></setting-list-item> <a-list-item-meta title="Telegram Bot Language" />
<setting-list-item type="text" title='{{ i18n "pages.settings.telegramProxy"}}' desc='{{ i18n "pages.settings.telegramProxyDesc"}}' v-model="allSetting.tgBotProxy" placeholder="socks5://user:pass@host:port"></setting-list-item> </a-col>
<a-list-item> <a-col :lg="24" :xl="12">
<a-row style="padding: 20px"> <template>
<a-col :lg="24" :xl="12"> <a-select ref="selectBotLang" v-model="allSetting.tgLang" :dropdown-class-name="themeSwitcher.currentTheme" style="width: 100%">
<a-list-item-meta title="Telegram Bot Language" /> <a-select-option :value="l.value" :label="l.value" v-for="l in supportLangs">
</a-col> <span role="img" :aria-label="l.name" v-text="l.icon"></span> &nbsp;&nbsp; <span v-text="l.name"></span>
<a-col :lg="24" :xl="12"> </a-select-option>
<template> </a-select>
<a-select </template>
ref="selectBotLang" </a-col>
v-model="allSetting.tgLang" </a-row>
:dropdown-class-name="themeSwitcher.currentTheme" </a-list-item>
style="width: 100%"> </a-list>
<a-select-option :value="l.value" :label="l.value" v-for="l in supportLangs"> </a-tab-pane>
<span role="img" :aria-label="l.name" v-text="l.icon"></span> <a-tab-pane key="4" tab='{{ i18n "pages.settings.subSettings" }}'>
&nbsp;&nbsp;<span v-text="l.name"></span> <a-list item-layout="horizontal">
</a-select-option> <setting-list-item type="switch" title='{{ i18n "pages.settings.subEnable"}}' desc='{{ i18n "pages.settings.subEnableDesc"}}' v-model="allSetting.subEnable"></setting-list-item>
</a-select> <setting-list-item type="switch" title='{{ i18n "pages.settings.subEncrypt"}}' desc='{{ i18n "pages.settings.subEncryptDesc"}}' v-model="allSetting.subEncrypt"></setting-list-item>
</template> <setting-list-item type="switch" title='{{ i18n "pages.settings.subShowInfo"}}' desc='{{ i18n "pages.settings.subShowInfoDesc"}}' v-model="allSetting.subShowInfo"></setting-list-item>
</a-col> <setting-list-item type="text" title='{{ i18n "pages.settings.subListen"}}' desc='{{ i18n "pages.settings.subListenDesc"}}' v-model="allSetting.subListen"></setting-list-item>
</a-row> <setting-list-item type="text" title='{{ i18n "pages.settings.subDomain"}}' desc='{{ i18n "pages.settings.subDomainDesc"}}' v-model="allSetting.subDomain"></setting-list-item>
</a-list-item> <setting-list-item type="number" title='{{ i18n "pages.settings.subPort"}}' desc='{{ i18n "pages.settings.subPortDesc"}}' v-model.number="allSetting.subPort" :min="1" :max="65531"></setting-list-item>
</a-list> <setting-list-item type="text" title='{{ i18n "pages.settings.subPath"}}' desc='{{ i18n "pages.settings.subPathDesc"}}' v-model="allSetting.subPath"></setting-list-item>
</a-tab-pane> <setting-list-item type="text" title='{{ i18n "pages.settings.subCertPath"}}' desc='{{ i18n "pages.settings.subCertPathDesc"}}' v-model="allSetting.subCertFile"></setting-list-item>
<a-tab-pane key="4" tab='{{ i18n "pages.settings.subSettings" }}'> <setting-list-item type="text" title='{{ i18n "pages.settings.subKeyPath"}}' desc='{{ i18n "pages.settings.subKeyPathDesc"}}' v-model="allSetting.subKeyFile"></setting-list-item>
<a-list item-layout="horizontal"> <setting-list-item type="text" title='{{ i18n "pages.settings.subURI"}}' desc='{{ i18n "pages.settings.subURIDesc"}}' v-model="allSetting.subURI" placeholder="(http|https)://domain[:port]/path/"></setting-list-item>
<setting-list-item type="switch" title='{{ i18n "pages.settings.subEnable"}}' desc='{{ i18n "pages.settings.subEnableDesc"}}' v-model="allSetting.subEnable"></setting-list-item> <setting-list-item type="number" title='{{ i18n "pages.settings.subUpdates"}}' desc='{{ i18n "pages.settings.subUpdatesDesc"}}' v-model="allSetting.subUpdates" :min="1"></setting-list-item>
<setting-list-item type="switch" title='{{ i18n "pages.settings.subEncrypt"}}' desc='{{ i18n "pages.settings.subEncryptDesc"}}' v-model="allSetting.subEncrypt"></setting-list-item> </a-list>
<setting-list-item type="switch" title='{{ i18n "pages.settings.subShowInfo"}}' desc='{{ i18n "pages.settings.subShowInfoDesc"}}' v-model="allSetting.subShowInfo"></setting-list-item> </a-tab-pane>
<setting-list-item type="text" title='{{ i18n "pages.settings.subListen"}}' desc='{{ i18n "pages.settings.subListenDesc"}}' v-model="allSetting.subListen"></setting-list-item> <a-tab-pane key="5" tab='{{ i18n "pages.settings.subSettings" }} Json' v-if="allSetting.subEnable">
<setting-list-item type="text" title='{{ i18n "pages.settings.subDomain"}}' desc='{{ i18n "pages.settings.subDomainDesc"}}' v-model="allSetting.subDomain"></setting-list-item> <a-list item-layout="horizontal">
<setting-list-item type="number" title='{{ i18n "pages.settings.subPort"}}' desc='{{ i18n "pages.settings.subPortDesc"}}' v-model.number="allSetting.subPort" :min="1" :max="65531"></setting-list-item> <setting-list-item type="text" title='{{ i18n "pages.settings.subPath"}}' desc='{{ i18n "pages.settings.subPathDesc"}}' v-model="allSetting.subJsonPath"></setting-list-item>
<setting-list-item type="text" title='{{ i18n "pages.settings.subPath"}}' desc='{{ i18n "pages.settings.subPathDesc"}}' v-model="allSetting.subPath"></setting-list-item> <setting-list-item type="text" title='{{ i18n "pages.settings.subURI"}}' desc='{{ i18n "pages.settings.subURIDesc"}}' v-model="allSetting.subJsonURI" placeholder="(http|https)://domain[:port]/path/"></setting-list-item>
<setting-list-item type="text" title='{{ i18n "pages.settings.subCertPath"}}' desc='{{ i18n "pages.settings.subCertPathDesc"}}' v-model="allSetting.subCertFile"></setting-list-item> <setting-list-item type="switch" title='{{ i18n "pages.settings.fragment"}}' desc='{{ i18n "pages.settings.fragmentDesc"}}' v-model="fragment"></setting-list-item>
<setting-list-item type="text" title='{{ i18n "pages.settings.subKeyPath"}}' desc='{{ i18n "pages.settings.subKeyPathDesc"}}' v-model="allSetting.subKeyFile"></setting-list-item> <setting-list-item type="switch" title='Mux' v-model="enableMux"></setting-list-item>
<setting-list-item type="text" title='{{ i18n "pages.settings.subURI"}}' desc='{{ i18n "pages.settings.subURIDesc"}}' v-model="allSetting.subURI" placeholder="(http|https)://domain[:port]/path/"></setting-list-item> <setting-list-item type="switch" title='{{ i18n "pages.xray.directCountryConfigs"}}' desc='{{ i18n "pages.xray.directCountryConfigsDesc"}}' v-model="enableDirect"></setting-list-item>
<setting-list-item type="number" title='{{ i18n "pages.settings.subUpdates"}}' desc='{{ i18n "pages.settings.subUpdatesDesc"}}' v-model="allSetting.subUpdates" :min="1"></setting-list-item> </a-list>
</a-list> <a-collapse v-if="fragment || enableMux || enableDirect">
</a-tab-pane> <a-collapse-panel header='{{ i18n "pages.settings.fragment"}}' v-if="fragment">
<a-tab-pane key="5" tab='{{ i18n "pages.settings.subSettings" }} Json' v-if="allSetting.subEnable"> <a-list-item style="padding: 10px 20px">
<a-list item-layout="horizontal"> <a-row>
<setting-list-item type="text" title='{{ i18n "pages.settings.subPath"}}' desc='{{ i18n "pages.settings.subPathDesc"}}' v-model="allSetting.subJsonPath"></setting-list-item> <a-col :lg="24" :xl="12">
<setting-list-item type="text" title='{{ i18n "pages.settings.subURI"}}' desc='{{ i18n "pages.settings.subURIDesc"}}' v-model="allSetting.subJsonURI" placeholder="(http|https)://domain[:port]/path/"></setting-list-item> <a-list-item-meta title='Packets'></a-list-item-meta>
<setting-list-item type="switch" title='{{ i18n "pages.settings.fragment"}}' desc='{{ i18n "pages.settings.fragmentDesc"}}' v-model="fragment"></setting-list-item> </a-col>
<setting-list-item type="switch" title='Mux' v-model="enableMux"></setting-list-item> <a-col :lg="24" :xl="12">
<setting-list-item type="switch" title='{{ i18n "pages.xray.directCountryConfigs"}}' desc='{{ i18n "pages.xray.directCountryConfigsDesc"}}' v-model="enableDirect"></setting-list-item> <a-select v-model="fragmentPackets" style="width: 100%" :dropdown-class-name="themeSwitcher.currentTheme">
</a-list> <a-select-option :value="p" :label="p" v-for="p in ['1-1', '1-3', 'tlshello']"> [[ p ]] </a-select-option>
<a-collapse v-if="fragment || enableMux || enableDirect"> </a-select>
<a-collapse-panel header='{{ i18n "pages.settings.fragment"}}' v-if="fragment"> </a-col>
<a-list-item style="padding: 20px"> </a-row>
<a-row> </a-list-item>
<a-col :lg="24" :xl="12"> <setting-list-item style="padding: 10px 20px" type="text" title='Length' v-model="fragmentLength" placeholder="100-200"></setting-list-item>
<a-list-item-meta title='Packets'/> <setting-list-item style="padding: 10px 20px" type="text" title='Interval' v-model="fragmentInterval" placeholder="10-20"></setting-list-item>
</a-col> </a-collapse-panel>
<a-col :lg="24" :xl="12"> <a-collapse-panel header='Mux' v-if="enableMux">
<a-select <setting-list-item style="padding: 10px 20px" type="number" title='Concurrency' v-model="muxConcurrency" :min="-1" :max="1024"></setting-list-item>
v-model="fragmentPackets" <setting-list-item style="padding: 10px 20px" type="number" title='xudp Concurrency' v-model="muxXudpConcurrency" :min="-1" :max="1024"></setting-list-item>
style="width: 100%" <a-list-item style="padding: 10px 20px">
:dropdown-class-name="themeSwitcher.currentTheme"> <a-row>
<a-select-option :value="p" :label="p" v-for="p in ['1-1', '1-3', 'tlshello']"> <a-col :lg="24" :xl="12">
[[ p ]] <a-list-item-meta title='xudp UDP 443'></a-list-item-meta>
</a-select-option> </a-col>
</a-select> <a-col :lg="24" :xl="12">
</a-col> <a-select v-model="muxXudpProxyUDP443" style="width: 100%" :dropdown-class-name="themeSwitcher.currentTheme">
</a-row> <a-select-option :value="p" :label="p" v-for="p in ['reject', 'allow', 'skip']"> [[ p ]] </a-select-option>
</a-list-item> </a-select>
<setting-list-item type="text" title='Length' v-model="fragmentLength" placeholder="100-200"></setting-list-item> </a-col>
<setting-list-item type="text" title='Interval' v-model="fragmentInterval" placeholder="10-20"></setting-list-item> </a-row>
</a-collapse-panel> </a-list-item>
<a-collapse-panel header='Mux' v-if="enableMux"> </a-collapse-panel>
<setting-list-item type="number" title='Concurrency' v-model="muxConcurrency" :min="-1" :max="1024"></setting-list-item> <a-collapse-panel header='{{ i18n "pages.xray.directCountryConfigs"}}' v-if="enableDirect">
<setting-list-item type="number" title='xudp Concurrency' v-model="muxXudpConcurrency" :min="-1" :max="1024"></setting-list-item> <a-list-item style="padding: 10px 20px">
<a-list-item style="padding: 20px"> <a-checkbox-group v-model="directCountries" name="Countries" :options="countryOptions"></a-checkbox-group>
<a-row> </a-list-item>
<a-col :lg="24" :xl="12"> </a-collapse-panel>
<a-list-item-meta title='xudp UDP 443'/> </a-collapse>
</a-col> </a-tab-pane>
<a-col :lg="24" :xl="12"> </a-tabs>
<a-select </a-space>
v-model="muxXudpProxyUDP443" </a-spin>
style="width: 100%" </a-layout-content>
:dropdown-class-name="themeSwitcher.currentTheme">
<a-select-option :value="p" :label="p" v-for="p in ['reject', 'allow', 'skip']">
[[ p ]]
</a-select-option>
</a-select>
</a-col>
</a-row>
</a-list-item>
</a-collapse-panel>
<a-collapse-panel header='{{ i18n "pages.xray.directCountryConfigs"}}' v-if="enableDirect">
<a-list-item style="padding: 20px">
<a-checkbox-group
v-model="directCountries"
name="Countries"
:options="countryOptions"
/>
</a-list-item>
</a-collapse-panel>
</a-collapse>
</a-tab-pane>
</a-tabs>
</a-space>
</a-spin>
</a-layout-content>
</a-layout> </a-layout>
</a-layout> </a-layout>
{{template "js" .}} {{template "js" .}}
<script src="{{ .base_path }}assets/js/model/setting.js?{{ .cur_ver }}"></script> <script src="{{ .base_path }}assets/js/model/setting.js?{{ .cur_ver }}"></script>
{{template "component/themeSwitcher" .}} {{template "component/themeSwitcher" .}}