Skip to content

Instantly share code, notes, and snippets.

@prawnsalad
Created June 23, 2014 12:04
Show Gist options
  • Save prawnsalad/7659d6a9d4ac45e59996 to your computer and use it in GitHub Desktop.
Save prawnsalad/7659d6a9d4ac45e59996 to your computer and use it in GitHub Desktop.
var kiwiModules = require('../server/modules');
var module = new kiwiModules.Module('proxy_checker');
module.on('irc connecting', function (event, event_data) {
event.wait = true;
var client_addr = event_data.connection.state.client.websocket.meta.real_address;
checkForOpenProxies(client_addr, function(is_proxy) {
if (is_proxy) {
var err = new Error('Proxy detected (' + client_addr + ')');
err.code = 'Blocked proxy';
event_data.connection.emit('error', err);
event.preventDefault();
event.callback();
} else {
event.callback();
}
});
});
function checkForOpenProxies(host, callback) {
var net = require('net');
var ports = [8080,80,81,1080,6588,8000];
var ports_completed = 0;
var portFailed = function() {
ports_completed++;
this.removeAllListeners();
if (ports_completed >= ports.length)
callback(false);
};
var portConnected = function() {
ports_completed++;
this.removeAllListeners();
callback(true);
};
for (var idx=0; idx< ports.length; idx++) {
net.connect({port: ports[idx], host: host})
.on('connect', portConnected)
.on('error', portFailed)
.on('close', portFailed);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment