Created
June 23, 2014 12:04
-
-
Save prawnsalad/7659d6a9d4ac45e59996 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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