mirror of https://github.com/ospab/ostp.git
Remove Reality/XTLS UI from ostp-gui, ostp-flutter, ostp-control
This commit is contained in:
parent
8749f12026
commit
76de3c6422
|
|
@ -40,8 +40,6 @@ export const translations = {
|
||||||
db_core_version: 'Версия ядра',
|
db_core_version: 'Версия ядра',
|
||||||
db_listen_addr: 'Порт прослушивания',
|
db_listen_addr: 'Порт прослушивания',
|
||||||
db_api_bind: 'Адрес API',
|
db_api_bind: 'Адрес API',
|
||||||
db_reality_status: 'Статус Reality',
|
|
||||||
db_reality_dest: 'Домен маскировки',
|
|
||||||
db_outbound_proxy: 'Исходящий прокси',
|
db_outbound_proxy: 'Исходящий прокси',
|
||||||
db_fallback_status: 'TCP Fallback',
|
db_fallback_status: 'TCP Fallback',
|
||||||
db_fallback_target: 'Сервер Fallback',
|
db_fallback_target: 'Сервер Fallback',
|
||||||
|
|
@ -119,11 +117,7 @@ export const translations = {
|
||||||
st_ui_fb_enable: 'Перенаправлять неопознанный TCP трафик на веб-сервер',
|
st_ui_fb_enable: 'Перенаправлять неопознанный TCP трафик на веб-сервер',
|
||||||
st_ui_fb_port: 'Входной TCP-порт (listen)',
|
st_ui_fb_port: 'Входной TCP-порт (listen)',
|
||||||
st_ui_fb_target: 'Целевой веб-сервер (target)',
|
st_ui_fb_target: 'Целевой веб-сервер (target)',
|
||||||
st_ui_rl_title: 'Параметры маскировки Reality (XTLS)',
|
|
||||||
st_ui_rl_enable: 'Активировать обфускацию Reality',
|
|
||||||
st_ui_rl_dest: 'Маскировочный домен-назначение (dest)',
|
st_ui_rl_dest: 'Маскировочный домен-назначение (dest)',
|
||||||
st_ui_rl_pri: 'Приватный ключ Reality (X25519)',
|
|
||||||
st_ui_rl_pub: 'Публичный ключ Reality (pbk)',
|
|
||||||
st_ui_rl_sid: 'Короткий SID сессии (8 байт hex)',
|
st_ui_rl_sid: 'Короткий SID сессии (8 байт hex)',
|
||||||
st_ui_rl_sni: 'Список SNI доменов (через запятую)',
|
st_ui_rl_sni: 'Список SNI доменов (через запятую)',
|
||||||
st_ui_ob_title: 'Исходящий трафик (Outbound Routing)',
|
st_ui_ob_title: 'Исходящий трафик (Outbound Routing)',
|
||||||
|
|
@ -136,14 +130,10 @@ export const translations = {
|
||||||
st_ui_ob_action_proxy: 'Через прокси (proxy)',
|
st_ui_ob_action_proxy: 'Через прокси (proxy)',
|
||||||
|
|
||||||
tl_title: 'Инструменты',
|
tl_title: 'Инструменты',
|
||||||
tl_subtitle: 'Генератор ключей Reality, резервное копирование и диагностика',
|
|
||||||
tl_keygen_title: 'Генератор ключей Reality (X25519)',
|
|
||||||
tl_keygen_desc: 'Для маскировки Reality требуется пара ключей X25519. Сгенерируйте их здесь или выполните команду `ostp --generate-key` на сервере.',
|
|
||||||
tl_keygen_btn: 'Сгенерировать ключи',
|
tl_keygen_btn: 'Сгенерировать ключи',
|
||||||
tl_keygen_pub: 'Публичный ключ (pbk)',
|
tl_keygen_pub: 'Публичный ключ (pbk)',
|
||||||
tl_keygen_pri: 'Приватный ключ (private_key)',
|
tl_keygen_pri: 'Приватный ключ (private_key)',
|
||||||
tl_keygen_sid: 'Предлагаемый SID сессии (sid)',
|
tl_keygen_sid: 'Предлагаемый SID сессии (sid)',
|
||||||
tl_keygen_copy: 'Копировать и применить в Reality',
|
|
||||||
tl_keygen_applied: 'Ключи сгенерированы! Скопируйте их и вставьте во вкладку Настроек.',
|
tl_keygen_applied: 'Ключи сгенерированы! Скопируйте их и вставьте во вкладку Настроек.',
|
||||||
tl_backup_title: 'Резервное копирование',
|
tl_backup_title: 'Резервное копирование',
|
||||||
tl_backup_desc: 'Экспортируйте текущую конфигурацию сервера в файл или восстановите настройки из файла бэкапа.',
|
tl_backup_desc: 'Экспортируйте текущую конфигурацию сервера в файл или восстановите настройки из файла бэкапа.',
|
||||||
|
|
@ -234,8 +224,6 @@ export const translations = {
|
||||||
db_core_version: 'Core Version',
|
db_core_version: 'Core Version',
|
||||||
db_listen_addr: 'Listen Port',
|
db_listen_addr: 'Listen Port',
|
||||||
db_api_bind: 'API Address',
|
db_api_bind: 'API Address',
|
||||||
db_reality_status: 'Reality Obfuscation',
|
|
||||||
db_reality_dest: 'Masquerade Destination',
|
|
||||||
db_outbound_proxy: 'Outbound Proxy',
|
db_outbound_proxy: 'Outbound Proxy',
|
||||||
db_fallback_status: 'TCP Fallback',
|
db_fallback_status: 'TCP Fallback',
|
||||||
db_fallback_target: 'Fallback Target',
|
db_fallback_target: 'Fallback Target',
|
||||||
|
|
@ -313,11 +301,7 @@ export const translations = {
|
||||||
st_ui_fb_enable: 'Forward unrecognized TCP traffic to web server',
|
st_ui_fb_enable: 'Forward unrecognized TCP traffic to web server',
|
||||||
st_ui_fb_port: 'Input TCP port (listen)',
|
st_ui_fb_port: 'Input TCP port (listen)',
|
||||||
st_ui_fb_target: 'Target web server (target)',
|
st_ui_fb_target: 'Target web server (target)',
|
||||||
st_ui_rl_title: 'Reality Obfuscation Parameters (XTLS)',
|
|
||||||
st_ui_rl_enable: 'Activate Reality obfuscation',
|
|
||||||
st_ui_rl_dest: 'Masquerade domain destination (dest)',
|
st_ui_rl_dest: 'Masquerade domain destination (dest)',
|
||||||
st_ui_rl_pri: 'Reality private key (X25519)',
|
|
||||||
st_ui_rl_pub: 'Reality public key (pbk)',
|
|
||||||
st_ui_rl_sid: 'Short session SID (8 bytes hex)',
|
st_ui_rl_sid: 'Short session SID (8 bytes hex)',
|
||||||
st_ui_rl_sni: 'SNI domains list (comma separated)',
|
st_ui_rl_sni: 'SNI domains list (comma separated)',
|
||||||
st_ui_ob_title: 'Outbound Routing',
|
st_ui_ob_title: 'Outbound Routing',
|
||||||
|
|
@ -330,14 +314,10 @@ export const translations = {
|
||||||
st_ui_ob_action_proxy: 'Proxy (proxy)',
|
st_ui_ob_action_proxy: 'Proxy (proxy)',
|
||||||
|
|
||||||
tl_title: 'Tools',
|
tl_title: 'Tools',
|
||||||
tl_subtitle: 'Reality key generation, config backups, and diagnostics',
|
|
||||||
tl_keygen_title: 'Reality X25519 Keypair Generator',
|
|
||||||
tl_keygen_desc: 'Reality masquerade requires an X25519 keypair. Generate it here or run `ostp --generate-key` on the server.',
|
|
||||||
tl_keygen_btn: 'Generate Keypair',
|
tl_keygen_btn: 'Generate Keypair',
|
||||||
tl_keygen_pub: 'Public Key (pbk)',
|
tl_keygen_pub: 'Public Key (pbk)',
|
||||||
tl_keygen_pri: 'Private Key (private_key)',
|
tl_keygen_pri: 'Private Key (private_key)',
|
||||||
tl_keygen_sid: 'Suggested Session SID (sid)',
|
tl_keygen_sid: 'Suggested Session SID (sid)',
|
||||||
tl_keygen_copy: 'Copy and Apply to Reality Config',
|
|
||||||
tl_keygen_applied: 'Keypair generated! Copy and paste them into Settings tab.',
|
tl_keygen_applied: 'Keypair generated! Copy and paste them into Settings tab.',
|
||||||
tl_backup_title: 'Configuration Backups',
|
tl_backup_title: 'Configuration Backups',
|
||||||
tl_backup_desc: 'Export current server configuration to a file, or restore it by uploading a backup file.',
|
tl_backup_desc: 'Export current server configuration to a file, or restore it by uploading a backup file.',
|
||||||
|
|
|
||||||
|
|
@ -119,14 +119,6 @@ class _HomeScreenState extends State<HomeScreen> with TickerProviderStateMixin {
|
||||||
"enabled": muxEnabled,
|
"enabled": muxEnabled,
|
||||||
"sessions": int.tryParse(muxSessions) ?? 2,
|
"sessions": int.tryParse(muxSessions) ?? 2,
|
||||||
},
|
},
|
||||||
"reality": {
|
|
||||||
"enabled": widget.prefs.getBool('reality_enabled') ?? false,
|
|
||||||
"dest": "",
|
|
||||||
"private_key": "",
|
|
||||||
"pbk": widget.prefs.getString('pbk') ?? "",
|
|
||||||
"sid": widget.prefs.getString('sid') ?? "",
|
|
||||||
"sni_list": []
|
|
||||||
},
|
|
||||||
"tun": {
|
"tun": {
|
||||||
"enable": true,
|
"enable": true,
|
||||||
"stack": tunStack
|
"stack": tunStack
|
||||||
|
|
@ -215,14 +207,6 @@ class _HomeScreenState extends State<HomeScreen> with TickerProviderStateMixin {
|
||||||
"enabled": muxEnabled,
|
"enabled": muxEnabled,
|
||||||
"sessions": int.tryParse(muxSessions) ?? 2,
|
"sessions": int.tryParse(muxSessions) ?? 2,
|
||||||
},
|
},
|
||||||
"reality": {
|
|
||||||
"enabled": widget.prefs.getBool('reality_enabled') ?? false,
|
|
||||||
"dest": "",
|
|
||||||
"private_key": "",
|
|
||||||
"pbk": widget.prefs.getString('pbk') ?? "",
|
|
||||||
"sid": widget.prefs.getString('sid') ?? "",
|
|
||||||
"sni_list": []
|
|
||||||
},
|
|
||||||
"tun": {
|
"tun": {
|
||||||
"enable": true,
|
"enable": true,
|
||||||
"stack": tunStack
|
"stack": tunStack
|
||||||
|
|
@ -336,7 +320,6 @@ class _HomeScreenState extends State<HomeScreen> with TickerProviderStateMixin {
|
||||||
await widget.prefs.setString('mtu', mtu.toString());
|
await widget.prefs.setString('mtu', mtu.toString());
|
||||||
await widget.prefs.setString('transport_mode', mode['t'] as String);
|
await widget.prefs.setString('transport_mode', mode['t'] as String);
|
||||||
await widget.prefs.setBool('wss', mode['w'] as bool);
|
await widget.prefs.setBool('wss', mode['w'] as bool);
|
||||||
await widget.prefs.setBool('reality_enabled', mode['r'] as bool);
|
|
||||||
_updateLatestConfigJson();
|
_updateLatestConfigJson();
|
||||||
|
|
||||||
setState(() {
|
setState(() {
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,6 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||||
bool _obscureKey = true;
|
bool _obscureKey = true;
|
||||||
bool _debugMode = false;
|
bool _debugMode = false;
|
||||||
bool _wss = false;
|
bool _wss = false;
|
||||||
bool _realityEnabled = false;
|
|
||||||
String _transportMode = 'udp'; // 'udp' | 'uot'
|
String _transportMode = 'udp'; // 'udp' | 'uot'
|
||||||
String _tunStack = 'ostp'; // 'system' | 'ostp'
|
String _tunStack = 'ostp'; // 'system' | 'ostp'
|
||||||
bool _muxEnabled = false;
|
bool _muxEnabled = false;
|
||||||
|
|
@ -58,7 +57,6 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||||
_pbkCtrl = TextEditingController(text: widget.prefs.getString('pbk') ?? '');
|
_pbkCtrl = TextEditingController(text: widget.prefs.getString('pbk') ?? '');
|
||||||
_sidCtrl = TextEditingController(text: widget.prefs.getString('sid') ?? '');
|
_sidCtrl = TextEditingController(text: widget.prefs.getString('sid') ?? '');
|
||||||
_wss = widget.prefs.getBool('wss') ?? false;
|
_wss = widget.prefs.getBool('wss') ?? false;
|
||||||
_realityEnabled = widget.prefs.getBool('reality_enabled') ?? false;
|
|
||||||
_transportMode = widget.prefs.getString('transport_mode') ?? 'udp';
|
_transportMode = widget.prefs.getString('transport_mode') ?? 'udp';
|
||||||
_tunStack = widget.prefs.getString('tun_stack') ?? 'ostp';
|
_tunStack = widget.prefs.getString('tun_stack') ?? 'ostp';
|
||||||
_debugMode = widget.prefs.getBool('debug_mode') ?? false;
|
_debugMode = widget.prefs.getBool('debug_mode') ?? false;
|
||||||
|
|
@ -96,7 +94,6 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||||
widget.prefs.setString('ex_processes', _processesCtrl.text.trim());
|
widget.prefs.setString('ex_processes', _processesCtrl.text.trim());
|
||||||
widget.prefs.setBool('debug_mode', _debugMode);
|
widget.prefs.setBool('debug_mode', _debugMode);
|
||||||
widget.prefs.setBool('wss', _wss);
|
widget.prefs.setBool('wss', _wss);
|
||||||
widget.prefs.setBool('reality_enabled', _realityEnabled);
|
|
||||||
widget.prefs.setString('transport_mode', _transportMode);
|
widget.prefs.setString('transport_mode', _transportMode);
|
||||||
widget.prefs.setString('tun_stack', _tunStack);
|
widget.prefs.setString('tun_stack', _tunStack);
|
||||||
widget.prefs.setString('stealth_sni', _stealthSniCtrl.text.trim());
|
widget.prefs.setString('stealth_sni', _stealthSniCtrl.text.trim());
|
||||||
|
|
@ -234,7 +231,6 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||||
_pbkCtrl.text = uri.queryParameters['pbk'] ?? '';
|
_pbkCtrl.text = uri.queryParameters['pbk'] ?? '';
|
||||||
_sidCtrl.text = uri.queryParameters['sid'] ?? '';
|
_sidCtrl.text = uri.queryParameters['sid'] ?? '';
|
||||||
_wss = uri.queryParameters['wss'] == 'true';
|
_wss = uri.queryParameters['wss'] == 'true';
|
||||||
_realityEnabled = uri.queryParameters['reality'] == 'true';
|
|
||||||
final type = uri.queryParameters['type'] ?? 'udp';
|
final type = uri.queryParameters['type'] ?? 'udp';
|
||||||
_transportMode = type == 'tcp' || type == 'http' ? 'uot' : 'udp';
|
_transportMode = type == 'tcp' || type == 'http' ? 'uot' : 'udp';
|
||||||
_importCtrl.clear();
|
_importCtrl.clear();
|
||||||
|
|
@ -400,8 +396,6 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
const SizedBox(height: 16),
|
const SizedBox(height: 16),
|
||||||
_buildTextField('Reality PublicKey (pbk)', _pbkCtrl, hint: 'Публичный ключ сервера'),
|
|
||||||
_buildTextField('Reality ShortId (sid)', _sidCtrl, hint: 'Опционально (необязательно)'),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -31,8 +31,7 @@ const translations = {
|
||||||
label_mtu: 'MTU Size',
|
label_mtu: 'MTU Size',
|
||||||
label_transport: 'Transport Protocol',
|
label_transport: 'Transport Protocol',
|
||||||
label_sni: 'Stealth SNI (Fake Host)',
|
label_sni: 'Stealth SNI (Fake Host)',
|
||||||
label_pbk: 'Reality PublicKey (pbk)',
|
|
||||||
label_sid: 'Reality ShortId (sid)',
|
|
||||||
label_mtu: 'MTU Size',
|
label_mtu: 'MTU Size',
|
||||||
label_mux: 'Multiplexing (Mux)',
|
label_mux: 'Multiplexing (Mux)',
|
||||||
mux_hint: 'Run multiple streams over one connection',
|
mux_hint: 'Run multiple streams over one connection',
|
||||||
|
|
@ -92,8 +91,7 @@ const translations = {
|
||||||
label_mtu: 'Размер MTU',
|
label_mtu: 'Размер MTU',
|
||||||
label_transport: 'Транспортный протокол',
|
label_transport: 'Транспортный протокол',
|
||||||
label_sni: 'Маскировочный SNI',
|
label_sni: 'Маскировочный SNI',
|
||||||
label_pbk: 'Reality PublicKey (pbk)',
|
|
||||||
label_sid: 'Reality ShortId (sid)',
|
|
||||||
label_mtu: 'Размер MTU',
|
label_mtu: 'Размер MTU',
|
||||||
label_mux: 'Мультиплексирование (Mux)',
|
label_mux: 'Мультиплексирование (Mux)',
|
||||||
mux_hint: 'Несколько потоков через одно соединение',
|
mux_hint: 'Несколько потоков через одно соединение',
|
||||||
|
|
|
||||||
|
|
@ -220,13 +220,6 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="field-group">
|
<div class="field-group">
|
||||||
<label class="field-label" for="in-pbk" data-i18n="label_pbk">Reality PublicKey (pbk)</label>
|
|
||||||
<input id="in-pbk" class="field-input" type="text" placeholder="Leave empty to disable Reality" spellcheck="false" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="field-group">
|
|
||||||
<label class="field-label" for="in-sid" data-i18n="label_sid">Reality ShortId (sid)</label>
|
|
||||||
<input id="in-sid" class="field-input" type="text" placeholder="Optional" spellcheck="false" />
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="field-group">
|
<div class="field-group">
|
||||||
|
|
|
||||||
|
|
@ -284,8 +284,7 @@ async function loadConfigIntoForm() {
|
||||||
inTransport.value = c.transport?.mode || 'udp';
|
inTransport.value = c.transport?.mode || 'udp';
|
||||||
inSni.value = c.transport?.stealth_sni || '';
|
inSni.value = c.transport?.stealth_sni || '';
|
||||||
inWss.checked = !!c.transport?.wss;
|
inWss.checked = !!c.transport?.wss;
|
||||||
inPbk.value = c.reality?.pbk || '';
|
|
||||||
inSid.value = c.reality?.sid || '';
|
|
||||||
inMtu.value = c.mtu || '';
|
inMtu.value = c.mtu || '';
|
||||||
inTun.checked = !!c.tun?.enable;
|
inTun.checked = !!c.tun?.enable;
|
||||||
if (inKillSwitch) inKillSwitch.checked = !!c.tun?.kill_switch;
|
if (inKillSwitch) inKillSwitch.checked = !!c.tun?.kill_switch;
|
||||||
|
|
@ -347,20 +346,6 @@ async function handleSave(silent = false) {
|
||||||
rawConfig.transport.stealth_sni = inSni.value.trim() || undefined;
|
rawConfig.transport.stealth_sni = inSni.value.trim() || undefined;
|
||||||
rawConfig.transport.wss = inWss.checked;
|
rawConfig.transport.wss = inWss.checked;
|
||||||
|
|
||||||
const pbk = inPbk.value.trim();
|
|
||||||
if (pbk) {
|
|
||||||
rawConfig.reality = {
|
|
||||||
enabled: true,
|
|
||||||
dest: '',
|
|
||||||
private_key: '',
|
|
||||||
pbk: pbk,
|
|
||||||
sid: inSid.value.trim(),
|
|
||||||
sni_list: []
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
delete rawConfig.reality;
|
|
||||||
}
|
|
||||||
|
|
||||||
const mtuStr = inMtu.value.trim();
|
const mtuStr = inMtu.value.trim();
|
||||||
if (mtuStr) rawConfig.mtu = parseInt(mtuStr, 10);
|
if (mtuStr) rawConfig.mtu = parseInt(mtuStr, 10);
|
||||||
else delete rawConfig.mtu;
|
else delete rawConfig.mtu;
|
||||||
|
|
@ -508,12 +493,7 @@ window.addEventListener('DOMContentLoaded', async () => {
|
||||||
rawConfig.transport.mode = mode.t;
|
rawConfig.transport.mode = mode.t;
|
||||||
rawConfig.transport.wss = mode.w;
|
rawConfig.transport.wss = mode.w;
|
||||||
|
|
||||||
if (mode.r) {
|
|
||||||
rawConfig.reality = rawConfig.reality || {};
|
|
||||||
rawConfig.reality.enabled = true;
|
|
||||||
} else if (rawConfig.reality) {
|
|
||||||
rawConfig.reality.enabled = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
await invoke('save_config', { jsonContent: JSON.stringify(rawConfig, null, 2) });
|
await invoke('save_config', { jsonContent: JSON.stringify(rawConfig, null, 2) });
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue