2021-04-07 17:31:04 +02:00
|
|
|
/* global it:false */
|
|
|
|
|
/* global describe:false */
|
|
|
|
|
/* global before:false */
|
|
|
|
|
|
|
|
|
|
'use strict';
|
|
|
|
|
|
2021-04-14 21:24:37 -07:00
|
|
|
var BoxError = require('../boxerror.js'),
|
|
|
|
|
expect = require('expect.js'),
|
2021-04-07 17:31:04 +02:00
|
|
|
fs = require('fs'),
|
2021-04-14 21:24:37 -07:00
|
|
|
network = require('../network.js'),
|
|
|
|
|
paths = require('../paths.js');
|
2021-04-07 17:31:04 +02:00
|
|
|
|
|
|
|
|
describe('Network', function () {
|
|
|
|
|
describe('Blocklist', function () {
|
|
|
|
|
|
|
|
|
|
before(function () {
|
2021-04-14 21:24:37 -07:00
|
|
|
fs.writeFileSync(paths.FIREWALL_BLOCKLIST_FILE, '', 'utf8');
|
2021-04-07 17:31:04 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('can get empty blocklist', function (done) {
|
|
|
|
|
network.getBlocklist(function (error, result) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
expect(result).to.equal('');
|
|
|
|
|
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('can set empty blocklist', function (done) {
|
|
|
|
|
network.setBlocklist('', { ip: '127.0.0.1' }, function (error) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
|
|
|
|
|
network.getBlocklist(function (error, result) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
expect(result).to.equal('\n');
|
|
|
|
|
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('can set single IPv4 in blocklist', function (done) {
|
|
|
|
|
network.setBlocklist('192.168.178.1', { ip: '127.0.0.1' }, function (error) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
|
|
|
|
|
network.getBlocklist(function (error, result) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
expect(result).to.equal('192.168.178.1\n');
|
|
|
|
|
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('can set single IPv6 in blocklist', function (done) {
|
|
|
|
|
network.setBlocklist('2a02:8106:2f:bb00:7afc:5703:ee71:3ef8', { ip: '127.0.0.1' }, function (error) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
|
|
|
|
|
network.getBlocklist(function (error, result) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
expect(result).to.equal('2a02:8106:2f:bb00:7afc:5703:ee71:3ef8\n');
|
|
|
|
|
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('can set mixed IPs with comment in blocklist', function (done) {
|
|
|
|
|
network.setBlocklist('2a02:8106:2f:bb00:7afc:5703:ee71:3ef8\n# some comment\n192.168.178.1', { ip: '127.0.0.1' }, function (error) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
|
|
|
|
|
network.getBlocklist(function (error, result) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
expect(result).to.equal('2a02:8106:2f:bb00:7afc:5703:ee71:3ef8\n# some comment\n192.168.178.1\n');
|
|
|
|
|
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('can set single IPv4 range in blocklist', function (done) {
|
|
|
|
|
network.setBlocklist('192.168.178.1/24', { ip: '127.0.0.1' }, function (error) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
|
|
|
|
|
network.getBlocklist(function (error, result) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
expect(result).to.equal('192.168.178.1/24\n');
|
|
|
|
|
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('can set single IPv6 range in blocklist', function (done) {
|
|
|
|
|
network.setBlocklist('2001:db8::', { ip: '127.0.0.1' }, function (error) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
|
|
|
|
|
network.getBlocklist(function (error, result) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
expect(result).to.equal('2001:db8::\n');
|
|
|
|
|
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('cannot set IPv4 in blocklist if source is same', function (done) {
|
|
|
|
|
network.setBlocklist('127.0.0.1', { ip: '127.0.0.1' }, function (error) {
|
|
|
|
|
expect(error).to.be.a(BoxError);
|
|
|
|
|
expect(error.reason).to.equal(BoxError.BAD_FIELD);
|
|
|
|
|
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('cannot set IPv6 in blocklist if source is same', function (done) {
|
|
|
|
|
network.setBlocklist('2001:db8:1234::1', { ip: '2001:db8:1234::1' }, function (error) {
|
|
|
|
|
expect(error).to.be.a(BoxError);
|
|
|
|
|
expect(error.reason).to.equal(BoxError.BAD_FIELD);
|
|
|
|
|
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('cannot set IPv4 range in blocklist if source is same', function (done) {
|
|
|
|
|
network.setBlocklist('127.0.0.1/32', { ip: '127.0.0.1' }, function (error) {
|
|
|
|
|
expect(error).to.be.a(BoxError);
|
|
|
|
|
expect(error.reason).to.equal(BoxError.BAD_FIELD);
|
|
|
|
|
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('cannot set IPv6 range in blocklist if source is same', function (done) {
|
|
|
|
|
network.setBlocklist('2001:db8:1234:::', { ip: '2001:db8:1234::1' }, function (error) {
|
|
|
|
|
expect(error).to.be.a(BoxError);
|
|
|
|
|
expect(error.reason).to.equal(BoxError.BAD_FIELD);
|
|
|
|
|
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('can set IPv4 in blocklist if source is IPv6', function (done) {
|
|
|
|
|
network.setBlocklist('192.168.178.1', { ip: '2001:db8:1234::1' }, function (error) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
|
|
|
|
|
network.getBlocklist(function (error, result) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
expect(result).to.equal('192.168.178.1\n');
|
|
|
|
|
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('can set IPv6 in blocklist if source is IPv4', function (done) {
|
|
|
|
|
network.setBlocklist('2001:db8:1234::1', { ip: '127.0.0.1' }, function (error) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
|
|
|
|
|
network.getBlocklist(function (error, result) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
expect(result).to.equal('2001:db8:1234::1\n');
|
|
|
|
|
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('can set IPv4 range in blocklist if source is IPv6', function (done) {
|
|
|
|
|
network.setBlocklist('192.168.178.1/32', { ip: '2001:db8:1234::1' }, function (error) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
|
|
|
|
|
network.getBlocklist(function (error, result) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
expect(result).to.equal('192.168.178.1/32\n');
|
|
|
|
|
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('can set IPv6 range in blocklist if source is IPv4', function (done) {
|
|
|
|
|
network.setBlocklist('2001:db8:1234::', { ip: '127.0.0.1' }, function (error) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
|
|
|
|
|
network.getBlocklist(function (error, result) {
|
|
|
|
|
expect(error).to.equal(null);
|
|
|
|
|
expect(result).to.equal('2001:db8:1234::\n');
|
|
|
|
|
|
|
|
|
|
done();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|