summaryrefslogtreecommitdiff
path: root/src/isolate.rs
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2018-10-27 06:11:39 -0700
committerGitHub <noreply@github.com>2018-10-27 06:11:39 -0700
commit6adc87e3eb6193fd739b28931c19cf850c9b3276 (patch)
treec2e193d19474d1638875aa840cdeb14e6aadec97 /src/isolate.rs
parent7f204b980318215785aac8250351d24fda458f98 (diff)
Ergonomics: Prompt TTY for permission escalation (#1081)
Diffstat (limited to 'src/isolate.rs')
-rw-r--r--src/isolate.rs19
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()),