🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

proxy-bypass

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

proxy-bypass - npm Package Compare versions

Comparing version
0.0.3
to
0.0.4
+3
.travis.yml
language: node_js
node_js:
- "node"
var expect = require('chai').expect;
var bypassProxy = require('../index');
it('Should check does url match rule', function () {
var rule = 'google.com';
expect(bypassProxy('google.com.uk', rule)).to.be.false;
expect(bypassProxy('docs.google.com', rule)).to.be.false;
expect(bypassProxy('http://docs.google.com', rule)).to.be.false;
expect(bypassProxy('https://docs.google.com', rule)).to.be.false;
expect(bypassProxy('www.docs.google.com', rule)).to.be.false;
expect(bypassProxy('http://docs.ggoogle.com', rule)).to.be.false;
expect(bypassProxy('http://goooogle.com', rule)).to.be.false;
expect(bypassProxy('gogoogle.com', rule)).to.be.false;
expect(bypassProxy('http://google.com', rule)).to.be.true;
expect(bypassProxy('https://google.com', rule)).to.be.true;
expect(bypassProxy('https://google.com/', rule)).to.be.true;
expect(bypassProxy('google.com/', rule)).to.be.true;
rule = 'http://google.com';
expect(bypassProxy('https://google.com', rule)).to.be.false;
expect(bypassProxy('https://google.com/', rule)).to.be.false;
expect(bypassProxy('docs.google.com', rule)).to.be.false;
expect(bypassProxy('http://docs.google.com', rule)).to.be.false;
expect(bypassProxy('https://docs.google.com', rule)).to.be.false;
expect(bypassProxy('www.docs.google.com', rule)).to.be.false;
expect(bypassProxy('http://docs.ggoogle.com', rule)).to.be.false;
expect(bypassProxy('http://google.com', rule)).to.be.true;
expect(bypassProxy('google.com/', rule)).to.be.true;
rule = 'https://google.com';
expect(bypassProxy('http://google.com', rule)).to.be.false;
expect(bypassProxy('https://google.com', rule)).to.be.true;
['.google.com', '*.google.com'].forEach(r => {
expect(bypassProxy('http://google.com', r)).to.be.false;
expect(bypassProxy('https://google.com', r)).to.be.false;
expect(bypassProxy('https://google.com/', r)).to.be.false;
expect(bypassProxy('google.com/', r)).to.be.false;
expect(bypassProxy('http://docs.ggoogle.com', r)).to.be.false;
expect(bypassProxy('docs.google.com', r)).to.be.true;
expect(bypassProxy('http://docs.google.com', r)).to.be.true;
expect(bypassProxy('https://docs.google.com', r)).to.be.true;
expect(bypassProxy('www.docs.google.com', r)).to.be.true;
});
['.com', '*.com'].forEach(r => {
expect(bypassProxy('http://google.com.uk', r)).to.be.false;
expect(bypassProxy('http://google.com', r)).to.be.true;
expect(bypassProxy('google.com/', r)).to.be.true;
expect(bypassProxy('docs.google.com', r)).to.be.true;
expect(bypassProxy('http://docs.google.com', r)).to.be.true;
expect(bypassProxy('www.docs.google.com', r)).to.be.true;
});
['google.', 'google.*'].forEach(r => {
expect(bypassProxy('docs.google.com', r)).to.be.false;
expect(bypassProxy('https://docs.google.co.uk', r)).to.be.false;
expect(bypassProxy('https://docs.google.uk', r)).to.be.false;
expect(bypassProxy('http://google.com', r)).to.be.true;
expect(bypassProxy('https://google.co.uk', r)).to.be.true;
expect(bypassProxy('google.ru/', r)).to.be.true;
});
['docs.google.', 'docs.google.*'].forEach(r => {
expect(bypassProxy('http://google.com', r)).to.be.false;
expect(bypassProxy('docs.google', r)).to.be.false;
expect(bypassProxy('https://docs.googlee.com', r)).to.be.false;
expect(bypassProxy('www.docs.google.co.uk', r)).to.be.false;
expect(bypassProxy('http://docs.ggoogle.com', r)).to.be.false;
expect(bypassProxy('http://___docs.google.com', r)).to.be.false;
expect(bypassProxy('docs.google.en', r)).to.be.true;
expect(bypassProxy('http://docs.google.co.uk', r)).to.be.true;
});
['.google.', '*.google.*'].forEach(r => {
expect(bypassProxy('http://google.com', r)).to.be.false;
expect(bypassProxy('docs.google.com', r)).to.be.true;
expect(bypassProxy('http://docs.google.com', r)).to.be.true;
expect(bypassProxy('www.docs.google.com', r)).to.be.true;
expect(bypassProxy('www.my.docs.google.com', r)).to.be.true;
});
['.docs.google.', '*.docs.google.*'].forEach(r => {
expect(bypassProxy('http://google.com', r)).to.be.false;
expect(bypassProxy('docs.google.com', r)).to.be.false;
expect(bypassProxy('http://docs.google.com', r)).to.be.false;
expect(bypassProxy('www.docs.google.com', r)).to.be.true;
expect(bypassProxy('www.my.docs.google.com.eu', r)).to.be.true;
});
rule = 'docs.*.com';
expect(bypassProxy('docs.google.com', rule)).to.be.true;
expect(bypassProxy('docs.google.eu.com', rule)).to.be.true;
expect(bypassProxy('docs.google.ru', rule)).to.be.false;
expect(bypassProxy('docs.google.co.uk', rule)).to.be.false;
rule = 'docs.*.*.com';
expect(bypassProxy('docs.google.com', rule)).to.be.false;
expect(bypassProxy('docs.google.ru', rule)).to.be.false;
expect(bypassProxy('my.docs.google.ro.eu.com', rule)).to.be.false;
expect(bypassProxy('docs.google.co.uk', rule)).to.be.false;
expect(bypassProxy('docs.google.eu.com', rule)).to.be.true;
expect(bypassProxy('docs.google.ro.eu.com', rule)).to.be.true;
rule = '.docs.*.*.com.';
expect(bypassProxy('my.docs.google.eu.com.ru', rule)).to.be.true;
rule = 'docs.g*e.com';
expect(bypassProxy('docs.google.com', rule)).to.be.false;
rule = 'localhost';
expect(bypassProxy('localhost', rule)).to.be.true;
expect(bypassProxy('http://localhost', rule)).to.be.true;
expect(bypassProxy('my-localhost', rule)).to.be.false;
expect(bypassProxy('localhost-my', rule)).to.be.false;
rule = '127.0.0.1';
expect(bypassProxy('127.0.0.1', rule)).to.be.true;
expect(bypassProxy('http://127.0.0.1', rule)).to.be.true;
expect(bypassProxy('https://127.0.0.1', rule)).to.be.true;
rule = '127.0.0.';
expect(bypassProxy('127.127.0.0', rule)).to.be.false;
expect(bypassProxy('127.0.0.2', rule)).to.be.true;
rule = '.0.0.';
expect(bypassProxy('127.0.1.2', rule)).to.be.false;
expect(bypassProxy('127.0.0.2', rule)).to.be.true;
rule = '127.*.*.0';
expect(bypassProxy('128.120.120.0', rule)).to.be.false;
expect(bypassProxy('127.0.0.0', rule)).to.be.true;
expect(bypassProxy('127.120.120.0', rule)).to.be.true;
rule = 'google.com:81';
expect(bypassProxy('google.com', rule)).to.be.false;
expect(bypassProxy('google.com:80', rule)).to.be.false;
expect(bypassProxy('google.com:81', rule)).to.be.true;
rule = 'google.:81';
expect(bypassProxy('google.com', rule)).to.be.false;
expect(bypassProxy('google.com:80', rule)).to.be.false;
expect(bypassProxy('google.com:81', rule)).to.be.true;
rule = 'localhost:3000';
expect(bypassProxy('localhost:3000/features/functional/local', rule)).to.be.true;
expect(bypassProxy('http://localhost:3000/features/functional/local', rule)).to.be.true;
expect(bypassProxy(null, rule)).to.be.false;
rule = 1;
expect(bypassProxy('google', rule)).to.be.false;
});
+14
-14
var lodash = require('lodash');
const startsWithWildcardRegExp = /^\*\./;
const endsWithWildcardRegExp = /\.\*$/;
const trailingSlashesRegExp = /\/.*$/;
const portRegExp = /:(\d+)$/;
const protocolRegExp = /^(\w+):\/\//;
const wildcardRegExp = /\\\.\\\*/g;
var startsWithWildcardRegExp = /^\*\./;
var endsWithWildcardRegExp = /\.\*$/;
var trailingSlashesRegExp = /\/.*$/;
var portRegExp = /:(\d+)$/;
var protocolRegExp = /^(\w+):\/\//;
var wildcardRegExp = /\\\.\\\*/g;

@@ -14,3 +14,3 @@ function parseUrl (url) {

let protocol = url.match(protocolRegExp);
var protocol = url.match(protocolRegExp);

@@ -21,3 +21,3 @@ protocol = protocol ? protocol[1] : null;

let port = url.match(portRegExp);
var port = url.match(portRegExp);

@@ -31,3 +31,3 @@ port = port ? parseInt(port[1], 10) : null;

function prepareRule (url) {
const rule = parseUrl(url);
var rule = parseUrl(url);

@@ -46,8 +46,8 @@ if (rule) {

const matchByProtocols = !rule.protocol || !sourceUrl.protocol || rule.protocol === sourceUrl.protocol;
const matchByPorts = !rule.port || sourceUrl.port === rule.port;
const domainRequiredBeforeRule = rule.url.startsWith('.');
const domainRequiredAfterRule = rule.url.endsWith('.');
var matchByProtocols = !rule.protocol || !sourceUrl.protocol || rule.protocol === sourceUrl.protocol;
var matchByPorts = !rule.port || sourceUrl.port === rule.port;
var domainRequiredBeforeRule = rule.url.startsWith('.');
var domainRequiredAfterRule = rule.url.endsWith('.');
let regExStr = '^';
var regExStr = '^';

@@ -54,0 +54,0 @@ if (domainRequiredBeforeRule)

{
"name": "proxy-bypass",
"version": "0.0.3",
"version": "0.0.4",
"description": "Module to match url by pattern",
"main": "index.js",
"scripts": {
"test": "./node_modules/.bin/mocha"
},
"dependencies": {
"lodash": "^4.13.1"
"chai": "^4.1.2",
"lodash": "^4.13.1",
"mocha": "^5.0.4"
},

@@ -9,0 +14,0 @@ "repository": {

+173
-2

@@ -1,2 +0,173 @@

# proxy-bypass
Module to match url by pattern
# proxy-bypass [![Build Status](https://travis-ci.org/AlexKamaev/proxy-bypass.svg?branch=master)](https://travis-ci.org/AlexKamaev/proxy-bypass)
## Module to match url by pattern
#### var rule = 'google.com';
expect(bypassProxy('google.com.uk', rule)).to.be.false;
expect(bypassProxy('docs.google.com', rule)).to.be.false;
expect(bypassProxy('http://docs.google.com', rule)).to.be.false;
expect(bypassProxy('https://docs.google.com', rule)).to.be.false;
expect(bypassProxy('www.docs.google.com', rule)).to.be.false;
expect(bypassProxy('http://docs.ggoogle.com', rule)).to.be.false;
expect(bypassProxy('http://goooogle.com', rule)).to.be.false;
expect(bypassProxy('gogoogle.com', rule)).to.be.false;
expect(bypassProxy('http://google.com', rule)).to.be.true;
expect(bypassProxy('https://google.com', rule)).to.be.true;
expect(bypassProxy('https://google.com/', rule)).to.be.true;
expect(bypassProxy('google.com/', rule)).to.be.true;
#### rule = 'http://google.com';
expect(bypassProxy('https://google.com', rule)).to.be.false;
expect(bypassProxy('https://google.com/', rule)).to.be.false;
expect(bypassProxy('docs.google.com', rule)).to.be.false;
expect(bypassProxy('http://docs.google.com', rule)).to.be.false;
expect(bypassProxy('https://docs.google.com', rule)).to.be.false;
expect(bypassProxy('www.docs.google.com', rule)).to.be.false;
expect(bypassProxy('http://docs.ggoogle.com', rule)).to.be.false;
expect(bypassProxy('http://google.com', rule)).to.be.true;
expect(bypassProxy('google.com/', rule)).to.be.true;
#### rule = 'https://google.com';
expect(bypassProxy('http://google.com', rule)).to.be.false;
expect(bypassProxy('https://google.com', rule)).to.be.true;
#### ['.google.com', '*.google.com']
.forEach(r => {
expect(bypassProxy('http://google.com', r)).to.be.false;
expect(bypassProxy('https://google.com', r)).to.be.false;
expect(bypassProxy('https://google.com/', r)).to.be.false;
expect(bypassProxy('google.com/', r)).to.be.false;
expect(bypassProxy('http://docs.ggoogle.com', r)).to.be.false;
expect(bypassProxy('docs.google.com', r)).to.be.true;
expect(bypassProxy('http://docs.google.com', r)).to.be.true;
expect(bypassProxy('https://docs.google.com', r)).to.be.true;
expect(bypassProxy('www.docs.google.com', r)).to.be.true;
});
#### ['.com', '*.com']
.forEach(r => {
expect(bypassProxy('http://google.com.uk', r)).to.be.false;
expect(bypassProxy('http://google.com', r)).to.be.true;
expect(bypassProxy('google.com/', r)).to.be.true;
expect(bypassProxy('docs.google.com', r)).to.be.true;
expect(bypassProxy('http://docs.google.com', r)).to.be.true;
expect(bypassProxy('www.docs.google.com', r)).to.be.true;
});
#### ['google.', 'google.*']
.forEach(r => {
expect(bypassProxy('docs.google.com', r)).to.be.false;
expect(bypassProxy('https://docs.google.co.uk', r)).to.be.false;
expect(bypassProxy('https://docs.google.uk', r)).to.be.false;
expect(bypassProxy('http://google.com', r)).to.be.true;
expect(bypassProxy('https://google.co.uk', r)).to.be.true;
expect(bypassProxy('google.ru/', r)).to.be.true;
});
#### ['docs.google.', 'docs.google.*']
.forEach(r => {
expect(bypassProxy('http://google.com', r)).to.be.false;
expect(bypassProxy('docs.google', r)).to.be.false;
expect(bypassProxy('https://docs.googlee.com', r)).to.be.false;
expect(bypassProxy('www.docs.google.co.uk', r)).to.be.false;
expect(bypassProxy('http://docs.ggoogle.com', r)).to.be.false;
expect(bypassProxy('http://___docs.google.com', r)).to.be.false;
expect(bypassProxy('docs.google.en', r)).to.be.true;
expect(bypassProxy('http://docs.google.co.uk', r)).to.be.true;
});
#### ['.google.', '*.google.*']
.forEach(r => {
expect(bypassProxy('http://google.com', r)).to.be.false;
expect(bypassProxy('docs.google.com', r)).to.be.true;
expect(bypassProxy('http://docs.google.com', r)).to.be.true;
expect(bypassProxy('www.docs.google.com', r)).to.be.true;
expect(bypassProxy('www.my.docs.google.com', r)).to.be.true;
});
#### ['.docs.google.', '*.docs.google.*']
.forEach(r => {
expect(bypassProxy('http://google.com', r)).to.be.false;
expect(bypassProxy('docs.google.com', r)).to.be.false;
expect(bypassProxy('http://docs.google.com', r)).to.be.false;
expect(bypassProxy('www.docs.google.com', r)).to.be.true;
expect(bypassProxy('www.my.docs.google.com.eu', r)).to.be.true;
});
#### rule = 'docs.*.com';
expect(bypassProxy('docs.google.com', rule)).to.be.true;
expect(bypassProxy('docs.google.eu.com', rule)).to.be.true;
expect(bypassProxy('docs.google.ru', rule)).to.be.false;
expect(bypassProxy('docs.google.co.uk', rule)).to.be.false;
#### rule = 'docs.*.*.com';
expect(bypassProxy('docs.google.com', rule)).to.be.false;
expect(bypassProxy('docs.google.ru', rule)).to.be.false;
expect(bypassProxy('my.docs.google.ro.eu.com', rule)).to.be.false;
expect(bypassProxy('docs.google.co.uk', rule)).to.be.false;
expect(bypassProxy('docs.google.eu.com', rule)).to.be.true;
expect(bypassProxy('docs.google.ro.eu.com', rule)).to.be.true;
#### rule = '.docs.*.*.com.';
expect(bypassProxy('my.docs.google.eu.com.ru', rule)).to.be.true;
#### rule = 'docs.g*e.com';
expect(bypassProxy('docs.google.com', rule)).to.be.false;
#### rule = 'localhost';
expect(bypassProxy('localhost', rule)).to.be.true;
expect(bypassProxy('http://localhost', rule)).to.be.true;
expect(bypassProxy('my-localhost', rule)).to.be.false;
expect(bypassProxy('localhost-my', rule)).to.be.false;
#### rule = '127.0.0.1';
expect(bypassProxy('127.0.0.1', rule)).to.be.true;
expect(bypassProxy('http://127.0.0.1', rule)).to.be.true;
expect(bypassProxy('https://127.0.0.1', rule)).to.be.true;
#### rule = '127.0.0.';
expect(bypassProxy('127.127.0.0', rule)).to.be.false;
expect(bypassProxy('127.0.0.2', rule)).to.be.true;
#### rule = '.0.0.';
expect(bypassProxy('127.0.1.2', rule)).to.be.false;
expect(bypassProxy('127.0.0.2', rule)).to.be.true;
#### rule = '127.*.*.0';
expect(bypassProxy('128.120.120.0', rule)).to.be.false;
expect(bypassProxy('127.0.0.0', rule)).to.be.true;
expect(bypassProxy('127.120.120.0', rule)).to.be.true;
#### rule = 'google.com:81';
expect(bypassProxy('google.com', rule)).to.be.false;
expect(bypassProxy('google.com:80', rule)).to.be.false;
expect(bypassProxy('google.com:81', rule)).to.be.true;
#### rule = 'google.:81';
expect(bypassProxy('google.com', rule)).to.be.false;
expect(bypassProxy('google.com:80', rule)).to.be.false;
expect(bypassProxy('google.com:81', rule)).to.be.true;
#### rule = 'localhost:3000';
expect(bypassProxy('localhost:3000/features/functional/local', rule)).to.be.true;
expect(bypassProxy('http://localhost:3000/features/functional/local', rule)).to.be.true;
expect(bypassProxy(null, rule)).to.be.false;
#### rule = 1;
expect(bypassProxy('google', rule)).to.be.false;