Подготовить HY2XS к production-сборке

This commit is contained in:
2026-04-25 23:13:12 +05:00
commit 84a4e94567
277 changed files with 26513 additions and 0 deletions
+324
View File
@@ -0,0 +1,324 @@
export default {
// 路由国际化
route: {
account: "Account",
accountList: "Account Manage",
hysteria: "Hysteria",
hysteriaList: "Hysteria Manage",
config: "System",
configList: "System Config",
monitor: "Monitor",
monitorSystem: "System Monitor",
log: "Log",
logSystem: "System Log",
logHysteria: "Hysteria Log",
info: "Info",
infoAccount: "Account Info",
},
// 登录页面国际化
login: {
title: "HY2XS admin",
username: "Username",
password: "Password",
login: "Login",
},
// 导航栏国际化
navbar: {
logout: "Logout",
},
common: {
id: "ID",
createTime: "Create Time",
operate: "Operate",
edit: "Edit",
delete: "Delete",
deleted: "Status",
all: "All",
enable: "Enable",
disable: "Disable",
search: "Search",
reset: "Reset",
add: "Add",
confirm: "Confirm",
cancel: "Cancel",
copySuccess: "Copy successful",
subscribe: "Subscribe",
subscribeQrCode: "Subscribe QR Code",
nodeUrl: "Node URL",
nodeQrCode: "Node QR Code",
resetTraffic: "Reset traffic",
import: "Import",
export: "Export",
save: "Save",
update: "Update",
downloadSuccess: "Download successful",
wait: "The version is being changed, please wait a moment",
enableSuccess: "Hysteria2 start successful",
disableSuccess: "Hysteria2 stop successful",
success: "Success",
refresh: "Refresh",
yes: "Yes",
no: "No",
securityRisk: "Security Risks",
defaultPassTip: `Please change the default login password as soon as possible, It is recommended to set a strong password to protect your account security. <a href="/#/account/list?focus=change-pass" style="color: #00BFFF">Click here</a> to change`,
noHttpsTip: `Your website is not using HTTPS, making data transmission insecure, Please enable HTTPS as soon as possible to protect user information. <a href="/#/config/list?focus=huiHttps" style="color: #00BFFF">Click here</a> to enable`,
},
info: {
expireTime: "y-M-d H:m:s",
greeting1: "The cool and fresh air awakens your energy for the day🌅!",
greeting2: "Good morning",
greeting3: "Good afternoon",
greeting4: "Good evening",
greeting5:
"I want to be a shooting star, cutting through the darkness, just to illuminate your dreams, good night🌛!",
},
account: {
remark: "Remark",
username: "Username",
pass: "Pass",
conPass: "ConPass",
quota: "Quota",
download: "Download",
upload: "Upload",
expireTime: "Expire Time",
kickUtilTimeLast: "Offline Remaining Time",
kickUtilTime: "Offline Time",
deviceNo: "Limit Devices",
onlineStatus: "Online Status",
online: "Online",
offline: "Offline",
device: "Online Devices",
role: "Role",
unit: "Unit",
loginAt: "Last login time",
conAt: "Last connection time",
createTime: "Create Time",
releaseSuccess: "Release successful",
kick: "Kick",
kickTip: "Force user to log off",
releaseKick: "Release",
releaseKickTip: "Remove offline status",
},
config: {
huiWebPort: "HY2XS admin Web Port",
huiWebContext: "HY2XS admin Web Context",
hysteria2TrafficTime: "Hysteria2 Traffic Time",
huiCrtPath: "HY2XS admin CRT File Path",
huiKeyPath: "HY2XS admin KEY File Path",
uploadCrtFile: "Upload CRT File",
uploadKeyFile: "Upload KEY File",
restartServer: "Restart Panel",
restartTip: "Restarting, please refresh",
useHysteria2Cert: "Use Hysteria2 cert",
huiHttps: "Open https on the panel",
resetTrafficCron: "Reset traffic schedule task",
resetTrafficCronTip:
"Scheduled task expression, reference: https://pkg.go.dev/github.com/robfig/cron/v3",
resetTrafficMonth: "Run once a month, midnight, first of month",
resetTrafficWeek: "Run once a week, midnight between Sat/Sun",
},
monitor: {
huiVersion: "HY2XS admin Version",
cpuPercent: "CPU Usage",
memPercent: "Memory Usage",
diskPercent: "Disk Usage",
hysteria2UserTotal: "Number of online users",
hysteria2DeviceTotal: "Number of online devices",
hysteria2Version: "Hysteria2 Version",
hysteria2Running: "Hysteria2 Status",
hysteria2RunningTrue: "Running",
hysteria2RunningFalse: "Stop",
},
log: {
numLine: "Number of lines",
},
hysteria: {
enable: "Enable",
disable: "Disable",
addConfigItem: "Add Config Item",
hysteria2Version: "Hysteria2 Version",
hysteria2Running: "Hysteria2 Status",
hysteria2ChangeVersion: "Change",
addOutbound: "Add Outbound",
extension: "Extension",
listen: "Listen",
tls: "TLS",
obfs: "Obfuscation",
quic: "QUIC parameters",
bandwidth: "Bandwidth",
speedTest: "Speed Test",
udp: "UDP",
resolver: "Resolver",
sniff: "Protocol Sniffing",
acl: "ACL",
outbounds: "Outbounds",
http: "Traffic Stats API (HTTP)",
masquerade: "Masquerade",
config: {
enable: "Enable/Disable",
remark: "Remark",
portHopping:
"Port Hopping, Multiple individual ports: 1234,5678,9012; A range of ports: 20000-50000; A combination of both: 1234,5000-6000,7044,8000-9000",
clashExtension: "Clash subscription extension",
listen:
"When the IP address is omitted, the server will listen on all interfaces, both IPv4 and IPv6. To listen on IPv4 only, you can use 0.0.0.0:443. To listen on IPv6 only, you can use [::]:443.",
tlsType: "TLS type",
tls: {
cert: "The path to the Cert file.",
key: "The path to the Key file.",
sniGuard:
'Verify the SNI provided by the client. Accept the connection only when it matches what\'s in the certificate. Terminate the TLS handshake otherwise. Set to strict to enforce this behavior. Set to disable to disable this entirely. The default is dns-san, which enables this feature only when the certificate contains the "Subject Alternative Name" extension with a domain name in it.',
},
acme: {
domains: "Domains",
email: "Email",
ca: "The CA to use. Can be letsencrypt or zerossl.",
listenHost:
"The host address (not including the port) to listen on for the ACME challenge. If omitted, the server will listen on all interfaces.",
dir: "The directory to store the ACME account key and certificates.",
type: "ACME challenge type. Can be http, tls, or dns.",
http: {
altPort:
"Listening port for HTTP challenges. (Note: Changing to a port other than 80 requires port forwarding or HTTP reverse proxy, or the challenge will fail!)",
},
tls: {
altPort:
"Listening port for TLS-ALPN challenges. (Note: Changing to a port other than 443 requires port forwarding or TLS reverse proxy, or the challenge will fail!)",
},
dns: {
name: "DNS provider. For details, refer to ACME DNS Configuration.",
config: "ACME DNS Configuration",
},
disableHTTP: "Disable HTTP challenge.",
disableTLSALPN: "Disable TLS-ALPN challenge.",
altHTTPPort:
"Alternate HTTP challenge port. (Note: If you want to use anything other than 80, you must set up port forward/HTTP reverse proxy from 80 to that port, otherwise ACME will not be able to issue the certificate.)",
altTLSALPNPort:
"Alternate TLS-ALPN challenge port. (Note: If you want to use anything other than 443, you must set up port forward/SNI proxy from 443 to that port, otherwise ACME will not be able to issue the certificate.)",
},
obfs: {
type: "Type",
salamander: {
password: "Replace with a strong password of your choice.",
},
},
quic: {
initStreamReceiveWindow: "The initial QUIC stream receive window size.",
maxStreamReceiveWindow: "The maximum QUIC stream receive window size.",
initConnReceiveWindow:
"The initial QUIC connection receive window size.",
maxConnReceiveWindow:
"The maximum QUIC connection receive window size.",
maxIdleTimeout:
"The maximum idle timeout. How long the server will consider the client still connected without any activity.",
maxIncomingStreams:
"The maximum number of concurrent incoming streams.",
disablePathMTUDiscovery: "Disable QUIC path MTU discovery.",
},
bandwidth: {
up: "Up",
down: "Down",
},
ignoreClientBandwidth:
"When enabled, makes the server to disregard any bandwidth hints set by clients",
speedTest:
"speedTest enables the built-in speed test server. When enabled, clients can test their download and upload speeds with the server. For more information, see the Speed Test documentation.",
disableUDP:
"disableUDP disables UDP forwarding, only allowing TCP connections.",
udpIdleTimeout:
"udpIdleTimeout specifies the amount of time the server will keep a local UDP port open for each UDP session that has no activity. This is conceptually similar to the NAT UDP session timeout.",
resolver: {
type: "Type",
tcp: {
addr: "The address of the TCP resolver.",
timeout: "The timeout for DNS queries.",
},
udp: {
addr: "The address of the UDP resolver.",
timeout: "The timeout for DNS queries.",
},
tls: {
addr: "The address of the TLS resolver.",
timeout: "The timeout for DNS queries.",
sni: "The SNI to use for the TLS resolver.",
insecure: "Disable TLS verification for the TLS resolver.",
},
https: {
addr: "The address of the HTTPS resolver.",
timeout: "The timeout for DNS queries.",
sni: "The SNI to use for the TLS resolver.",
insecure: "Disable TLS verification for the TLS resolver.",
},
},
sniff: {
enable: "Whether to enable protocol sniffing.",
timeout:
"Sniffing timeout. If the protocol/domain cannot be determined within this time, the original address will be used to initiate the connection.",
rewriteDomain:
"Whether to rewrite requests that are already in domain name form. If enabled, requests with the target address already in domain name form will still be sniffed.",
tcpPorts:
"List of TCP ports. Only TCP requests on these ports will be sniffed.",
udpPorts:
"List of UDP ports. Only UDP requests on these ports will be sniffed.",
},
aclType: "ACL type",
acl: {
file: "The path to the ACL file.",
inline: "The list of inline ACL rules.",
geoip:
"Optional. Uncomment to enable. The path to the GeoIP database file. If this field is omitted, Hysteria will automatically download the latest database to your working directory.",
geosite:
"Optional. Uncomment to enable. The path to the GeoSite database file. If this field is omitted, Hysteria will automatically download the latest database to your working directory.",
geoUpdateInterval:
"Optional. The interval at which to refresh the GeoIP/GeoSite databases. 168 hours (1 week) by default. Only applies if the GeoIP/GeoSite databases are automatically downloaded. (Check the note below for more information.)",
},
outbounds: {
name: "The name of the outbound. This is used in ACL rules.",
type: "Type",
socks5: {
addr: "The address of the SOCKS5 proxy.",
username:
"Optional. The username for the SOCKS5 proxy, if authentication is required.",
password:
"Optional. The password for the SOCKS5 proxy, if authentication is required.",
},
http: {
url: "The URL of the HTTP/HTTPS proxy. (Can be http:// or https://)",
insecure:
"Optional. Whether to disable TLS verification. Applies to HTTPS proxies only.",
},
direct: {
mode: "Type",
bindIPv4: "The local IPv4 address to bind to.",
bindIPv6: "The local IPv6 address to bind to.",
bindDevice: "The local network interface to bind to.",
fastOpen: "Enable TCP fast open.",
},
},
trafficStats: {
listen: "The address to listen on.",
},
masquerade: {
type: "Type",
file: {
dir: "The directory to serve files from.",
},
proxy: {
url: "The URL of the website to proxy.",
rewriteHost:
"Whether to rewrite the Host header to match the proxied website. This is required if the target web server uses Host to determine which site to serve.",
insecure: "Disable TLS verification for the proxied website.",
},
string: {
content: "The string to return.",
headers: "Optional. The headers to return.",
statusCode: "Optional. The status code to return. 200 by default.",
},
listenHTTP: "HTTP (TCP) listen address.",
listenHTTPS: "HTTPS (TCP) listen address.",
forceHTTPS:
"Whether to force HTTPS. If enabled, all HTTP requests will be redirected to HTTPS.",
},
},
},
};
+258
View File
@@ -0,0 +1,258 @@
export default {
route: {
account: "Аккаунты",
accountList: "Управление аккаунтами",
hysteria: "Hysteria",
hysteriaList: "Управление Hysteria",
config: "Система",
configList: "Настройки системы",
monitor: "Мониторинг",
monitorSystem: "Системный мониторинг",
log: "Логи",
logSystem: "Системные логи",
logHysteria: "Логи Hysteria",
info: "Информация",
infoAccount: "Профиль",
},
login: {
title: "HY2XS admin",
username: "Логин",
password: "Пароль",
login: "Войти",
},
navbar: {
logout: "Выйти",
},
common: {
id: "ID",
createTime: "Создано",
operate: "Действия",
edit: "Изменить",
delete: "Удалить",
deleted: "Статус",
all: "Все",
enable: "Включено",
disable: "Отключено",
search: "Поиск",
reset: "Сброс",
add: "Добавить",
confirm: "Подтвердить",
cancel: "Отмена",
copySuccess: "Скопировано",
subscribe: "Ссылка подписки",
subscribeQrCode: "QR подписки",
nodeUrl: "URL узла",
nodeQrCode: "QR узла",
resetTraffic: "Сбросить трафик",
import: "Импорт",
export: "Экспорт",
save: "Сохранить",
update: "Обновить",
downloadSuccess: "Загрузка завершена",
wait: "Версия меняется, подождите",
enableSuccess: "Hysteria2 запущена",
disableSuccess: "Hysteria2 остановлена",
success: "Готово",
refresh: "Обновить",
yes: "Да",
no: "Нет",
securityRisk: "Риски безопасности",
defaultPassTip: `Смените пароль по умолчанию как можно скорее. <a href="/#/account/list?focus=change-pass" style="color: #00BFFF">Перейти к смене</a>`,
noHttpsTip: `Панель работает без HTTPS. Включите HTTPS для защиты данных. <a href="/#/config/list?focus=huiHttps" style="color: #00BFFF">Открыть настройки</a>`,
},
info: {
expireTime: "г-М-д Ч:м:с",
greeting1: "Доброе утро,",
greeting2: "Доброе утро,",
greeting3: "Добрый день,",
greeting4: "Добрый вечер,",
greeting5: "Доброй ночи,",
},
account: {
remark: "Комментарий",
username: "Логин",
pass: "Пароль входа",
conPass: "Пароль подключения",
quota: "Квота",
download: "Скачано",
upload: "Отдано",
expireTime: "Срок действия",
kickUtilTimeLast: "Осталось офлайн",
kickUtilTime: "Отключить до",
deviceNo: "Лимит устройств",
onlineStatus: "Онлайн",
online: "Онлайн",
offline: "Офлайн",
device: "Устройства",
role: "Роль",
unit: "Ед. изм.",
loginAt: "Последний вход",
conAt: "Последнее подключение",
createTime: "Создано",
releaseSuccess: "Ограничение снято",
kick: "Отключить",
kickTip: "Принудительно отключить пользователя",
releaseKick: "Снять",
releaseKickTip: "Снять офлайн-статус",
},
config: {
huiWebPort: "Порт HY2XS admin",
huiWebContext: "Web-контекст HY2XS admin",
hysteria2TrafficTime: "Период учёта трафика Hysteria2",
huiCrtPath: "Путь к CRT HY2XS admin",
huiKeyPath: "Путь к KEY HY2XS admin",
uploadCrtFile: "Загрузить CRT",
uploadKeyFile: "Загрузить KEY",
restartServer: "Перезапустить панель",
restartTip: "Перезапуск, обновите страницу",
useHysteria2Cert: "Использовать сертификат Hysteria2",
huiHttps: "Включить HTTPS панели",
resetTrafficCron: "Расписание сброса трафика",
resetTrafficCronTip: "Cron-выражение для планового сброса трафика",
resetTrafficMonth: "Раз в месяц, в полночь первого дня",
resetTrafficWeek: "Раз в неделю, в полночь между субботой и воскресеньем",
},
monitor: {
huiVersion: "Версия HY2XS admin",
cpuPercent: "CPU",
memPercent: "Память",
diskPercent: "Диск",
hysteria2UserTotal: "Пользователей онлайн",
hysteria2DeviceTotal: "Устройств онлайн",
hysteria2Version: "Версия Hysteria2",
hysteria2Running: "Статус Hysteria2",
hysteria2RunningTrue: "Работает",
hysteria2RunningFalse: "Остановлена",
},
log: {
numLine: "Количество строк",
},
hysteria: {
enable: "Включить",
disable: "Отключить",
addConfigItem: "Добавить параметр",
hysteria2Version: "Версия Hysteria2",
hysteria2Running: "Статус Hysteria2",
hysteria2ChangeVersion: "Сменить",
addOutbound: "Добавить outbound",
extension: "Расширение",
listen: "Адрес прослушивания",
tls: "TLS",
obfs: "Маскировка",
quic: "Параметры QUIC",
bandwidth: "Полоса",
speedTest: "Тест скорости",
udp: "UDP",
resolver: "DNS",
sniff: "Sniffing протоколов",
acl: "ACL",
outbounds: "Outbounds",
http: "Traffic Stats API (HTTP)",
masquerade: "Masquerade",
config: {
enable: "Включить/отключить",
remark: "Комментарий",
portHopping: "Port hopping: отдельные порты, диапазоны или их комбинации",
clashExtension: "Расширение подписки Clash",
listen: "Адрес и порт прослушивания. Для IPv4 используйте 0.0.0.0:443.",
tlsType: "Тип TLS",
tls: {
cert: "Путь к cert-файлу",
key: "Путь к key-файлу",
sniGuard: "Проверка SNI клиента перед принятием TLS-соединения.",
},
acme: {
domains: "Домены",
email: "Email",
ca: "CA: letsencrypt или zerossl",
listenHost: "Адрес для ACME challenge",
dir: "Каталог ACME аккаунта и сертификатов",
type: "Тип ACME challenge: http, tls или dns",
http: { altPort: "Альтернативный порт HTTP challenge" },
tls: { altPort: "Альтернативный порт TLS-ALPN challenge" },
dns: { name: "DNS-провайдер", config: "Конфигурация ACME DNS" },
disableHTTP: "Отключить HTTP challenge",
disableTLSALPN: "Отключить TLS-ALPN challenge",
altHTTPPort: "Альтернативный HTTP-порт",
altTLSALPNPort: "Альтернативный TLS-ALPN-порт",
},
obfs: {
type: "Тип",
salamander: { password: "Сильный пароль Salamander" },
},
quic: {
initStreamReceiveWindow: "Начальное окно приёма QUIC stream",
maxStreamReceiveWindow: "Максимальное окно приёма QUIC stream",
initConnReceiveWindow: "Начальное окно приёма QUIC connection",
maxConnReceiveWindow: "Максимальное окно приёма QUIC connection",
maxIdleTimeout: "Максимальный idle timeout",
maxIncomingStreams: "Максимум входящих stream",
disablePathMTUDiscovery: "Отключить QUIC path MTU discovery",
},
bandwidth: { up: "Вверх", down: "Вниз" },
ignoreClientBandwidth: "Игнорировать bandwidth, заявленный клиентом",
speedTest: "Встроенный сервер теста скорости",
disableUDP: "Отключить UDP forwarding",
udpIdleTimeout: "Idle timeout для UDP-сессий",
resolver: {
type: "Тип",
tcp: { addr: "TCP DNS resolver", timeout: "Timeout DNS-запросов" },
udp: { addr: "UDP DNS resolver", timeout: "Timeout DNS-запросов" },
tls: {
addr: "DNS over TLS resolver",
timeout: "Timeout DNS-запросов",
sni: "SNI для TLS resolver",
insecure: "Отключить TLS-проверку",
},
https: {
addr: "DNS over HTTPS resolver",
timeout: "Timeout DNS-запросов",
sni: "SNI для HTTPS resolver",
insecure: "Отключить TLS-проверку",
},
},
sniff: {
enable: "Включить sniffing",
timeout: "Timeout sniffing",
rewriteDomain: "Повторно анализировать доменные запросы",
tcpPorts: "TCP-порты для sniffing",
udpPorts: "UDP-порты для sniffing",
},
aclType: "Тип ACL",
acl: {
file: "Путь к ACL-файлу",
inline: "Inline ACL-правила",
geoip: "Путь к GeoIP базе",
geosite: "Путь к GeoSite базе",
geoUpdateInterval: "Интервал обновления GeoIP/GeoSite",
},
outbounds: {
name: "Имя outbound",
type: "Тип",
socks5: { addr: "Адрес SOCKS5", username: "Логин SOCKS5", password: "Пароль SOCKS5" },
http: { url: "URL HTTP/HTTPS proxy", insecure: "Отключить TLS-проверку proxy" },
direct: {
mode: "Тип",
bindIPv4: "Локальный IPv4",
bindIPv6: "Локальный IPv6",
bindDevice: "Сетевой интерфейс",
fastOpen: "TCP fast open",
},
},
trafficStats: { listen: "Адрес прослушивания" },
masquerade: {
type: "Тип",
file: { dir: "Каталог файлов" },
proxy: {
url: "URL проксируемого сайта",
rewriteHost: "Переписывать Host header",
insecure: "Отключить TLS-проверку",
},
string: { content: "Ответ строкой", headers: "HTTP headers", statusCode: "HTTP status code" },
listenHTTP: "HTTP listen address",
listenHTTPS: "HTTPS listen address",
forceHTTPS: "Принудительно использовать HTTPS",
},
},
},
};
+312
View File
@@ -0,0 +1,312 @@
export default {
// 路由国际化
route: {
account: "账户",
accountList: "账户管理",
hysteria: "Hysteria",
hysteriaList: "Hysteria 管理",
config: "系统",
configList: "系统设置",
monitor: "监控",
monitorSystem: "系统监控",
log: "日志",
logSystem: "系统日志",
logHysteria: "Hysteria 日志",
info: "信息",
infoAccount: "账户信息",
},
// 登录页面国际化
login: {
title: "HY2XS admin",
username: "用户名",
password: "密码",
login: "登 录",
},
// 导航栏国际化
navbar: {
logout: "注销",
},
common: {
id: "编号",
createTime: "创建时间",
operate: "操作",
edit: "编辑",
delete: "删除",
deleted: "状态",
all: "全部",
enable: "正常",
disable: "禁用",
search: "搜索",
reset: "重设",
add: "新增",
confirm: "确定",
cancel: "取消",
copySuccess: "复制成功",
subscribe: "订阅链接",
subscribeQrCode: "订阅二维码",
nodeUrl: "节点 URL",
nodeQrCode: "节点二维码",
resetTraffic: "重设流量",
import: "导入",
export: "导出",
save: "保存",
update: "更新",
downloadSuccess: "下载成功",
wait: "正在更换版本,请等待一会儿",
enableSuccess: "Hysteria2 启动 !!",
disableSuccess: "Hysteria2 已关闭",
success: "成功",
refresh: "刷新",
yes: "是",
no: "否",
securityRisk: `安全隐患`,
defaultPassTip: `请尽快修改默认登录密码,建议设置强密码以保护您的账户安全。<a href="/#/account/list?focus=change-pass" style="color: #00BFFF">点击这里</a>修改`,
noHttpsTip: `您的网站未启用 HTTPS,数据传输不安全,请尽快开启 HTTPS 以保护用户信息。<a href="/#/config/list?focus=huiHttps" style="color: #00BFFF">点击这里</a>开启`,
},
info: {
expireTime: "年-月-日 时:分:秒",
greeting1: "微凉扑面,清新的空气,唤醒一天的活力🌅!",
greeting2: "上午好,",
greeting3: "下午好,",
greeting4: "晚上好,",
greeting5: "我愿成为流星,划破黑夜,只为照亮你的梦境,晚安🌛!",
},
account: {
remark: "备注",
username: "用户名",
pass: "登录密码",
conPass: "连接密码",
quota: "配额",
download: "下载",
upload: "上传",
expireTime: "过期时间",
kickUtilTimeLast: "下线剩余时间",
kickUtilTime: "下线截止时间",
deviceNo: "限制设备数",
onlineStatus: "在线状态",
online: "在线",
offline: "离线",
device: "在线设备数",
role: "角色",
unit: "单位",
loginAt: "最近登录时间",
conAt: "最近连接时间",
createTime: "注册时间",
releaseSuccess: "解除成功",
kick: "下线",
kickTip: "强制用户下线",
releaseKick: "解除",
releaseKickTip: "解除下线状态",
},
config: {
huiWebPort: "HY2XS admin Web 端口",
huiWebContext: "HY2XS admin Web 上下文",
hysteria2TrafficTime: "Hysteria2 流量倍数",
huiCrtPath: "HY2XS admin CRT 证书路径",
huiKeyPath: "HY2XS admin KEY 证书路径",
uploadCrtFile: "上传 CRT 证书",
uploadKeyFile: "上传 KEY 证书",
restartServer: "重启面板",
restartTip: "正在重启,请刷新",
useHysteria2Cert: "使用 Hysteria2 的证书",
huiHttps: "面板开启 https",
resetTrafficCron: "重设流量计划任务",
resetTrafficCronTip:
"计划任务表达式,参考:https://pkg.go.dev/github.com/robfig/cron/v3",
resetTrafficMonth: "每月运行一次,每月第一天午夜",
resetTrafficWeek: "每周运行一次,周六/周日午夜",
},
monitor: {
huiVersion: "HY2XS admin 版本",
cpuPercent: "CPU 使用率",
memPercent: "内存使用率",
diskPercent: "磁盘使用率",
hysteria2UserTotal: "在线用户数",
hysteria2DeviceTotal: "在线设备数",
hysteria2Version: "Hysteria2 版本",
hysteria2Running: "Hysteria2 状态",
hysteria2RunningTrue: "运行",
hysteria2RunningFalse: "停止",
},
log: {
numLine: "显示行数",
},
hysteria: {
enable: "开启",
disable: "关闭",
addConfigItem: "添加配置项",
hysteria2Version: "Hysteria2 版本",
hysteria2Running: "Hysteria2 状态",
hysteria2ChangeVersion: "切换",
addOutbound: "添加出站规则",
extension: "扩展",
listen: "监听地址",
tls: "TLS",
obfs: "混淆",
quic: "QUIC 参数",
bandwidth: "带宽",
speedTest: "速度测试",
udp: "UDP",
resolver: "DNS 解析",
sniff: "协议嗅探 (Sniff)",
acl: "ACL",
outbounds: "出站规则",
http: "流量统计 API",
masquerade: "伪装",
config: {
enable: "开启/关闭",
remark: "别名",
portHopping:
"端口跳跃,多个单端口:1234,5678,9012;端口范围:20000-50000;两者的组合:1234,5000-6000,7044,8000-9000",
clashExtension: "Clash 订阅扩展",
listen:
"当只有端口没有 IP 地址时,服务器将监听所有可用的 IPv4 和 IPv6 地址。要仅监听 IPv4,可以使用 0.0.0.0:443。要仅监听 IPv6,可以使用 [::]:443。",
tlsType: "TLS 类型",
tls: {
cert: "CERT 路径",
key: "KEY 路径",
sniGuard:
"验证客户端发送的 SNI。 与证书信息匹配时才建立连接, 否则终止 TLS 握手。 设置为 strict 以启用该功能。 设置为 disable 以禁用该功能。 默认为 dns-san, 仅当证书中包含「证书主题背景的备用名称」扩展且该扩展中包含域名时才启用该功能。",
},
acme: {
domains: "域名",
email: "邮箱",
ca: "要使用的 CA。可以是 letsencrypt 或 zerossl。",
listenHost:
"用于 ACME 服务器验证的监听地址(不含端口)。默认监听所有可用的地址。",
dir: "存储 ACME 账户密钥和证书的目录。",
type: "ACME 验证类型。可以是 http, tls 或 dns。",
http: {
altPort:
"用于 HTTP 挑战的监听端口。 (注意: 改为非 80 需要另行配置端口转发或者 HTTP 反向代理,否则证书会签署失败!)",
},
tls: {
altPort:
"用于 TLS-ALPN 挑战的监听端口。 (注意: 改为非 443 需要另行配置端口转发或者 SNI Proxy,否则证书会签署失败!)",
},
dns: {
name: "DNS 提供商。详细信息请参考 ACME DNS 配置。",
config: "ACME DNS 配置",
},
disableHTTP: "禁用 HTTP 挑战。",
disableTLSALPN: "禁用 TLS-ALPN 挑战。",
altHTTPPort:
"用于 HTTP 挑战的监听端口。 (注意: 改为非 80 需要另行配置端口转发或者 HTTP 反向代理,否则证书会签署失败!)",
altTLSALPNPort:
"用于 TLS-ALPN 挑战的监听端口。 (注意: 改为非 443 需要另行配置端口转发或者 SNI Proxy,否则证书会签署失败!)",
},
obfs: {
type: "类型",
salamander: {
password: "替换为你的混淆密码。",
},
},
quic: {
initStreamReceiveWindow: "初始的 QUIC 流接收窗口大小。",
maxStreamReceiveWindow: "最大的 QUIC 流接收窗口大小。",
initConnReceiveWindow: "初始的 QUIC 连接接收窗口大小。",
maxConnReceiveWindow: "最大的 QUIC 连接接收窗口大小。",
maxIdleTimeout:
"最长空闲超时时间。服务器会在多长时间没有收到任何客户端数据后关闭连接。",
maxIncomingStreams: "最大并发传入流的数量。",
disablePathMTUDiscovery: "禁用 MTU 探测。",
},
bandwidth: {
up: "上传",
down: "下载",
},
ignoreClientBandwidth: "忽略客户端带宽设置",
speedTest: "speedTest 启用后,服务端将允许客户端进行下载和上传速度测试。",
disableUDP: "disableUDP 启用后服务端禁用 UDP 转发,只支持 TCP。",
udpIdleTimeout:
"udpIdleTimeout 用于指定服务器对于每个 UDP 会话,在没有流量时保持本地 UDP 端口的时间长度。概念上与 NAT 的 UDP 会话超时时间相似。",
resolver: {
type: "类型",
tcp: {
addr: "TCP DNS 服务器地址。",
timeout: "DNS 查询超时时间。",
},
udp: {
addr: "UDP DNS 服务器地址。",
timeout: "DNS 查询超时时间。",
},
tls: {
addr: "DNS over TLS 服务器地址。",
timeout: "DNS 查询超时时间。",
sni: "DNS over TLS 服务器的 SNI。",
insecure: "禁用 TLS 证书验证。",
},
https: {
addr: "DNS over HTTPS 服务器地址。",
timeout: "DNS 查询超时时间。",
sni: "DNS over TLS 服务器的 SNI。",
insecure: "禁用 TLS 证书验证。",
},
},
sniff: {
enable: "是否启用协议嗅探。",
timeout:
"嗅探超时时间。如果超过这个时间仍然无法确定协议/获取域名,将使用原地址发起连接。",
rewriteDomain:
"是否重写已经是域名的请求。如果启用,对于目标地址已经是域名的请求,仍会进行嗅探。",
tcpPorts: "TCP 端口列表。只有这些端口的 TCP 请求会被嗅探。",
udpPorts: "UDP 端口列表。只有这些端口的 UDP 请求会被嗅探。",
},
aclType: "ACL 类型",
acl: {
file: "ACL 文件的路径。",
inline: "内联 ACL 规则的列表。",
geoip:
"可选。取消注释以启用。GeoIP 数据库文件的路径。如果省略这个字段,Hysteria 会自动下载最新的数据库到工作目录。",
geosite:
"可选。取消注释以启用。GeoSite 数据库文件的路径。如果省略这个字段,Hysteria 会自动下载最新的数据库到工作目录。",
geoUpdateInterval:
"可选。GeoIP/GeoSite 数据库刷新的间隔。默认为 168 小时(1 周)。仅在 GeoIP/GeoSite 数据库是自动下载的情况下生效。",
},
outbounds: {
name: "出站规则的名称。在 ACL 中使用。",
type: "类型",
socks5: {
addr: "SOCKS5 代理地址。",
username: "可选。SOCKS5 代理用户名。",
password: "可选。SOCKS5 代理密码。",
},
http: {
url: "HTTP/HTTPS 代理 URL。(可以是 http:// 或 https:// 开头)",
insecure: "可选。禁用 TLS 证书验证。仅适用于 HTTPS 代理。",
},
direct: {
mode: "类型",
bindIPv4: "要绑定的本地 IPv4 地址。",
bindIPv6: "要绑定的本地 IPv6 地址。",
bindDevice: "要绑定的本地网卡。",
fastOpen: "启用 TCP 快速打开。",
},
},
trafficStats: {
listen: "监听地址。",
},
masquerade: {
type: "类型",
file: {
dir: "用于提供文件的目录。",
},
proxy: {
url: "要代理的网站的 URL。",
rewriteHost:
"是否重写 Host 头以匹配被代理的网站。如果目标网站通过 Host 识别请求的网站,这个选项是必须的。",
insecure: "禁用对代理网站的 TLS 验证。",
},
string: {
content: "要返回的字符串。",
headers: "可选。要返回的 HTTP 头列表。",
statusCode: "可选。要返回的 HTTP 状态码。默认为 200。",
},
listenHTTP: "HTTP (TCP) 监听地址。",
listenHTTPS: "HTTPS (TCP) 监听地址。",
forceHTTPS:
"是否强制使用 HTTPS。如果启用,HTTP 请求将被重定向到 HTTPS。",
},
},
},
};