mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 17:17:13 +08:00
feat: 网站默认设置
This commit is contained in:
@@ -14,8 +14,7 @@ export default {
|
||||
// 获取默认配置
|
||||
defaultConfig: (): any => http.Get('/website/default_config'),
|
||||
// 保存默认配置
|
||||
saveDefaultConfig: (index: string, stop: string): any =>
|
||||
http.Post('/website/default_config', { index, stop }),
|
||||
saveDefaultConfig: (data: any): any => http.Post('/website/default_config', data),
|
||||
// 网站配置
|
||||
config: (id: number): any => http.Get('/website/' + id),
|
||||
// 保存网站配置
|
||||
|
||||
@@ -323,6 +323,26 @@ const hasArg = (args: string[], arg: string) => {
|
||||
</n-form-item>
|
||||
</n-form>
|
||||
<n-form v-if="setting.ssl">
|
||||
<n-form-item :label="$gettext('TLS Version')">
|
||||
<n-select
|
||||
v-model:value="setting.ssl_protocols"
|
||||
:options="[
|
||||
{ label: 'TLS 1.0', value: 'TLSv1.0' },
|
||||
{ label: 'TLS 1.1', value: 'TLSv1.1' },
|
||||
{ label: 'TLS 1.2', value: 'TLSv1.2' },
|
||||
{ label: 'TLS 1.3', value: 'TLSv1.3' }
|
||||
]"
|
||||
multiple
|
||||
/>
|
||||
</n-form-item>
|
||||
<n-form-item :label="$gettext('Cipher Suites')">
|
||||
<n-input
|
||||
type="textarea"
|
||||
v-model:value="setting.ssl_ciphers"
|
||||
:placeholder="$gettext('Enter the cipher suite, leave blank to reset to default')"
|
||||
rows="4"
|
||||
/>
|
||||
</n-form-item>
|
||||
<n-form-item :label="$gettext('Certificate')">
|
||||
<n-input
|
||||
v-model:value="setting.ssl_cert"
|
||||
@@ -355,25 +375,7 @@ const hasArg = (args: string[], arg: string) => {
|
||||
/>
|
||||
</n-form-item>
|
||||
</n-form>
|
||||
<common-editor v-if="setting" v-model:content="setting.rewrite" height="60vh" />
|
||||
</n-flex>
|
||||
</n-tab-pane>
|
||||
<n-tab-pane name="config" :tab="$gettext('Configuration')">
|
||||
<n-flex vertical>
|
||||
<n-alert type="info" w-full>
|
||||
{{
|
||||
$gettext(
|
||||
'If you modify the original text, other modifications will not take effect after clicking save!'
|
||||
)
|
||||
}}
|
||||
</n-alert>
|
||||
<n-alert type="warning" w-full>
|
||||
{{
|
||||
$gettext(
|
||||
'If you do not understand the configuration rules, please do not modify them arbitrarily, otherwise it may cause the website to be inaccessible or panel function abnormalities! If you have already encountered a problem, try resetting the configuration!'
|
||||
)
|
||||
}}
|
||||
</n-alert>
|
||||
<common-editor v-if="setting" v-model:value="setting.rewrite" height="60vh" />
|
||||
</n-flex>
|
||||
</n-tab-pane>
|
||||
<n-tab-pane name="log" :tab="$gettext('Access Log')">
|
||||
|
||||
@@ -6,51 +6,45 @@ const { $gettext } = useGettext()
|
||||
|
||||
const currentTab = ref('default-page')
|
||||
|
||||
const defaultPageModel = ref({
|
||||
index: '',
|
||||
not_found: '',
|
||||
stop: ''
|
||||
const { data: model } = useRequest(website.defaultConfig, {
|
||||
initialData: {
|
||||
index: '',
|
||||
stop: '',
|
||||
not_found: '',
|
||||
tls_versions: ['TLSv1.2', 'TLSv1.3'],
|
||||
cipher_suites: ''
|
||||
}
|
||||
})
|
||||
|
||||
const defaultSettingModel = ref({
|
||||
tls_version: ['TLSv1.2', 'TLSv1.3'],
|
||||
cipher_suites: ''
|
||||
})
|
||||
watch(
|
||||
() => model.value.tls_versions,
|
||||
(newVal) => {
|
||||
if (!newVal.includes('TLSv1.1') && !newVal.includes('TLSv1.0')) {
|
||||
// 不包含 TLSv1.0 和 TLSv1.1
|
||||
model.value.cipher_suites =
|
||||
'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305'
|
||||
} else {
|
||||
// 包含 TLSv1.0 或 TLSv1.1
|
||||
model.value.cipher_suites =
|
||||
'@SECLEVEL=0:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA'
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
const getDefaultPage = async () => {
|
||||
defaultPageModel.value = await website.defaultConfig()
|
||||
}
|
||||
|
||||
const handleSaveDefaultPage = () => {
|
||||
useRequest(
|
||||
website.saveDefaultConfig(defaultPageModel.value.index, defaultPageModel.value.stop)
|
||||
).onSuccess(() => {
|
||||
const handleSave = () => {
|
||||
useRequest(website.saveDefaultConfig(model.value)).onSuccess(() => {
|
||||
window.$message.success($gettext('Modified successfully'))
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getDefaultPage()
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<n-tabs v-model:value="currentTab" type="line" placement="left" animated>
|
||||
<n-tab-pane name="default-page" :tab="$gettext('Default Page')">
|
||||
<n-flex vertical>
|
||||
<common-editor v-model:value="defaultPageModel.index" height="60vh" />
|
||||
<common-editor v-model:value="model.index" height="60vh" />
|
||||
<n-flex>
|
||||
<n-button type="primary">
|
||||
{{ $gettext('Save Changes') }}
|
||||
</n-button>
|
||||
</n-flex>
|
||||
</n-flex>
|
||||
</n-tab-pane>
|
||||
<n-tab-pane name="404-page" :tab="$gettext('404 Page')">
|
||||
<n-flex>
|
||||
<common-editor v-model:value="defaultPageModel.not_found" height="60vh" />
|
||||
<n-flex>
|
||||
<n-button type="primary">
|
||||
<n-button type="primary" @click="handleSave">
|
||||
{{ $gettext('Save Changes') }}
|
||||
</n-button>
|
||||
</n-flex>
|
||||
@@ -58,9 +52,19 @@ onMounted(() => {
|
||||
</n-tab-pane>
|
||||
<n-tab-pane name="stop-page" :tab="$gettext('Stop Page')">
|
||||
<n-flex>
|
||||
<common-editor v-model:value="defaultPageModel.stop" height="60vh" />
|
||||
<common-editor v-model:value="model.stop" height="60vh" />
|
||||
<n-flex>
|
||||
<n-button type="primary">
|
||||
<n-button type="primary" @click="handleSave">
|
||||
{{ $gettext('Save Changes') }}
|
||||
</n-button>
|
||||
</n-flex>
|
||||
</n-flex>
|
||||
</n-tab-pane>
|
||||
<n-tab-pane name="404-page" :tab="$gettext('404 Page')">
|
||||
<n-flex>
|
||||
<common-editor v-model:value="model.not_found" height="60vh" />
|
||||
<n-flex>
|
||||
<n-button type="primary" @click="handleSave">
|
||||
{{ $gettext('Save Changes') }}
|
||||
</n-button>
|
||||
</n-flex>
|
||||
@@ -70,33 +74,49 @@ onMounted(() => {
|
||||
<n-alert type="info">待开发</n-alert>
|
||||
</n-tab-pane>
|
||||
<n-tab-pane name="default-setting" :tab="$gettext('Default Settings')">
|
||||
<n-form>
|
||||
<n-form-item :label="$gettext('Default TLS Version')">
|
||||
<n-select
|
||||
v-model:value="defaultSettingModel.tls_version"
|
||||
:options="[
|
||||
{ label: 'TLS 1.0', value: 'TLSv1.0' },
|
||||
{ label: 'TLS 1.1', value: 'TLSv1.1' },
|
||||
{ label: 'TLS 1.2', value: 'TLSv1.2' },
|
||||
{ label: 'TLS 1.3', value: 'TLSv1.3' }
|
||||
]"
|
||||
multiple
|
||||
/>
|
||||
</n-form-item>
|
||||
<n-form-item :label="$gettext('Default Cipher Suites')">
|
||||
<n-input
|
||||
type="textarea"
|
||||
v-model:value="defaultSettingModel.cipher_suites"
|
||||
:placeholder="
|
||||
$gettext('Enter the default cipher suite, leave blank to reset to default')
|
||||
"
|
||||
rows="4"
|
||||
/>
|
||||
</n-form-item>
|
||||
<n-button type="primary">
|
||||
{{ $gettext('Save Changes') }}
|
||||
</n-button>
|
||||
</n-form>
|
||||
<n-flex vertical>
|
||||
<n-alert type="info">
|
||||
{{
|
||||
$gettext(
|
||||
'Modifying the default TLS version and cipher suites will affect all newly created websites. Existing websites will not be affected.'
|
||||
)
|
||||
}}
|
||||
</n-alert>
|
||||
<n-alert type="warning">
|
||||
{{
|
||||
$gettext(
|
||||
'Please adjust the settings carefully, improper configuration may lead to website inaccessible.'
|
||||
)
|
||||
}}
|
||||
</n-alert>
|
||||
<n-form>
|
||||
<n-form-item :label="$gettext('Default TLS Version')">
|
||||
<n-select
|
||||
v-model:value="model.tls_versions"
|
||||
:options="[
|
||||
{ label: 'TLS 1.0', value: 'TLSv1.0' },
|
||||
{ label: 'TLS 1.1', value: 'TLSv1.1' },
|
||||
{ label: 'TLS 1.2', value: 'TLSv1.2' },
|
||||
{ label: 'TLS 1.3', value: 'TLSv1.3' }
|
||||
]"
|
||||
multiple
|
||||
/>
|
||||
</n-form-item>
|
||||
<n-form-item :label="$gettext('Default Cipher Suites')">
|
||||
<n-input
|
||||
type="textarea"
|
||||
v-model:value="model.cipher_suites"
|
||||
:placeholder="
|
||||
$gettext('Enter the default cipher suite, leave blank to reset to default')
|
||||
"
|
||||
rows="4"
|
||||
/>
|
||||
</n-form-item>
|
||||
<n-button type="primary" @click="handleSave">
|
||||
{{ $gettext('Save Changes') }}
|
||||
</n-button>
|
||||
</n-form>
|
||||
</n-flex>
|
||||
</n-tab-pane>
|
||||
</n-tabs>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user