Browse Source

update deps

pull/246/head
ssrlive 3 months ago
parent
commit
5a8f2f8f29
  1. 7
      Cargo.toml
  2. 37
      src/android.rs

7
Cargo.toml

@ -45,7 +45,8 @@ percent-encoding = "2"
serde = { version = "1", features = ["derive"] }
shlex = "1.3.0"
socks5-impl = { version = "0.8", default-features = false, features = [
"tokio", "serde"
"tokio",
"serde",
] }
thiserror = "2"
tokio = { version = "1", features = ["full"] }
@ -58,7 +59,7 @@ url = "2"
[target.'cfg(target_os="android")'.dependencies]
android_logger = "0.15"
jni = { version = "0.21", default-features = false }
jni = { version = "0.22.3", default-features = false }
[target.'cfg(target_os="linux")'.dependencies]
bincode = "2"
@ -68,7 +69,7 @@ windows-service = "0.8"
[target.'cfg(unix)'.dependencies]
daemonize = "0.5"
nix = { version = "0.30", default-features = false, features = [
nix = { version = "0.31", default-features = false, features = [
"fs",
"socket",
"uio",

37
src/android.rs

@ -6,7 +6,7 @@ use crate::{
error::{Error, Result},
};
use jni::{
JNIEnv,
Env, EnvUnowned,
objects::{JClass, JString},
sys::{jboolean, jchar, jint},
};
@ -23,9 +23,9 @@ use jni::{
/// - verbosity: the verbosity level, see ArgVerbosity enum
#[unsafe(no_mangle)]
pub unsafe extern "C" fn Java_com_github_shadowsocks_bg_Tun2proxy_run(
mut env: JNIEnv,
_clazz: JClass,
proxy_url: JString,
mut env: EnvUnowned<'_>,
_clazz: JClass<'_>,
proxy_url: JString<'_>,
tun_fd: jint,
close_fd_on_drop: jboolean,
tun_mtu: jchar,
@ -42,27 +42,30 @@ pub unsafe extern "C" fn Java_com_github_shadowsocks_bg_Tun2proxy_run(
.with_max_level(log::LevelFilter::Trace)
.with_filter(filter),
);
let proxy_url = get_java_string(&mut env, &proxy_url).unwrap();
let proxy = ArgProxy::try_from(proxy_url.as_str()).unwrap();
let close_fd_on_drop = close_fd_on_drop != 0;
env.with_env(|env: &mut Env| -> Result<jint> {
let proxy_url = get_java_string(env, &proxy_url).unwrap();
let proxy = ArgProxy::try_from(proxy_url.as_str()).unwrap();
let mut args = Args::default();
args.proxy(proxy)
.tun_fd(Some(tun_fd))
.close_fd_on_drop(close_fd_on_drop)
.dns(dns)
.verbosity(verbosity);
crate::general_api::general_run_for_api(args, tun_mtu, false)
let mut args = Args::default();
args.proxy(proxy)
.tun_fd(Some(tun_fd))
.close_fd_on_drop(close_fd_on_drop)
.dns(dns)
.verbosity(verbosity);
let v = crate::general_api::general_run_for_api(args, tun_mtu, false);
Ok::<jint, Error>(v)
})
.resolve::<jni::errors::LogErrorAndDefault>()
}
/// # Safety
///
/// Shutdown tun2proxy
#[unsafe(no_mangle)]
pub unsafe extern "C" fn Java_com_github_shadowsocks_bg_Tun2proxy_stop(_env: JNIEnv, _: JClass) -> jint {
pub unsafe extern "C" fn Java_com_github_shadowsocks_bg_Tun2proxy_stop(_env: EnvUnowned<'_>, _: JClass<'_>) -> jint {
crate::general_api::tun2proxy_stop_internal()
}
fn get_java_string(env: &mut JNIEnv, string: &JString) -> Result<String, Error> {
Ok(env.get_string(string)?.into())
fn get_java_string(env: &Env, string: &JString) -> Result<String, Error> {
string.try_to_string(env).map_err(|e| e.into())
}

Loading…
Cancel
Save