mirror of
https://github.com/tun2proxy/tun2proxy.git
synced 2025-04-19 13:29:09 +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"
|
||||
jni = { version = "0.21", default-features = false }
|
||||
|
||||
[target.'cfg(unix)'.dependencies]
|
||||
daemonize = "0.5"
|
||||
|
||||
[target.'cfg(target_os = "windows")'.dependencies]
|
||||
windows-service = "0.7"
|
||||
|
||||
|
|
|
@ -100,8 +100,7 @@ pub struct Args {
|
|||
#[arg(short, long, value_name = "level", value_enum, default_value = "info")]
|
||||
pub verbosity: ArgVerbosity,
|
||||
|
||||
/// Daemonize the process as Windows service
|
||||
#[cfg(target_os = "windows")]
|
||||
/// Daemonize for unix family or run as Windows service
|
||||
#[arg(long)]
|
||||
pub daemonize: bool,
|
||||
}
|
||||
|
@ -144,7 +143,6 @@ impl Default for Args {
|
|||
udp_timeout: 10,
|
||||
verbosity: ArgVerbosity::Info,
|
||||
virtual_dns_pool: IpCidr::from_str("198.18.0.0/15").unwrap(),
|
||||
#[cfg(target_os = "windows")]
|
||||
daemonize: false,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,19 @@ async fn main() -> Result<(), BoxError> {
|
|||
dotenvy::dotenv().ok();
|
||||
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")]
|
||||
if args.daemonize {
|
||||
tun2proxy::win_svc::start_service()?;
|
||||
|
|
Loading…
Add table
Reference in a new issue