diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2018-10-27 06:11:39 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-27 06:11:39 -0700 |
commit | 6adc87e3eb6193fd739b28931c19cf850c9b3276 (patch) | |
tree | c2e193d19474d1638875aa840cdeb14e6aadec97 /src/isolate.rs | |
parent | 7f204b980318215785aac8250351d24fda458f98 (diff) |
Ergonomics: Prompt TTY for permission escalation (#1081)
Diffstat (limited to 'src/isolate.rs')
-rw-r--r-- | src/isolate.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/isolate.rs b/src/isolate.rs index e222d280f..6530c396f 100644 --- a/src/isolate.rs +++ b/src/isolate.rs @@ -6,8 +6,10 @@ use deno_dir; use errors::DenoError; +use errors::DenoResult; use flags; use libdeno; +use permissions::DenoPermissions; use snapshot; use futures::Future; @@ -56,6 +58,7 @@ pub struct Isolate { pub struct IsolateState { pub dir: deno_dir::DenoDir, pub argv: Vec<String>, + pub permissions: Mutex<DenoPermissions>, pub flags: flags::DenoFlags, tx: Mutex<Option<mpsc::Sender<(i32, Buf)>>>, pub metrics: Mutex<Metrics>, @@ -71,6 +74,21 @@ impl IsolateState { tx.send((req_id, buf)).expect("tx.send error"); } + pub fn check_write(&self, filename: &str) -> DenoResult<()> { + let mut perm = self.permissions.lock().unwrap(); + perm.check_write(filename) + } + + pub fn check_env(&self) -> DenoResult<()> { + let mut perm = self.permissions.lock().unwrap(); + perm.check_env() + } + + pub fn check_net(&self, filename: &str) -> DenoResult<()> { + let mut perm = self.permissions.lock().unwrap(); + perm.check_net(filename) + } + fn metrics_op_dispatched( &self, bytes_sent_control: u64, @@ -143,6 +161,7 @@ impl Isolate { state: Arc::new(IsolateState { dir: deno_dir::DenoDir::new(flags.reload, custom_root).unwrap(), argv: argv_rest, + permissions: Mutex::new(DenoPermissions::new(&flags)), flags, tx: Mutex::new(Some(tx)), metrics: Mutex::new(Metrics::default()), |