Remove Reality/XTLS UI from ostp-gui, ostp-flutter, ostp-control

This commit is contained in:
ospab 2026-06-13 01:57:20 +03:00
parent 8749f12026
commit 76de3c6422
6 changed files with 4 additions and 76 deletions

View File

@ -40,8 +40,6 @@ export const translations = {
db_core_version: 'Версия ядра',
db_listen_addr: 'Порт прослушивания',
db_api_bind: 'Адрес API',
db_reality_status: 'Статус Reality',
db_reality_dest: 'Домен маскировки',
db_outbound_proxy: 'Исходящий прокси',
db_fallback_status: 'TCP Fallback',
db_fallback_target: 'Сервер Fallback',
@ -119,11 +117,7 @@ export const translations = {
st_ui_fb_enable: 'Перенаправлять неопознанный TCP трафик на веб-сервер',
st_ui_fb_port: 'Входной TCP-порт (listen)',
st_ui_fb_target: 'Целевой веб-сервер (target)',
st_ui_rl_title: 'Параметры маскировки Reality (XTLS)',
st_ui_rl_enable: 'Активировать обфускацию Reality',
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_sni: 'Список SNI доменов (через запятую)',
st_ui_ob_title: 'Исходящий трафик (Outbound Routing)',
@ -136,14 +130,10 @@ export const translations = {
st_ui_ob_action_proxy: 'Через прокси (proxy)',
tl_title: 'Инструменты',
tl_subtitle: 'Генератор ключей Reality, резервное копирование и диагностика',
tl_keygen_title: 'Генератор ключей Reality (X25519)',
tl_keygen_desc: 'Для маскировки Reality требуется пара ключей X25519. Сгенерируйте их здесь или выполните команду `ostp --generate-key` на сервере.',
tl_keygen_btn: 'Сгенерировать ключи',
tl_keygen_pub: 'Публичный ключ (pbk)',
tl_keygen_pri: 'Приватный ключ (private_key)',
tl_keygen_sid: 'Предлагаемый SID сессии (sid)',
tl_keygen_copy: 'Копировать и применить в Reality',
tl_keygen_applied: 'Ключи сгенерированы! Скопируйте их и вставьте во вкладку Настроек.',
tl_backup_title: 'Резервное копирование',
tl_backup_desc: 'Экспортируйте текущую конфигурацию сервера в файл или восстановите настройки из файла бэкапа.',
@ -234,8 +224,6 @@ export const translations = {
db_core_version: 'Core Version',
db_listen_addr: 'Listen Port',
db_api_bind: 'API Address',
db_reality_status: 'Reality Obfuscation',
db_reality_dest: 'Masquerade Destination',
db_outbound_proxy: 'Outbound Proxy',
db_fallback_status: 'TCP Fallback',
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_port: 'Input TCP port (listen)',
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_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_sni: 'SNI domains list (comma separated)',
st_ui_ob_title: 'Outbound Routing',
@ -330,14 +314,10 @@ export const translations = {
st_ui_ob_action_proxy: 'Proxy (proxy)',
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_pub: 'Public Key (pbk)',
tl_keygen_pri: 'Private Key (private_key)',
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_backup_title: 'Configuration Backups',
tl_backup_desc: 'Export current server configuration to a file, or restore it by uploading a backup file.',

View File

@ -119,14 +119,6 @@ class _HomeScreenState extends State<HomeScreen> with TickerProviderStateMixin {
"enabled": muxEnabled,
"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": {
"enable": true,
"stack": tunStack
@ -215,14 +207,6 @@ class _HomeScreenState extends State<HomeScreen> with TickerProviderStateMixin {
"enabled": muxEnabled,
"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": {
"enable": true,
"stack": tunStack
@ -336,7 +320,6 @@ class _HomeScreenState extends State<HomeScreen> with TickerProviderStateMixin {
await widget.prefs.setString('mtu', mtu.toString());
await widget.prefs.setString('transport_mode', mode['t'] as String);
await widget.prefs.setBool('wss', mode['w'] as bool);
await widget.prefs.setBool('reality_enabled', mode['r'] as bool);
_updateLatestConfigJson();
setState(() {

View File

@ -35,7 +35,6 @@ class _SettingsScreenState extends State<SettingsScreen> {
bool _obscureKey = true;
bool _debugMode = false;
bool _wss = false;
bool _realityEnabled = false;
String _transportMode = 'udp'; // 'udp' | 'uot'
String _tunStack = 'ostp'; // 'system' | 'ostp'
bool _muxEnabled = false;
@ -58,7 +57,6 @@ class _SettingsScreenState extends State<SettingsScreen> {
_pbkCtrl = TextEditingController(text: widget.prefs.getString('pbk') ?? '');
_sidCtrl = TextEditingController(text: widget.prefs.getString('sid') ?? '');
_wss = widget.prefs.getBool('wss') ?? false;
_realityEnabled = widget.prefs.getBool('reality_enabled') ?? false;
_transportMode = widget.prefs.getString('transport_mode') ?? 'udp';
_tunStack = widget.prefs.getString('tun_stack') ?? 'ostp';
_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.setBool('debug_mode', _debugMode);
widget.prefs.setBool('wss', _wss);
widget.prefs.setBool('reality_enabled', _realityEnabled);
widget.prefs.setString('transport_mode', _transportMode);
widget.prefs.setString('tun_stack', _tunStack);
widget.prefs.setString('stealth_sni', _stealthSniCtrl.text.trim());
@ -234,7 +231,6 @@ class _SettingsScreenState extends State<SettingsScreen> {
_pbkCtrl.text = uri.queryParameters['pbk'] ?? '';
_sidCtrl.text = uri.queryParameters['sid'] ?? '';
_wss = uri.queryParameters['wss'] == 'true';
_realityEnabled = uri.queryParameters['reality'] == 'true';
final type = uri.queryParameters['type'] ?? 'udp';
_transportMode = type == 'tcp' || type == 'http' ? 'uot' : 'udp';
_importCtrl.clear();
@ -400,8 +396,6 @@ class _SettingsScreenState extends State<SettingsScreen> {
});
}),
const SizedBox(height: 16),
_buildTextField('Reality PublicKey (pbk)', _pbkCtrl, hint: 'Публичный ключ сервера'),
_buildTextField('Reality ShortId (sid)', _sidCtrl, hint: 'Опционально (необязательно)'),
],
),
),

View File

@ -31,8 +31,7 @@ const translations = {
label_mtu: 'MTU Size',
label_transport: 'Transport Protocol',
label_sni: 'Stealth SNI (Fake Host)',
label_pbk: 'Reality PublicKey (pbk)',
label_sid: 'Reality ShortId (sid)',
label_mtu: 'MTU Size',
label_mux: 'Multiplexing (Mux)',
mux_hint: 'Run multiple streams over one connection',
@ -92,8 +91,7 @@ const translations = {
label_mtu: 'Размер MTU',
label_transport: 'Транспортный протокол',
label_sni: 'Маскировочный SNI',
label_pbk: 'Reality PublicKey (pbk)',
label_sid: 'Reality ShortId (sid)',
label_mtu: 'Размер MTU',
label_mux: 'Мультиплексирование (Mux)',
mux_hint: 'Несколько потоков через одно соединение',

View File

@ -220,13 +220,6 @@
</div>
<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 class="field-group">

View File

@ -284,8 +284,7 @@ async function loadConfigIntoForm() {
inTransport.value = c.transport?.mode || 'udp';
inSni.value = c.transport?.stealth_sni || '';
inWss.checked = !!c.transport?.wss;
inPbk.value = c.reality?.pbk || '';
inSid.value = c.reality?.sid || '';
inMtu.value = c.mtu || '';
inTun.checked = !!c.tun?.enable;
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.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();
if (mtuStr) rawConfig.mtu = parseInt(mtuStr, 10);
else delete rawConfig.mtu;
@ -508,12 +493,7 @@ window.addEventListener('DOMContentLoaded', async () => {
rawConfig.transport.mode = mode.t;
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) });