refact: custom client proxy (#8093)
Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
parent
986b9fb0e0
commit
d8c9250aab
@ -2170,6 +2170,11 @@ void changeSocks5Proxy() async {
|
|||||||
var pwdController = TextEditingController(text: password);
|
var pwdController = TextEditingController(text: password);
|
||||||
RxBool obscure = true.obs;
|
RxBool obscure = true.obs;
|
||||||
|
|
||||||
|
// proxy settings
|
||||||
|
// The following option is a not real key, it is just used for custom client advanced settings.
|
||||||
|
const String optionProxyUrl = "proxy-url";
|
||||||
|
final isOptFixed = isOptionFixed(optionProxyUrl);
|
||||||
|
|
||||||
var isInProgress = false;
|
var isInProgress = false;
|
||||||
gFFI.dialogManager.show((setState, close, context) {
|
gFFI.dialogManager.show((setState, close, context) {
|
||||||
submit() async {
|
submit() async {
|
||||||
@ -2247,6 +2252,7 @@ void changeSocks5Proxy() async {
|
|||||||
),
|
),
|
||||||
controller: proxyController,
|
controller: proxyController,
|
||||||
autofocus: true,
|
autofocus: true,
|
||||||
|
enabled: !isOptFixed,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@ -2262,6 +2268,7 @@ void changeSocks5Proxy() async {
|
|||||||
Expanded(
|
Expanded(
|
||||||
child: TextField(
|
child: TextField(
|
||||||
controller: userController,
|
controller: userController,
|
||||||
|
enabled: isInProgress,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@ -2284,6 +2291,7 @@ void changeSocks5Proxy() async {
|
|||||||
? Icons.visibility_off
|
? Icons.visibility_off
|
||||||
: Icons.visibility))),
|
: Icons.visibility))),
|
||||||
controller: pwdController,
|
controller: pwdController,
|
||||||
|
enabled: !isOptFixed,
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@ -2296,7 +2304,7 @@ void changeSocks5Proxy() async {
|
|||||||
),
|
),
|
||||||
actions: [
|
actions: [
|
||||||
dialogButton('Cancel', onPressed: close, isOutline: true),
|
dialogButton('Cancel', onPressed: close, isOutline: true),
|
||||||
dialogButton('OK', onPressed: submit),
|
if (!isOptFixed) dialogButton('OK', onPressed: submit),
|
||||||
],
|
],
|
||||||
onSubmit: submit,
|
onSubmit: submit,
|
||||||
onCancel: close,
|
onCancel: close,
|
||||||
|
@ -1014,8 +1014,30 @@ impl Config {
|
|||||||
config.store();
|
config.store();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
fn get_socks_from_custom_client_advanced_settings(
|
||||||
|
settings: &HashMap<String, String>,
|
||||||
|
) -> Option<Socks5Server> {
|
||||||
|
let url = settings.get(keys::OPTION_PROXY_URL)?;
|
||||||
|
Some(Socks5Server {
|
||||||
|
proxy: url.to_owned(),
|
||||||
|
username: settings
|
||||||
|
.get(keys::OPTION_PROXY_USERNAME)
|
||||||
|
.map(|x| x.to_string())
|
||||||
|
.unwrap_or_default(),
|
||||||
|
password: settings
|
||||||
|
.get(keys::OPTION_PROXY_PASSWORD)
|
||||||
|
.map(|x| x.to_string())
|
||||||
|
.unwrap_or_default(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
pub fn get_socks() -> Option<Socks5Server> {
|
pub fn get_socks() -> Option<Socks5Server> {
|
||||||
CONFIG2.read().unwrap().socks.clone()
|
Self::get_socks_from_custom_client_advanced_settings(&OVERWRITE_SETTINGS.read().unwrap())
|
||||||
|
.or(CONFIG2.read().unwrap().socks.clone())
|
||||||
|
.or(Self::get_socks_from_custom_client_advanced_settings(
|
||||||
|
&DEFAULT_SETTINGS.read().unwrap(),
|
||||||
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
@ -1024,10 +1046,26 @@ impl Config {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_network_type() -> NetworkType {
|
pub fn get_network_type() -> NetworkType {
|
||||||
match &CONFIG2.read().unwrap().socks {
|
if OVERWRITE_SETTINGS
|
||||||
None => NetworkType::Direct,
|
.read()
|
||||||
Some(_) => NetworkType::ProxySocks,
|
.unwrap()
|
||||||
|
.get(keys::OPTION_PROXY_URL)
|
||||||
|
.is_some()
|
||||||
|
{
|
||||||
|
return NetworkType::ProxySocks;
|
||||||
}
|
}
|
||||||
|
if CONFIG2.read().unwrap().socks.is_some() {
|
||||||
|
return NetworkType::ProxySocks;
|
||||||
|
}
|
||||||
|
if DEFAULT_SETTINGS
|
||||||
|
.read()
|
||||||
|
.unwrap()
|
||||||
|
.get(keys::OPTION_PROXY_URL)
|
||||||
|
.is_some()
|
||||||
|
{
|
||||||
|
return NetworkType::ProxySocks;
|
||||||
|
}
|
||||||
|
NetworkType::Direct
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get() -> Config {
|
pub fn get() -> Config {
|
||||||
@ -2056,6 +2094,13 @@ pub mod keys {
|
|||||||
pub const OPTION_FLUTTER_PEER_CARD_UI_TYLE: &str = "peer-card-ui-type";
|
pub const OPTION_FLUTTER_PEER_CARD_UI_TYLE: &str = "peer-card-ui-type";
|
||||||
pub const OPTION_FLUTTER_CURRENT_AB_NAME: &str = "current-ab-name";
|
pub const OPTION_FLUTTER_CURRENT_AB_NAME: &str = "current-ab-name";
|
||||||
|
|
||||||
|
// proxy settings
|
||||||
|
// The following options are not real keys, they are just used for custom client advanced settings.
|
||||||
|
// The real keys are in Config2::socks.
|
||||||
|
pub const OPTION_PROXY_URL: &str = "proxy-url";
|
||||||
|
pub const OPTION_PROXY_USERNAME: &str = "proxy-username";
|
||||||
|
pub const OPTION_PROXY_PASSWORD: &str = "proxy-password";
|
||||||
|
|
||||||
// DEFAULT_DISPLAY_SETTINGS, OVERWRITE_DISPLAY_SETTINGS
|
// DEFAULT_DISPLAY_SETTINGS, OVERWRITE_DISPLAY_SETTINGS
|
||||||
pub const KEYS_DISPLAY_SETTINGS: &[&str] = &[
|
pub const KEYS_DISPLAY_SETTINGS: &[&str] = &[
|
||||||
OPTION_VIEW_ONLY,
|
OPTION_VIEW_ONLY,
|
||||||
@ -2131,6 +2176,9 @@ pub mod keys {
|
|||||||
OPTION_ALLOW_LINUX_HEADLESS,
|
OPTION_ALLOW_LINUX_HEADLESS,
|
||||||
OPTION_ENABLE_HWCODEC,
|
OPTION_ENABLE_HWCODEC,
|
||||||
OPTION_APPROVE_MODE,
|
OPTION_APPROVE_MODE,
|
||||||
|
OPTION_PROXY_URL,
|
||||||
|
OPTION_PROXY_USERNAME,
|
||||||
|
OPTION_PROXY_PASSWORD,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user