Skip to content

Instantly share code, notes, and snippets.

@DigiTec
Created December 2, 2014 08:01
Show Gist options
  • Save DigiTec/ca064d5af114527abfaf to your computer and use it in GitHub Desktop.
Save DigiTec/ca064d5af114527abfaf to your computer and use it in GitHub Desktop.
Node.js filtering symbol server to avoid unnecessary symbol queries when debugging on slow connections.
var config = {
forward_server: 'msdl.microsoft.com',
forward_path: '/download/symbols',
forward_port: 80,
allow_list: [
/\/ntdll.pdb\//
],
};
module.exports = config;
var http = require('http');
var sys = require('util');
var config = require('./config');
http.createServer(function(request, response) {
sys.log('Request for ' + request.url);
var allow = config.allow_list.reduce(function (prev, next) {
if (!prev) {
prev = next.test(request.url);
}
return prev;
}, false);
if (allow) {
var proxy = http.createClient(config.forward_port, config.forward_server);
var proxy_request = proxy.request(request.method, config.forward_path + request.url, request.headers);
proxy_request.addListener('response', function (proxy_response) {
proxy_response.addListener('data', function(chunk) {
response.write(chunk, 'binary');
});
proxy_response.addListener('end', function() {
response.end();
});
sys.log('Response for ' + request.url + ': ' + proxy_response.statusCode);
response.writeHead(proxy_response.statusCode, proxy_response.headers);
});
request.addListener('data', function(chunk) {
proxy_request.write(chunk, 'binary');
});
request.addListener('end', function() {
proxy_request.end();
});
}
else {
sys.log('Blocked request ' + request.url);
response.end();
}
}).listen(1337);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment