mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-30 22:26:38 +08:00
[修改] 文本优化
This commit is contained in:
@@ -221,7 +221,7 @@ function ConfigSectionShell({
|
||||
description={description}
|
||||
action={
|
||||
<PrimaryButton type="submit" form={formId} disabled={saving}>
|
||||
{saving ? '保存中...' : '保存当前分区'}
|
||||
{saving ? '保存中...' : '保存'}
|
||||
</PrimaryButton>
|
||||
}
|
||||
>
|
||||
@@ -259,7 +259,7 @@ function DomainSettingsSection({
|
||||
return (
|
||||
<ConfigSectionShell
|
||||
title="域名设置"
|
||||
description="站点标识在这里维护;域名列表第一行永远视为主域名。"
|
||||
description="配置站点。"
|
||||
formId="proxy-route-domains-form"
|
||||
saving={saving}
|
||||
>
|
||||
@@ -282,6 +282,14 @@ function DomainSettingsSection({
|
||||
);
|
||||
})}
|
||||
>
|
||||
<ToggleField
|
||||
label="启用站点"
|
||||
description="关闭后站点会保留配置,但不会被纳入发布渲染。"
|
||||
checked={form.watch('enabled')}
|
||||
onChange={(checked) =>
|
||||
form.setValue('enabled', checked, { shouldDirty: true })
|
||||
}
|
||||
/>
|
||||
<ResourceField
|
||||
label="站点标识"
|
||||
hint="建议使用稳定、可读的业务标识,不必与域名完全一致。"
|
||||
@@ -305,14 +313,6 @@ function DomainSettingsSection({
|
||||
/>
|
||||
</ResourceField>
|
||||
|
||||
<ToggleField
|
||||
label="启用站点"
|
||||
description="关闭后站点会保留配置,但不会被纳入发布渲染。"
|
||||
checked={form.watch('enabled')}
|
||||
onChange={(checked) =>
|
||||
form.setValue('enabled', checked, { shouldDirty: true })
|
||||
}
|
||||
/>
|
||||
</form>
|
||||
</ConfigSectionShell>
|
||||
);
|
||||
@@ -355,7 +355,7 @@ function RateLimitSection({
|
||||
return (
|
||||
<ConfigSectionShell
|
||||
title="流量限制"
|
||||
description="使用结构化字段生成 OpenResty 限制指令,空值或 0 表示关闭。"
|
||||
description="网站限流, 空值或 0 表示关闭。"
|
||||
formId="proxy-route-limits-form"
|
||||
saving={saving}
|
||||
>
|
||||
@@ -376,8 +376,8 @@ function RateLimitSection({
|
||||
})}
|
||||
>
|
||||
<ResourceField
|
||||
label="每站点最大连接数"
|
||||
hint="例如 120。0 表示关闭。"
|
||||
label="并发限制"
|
||||
hint="限制当前站点最大并发数"
|
||||
error={form.formState.errors.limit_conn_per_server?.message}
|
||||
>
|
||||
<ResourceInput
|
||||
@@ -387,8 +387,8 @@ function RateLimitSection({
|
||||
</ResourceField>
|
||||
|
||||
<ResourceField
|
||||
label="每 IP 最大连接数"
|
||||
hint="例如 12。0 表示关闭。"
|
||||
label="单IP限制"
|
||||
hint="限制单个IP访问最大并发数"
|
||||
error={form.formState.errors.limit_conn_per_ip?.message}
|
||||
>
|
||||
<ResourceInput
|
||||
@@ -398,12 +398,12 @@ function RateLimitSection({
|
||||
</ResourceField>
|
||||
|
||||
<ResourceField
|
||||
label="下载限速"
|
||||
hint="支持 512k、1m 或纯数字字节速率。留空表示关闭。"
|
||||
label="流量限制"
|
||||
hint="限制每个请求的流量上限。"
|
||||
error={form.formState.errors.limit_rate?.message}
|
||||
className="md:col-span-2"
|
||||
>
|
||||
<ResourceInput placeholder="512k" {...form.register('limit_rate')} />
|
||||
<ResourceInput placeholder="512k/1m" {...form.register('limit_rate')} />
|
||||
</ResourceField>
|
||||
</form>
|
||||
</ConfigSectionShell>
|
||||
@@ -854,7 +854,7 @@ export function ProxyRouteConfigPage({
|
||||
|
||||
<div className="grid gap-6 xl:grid-cols-[280px_minmax(0,1fr)]">
|
||||
<aside className="space-y-4">
|
||||
<AppCard title="配置分区" description="每个分区独立保存,切换时不会自动提交。">
|
||||
<AppCard title="配置分区" >
|
||||
<div className="space-y-2">
|
||||
{websiteConfigSections.map((section) => {
|
||||
const active = section.key === currentSection;
|
||||
@@ -880,35 +880,6 @@ export function ProxyRouteConfigPage({
|
||||
})}
|
||||
</div>
|
||||
</AppCard>
|
||||
|
||||
<AppCard title="站点摘要">
|
||||
<div className="space-y-3">
|
||||
<div className="flex flex-wrap gap-2">
|
||||
{getWebsiteStatusBadges(route).map((badge) => (
|
||||
<StatusBadge
|
||||
key={badge.label}
|
||||
label={badge.label}
|
||||
variant={badge.variant}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
<div className="space-y-2 text-sm text-[var(--foreground-secondary)]">
|
||||
<p>站点标识:{route.site_name}</p>
|
||||
<p>主域名:{route.primary_domain}</p>
|
||||
<p>上游数量:{route.upstream_list.length}</p>
|
||||
<p>最近更新:{formatDateTime(route.updated_at)}</p>
|
||||
</div>
|
||||
</div>
|
||||
</AppCard>
|
||||
|
||||
<AppCard title="当前分区">
|
||||
<p className="text-sm font-medium text-[var(--foreground-primary)]">
|
||||
{currentSectionMeta.label}
|
||||
</p>
|
||||
<p className="mt-2 text-sm leading-6 text-[var(--foreground-secondary)]">
|
||||
{currentSectionMeta.description}
|
||||
</p>
|
||||
</AppCard>
|
||||
</aside>
|
||||
|
||||
<div className="min-w-0 space-y-6">
|
||||
|
||||
@@ -189,7 +189,6 @@ export function ProxyRoutesPage() {
|
||||
<div className="space-y-6">
|
||||
<PageHeader
|
||||
title="网站配置"
|
||||
description="以站点为单位维护域名、回源、HTTPS、缓存和限流,并直接发布当前草稿。"
|
||||
action={
|
||||
<div className="flex flex-wrap gap-3">
|
||||
<SecondaryButton
|
||||
@@ -268,7 +267,6 @@ export function ProxyRoutesPage() {
|
||||
|
||||
<AppCard
|
||||
title="网站列表"
|
||||
description="点击“配置”进入独立子页面,按分区维护当前站点设置。"
|
||||
>
|
||||
<div className="space-y-4">
|
||||
<div className="flex flex-col gap-3 md:flex-row md:items-center md:justify-between">
|
||||
@@ -276,7 +274,7 @@ export function ProxyRoutesPage() {
|
||||
<ResourceInput
|
||||
value={keyword}
|
||||
onChange={(event) => setKeyword(event.target.value)}
|
||||
placeholder="搜索站点标识、域名、上游或备注"
|
||||
placeholder="搜索站点"
|
||||
/>
|
||||
</div>
|
||||
{diff && hasConfigChanges(diff) ? (
|
||||
@@ -335,9 +333,6 @@ export function ProxyRoutesPage() {
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
<p className="text-sm text-[var(--foreground-secondary)]">
|
||||
主域名 {route.primary_domain},共 {route.domain_count} 个域名
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -376,28 +371,6 @@ export function ProxyRoutesPage() {
|
||||
{getUpstreamSummary(route)}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="rounded-2xl border border-[var(--border-default)] bg-[var(--surface-panel)] px-4 py-3">
|
||||
<p className="text-xs uppercase tracking-[0.18em] text-[var(--foreground-muted)]">
|
||||
HTTPS / 证书
|
||||
</p>
|
||||
<p className="mt-2 text-sm text-[var(--foreground-primary)]">
|
||||
{route.enable_https
|
||||
? route.redirect_http
|
||||
? 'HTTPS 开启,HTTP 自动跳转'
|
||||
: 'HTTPS 开启'
|
||||
: '仅 HTTP'}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="rounded-2xl border border-[var(--border-default)] bg-[var(--surface-panel)] px-4 py-3">
|
||||
<p className="text-xs uppercase tracking-[0.18em] text-[var(--foreground-muted)]">
|
||||
最近更新
|
||||
</p>
|
||||
<p className="mt-2 text-sm text-[var(--foreground-primary)]">
|
||||
{formatDateTime(route.updated_at)}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p className="text-sm text-[var(--foreground-secondary)]">
|
||||
|
||||
@@ -8,27 +8,27 @@ export const websiteConfigSections = [
|
||||
{
|
||||
key: 'domains',
|
||||
label: '域名设置',
|
||||
description: '维护站点标识、主域名顺序和启用状态。',
|
||||
description: '维护站点标识。',
|
||||
},
|
||||
{
|
||||
key: 'limits',
|
||||
label: '流量限制',
|
||||
description: '设置连接数和限速,0 或空值表示关闭。',
|
||||
description: '设置连接数和限速。',
|
||||
},
|
||||
{
|
||||
key: 'proxy',
|
||||
label: '反向代理',
|
||||
description: '配置主回源、多上游、Host 头和自定义请求头。',
|
||||
description: '配置主回源、上游。',
|
||||
},
|
||||
{
|
||||
key: 'https',
|
||||
label: 'HTTPS',
|
||||
description: '选择证书并控制 HTTP 到 HTTPS 的跳转策略。',
|
||||
description: '证书设置。',
|
||||
},
|
||||
{
|
||||
key: 'cache',
|
||||
label: '缓存',
|
||||
description: '按 URL、后缀或路径规则启用站点级缓存。',
|
||||
description: '页面缓存。',
|
||||
},
|
||||
] as const;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user