Skip to content

Commit 113f0f6

Browse files
Mygodzonyitoo
authored andcommitted
Allow passing in an optional plugin_arg
1 parent 988e69d commit 113f0f6

File tree

6 files changed

+14
-0
lines changed

6 files changed

+14
-0
lines changed

src/bin/local.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ fn main() {
205205
let plugin = PluginConfig {
206206
plugin: p.to_owned(),
207207
plugin_opt: matches.value_of("PLUGIN_OPT").map(ToOwned::to_owned),
208+
plugin_arg: None,
208209
};
209210

210211
sc.set_plugin(plugin);

src/bin/server.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ fn main() {
111111
let plugin = PluginConfig {
112112
plugin: p.to_owned(),
113113
plugin_opt: matches.value_of("PLUGIN_OPT").map(ToOwned::to_owned),
114+
plugin_arg: None,
114115
};
115116

116117
sc.set_plugin(plugin);

src/config.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ struct SSConfig {
9898
#[serde(skip_serializing_if = "Option::is_none")]
9999
plugin_opts: Option<String>,
100100
#[serde(skip_serializing_if = "Option::is_none")]
101+
plugin_arg: Option<String>,
102+
#[serde(skip_serializing_if = "Option::is_none")]
101103
timeout: Option<u64>,
102104
#[serde(skip_serializing_if = "Option::is_none")]
103105
udp_timeout: Option<u64>,
@@ -422,6 +424,7 @@ impl ServerConfig {
422424
plugin = Some(PluginConfig {
423425
plugin: p.to_owned(),
424426
plugin_opt: vsp.next().map(ToOwned::to_owned),
427+
plugin_arg: None,
425428
})
426429
}
427430
}
@@ -1210,6 +1213,7 @@ impl Config {
12101213
Some(plugin) => Some(PluginConfig {
12111214
plugin,
12121215
plugin_opt: config.plugin_opts,
1216+
plugin_arg: config.plugin_arg,
12131217
}),
12141218
};
12151219

@@ -1257,6 +1261,7 @@ impl Config {
12571261
Some(p) => Some(PluginConfig {
12581262
plugin: p,
12591263
plugin_opt: svr.plugin_opts,
1264+
plugin_arg: None,
12601265
}),
12611266
};
12621267

@@ -1491,6 +1496,7 @@ impl fmt::Display for Config {
14911496
jconf.password = Some(svr.password().to_string());
14921497
jconf.plugin = svr.plugin().map(|p| p.plugin.to_string());
14931498
jconf.plugin_opts = svr.plugin().and_then(|p| p.plugin_opt.clone());
1499+
jconf.plugin_arg = svr.plugin().and_then(|p| p.plugin_arg.clone());
14941500
jconf.timeout = svr.timeout().map(|t| t.as_secs());
14951501
}
14961502
_ => {

src/plugin/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ mod ss_plugin;
3535
pub struct PluginConfig {
3636
pub plugin: String,
3737
pub plugin_opt: Option<String>,
38+
pub plugin_arg: Option<String>,
3839
}
3940

4041
/// Mode of Plugin

src/plugin/ss_plugin.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,9 @@ pub fn plugin_cmd(plugin: &PluginConfig, remote: &ServerAddr, local: &SocketAddr
2525
cmd.env("SS_PLUGIN_OPTIONS", opt);
2626
}
2727

28+
if let Some(ref arg) = plugin.plugin_arg {
29+
cmd.arg(arg);
30+
}
31+
2832
cmd
2933
}

src/relay/manager.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,7 @@ impl ManagerService {
445445
Some(pp) => Some(PluginConfig {
446446
plugin: pp,
447447
plugin_opt: p.plugin_opt,
448+
plugin_arg: None,
448449
}),
449450
None => None,
450451
},

0 commit comments

Comments
 (0)