mirror of
https://github.com/tun2proxy/tun2proxy.git
synced 2025-06-07 15:17:43 +00:00
Apply daemonize for unix
This commit is contained in:
parent
e817257866
commit
607d709c03
3 changed files with 17 additions and 3 deletions
|
@ -52,6 +52,9 @@ nix = { version = "0.29", default-features = false, features = [
|
||||||
android_logger = "0.14"
|
android_logger = "0.14"
|
||||||
jni = { version = "0.21", default-features = false }
|
jni = { version = "0.21", default-features = false }
|
||||||
|
|
||||||
|
[target.'cfg(unix)'.dependencies]
|
||||||
|
daemonize = "0.5"
|
||||||
|
|
||||||
[target.'cfg(target_os = "windows")'.dependencies]
|
[target.'cfg(target_os = "windows")'.dependencies]
|
||||||
windows-service = "0.7"
|
windows-service = "0.7"
|
||||||
|
|
||||||
|
|
|
@ -100,8 +100,7 @@ pub struct Args {
|
||||||
#[arg(short, long, value_name = "level", value_enum, default_value = "info")]
|
#[arg(short, long, value_name = "level", value_enum, default_value = "info")]
|
||||||
pub verbosity: ArgVerbosity,
|
pub verbosity: ArgVerbosity,
|
||||||
|
|
||||||
/// Daemonize the process as Windows service
|
/// Daemonize for unix family or run as Windows service
|
||||||
#[cfg(target_os = "windows")]
|
|
||||||
#[arg(long)]
|
#[arg(long)]
|
||||||
pub daemonize: bool,
|
pub daemonize: bool,
|
||||||
}
|
}
|
||||||
|
@ -144,7 +143,6 @@ impl Default for Args {
|
||||||
udp_timeout: 10,
|
udp_timeout: 10,
|
||||||
verbosity: ArgVerbosity::Info,
|
verbosity: ArgVerbosity::Info,
|
||||||
virtual_dns_pool: IpCidr::from_str("198.18.0.0/15").unwrap(),
|
virtual_dns_pool: IpCidr::from_str("198.18.0.0/15").unwrap(),
|
||||||
#[cfg(target_os = "windows")]
|
|
||||||
daemonize: false,
|
daemonize: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,19 @@ async fn main() -> Result<(), BoxError> {
|
||||||
dotenvy::dotenv().ok();
|
dotenvy::dotenv().ok();
|
||||||
let args = Args::parse_args();
|
let args = Args::parse_args();
|
||||||
|
|
||||||
|
#[cfg(unix)]
|
||||||
|
if args.daemonize {
|
||||||
|
let stdout = std::fs::File::create("/tmp/tun2proxy.out")?;
|
||||||
|
let stderr = std::fs::File::create("/tmp/tun2proxy.err")?;
|
||||||
|
let daemonize = daemonize::Daemonize::new()
|
||||||
|
.working_directory("/tmp")
|
||||||
|
.umask(0o777)
|
||||||
|
.stdout(stdout)
|
||||||
|
.stderr(stderr)
|
||||||
|
.privileged_action(|| "Executed before drop privileges");
|
||||||
|
let _ = daemonize.start()?;
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(target_os = "windows")]
|
#[cfg(target_os = "windows")]
|
||||||
if args.daemonize {
|
if args.daemonize {
|
||||||
tun2proxy::win_svc::start_service()?;
|
tun2proxy::win_svc::start_service()?;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue