summaryrefslogtreecommitdiff
path: root/cli/permissions.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/permissions.rs')
-rw-r--r--cli/permissions.rs65
1 files changed, 28 insertions, 37 deletions
diff --git a/cli/permissions.rs b/cli/permissions.rs
index f57732589..1dd2eb1e2 100644
--- a/cli/permissions.rs
+++ b/cli/permissions.rs
@@ -208,28 +208,19 @@ impl DenoPermissions {
}
}
- pub fn check_net(&self, host_and_port: &str) -> Result<(), ErrBox> {
- let msg = &format!("network access to \"{}\"", host_and_port);
+ pub fn check_net(&self, hostname: &str, port: u16) -> Result<(), ErrBox> {
+ let msg = &format!("network access to \"{}:{}\"", hostname, port);
match self.allow_net.get_state() {
PermissionAccessorState::Allow => {
self.log_perm_access(msg);
Ok(())
}
_state => {
- let parts = host_and_port.split(':').collect::<Vec<&str>>();
- if match parts.len() {
- 2 => {
- if self.net_whitelist.contains(parts[0]) {
- true
- } else {
- self
- .net_whitelist
- .contains(&format!("{}:{}", parts[0], parts[1]))
- }
- }
- 1 => self.net_whitelist.contains(parts[0]),
- _ => panic!("Failed to parse origin string: {}", host_and_port),
- } {
+ if self.net_whitelist.contains(hostname)
+ || self
+ .net_whitelist
+ .contains(&format!("{}:{}", hostname, port))
+ {
self.log_perm_access(msg);
Ok(())
} else {
@@ -438,26 +429,26 @@ mod tests {
});
let domain_tests = vec![
- ("localhost:1234", true),
- ("deno.land", true),
- ("deno.land:3000", true),
- ("deno.lands", false),
- ("deno.lands:3000", false),
- ("github.com:3000", true),
- ("github.com", false),
- ("github.com:2000", false),
- ("github.net:3000", false),
- ("127.0.0.1", true),
- ("127.0.0.1:3000", true),
- ("127.0.0.2", false),
- ("127.0.0.2:3000", false),
- ("172.16.0.2:8000", true),
- ("172.16.0.2", false),
- ("172.16.0.2:6000", false),
- ("172.16.0.1:8000", false),
+ ("localhost", 1234, true),
+ ("deno.land", 0, true),
+ ("deno.land", 3000, true),
+ ("deno.lands", 0, false),
+ ("deno.lands", 3000, false),
+ ("github.com", 3000, true),
+ ("github.com", 0, false),
+ ("github.com", 2000, false),
+ ("github.net", 3000, false),
+ ("127.0.0.1", 0, true),
+ ("127.0.0.1", 3000, true),
+ ("127.0.0.2", 0, false),
+ ("127.0.0.2", 3000, false),
+ ("172.16.0.2", 8000, true),
+ ("172.16.0.2", 0, false),
+ ("172.16.0.2", 6000, false),
+ ("172.16.0.1", 8000, false),
// Just some random hosts that should err
- ("somedomain", false),
- ("192.168.0.1", false),
+ ("somedomain", 0, false),
+ ("192.168.0.1", 0, false),
];
let url_tests = vec![
@@ -502,8 +493,8 @@ mod tests {
assert_eq!(*is_ok, perms.check_net_url(&u).is_ok());
}
- for (domain, is_ok) in domain_tests.iter() {
- assert_eq!(*is_ok, perms.check_net(domain).is_ok());
+ for (host, port, is_ok) in domain_tests.iter() {
+ assert_eq!(*is_ok, perms.check_net(host, *port).is_ok());
}
}
}