diff options
Diffstat (limited to 'cli/ops/net.rs')
-rw-r--r-- | cli/ops/net.rs | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/cli/ops/net.rs b/cli/ops/net.rs index 44229f177..4e35f2247 100644 --- a/cli/ops/net.rs +++ b/cli/ops/net.rs @@ -2,6 +2,7 @@ use crate::ops::io::StreamResource; use crate::ops::io::StreamResourceHolder; +use crate::permissions::Permissions; use crate::resolve_addr::resolve_addr; use deno_core::error::bad_resource; use deno_core::error::bad_resource_id; @@ -189,7 +190,6 @@ async fn op_datagram_send( ) -> Result<Value, AnyError> { assert_eq!(zero_copy.len(), 1, "Invalid number of arguments"); let zero_copy = zero_copy[0].clone(); - let cli_state = super::cli_state2(&state); match serde_json::from_value(args)? { SendArgs { @@ -197,7 +197,11 @@ async fn op_datagram_send( transport, transport_args: ArgsEnum::Ip(args), } if transport == "udp" => { - cli_state.check_net(&args.hostname, args.port)?; + { + let s = state.borrow(); + s.borrow::<Permissions>() + .check_net(&args.hostname, args.port)?; + } let addr = resolve_addr(&args.hostname, args.port)?; poll_fn(move |cx| { let mut state = state.borrow_mut(); @@ -220,7 +224,10 @@ async fn op_datagram_send( transport_args: ArgsEnum::Unix(args), } if transport == "unixpacket" => { let address_path = Path::new(&args.path); - cli_state.check_read(&address_path)?; + { + let s = state.borrow(); + s.borrow::<Permissions>().check_read(&address_path)?; + } let mut state = state.borrow_mut(); let resource = state .resource_table @@ -251,13 +258,17 @@ async fn op_connect( args: Value, _zero_copy: BufVec, ) -> Result<Value, AnyError> { - let cli_state = super::cli_state2(&state); match serde_json::from_value(args)? { ConnectArgs { transport, transport_args: ArgsEnum::Ip(args), } if transport == "tcp" => { - cli_state.check_net(&args.hostname, args.port)?; + { + let state_ = state.borrow(); + state_ + .borrow::<Permissions>() + .check_net(&args.hostname, args.port)?; + } let addr = resolve_addr(&args.hostname, args.port)?; let tcp_stream = TcpStream::connect(&addr).await?; let local_addr = tcp_stream.local_addr()?; @@ -290,8 +301,12 @@ async fn op_connect( transport_args: ArgsEnum::Unix(args), } if transport == "unix" => { let address_path = Path::new(&args.path); + let cli_state = super::global_state2(&state); cli_state.check_unstable("Deno.connect"); - cli_state.check_read(&address_path)?; + { + let state_ = state.borrow(); + state_.borrow::<Permissions>().check_read(&address_path)?; + } let path = args.path; let unix_stream = net_unix::UnixStream::connect(Path::new(&path)).await?; let local_addr = unix_stream.local_addr()?; @@ -331,7 +346,7 @@ fn op_shutdown( args: Value, _zero_copy: &mut [ZeroCopyBuf], ) -> Result<Value, AnyError> { - super::cli_state(state).check_unstable("Deno.shutdown"); + super::global_state(state).check_unstable("Deno.shutdown"); let args: ShutdownArgs = serde_json::from_value(args)?; @@ -475,7 +490,8 @@ fn op_listen( args: Value, _zero_copy: &mut [ZeroCopyBuf], ) -> Result<Value, AnyError> { - let cli_state = super::cli_state(state); + let cli_state = super::global_state(state); + let permissions = state.borrow::<Permissions>(); match serde_json::from_value(args)? { ListenArgs { transport, @@ -485,7 +501,7 @@ fn op_listen( if transport == "udp" { cli_state.check_unstable("Deno.listenDatagram"); } - cli_state.check_net(&args.hostname, args.port)?; + permissions.check_net(&args.hostname, args.port)?; } let addr = resolve_addr(&args.hostname, args.port)?; let (rid, local_addr) = if transport == "tcp" { @@ -521,8 +537,8 @@ fn op_listen( if transport == "unixpacket" { cli_state.check_unstable("Deno.listenDatagram"); } - cli_state.check_read(&address_path)?; - cli_state.check_write(&address_path)?; + permissions.check_read(&address_path)?; + permissions.check_write(&address_path)?; } let (rid, local_addr) = if transport == "unix" { net_unix::listen_unix(state, &address_path)? |