Add mux options

This commit is contained in:
problematicconsumer
2024-01-19 22:28:27 +03:30
parent 1517d45ef4
commit 96cf192969
7 changed files with 73 additions and 6 deletions

View File

@@ -201,6 +201,7 @@
"route": "Route Options", "route": "Route Options",
"dns": "DNS Options", "dns": "DNS Options",
"inbound": "Inbound Options", "inbound": "Inbound Options",
"mux": "Multiplexer",
"outbound": "Outbound Options", "outbound": "Outbound Options",
"tlsTricks": "TLS Tricks", "tlsTricks": "TLS Tricks",
"misc": "Misc Options" "misc": "Misc Options"
@@ -239,7 +240,10 @@
"tlsFragmentSleep": "TLS Fragment Sleep", "tlsFragmentSleep": "TLS Fragment Sleep",
"enableTlsMixedSniCase": "Enable TLS Mixed SNI Case", "enableTlsMixedSniCase": "Enable TLS Mixed SNI Case",
"enableTlsPadding": "Enable TLS Padding", "enableTlsPadding": "Enable TLS Padding",
"tlsPaddingSize": "TLS Padding" "tlsPaddingSize": "TLS Padding",
"enableMux": "Enable Mux",
"muxProtocol": "Mux Protocol",
"muxMaxStreams": "Max Concurrent Streams"
}, },
"geoAssets": { "geoAssets": {
"pageTitle": "Routing Assets", "pageTitle": "Routing Assets",

View File

@@ -208,6 +208,7 @@
"route": "Opciones de ruta", "route": "Opciones de ruta",
"dns": "Opciones de DNS", "dns": "Opciones de DNS",
"inbound": "Opciones entrantes", "inbound": "Opciones entrantes",
"mux": "Multiplexer",
"outbound": "Opciones de salida", "outbound": "Opciones de salida",
"tlsTricks": "Trucos TLS", "tlsTricks": "Trucos TLS",
"misc": "Opciones varias" "misc": "Opciones varias"
@@ -233,7 +234,10 @@
"tlsFragmentSleep": "Sueño de fragmento TLS", "tlsFragmentSleep": "Sueño de fragmento TLS",
"enableTlsMixedSniCase": "Habilitar caso SNI mixto TLS", "enableTlsMixedSniCase": "Habilitar caso SNI mixto TLS",
"enableTlsPadding": "Habilitar el relleno TLS", "enableTlsPadding": "Habilitar el relleno TLS",
"tlsPaddingSize": "Relleno TLS" "tlsPaddingSize": "Relleno TLS",
"enableMux": "Enable Mux",
"muxProtocol": "Mux Protocol",
"muxMaxStreams": "Max Concurrent Streams"
}, },
"geoAssets": { "geoAssets": {
"successMsg": "Activo actualizado correctamente", "successMsg": "Activo actualizado correctamente",

View File

@@ -201,6 +201,7 @@
"route": "تنظیمات مسیریاب", "route": "تنظیمات مسیریاب",
"dns": "تنظیمات DNS", "dns": "تنظیمات DNS",
"inbound": "تنظیمات ورودی", "inbound": "تنظیمات ورودی",
"mux": "Multiplexer",
"outbound": "Outbound Options", "outbound": "Outbound Options",
"tlsTricks": "TLS Tricks", "tlsTricks": "TLS Tricks",
"misc": "تنظیمات متفرقه" "misc": "تنظیمات متفرقه"
@@ -239,7 +240,10 @@
"tlsFragmentSleep": "TLS Fragment Sleep", "tlsFragmentSleep": "TLS Fragment Sleep",
"enableTlsMixedSniCase": "Enable TLS Mixed SNI Case", "enableTlsMixedSniCase": "Enable TLS Mixed SNI Case",
"enableTlsPadding": "Enable TLS Padding", "enableTlsPadding": "Enable TLS Padding",
"tlsPaddingSize": "TLS Padding" "tlsPaddingSize": "TLS Padding",
"enableMux": "Enable Mux",
"muxProtocol": "Mux Protocol",
"muxMaxStreams": "Max Concurrent Streams"
}, },
"geoAssets": { "geoAssets": {
"pageTitle": "فایل‌های مسیریابی", "pageTitle": "فایل‌های مسیریابی",

View File

@@ -201,6 +201,7 @@
"route": "Варианты маршрутизации", "route": "Варианты маршрутизации",
"dns": "Параметры DNS", "dns": "Параметры DNS",
"inbound": "Входящие параметры", "inbound": "Входящие параметры",
"mux": "Multiplexer",
"outbound": "Outbound Options", "outbound": "Outbound Options",
"tlsTricks": "TLS Tricks", "tlsTricks": "TLS Tricks",
"misc": "Разные параметры" "misc": "Разные параметры"
@@ -239,7 +240,10 @@
"tlsFragmentSleep": "TLS Fragment Sleep", "tlsFragmentSleep": "TLS Fragment Sleep",
"enableTlsMixedSniCase": "Enable TLS Mixed SNI Case", "enableTlsMixedSniCase": "Enable TLS Mixed SNI Case",
"enableTlsPadding": "Enable TLS Padding", "enableTlsPadding": "Enable TLS Padding",
"tlsPaddingSize": "TLS Padding" "tlsPaddingSize": "TLS Padding",
"enableMux": "Enable Mux",
"muxProtocol": "Mux Protocol",
"muxMaxStreams": "Max Concurrent Streams"
}, },
"geoAssets": { "geoAssets": {
"pageTitle": "Активы маршрутизации", "pageTitle": "Активы маршрутизации",

View File

@@ -201,6 +201,7 @@
"route": "Rota Seçenekleri", "route": "Rota Seçenekleri",
"dns": "DNS Seçenekleri", "dns": "DNS Seçenekleri",
"inbound": "Gelen Seçenekler", "inbound": "Gelen Seçenekler",
"mux": "Multiplexer",
"outbound": "Outbound Options", "outbound": "Outbound Options",
"tlsTricks": "TLS Tricks", "tlsTricks": "TLS Tricks",
"misc": "Çeşitli Seçenekler" "misc": "Çeşitli Seçenekler"
@@ -239,7 +240,10 @@
"tlsFragmentSleep": "TLS Fragment Sleep", "tlsFragmentSleep": "TLS Fragment Sleep",
"enableTlsMixedSniCase": "Enable TLS Mixed SNI Case", "enableTlsMixedSniCase": "Enable TLS Mixed SNI Case",
"enableTlsPadding": "Enable TLS Padding", "enableTlsPadding": "Enable TLS Padding",
"tlsPaddingSize": "TLS Padding" "tlsPaddingSize": "TLS Padding",
"enableMux": "Enable Mux",
"muxProtocol": "Mux Protocol",
"muxMaxStreams": "Max Concurrent Streams"
}, },
"geoAssets": { "geoAssets": {
"pageTitle": "Varlıkları Yönlendirme", "pageTitle": "Varlıkları Yönlendirme",

View File

@@ -201,6 +201,7 @@
"route": "路由选项", "route": "路由选项",
"dns": "DNS 选项", "dns": "DNS 选项",
"inbound": "入站选项", "inbound": "入站选项",
"mux": "Multiplexer",
"outbound": "出站选项", "outbound": "出站选项",
"tlsTricks": "TLS Tricks", "tlsTricks": "TLS Tricks",
"misc": "其它选项" "misc": "其它选项"
@@ -239,7 +240,10 @@
"tlsFragmentSleep": "TLS 分段休眠", "tlsFragmentSleep": "TLS 分段休眠",
"enableTlsMixedSniCase": "启用 TLS 混合 SNI 情形", "enableTlsMixedSniCase": "启用 TLS 混合 SNI 情形",
"enableTlsPadding": "启用 TLS 填充", "enableTlsPadding": "启用 TLS 填充",
"tlsPaddingSize": "TLS 填充" "tlsPaddingSize": "TLS 填充",
"enableMux": "Enable Mux",
"muxProtocol": "Mux Protocol",
"muxMaxStreams": "Max Concurrent Streams"
}, },
"geoAssets": { "geoAssets": {
"pageTitle": "路由资源文件", "pageTitle": "路由资源文件",

View File

@@ -182,6 +182,49 @@ class ConfigOptionsPage extends HookConsumerWidget {
), ),
), ),
const SettingsDivider(), const SettingsDivider(),
SettingsSection(experimental(t.settings.config.section.mux)),
SwitchListTile(
title: Text(t.settings.config.enableMux),
value: options.enableMux,
onChanged: (value) => changeOption(
ConfigOptionPatch(enableMux: value),
),
),
ListTile(
title: Text(t.settings.config.muxProtocol),
subtitle: Text(options.muxProtocol.name),
onTap: () async {
final pickedProtocol = await SettingsPickerDialog(
title: t.settings.config.muxProtocol,
selected: options.muxProtocol,
options: MuxProtocol.values,
getTitle: (e) => e.name,
resetValue: defaultOptions.muxProtocol,
).show(context);
if (pickedProtocol == null) return;
await changeOption(
ConfigOptionPatch(muxProtocol: pickedProtocol),
);
},
),
ListTile(
title: Text(t.settings.config.muxMaxStreams),
subtitle: Text(options.muxMaxStreams.toString()),
onTap: () async {
final maxStreams = await SettingsInputDialog(
title: t.settings.config.muxMaxStreams,
initialValue: options.muxMaxStreams,
resetValue: defaultOptions.muxMaxStreams,
mapTo: int.tryParse,
digitsOnly: true,
).show(context);
if (maxStreams == null || maxStreams < 1) return;
await changeOption(
ConfigOptionPatch(muxMaxStreams: maxStreams),
);
},
),
const SettingsDivider(),
SettingsSection(t.settings.config.section.inbound), SettingsSection(t.settings.config.section.inbound),
ListTile( ListTile(
title: Text(t.settings.config.serviceMode), title: Text(t.settings.config.serviceMode),