Skip to content

Instantly share code, notes, and snippets.

@Rush
Created December 27, 2013 16:45
Show Gist options
  • Save Rush/8149458 to your computer and use it in GitHub Desktop.
Save Rush/8149458 to your computer and use it in GitHub Desktop.
#!/usr/bin/env node
var spdy = require('spdy'),
crypto = require('crypto'),
fs = require('fs');
b64decode = function(encoded) {
return new Buffer(encoded || '', 'base64').toString('utf8');
};
var keys = {
"key": b64decode("LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBeDRjUTd2YmdNK2JuQXlXVHdWVGl4NXRxUUNWUUxVVFFkMlREdElYZXVZN2lFbVRVCmlEM1hacGhVYlkyQVpJbkwzOHNxRm5iM1ZDVERKbVd2UUZJcHpNNUhSZ2dzOE5tTFRWa1podHV1TWFkMXpGaVEKaExhbUZ0ckdtckRiMGpiMkNrckVYdDFQa29VOThuK0FMVGp2a3A0ZklqbHM4RW1pLyt1em5BL1k1Z1hpdzlUTAp1NXJKYUdWdGpBMXJCK2o1MjZRaEQ3ZHdSTjBuN1lTNHArVDNwczBtTzJPYW9xSE5IZnpMRDFlclFkei92a3ZyCmlQWmp4M1RGZ2U0ZEUxbWN3MmpZMENkcWhDQnBneDJSRExyMTZwZmVRRkNza3p0aGl0d0o5ejlib3UwTTdURksKdnpzQVBEdktwWW5nSkhhdVlBZmlDV0Y0bWMyYVo0MzdJQTBzRFFJREFRQUJBb0lCQUhNRmRjbU1IK3RMck5pdgpqT0hpb1drWU9zUUh2cFNhR3VMNC82ak5rM3U4MXE1cjJlbEFYVEFUbUhnZkhtalcxdVNJSmhjVk5iY1lDamZVClhwYmh4cDcrT3pBdi9saEowSGdpYVFqSkV6NGtuMC9Scmw0VFBPUG44cDJ5WHNac1VLSFdRQ1cveHVOY1ZEMjcKS3BUblFaUnYrdHFyNkJVTkhoNFNMbFJFL25CNjUyM0VMczJaVWFRQmk2NVdMMzBjNkVyUTJ6NnA4T3laTGwvZgpnZ216OGlTY05lekFRZmxTWk9kWFNYNFU0eEtyNDFSbUFFbE9pREJmci9Ud3pQZFJCaEpNSnV5dElLcFhiaE00CmxuZ3NZRTFXSno1MVVBV2hRZmwxMVZpTEJUb3p0WnhOYVBaeUdEMmJ1OU50dHRLTEJwZXZpenRPYlVwazlyS2cKdXhrMzRBRUNnWUVBNlVweC9xZmlRRnF3WnNhQ0ZjeXlBNC9mNnBnbGJoRnYxc1pHeW82dkVLZ2NvZ3Z1RE9raQpEblNlNURCZDFvMjMvbG1OZStiNzRlRWJtUjNDM3UxWWdSQW5yVncyWjl0VTZaOFlUS1l1ai9sZmhKQzN4S2I3CjJ0ZkpyTkFNSTVUaklpK1ByNk4zbmIrN3FabTQ3bWxkcURXQWUrbGhkS1pWMmo3TjliR05nZzBDZ1lFQTJ2TS8KM0J1YmZCYTJGZXg3QVBnRlBrbHRmZitnTnNzSXZXMkN0VExJbDM2R1JVd0RKN0dBTU1KR08vRXNnaERTTnlPdgpRTVlydC9yeXpGdEdDVGFHUXgxTWI5VFd3Nnd1cTl6dHBkekpBQXV2TXQ1U1FWL0krWVdlZ0VxUmxZZDhtTElzClBGcFRpTUowODlDVk4rQUFVd3JwSytLN3JuVmo5UVByVW5uVjBnRUNnWUVBajJmQjEwYWdIK3Nma0szcC9UaU4KSFA5dUo2bExLUFB6Q2RWc1lzdCs5Z0JCU2FPSHU4djdzV01pNFNhU0tIZUphUUxucEFpRFFZQzlGRXhsSStCRwpqVisrNUNSUkZWcVFRZVFZYmRXaHZjTVBZbEFMaHdrV3ZKbjFVUk82d295ZGFzQk4xU3ZwTmNGTXZKN1FQVTNyCjBxREEwR3JRQzRMTU41SnZ6TjVPSEdrQ2dZRUF1N0pJRG5NRVNjNVdibGo1NFl5OVFmWkVqUDAwNVlRTWpBZHoKUTg2ek0xdmQwMDRrYmtTMk5oWjFpekZuREdGTE5NVzhtWFRKU2NFeG40cW5jWUp5ZXRxRkNtR1ZjczBLZlg2NQpvN1N3QXdBQlEwUmZrM2QvbkppMWxobFcwSzhEV3d0eTdKSXFobFRkV1o1NExSdzBhdnd4ZzlPdFBST1ppeE8vCkNrY3p6QUVDZ1lBdXlXUU5la1U2d3hFNEZGbVVFbmNMZkROTWJaMy9VYkpYK3g2R2lFQzl1c2U1aXRpNEtRUDgKVDc2eWxYR2JIYXRqeE9pUWtsSmxZbzlRVTkzVDJrMXloeHN2ZHZWZTlOVHByOTBZQUdDeExuU2phRkVJamh5UgpTYXMxbDY1MDZjaGNsY0MydzNVRi9HNnkrQlMzenFuRmdPVHR4MGZ5TVptczVqN0hkVlc3UVE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo="),
"cert": b64decode("LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURYVENDQWtXZ0F3SUJBZ0lKQUw5TjIvSTJUaWZCTUEwR0NTcUdTSWIzRFFFQkJRVUFNRVV4Q3pBSkJnTlYKQkFZVEFrRlZNUk13RVFZRFZRUUlEQXBUYjIxbExWTjBZWFJsTVNFd0h3WURWUVFLREJoSmJuUmxjbTVsZENCWAphV1JuYVhSeklGQjBlU0JNZEdRd0hoY05NVE14TWpJMk1USXpNVEk0V2hjTk1UUXhNakkyTVRJek1USTRXakJGCk1Rc3dDUVlEVlFRR0V3SkJWVEVUTUJFR0ExVUVDQXdLVTI5dFpTMVRkR0YwWlRFaE1COEdBMVVFQ2d3WVNXNTAKWlhKdVpYUWdWMmxrWjJsMGN5QlFkSGtnVEhSa01JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQgpDZ0tDQVFFQXg0Y1E3dmJnTStibkF5V1R3VlRpeDV0cVFDVlFMVVRRZDJURHRJWGV1WTdpRW1UVWlEM1hacGhVCmJZMkFaSW5MMzhzcUZuYjNWQ1RESm1XdlFGSXB6TTVIUmdnczhObUxUVmtaaHR1dU1hZDF6RmlRaExhbUZ0ckcKbXJEYjBqYjJDa3JFWHQxUGtvVTk4bitBTFRqdmtwNGZJamxzOEVtaS8rdXpuQS9ZNWdYaXc5VEx1NXJKYUdWdApqQTFyQitqNTI2UWhEN2R3Uk4wbjdZUzRwK1QzcHMwbU8yT2FvcUhOSGZ6TEQxZXJRZHovdmt2cmlQWmp4M1RGCmdlNGRFMW1jdzJqWTBDZHFoQ0JwZ3gyUkRMcjE2cGZlUUZDc2t6dGhpdHdKOXo5Ym91ME03VEZLdnpzQVBEdksKcFluZ0pIYXVZQWZpQ1dGNG1jMmFaNDM3SUEwc0RRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVBZloraTJ2ZApQMXJVQkxmU1B5eFRCWld5Qktvd0h3WURWUjBqQkJnd0ZvQVVBZloraTJ2ZFAxclVCTGZTUHl4VEJaV3lCS293CkRBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBb1VETnRhQUhBSlZYaEhDRVl1UXEKQ1MwOFJwekZQeEZ3QnZhUHNTeWhkZ0lscjJHdzVjb213K1ZCclpZTWxPSnhlY1d6TlFaMXhoNFBySnhiSzhoYQpjR3owb3prMjM0NUpvUXQzVldCYWhZV0ZPYkNxR3QxakI5REpySnQ5c1h4ZDhqKzZIUnFpNE1FenJpSmM2WUY1ClRSUmV5NGpZeTB6K0h3a1FRbndhRFVBbzdNSkF5ZG5RZk91eW9TM3ZPVlpyTkR3dEd0M3ZoaS9oYldKMXNMZEEKNEcyUytjM0o2dVM5RlNtbXhiajExWnZ3REZYU0ZIN0RWMXpkQXFGaFVKOGp4K0FOeENEK01MbmdpSWczUVBldgpkOEVnc1hJV01DSGxwL1ZCbEpUS2FPZk5uWkdXQVpUMDNEOEFIWGpHYUVsWWVqTWRBcitVTEJHOFlObVRUL0x6ClJ3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=")
};
var loadedKeys = crypto.createCredentials(keys).context;
var keys2 = {
"key": b64decode("LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBeDRjUTd2YmdNK2JuQXlXVHdWVGl4NXRxUUNWUUxVVFFkMlREdElYZXVZN2lFbVRVCmlEM1hacGhVYlkyQVpJbkwzOHNxRm5iM1ZDVERKbVd2UUZJcHpNNUhSZ2dzOE5tTFRWa1podHV1TWFkMXpGaVEKaExhbUZ0ckdtckRiMGpiMkNrckVYdDFQa29VOThuK0FMVGp2a3A0ZklqbHM4RW1pLyt1em5BL1k1Z1hpdzlUTAp1NXJKYUdWdGpBMXJCK2o1MjZRaEQ3ZHdSTjBuN1lTNHArVDNwczBtTzJPYW9xSE5IZnpMRDFlclFkei92a3ZyCmlQWmp4M1RGZ2U0ZEUxbWN3MmpZMENkcWhDQnBneDJSRExyMTZwZmVRRkNza3p0aGl0d0o5ejlib3UwTTdURksKdnpzQVBEdktwWW5nSkhhdVlBZmlDV0Y0bWMyYVo0MzdJQTBzRFFJREFRQUJBb0lCQUhNRmRjbU1IK3RMck5pdgpqT0hpb1drWU9zUUh2cFNhR3VMNC82ak5rM3U4MXE1cjJlbEFYVEFUbUhnZkhtalcxdVNJSmhjVk5iY1lDamZVClhwYmh4cDcrT3pBdi9saEowSGdpYVFqSkV6NGtuMC9Scmw0VFBPUG44cDJ5WHNac1VLSFdRQ1cveHVOY1ZEMjcKS3BUblFaUnYrdHFyNkJVTkhoNFNMbFJFL25CNjUyM0VMczJaVWFRQmk2NVdMMzBjNkVyUTJ6NnA4T3laTGwvZgpnZ216OGlTY05lekFRZmxTWk9kWFNYNFU0eEtyNDFSbUFFbE9pREJmci9Ud3pQZFJCaEpNSnV5dElLcFhiaE00CmxuZ3NZRTFXSno1MVVBV2hRZmwxMVZpTEJUb3p0WnhOYVBaeUdEMmJ1OU50dHRLTEJwZXZpenRPYlVwazlyS2cKdXhrMzRBRUNnWUVBNlVweC9xZmlRRnF3WnNhQ0ZjeXlBNC9mNnBnbGJoRnYxc1pHeW82dkVLZ2NvZ3Z1RE9raQpEblNlNURCZDFvMjMvbG1OZStiNzRlRWJtUjNDM3UxWWdSQW5yVncyWjl0VTZaOFlUS1l1ai9sZmhKQzN4S2I3CjJ0ZkpyTkFNSTVUaklpK1ByNk4zbmIrN3FabTQ3bWxkcURXQWUrbGhkS1pWMmo3TjliR05nZzBDZ1lFQTJ2TS8KM0J1YmZCYTJGZXg3QVBnRlBrbHRmZitnTnNzSXZXMkN0VExJbDM2R1JVd0RKN0dBTU1KR08vRXNnaERTTnlPdgpRTVlydC9yeXpGdEdDVGFHUXgxTWI5VFd3Nnd1cTl6dHBkekpBQXV2TXQ1U1FWL0krWVdlZ0VxUmxZZDhtTElzClBGcFRpTUowODlDVk4rQUFVd3JwSytLN3JuVmo5UVByVW5uVjBnRUNnWUVBajJmQjEwYWdIK3Nma0szcC9UaU4KSFA5dUo2bExLUFB6Q2RWc1lzdCs5Z0JCU2FPSHU4djdzV01pNFNhU0tIZUphUUxucEFpRFFZQzlGRXhsSStCRwpqVisrNUNSUkZWcVFRZVFZYmRXaHZjTVBZbEFMaHdrV3ZKbjFVUk82d295ZGFzQk4xU3ZwTmNGTXZKN1FQVTNyCjBxREEwR3JRQzRMTU41SnZ6TjVPSEdrQ2dZRUF1N0pJRG5NRVNjNVdibGo1NFl5OVFmWkVqUDAwNVlRTWpBZHoKUTg2ek0xdmQwMDRrYmtTMk5oWjFpekZuREdGTE5NVzhtWFRKU2NFeG40cW5jWUp5ZXRxRkNtR1ZjczBLZlg2NQpvN1N3QXdBQlEwUmZrM2QvbkppMWxobFcwSzhEV3d0eTdKSXFobFRkV1o1NExSdzBhdnd4ZzlPdFBST1ppeE8vCkNrY3p6QUVDZ1lBdXlXUU5la1U2d3hFNEZGbVVFbmNMZkROTWJaMy9VYkpYK3g2R2lFQzl1c2U1aXRpNEtRUDgKVDc2eWxYR2JIYXRqeE9pUWtsSmxZbzlRVTkzVDJrMXloeHN2ZHZWZTlOVHByOTBZQUdDeExuU2phRkVJamh5UgpTYXMxbDY1MDZjaGNsY0MydzNVRi9HNnkrQlMzenFuRmdPVHR4MGZ5TVptczVqN0hkVlc3UVE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo="),
"cert": b64decode("LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURYVENDQWtXZ0F3SUJBZ0lKQUw5TjIvSTJUaWZCTUEwR0NTcUdTSWIzRFFFQkJRVUFNRVV4Q3pBSkJnTlYKQkFZVEFrRlZNUk13RVFZRFZRUUlEQXBUYjIxbExWTjBZWFJsTVNFd0h3WURWUVFLREJoSmJuUmxjbTVsZENCWAphV1JuYVhSeklGQjBlU0JNZEdRd0hoY05NVE14TWpJMk1USXpNVEk0V2hjTk1UUXhNakkyTVRJek1USTRXakJGCk1Rc3dDUVlEVlFRR0V3SkJWVEVUTUJFR0ExVUVDQXdLVTI5dFpTMVRkR0YwWlRFaE1COEdBMVVFQ2d3WVNXNTAKWlhKdVpYUWdWMmxrWjJsMGN5QlFkSGtnVEhSa01JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQgpDZ0tDQVFFQXg0Y1E3dmJnTStibkF5V1R3VlRpeDV0cVFDVlFMVVRRZDJURHRJWGV1WTdpRW1UVWlEM1hacGhVCmJZMkFaSW5MMzhzcUZuYjNWQ1RESm1XdlFGSXB6TTVIUmdnczhObUxUVmtaaHR1dU1hZDF6RmlRaExhbUZ0ckcKbXJEYjBqYjJDa3JFWHQxUGtvVTk4bitBTFRqdmtwNGZJamxzOEVtaS8rdXpuQS9ZNWdYaXc5VEx1NXJKYUdWdApqQTFyQitqNTI2UWhEN2R3Uk4wbjdZUzRwK1QzcHMwbU8yT2FvcUhOSGZ6TEQxZXJRZHovdmt2cmlQWmp4M1RGCmdlNGRFMW1jdzJqWTBDZHFoQ0JwZ3gyUkRMcjE2cGZlUUZDc2t6dGhpdHdKOXo5Ym91ME03VEZLdnpzQVBEdksKcFluZ0pIYXVZQWZpQ1dGNG1jMmFaNDM3SUEwc0RRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVBZloraTJ2ZApQMXJVQkxmU1B5eFRCWld5Qktvd0h3WURWUjBqQkJnd0ZvQVVBZloraTJ2ZFAxclVCTGZTUHl4VEJaV3lCS293CkRBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBb1VETnRhQUhBSlZYaEhDRVl1UXEKQ1MwOFJwekZQeEZ3QnZhUHNTeWhkZ0lscjJHdzVjb213K1ZCclpZTWxPSnhlY1d6TlFaMXhoNFBySnhiSzhoYQpjR3owb3prMjM0NUpvUXQzVldCYWhZV0ZPYkNxR3QxakI5REpySnQ5c1h4ZDhqKzZIUnFpNE1FenJpSmM2WUY1ClRSUmV5NGpZeTB6K0h3a1FRbndhRFVBbzdNSkF5ZG5RZk91eW9TM3ZPVlpyTkR3dEd0M3ZoaS9oYldKMXNMZEEKNEcyUytjM0o2dVM5RlNtbXhiajExWnZ3REZYU0ZIN0RWMXpkQXFGaFVKOGp4K0FOeENEK01MbmdpSWczUVBldgpkOEVnc1hJV01DSGxwL1ZCbEpUS2FPZk5uWkdXQVpUMDNEOEFIWGpHYUVsWWVqTWRBcitVTEJHOFlObVRUL0x6ClJ3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=")
};
var config = {
ssl: keys,
};
var config2 = {
ssl: keys2,
};
config.ssl.SNICallback = function(hostname, cb) {
if (cb) // 0.11.5 and later
return cb(null, loadedKeys);
return loadedKeys; // 0.11.4 and earlier;
};
var http = require('http'), https = require('https');
var x = "1234567890";for (var i = 0; i < 12; i++) { x += x+x;}
var assert = require('assert');
var requestHandler = function(req, res) {
if(req.method != 'GET' && req.method !='POST') {
console.log("BAD req.method!!", req.method);
}
// console.log(req.headers);
if(req.method == "POST") {
// console.log(req);
res.end(x);
}
else {
res.write("<html><head><script>");
res.write('var x = "1234567890";for (var i = 0; i < 9; i++) { x += x+x;}\n');
res.write('for(var i = 0; i < 14;++i) {\n');
res.write(' var xhr = new XMLHttpRequest();\n');
res.write(' xhr.open("POST", "/upload", true);\n');
res.write(' xhr.send(x);\n');
res.write('}\n');
res.write("</script></head><body></body></html>")
res.end();
}
};
// it's funny - even though SNI prevents SPDY from running, the requests turn our garbled
// if run through spdy.createServer
var spdyServer = spdy.createServer(config.ssl,requestHandler).listen(40443);
var httpsServer = https.createServer(config2.ssl,requestHandler).listen(40444);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment