From 7d08d4e953eb06e871a2fddac3aa364005a6ce55 Mon Sep 17 00:00:00 2001 From: foldericon Date: Tue, 6 Nov 2012 06:27:55 +0100 Subject: [PATCH] fixed 0000001 --- JIRC.js | 3 + node_modules/policyfile/.npmignore | 1 + node_modules/policyfile/LICENSE | 19 + node_modules/policyfile/Makefile | 7 + node_modules/policyfile/README.md | 98 +++++ node_modules/policyfile/doc/index.html | 396 ++++++++++++++++++ .../policyfile/examples/basic.fallback.js | 8 + node_modules/policyfile/examples/basic.js | 5 + node_modules/policyfile/index.js | 1 + node_modules/policyfile/lib/server.js | 296 +++++++++++++ node_modules/policyfile/package.json | 42 ++ node_modules/policyfile/tests/ssl/ssl.crt | 21 + .../policyfile/tests/ssl/ssl.private.key | 27 ++ node_modules/policyfile/tests/unit.test.js | 231 ++++++++++ public/WebSocketMain.swf | Bin 0 -> 177126 bytes public/classes.js | 9 +- public/index.html | 2 + public/swfobject.js | 4 + public/web_socket.js | 391 +++++++++++++++++ 19 files changed, 1556 insertions(+), 5 deletions(-) create mode 100644 node_modules/policyfile/.npmignore create mode 100644 node_modules/policyfile/LICENSE create mode 100644 node_modules/policyfile/Makefile create mode 100644 node_modules/policyfile/README.md create mode 100644 node_modules/policyfile/doc/index.html create mode 100644 node_modules/policyfile/examples/basic.fallback.js create mode 100644 node_modules/policyfile/examples/basic.js create mode 100644 node_modules/policyfile/index.js create mode 100644 node_modules/policyfile/lib/server.js create mode 100644 node_modules/policyfile/package.json create mode 100644 node_modules/policyfile/tests/ssl/ssl.crt create mode 100644 node_modules/policyfile/tests/ssl/ssl.private.key create mode 100644 node_modules/policyfile/tests/unit.test.js create mode 100644 public/WebSocketMain.swf create mode 100644 public/swfobject.js create mode 100644 public/web_socket.js diff --git a/JIRC.js b/JIRC.js index f68f4e3..09541de 100644 --- a/JIRC.js +++ b/JIRC.js @@ -27,6 +27,9 @@ global.irc.loadScripts(); global.settings = ''; global.resume = ''; +var pf = require('policyfile').createServer() +pf.listen(8002); + var http = require('http'), WebSocketRequest = require('websocket').request, ws = require('websocket-server'), diff --git a/node_modules/policyfile/.npmignore b/node_modules/policyfile/.npmignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/node_modules/policyfile/.npmignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/node_modules/policyfile/LICENSE b/node_modules/policyfile/LICENSE new file mode 100644 index 0000000..bdb8f61 --- /dev/null +++ b/node_modules/policyfile/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2011 Arnout Kazemier,3rd-Eden + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/policyfile/Makefile b/node_modules/policyfile/Makefile new file mode 100644 index 0000000..1362d66 --- /dev/null +++ b/node_modules/policyfile/Makefile @@ -0,0 +1,7 @@ +doc: + dox --title "FlashPolicyFileServer" lib/* > doc/index.html + +test: + expresso -I lib $(TESTFLAGS) tests/*.test.js + +.PHONY: test doc \ No newline at end of file diff --git a/node_modules/policyfile/README.md b/node_modules/policyfile/README.md new file mode 100644 index 0000000..527921e --- /dev/null +++ b/node_modules/policyfile/README.md @@ -0,0 +1,98 @@ +## LOL, WUT? +It basically allows you to allow or disallow Flash Player sockets from accessing your site. + +## Installation + +```bash +npm install policyfile +``` +## Usage + +The server is based on the regular and know `net` and `http` server patterns. So it you can just listen +for all the events that a `net` based server emits etc. But there is one extra event, the `connect_failed` +event. This event is triggered when we are unable to listen on the supplied port number. + +### createServer +Creates a new server instance and accepts 2 optional arguments: + +- `options` **Object** Options to configure the server instance + - `log` **Boolean** Enable logging to STDOUT and STDERR (defaults to true) +- `origins` **Array** An Array of origins that are allowed by the server (defaults to *:*) + +```js +var pf = require('policyfile'); +pf.createServer(); +pf.listen(); +``` + +#### server.listen +Start listening on the server and it takes 3 optional arguments + +- `port` **Number** On which port number should we listen? (defaults to 843, which is the first port number the FlashPlayer checks) +- `server` **Server** A http server, if we are unable to accept requests or run the server we can also answer the policy requests inline over the supplied HTTP server. +- `callback` **Function** A callback function that is called when listening to the server was successful. + +```js +var pf = require('policyfile'); +pf.createServer(); +pf.listen(1337, function(){ + console.log(':3 yay') +}); +``` + +Changing port numbers can be handy if you do not want to run your server as root and have port 843 forward to a non root port number (aka a number above 1024). + +```js +var pf = require('policyfile') + , http = require('http'); + +server = http.createServer(function(q,r){r.writeHead(200);r.end('hello world')}); +server.listen(80); + +pf.createServer(); +pf.listen(1337, server, function(){ + console.log(':3 yay') +}); +``` + +Support for serving inline requests over a existing HTTP connection as the FlashPlayer will first check port 843, but if it's unable to get a response there it will send a policy file request over port 80, which is usually your http server. + +#### server.add +Adds more origins to the policy file you can add as many arguments as you like. + +```js +var pf = require('policyfile'); +pf.createServer(['google.com:80']); +pf.listen(); +pf.add('blog.3rd-Eden.com:80', 'blog.3rd-Eden.com:8080'); // now has 3 origins +``` + +#### server.add +Adds more origins to the policy file you can add as many arguments as you like. + +```js +var pf = require('policyfile'); +pf.createServer(['blog.3rd-Eden.com:80', 'blog.3rd-Eden.com:8080']); +pf.listen(); +pf.remove('blog.3rd-Eden.com:8080'); // only contains the :80 version now +``` + +#### server.close +Shuts down the server + +```js +var pf = require('policyfile'); +pf.createServer(); +pf.listen(); +pf.close(); // OH NVM. +``` + +## API +http://3rd-eden.com/FlashPolicyFileServer/ + +## Examples +See https://github.com/3rd-Eden/FlashPolicyFileServer/tree/master/examples for examples + +## Licence + +MIT see LICENSE file in the repository \ No newline at end of file diff --git a/node_modules/policyfile/doc/index.html b/node_modules/policyfile/doc/index.html new file mode 100644 index 0000000..711eb2b --- /dev/null +++ b/node_modules/policyfile/doc/index.html @@ -0,0 +1,396 @@ + + + FlashPolicyFileServer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

FlashPolicyFileServer

server

lib/server.js
+

Module dependencies and cached references. +

+
+
var slice = Array.prototype.slice
+  , net = require('net');
+
+

The server that does the Policy File severing

+ +

Options

+ +
  • log false or a function that can output log information, defaults to console.log?
+ +

+ +
  • param: Object options Options to customize the servers functionality.

  • param: Array origins The origins that are allowed on this server, defaults to *:*.

  • api: public

+
+
function Server (options, origins) {
+  var me = this;
+
+  this.origins = origins || ['*:*'];
+  this.port = 843;
+  this.log = console.log;
+
+  // merge `this` with the options
+  Object.keys(options).forEach(function (key) {
+    me[key] && (me[key] = options[key])
+  });
+
+  // create the net server
+  this.socket = net.createServer(function createServer (socket) {
+    socket.on('error', function socketError () { 
+      me.responder.call(me, socket);
+    });
+
+    me.responder.call(me, socket);
+  });
+
+  // Listen for errors as the port might be blocked because we do not have root priv.
+  this.socket.on('error', function serverError (err) {
+    // Special and common case error handling
+    if (err.errno == 13) {
+      me.log && me.log(
+        'Unable to listen to port `' + me.port + '` as your Node.js instance does not have root privileges. ' +
+        (
+          me.server
+          ? 'The Flash Policy File requests will only be served inline over the supplied HTTP server. Inline serving is slower than a dedicated server instance.'
+          : 'No fallback server supplied, we will be unable to answer Flash Policy File requests.'
+        )
+      );
+
+      me.emit('connect_failed', err);
+      me.socket.removeAllListeners();
+      delete me.socket;
+    } else {
+      me.log && me.log('FlashPolicyFileServer received an error event:\n' + (err.message ? err.message : err));
+    }
+  });
+
+  this.socket.on('timeout', function serverTimeout () {});
+  this.socket.on('close', function serverClosed (err) {
+    err && me.log && me.log('Server closing due to an error: \n' + (err.message ? err.message : err));
+
+    if (me.server) {
+      // Remove the inline policy listener if we close down
+      // but only when the server was `online` (see listen prototype)
+      if (me.server['@'] && me.server.online) {
+        me.server.removeListener('connection', me.server['@']);
+      }
+
+      // not online anymore
+      delete me.server.online;
+    }
+  });
+
+  // Compile the initial `buffer`
+  this.compile();
+}
+
+

Start listening for requests

+ +

+ +
  • param: Number port The port number it should be listening to.

  • param: Server server A HTTP server instance, this will be used to listen for inline requests

  • param: Function cb The callback needs to be called once server is ready

  • api: public

+
+
Server.prototype.listen = function listen (port, server, cb){
+  var me = this
+    , args = slice.call(arguments, 0)
+    , callback;
+ 
+  // assign the correct vars, for flexible arguments
+  args.forEach(function args (arg){
+    var type = typeof arg;
+
+    if (type === 'number') me.port = arg;
+    if (type === 'function') callback = arg;
+    if (type === 'object') me.server = arg;
+  });
+
+  if (this.server) {
+
+    // no one in their right mind would ever create a `@` prototype, so Im just gonna store
+    // my function on the server, so I can remove it later again once the server(s) closes
+    this.server['@'] = function connection (socket) {
+      socket.once('data', function requestData (data) {
+        // if it's a Flash policy request, and we can write to the 
+        if (
+             data
+          && data[0] === 60
+          &amp;&amp; data.toString() === '<policy-file-request/>\0'
+          &amp;&amp; socket
+          &amp;&amp; (socket.readyState === 'open' || socket.readyState === 'writeOnly')
+        ){
+          // send the buffer
+          try { socket.end(me.buffer); }
+          catch (e) {}
+        }
+      });
+    };
+
+    // attach it
+    this.server.on('connection', this.server['@']);
+  }
+
+  // We add a callback method, so we can set a flag for when the server is `enabled` or `online`.
+  // this flag is needed because if a error occurs and the we cannot boot up the server the
+  // fallback functionality should not be removed during the `close` event
+  this.port &gt;= 0 &amp;&amp; this.socket.listen(this.port, function serverListening () {
+    me.socket.online = true;
+    if (callback) {
+      callback.call(me);
+      callback = undefined;
+    }
+  });
+
+  return this;
+};
+
+

Adds a new origin to the Flash Policy File.

+ +

+ +
  • param: Arguments The origins that need to be added.

  • api: public

+
+
Server.prototype.add = function add(){
+  var args = slice.call(arguments, 0)
+    , i = args.length;
+
+  // flag duplicates
+  while (i--) {
+    if (this.origins.indexOf(args[i]) &gt;= 0){
+      args[i] = null;
+    }
+  }
+
+  // Add all the arguments to the array
+  // but first we want to remove all `falsy` values from the args
+  Array.prototype.push.apply(
+    this.origins
+  , args.filter(function filter (value) {
+      return !!value;
+    })
+  );
+
+  this.compile();
+  return this;
+};
+
+

Removes a origin from the Flash Policy File.

+ +

+ +
  • param: String origin The origin that needs to be removed from the server

  • api: public

+
+
Server.prototype.remove = function remove (origin){
+  var position = this.origins.indexOf(origin);
+
+  // only remove and recompile if we have a match
+  if (position &gt; 0) {
+    this.origins.splice(position, 1);
+    this.compile();
+  }
+
+  return this;
+};
+
+

Closes and cleans up the server

+ +
  • api: public

+
+
Server.prototype.close = function close () {
+  this.socket.removeAllListeners();
+  try { this.socket.close(); }
+  catch (e) {}
+
+  return this;
+};
+
+

Proxy the event listener requests to the created Net server +

+
+
Object.keys(process.EventEmitter.prototype).forEach(function proxy (key){
+  Server.prototype[key] = Server.prototype[key] || function () {
+    if (this.socket) {
+      this.socket[key].apply(this.socket, arguments);
+    }
+
+    return this;
+  };
+});
+
+

Creates a new server instance.

+ +

+ +
  • param: Object options A options object to override the default config

  • param: Array origins The origins that should be allowed by the server

  • api: public

+
+
exports.createServer = function createServer (options, origins) {
+  origins = Array.isArray(origins)
+      ? origins
+      : (Array.isArray(options) ? options : false);
+
+  options = !Array.isArray(options) &amp;&amp; options 
+      ? options
+      : {};
+
+  return new Server(options, origins);
+};
+
+

Provide a hook to the original server, so it can be extended if needed.

+ +

+ +
  • type: Net.Server

+
+
exports.Server = Server;
+
+

Module version

+ +

+ +
  • type: String

+
+
exports.version = '0.0.5';
+
+
\ No newline at end of file diff --git a/node_modules/policyfile/examples/basic.fallback.js b/node_modules/policyfile/examples/basic.fallback.js new file mode 100644 index 0000000..b439449 --- /dev/null +++ b/node_modules/policyfile/examples/basic.fallback.js @@ -0,0 +1,8 @@ +var http = require('http') + , fspfs = require('../'); + +var server = http.createServer(function(q,r){ r.writeHead(200); r.end(':3') }) + , flash = fspfs.createServer(); + +server.listen(8080); +flash.listen(8081,server); \ No newline at end of file diff --git a/node_modules/policyfile/examples/basic.js b/node_modules/policyfile/examples/basic.js new file mode 100644 index 0000000..5e2290f --- /dev/null +++ b/node_modules/policyfile/examples/basic.js @@ -0,0 +1,5 @@ +var http = require('http') + , fspfs = require('../'); + +var flash = fspfs.createServer(); +flash.listen(); \ No newline at end of file diff --git a/node_modules/policyfile/index.js b/node_modules/policyfile/index.js new file mode 100644 index 0000000..60cf298 --- /dev/null +++ b/node_modules/policyfile/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/server.js'); \ No newline at end of file diff --git a/node_modules/policyfile/lib/server.js b/node_modules/policyfile/lib/server.js new file mode 100644 index 0000000..90b1883 --- /dev/null +++ b/node_modules/policyfile/lib/server.js @@ -0,0 +1,296 @@ +/** + * Module dependencies and cached references. + */ + +var slice = Array.prototype.slice + , net = require('net'); + +/** + * The server that does the Policy File severing + * + * Options: + * - `log` false or a function that can output log information, defaults to console.log? + * + * @param {Object} options Options to customize the servers functionality. + * @param {Array} origins The origins that are allowed on this server, defaults to `*:*`. + * @api public + */ + +function Server (options, origins) { + var me = this; + + this.origins = origins || ['*:*']; + this.port = 843; + this.log = console.log; + + // merge `this` with the options + Object.keys(options).forEach(function (key) { + me[key] && (me[key] = options[key]) + }); + + // create the net server + this.socket = net.createServer(function createServer (socket) { + socket.on('error', function socketError () { + me.responder.call(me, socket); + }); + + me.responder.call(me, socket); + }); + + // Listen for errors as the port might be blocked because we do not have root priv. + this.socket.on('error', function serverError (err) { + // Special and common case error handling + if (err.errno == 13) { + me.log && me.log( + 'Unable to listen to port `' + me.port + '` as your Node.js instance does not have root privileges. ' + + ( + me.server + ? 'The Flash Policy File requests will only be served inline over the supplied HTTP server. Inline serving is slower than a dedicated server instance.' + : 'No fallback server supplied, we will be unable to answer Flash Policy File requests.' + ) + ); + + me.emit('connect_failed', err); + me.socket.removeAllListeners(); + delete me.socket; + } else { + me.log && me.log('FlashPolicyFileServer received an error event:\n' + (err.message ? err.message : err)); + } + }); + + this.socket.on('timeout', function serverTimeout () {}); + this.socket.on('close', function serverClosed (err) { + err && me.log && me.log('Server closing due to an error: \n' + (err.message ? err.message : err)); + + if (me.server) { + // Remove the inline policy listener if we close down + // but only when the server was `online` (see listen prototype) + if (me.server['@'] && me.server.online) { + me.server.removeListener('connection', me.server['@']); + } + + // not online anymore + delete me.server.online; + } + }); + + // Compile the initial `buffer` + this.compile(); +} + +/** + * Start listening for requests + * + * @param {Number} port The port number it should be listening to. + * @param {Server} server A HTTP server instance, this will be used to listen for inline requests + * @param {Function} cb The callback needs to be called once server is ready + * @api public + */ + +Server.prototype.listen = function listen (port, server, cb){ + var me = this + , args = slice.call(arguments, 0) + , callback; + + // assign the correct vars, for flexible arguments + args.forEach(function args (arg){ + var type = typeof arg; + + if (type === 'number') me.port = arg; + if (type === 'function') callback = arg; + if (type === 'object') me.server = arg; + }); + + if (this.server) { + + // no one in their right mind would ever create a `@` prototype, so Im just gonna store + // my function on the server, so I can remove it later again once the server(s) closes + this.server['@'] = function connection (socket) { + socket.once('data', function requestData (data) { + // if it's a Flash policy request, and we can write to the + if ( + data + && data[0] === 60 + && data.toString() === '\0' + && socket + && (socket.readyState === 'open' || socket.readyState === 'writeOnly') + ){ + // send the buffer + try { socket.end(me.buffer); } + catch (e) {} + } + }); + }; + + // attach it + this.server.on('connection', this.server['@']); + } + + // We add a callback method, so we can set a flag for when the server is `enabled` or `online`. + // this flag is needed because if a error occurs and the we cannot boot up the server the + // fallback functionality should not be removed during the `close` event + this.port >= 0 && this.socket.listen(this.port, function serverListening () { + me.socket.online = true; + if (callback) { + callback.call(me); + callback = undefined; + } + }); + + return this; +}; + +/** + * Responds to socket connects and writes the compile policy file. + * + * @param {net.Socket} socket The socket that needs to receive the message + * @api private + */ + +Server.prototype.responder = function responder (socket){ + if (socket && socket.readyState == 'open' && socket.end) { + try { socket.end(this.buffer); } + catch (e) {} + } +}; + +/** + * Compiles the supplied origins to a Flash Policy File format and stores it in a Node.js Buffer + * this way it can be send over the wire without any performance loss. + * + * @api private + */ + +Server.prototype.compile = function compile (){ + var xml = [ + '' + , '' + , '' + ]; + + // add the allow access element + this.origins.forEach(function origin (origin){ + var parts = origin.split(':'); + xml.push(''); + }); + + xml.push(''); + + // store the result in a buffer so we don't have to re-generate it all the time + this.buffer = new Buffer(xml.join(''), 'utf8'); + + return this; +}; + +/** + * Adds a new origin to the Flash Policy File. + * + * @param {Arguments} The origins that need to be added. + * @api public + */ + +Server.prototype.add = function add(){ + var args = slice.call(arguments, 0) + , i = args.length; + + // flag duplicates + while (i--) { + if (this.origins.indexOf(args[i]) >= 0){ + args[i] = null; + } + } + + // Add all the arguments to the array + // but first we want to remove all `falsy` values from the args + Array.prototype.push.apply( + this.origins + , args.filter(function filter (value) { + return !!value; + }) + ); + + this.compile(); + return this; +}; + +/** + * Removes a origin from the Flash Policy File. + * + * @param {String} origin The origin that needs to be removed from the server + * @api public + */ + +Server.prototype.remove = function remove (origin){ + var position = this.origins.indexOf(origin); + + // only remove and recompile if we have a match + if (position > 0) { + this.origins.splice(position, 1); + this.compile(); + } + + return this; +}; + +/** + * Closes and cleans up the server + * + * @api public + */ + +Server.prototype.close = function close () { + this.socket.removeAllListeners(); + try { this.socket.close(); } + catch (e) {} + + return this; +}; + +/** + * Proxy the event listener requests to the created Net server + */ + +Object.keys(process.EventEmitter.prototype).forEach(function proxy (key){ + Server.prototype[key] = Server.prototype[key] || function () { + if (this.socket) { + this.socket[key].apply(this.socket, arguments); + } + + return this; + }; +}); + +/** + * Creates a new server instance. + * + * @param {Object} options A options object to override the default config + * @param {Array} origins The origins that should be allowed by the server + * @api public + */ +exports.createServer = function createServer (options, origins) { + origins = Array.isArray(origins) + ? origins + : (Array.isArray(options) ? options : false); + + options = !Array.isArray(options) && options + ? options + : {}; + + return new Server(options, origins); +}; + +/** + * Provide a hook to the original server, so it can be extended if needed. + * + * @type {Net.Server} + */ + +exports.Server = Server; + +/** + * Module version + * + * @type {String} + */ + +exports.version = '0.0.5'; diff --git a/node_modules/policyfile/package.json b/node_modules/policyfile/package.json new file mode 100644 index 0000000..50bf224 --- /dev/null +++ b/node_modules/policyfile/package.json @@ -0,0 +1,42 @@ +{ + "name": "policyfile", + "version": "0.0.5", + "author": { + "name": "Arnout Kazemier" + }, + "description": "Flash Socket Policy File Server. A server to respond to Flash Socket Policy requests, both inline and through a dedicated server instance.", + "main": "index", + "keywords": [ + "flash", + "socket", + "policy", + "file", + "server", + "Flash Socket Policy File Server", + "cross domain" + ], + "directories": { + "lib": "./lib" + }, + "maintainers": [ + { + "name": "Arnout Kazemier", + "email": "info@3rd-Eden.com", + "url": "http://blog.3rd-Eden.com" + } + ], + "license": { + "type": "MIT", + "url": "https://github.com/3rd-Eden/FlashPolicyFileServer/blob/master/LICENSE" + }, + "repository": { + "type": "git", + "url": "https://github.com/3rd-Eden/FlashPolicyFileServer.git" + }, + "readme": "## LOL, WUT?\nIt basically allows you to allow or disallow Flash Player sockets from accessing your site.\n\n## Installation\n\n```bash\nnpm install policyfile\n```\n## Usage\n\nThe server is based on the regular and know `net` and `http` server patterns. So it you can just listen\nfor all the events that a `net` based server emits etc. But there is one extra event, the `connect_failed`\nevent. This event is triggered when we are unable to listen on the supplied port number.\n\n### createServer\nCreates a new server instance and accepts 2 optional arguments:\n\n- `options` **Object** Options to configure the server instance\n - `log` **Boolean** Enable logging to STDOUT and STDERR (defaults to true)\n- `origins` **Array** An Array of origins that are allowed by the server (defaults to *:*)\n\n```js\nvar pf = require('policyfile');\npf.createServer();\npf.listen();\n```\n\n#### server.listen\nStart listening on the server and it takes 3 optional arguments\n\n- `port` **Number** On which port number should we listen? (defaults to 843, which is the first port number the FlashPlayer checks)\n- `server` **Server** A http server, if we are unable to accept requests or run the server we can also answer the policy requests inline over the supplied HTTP server.\n- `callback` **Function** A callback function that is called when listening to the server was successful.\n\n```js\nvar pf = require('policyfile');\npf.createServer();\npf.listen(1337, function(){\n console.log(':3 yay')\n});\n```\n\nChanging port numbers can be handy if you do not want to run your server as root and have port 843 forward to a non root port number (aka a number above 1024).\n\n```js\nvar pf = require('policyfile')\n , http = require('http');\n\nserver = http.createServer(function(q,r){r.writeHead(200);r.end('hello world')});\nserver.listen(80);\n\npf.createServer();\npf.listen(1337, server, function(){\n console.log(':3 yay')\n});\n```\n\nSupport for serving inline requests over a existing HTTP connection as the FlashPlayer will first check port 843, but if it's unable to get a response there it will send a policy file request over port 80, which is usually your http server.\n\n#### server.add\nAdds more origins to the policy file you can add as many arguments as you like.\n\n```js\nvar pf = require('policyfile');\npf.createServer(['google.com:80']);\npf.listen();\npf.add('blog.3rd-Eden.com:80', 'blog.3rd-Eden.com:8080'); // now has 3 origins\n```\n\n#### server.add\nAdds more origins to the policy file you can add as many arguments as you like.\n\n```js\nvar pf = require('policyfile');\npf.createServer(['blog.3rd-Eden.com:80', 'blog.3rd-Eden.com:8080']);\npf.listen();\npf.remove('blog.3rd-Eden.com:8080'); // only contains the :80 version now\n```\n\n#### server.close\nShuts down the server\n\n```js\nvar pf = require('policyfile');\npf.createServer();\npf.listen();\npf.close(); // OH NVM.\n```\n\n## API\nhttp://3rd-eden.com/FlashPolicyFileServer/\n\n## Examples\nSee https://github.com/3rd-Eden/FlashPolicyFileServer/tree/master/examples for examples\n\n## Licence\n\nMIT see LICENSE file in the repository", + "_id": "policyfile@0.0.5", + "dist": { + "shasum": "addf35d209b6a1071b110aff2294644324885f04" + }, + "_from": "policyfile" +} diff --git a/node_modules/policyfile/tests/ssl/ssl.crt b/node_modules/policyfile/tests/ssl/ssl.crt new file mode 100644 index 0000000..5883cd4 --- /dev/null +++ b/node_modules/policyfile/tests/ssl/ssl.crt @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDXTCCAkWgAwIBAgIJAMUSOvlaeyQHMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV +BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX +aWRnaXRzIFB0eSBMdGQwHhcNMTAxMTE2MDkzMjQ5WhcNMTMxMTE1MDkzMjQ5WjBF +MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50 +ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAz+LXZOjcQCJq3+ZKUFabj71oo/ex/XsBcFqtBThjjTw9CVEVwfPQQp4X +wtPiB204vnYXwQ1/R2NdTQqCZu47l79LssL/u2a5Y9+0NEU3nQA5qdt+1FAE0c5o +exPimXOrR3GWfKz7PmZ2O0117IeCUUXPG5U8umhDe/4mDF4ZNJiKc404WthquTqg +S7rLQZHhZ6D0EnGnOkzlmxJMYPNHSOY1/6ivdNUUcC87awNEA3lgfhy25IyBK3QJ +c+aYKNTbt70Lery3bu2wWLFGtmNiGlQTS4JsxImRsECTI727ObS7/FWAQsqW+COL +0Sa5BuMFrFIpjPrEe0ih7vRRbdmXRwIDAQABo1AwTjAdBgNVHQ4EFgQUDnV4d6mD +tOnluLoCjkUHTX/n4agwHwYDVR0jBBgwFoAUDnV4d6mDtOnluLoCjkUHTX/n4agw +DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAFwV4MQfTo+qMv9JMiyno +IEiqfOz4RgtmBqRnXUffcjS2dhc7/z+FPZnM79Kej8eLHoVfxCyWRHFlzm93vEdv +wxOCrD13EDOi08OOZfxWyIlCa6Bg8cMAKqQzd2OvQOWqlRWBTThBJIhWflU33izX +Qn5GdmYqhfpc+9ZHHGhvXNydtRQkdxVK2dZNzLBvBlLlRmtoClU7xm3A+/5dddeP +AQHEPtyFlUw49VYtZ3ru6KqPms7MKvcRhYLsy9rwSfuuniMlx4d0bDR7TOkw0QQS +A0N8MGQRQpzl4mw4jLzyM5d5QtuGBh2P6hPGa0YQxtI3RPT/p6ENzzBiAKXiSfzo +xw== +-----END CERTIFICATE----- diff --git a/node_modules/policyfile/tests/ssl/ssl.private.key b/node_modules/policyfile/tests/ssl/ssl.private.key new file mode 100644 index 0000000..f31ff3d --- /dev/null +++ b/node_modules/policyfile/tests/ssl/ssl.private.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAz+LXZOjcQCJq3+ZKUFabj71oo/ex/XsBcFqtBThjjTw9CVEV +wfPQQp4XwtPiB204vnYXwQ1/R2NdTQqCZu47l79LssL/u2a5Y9+0NEU3nQA5qdt+ +1FAE0c5oexPimXOrR3GWfKz7PmZ2O0117IeCUUXPG5U8umhDe/4mDF4ZNJiKc404 +WthquTqgS7rLQZHhZ6D0EnGnOkzlmxJMYPNHSOY1/6ivdNUUcC87awNEA3lgfhy2 +5IyBK3QJc+aYKNTbt70Lery3bu2wWLFGtmNiGlQTS4JsxImRsECTI727ObS7/FWA +QsqW+COL0Sa5BuMFrFIpjPrEe0ih7vRRbdmXRwIDAQABAoIBAGe4+9VqZfJN+dsq +8Osyuz01uQ8OmC0sAWTIqUlQgENIyf9rCJsUBlYmwR5BT6Z69XP6QhHdpSK+TiAR +XUz0EqG9HYzcxHIBaACP7j6iRoQ8R4kbbiWKo0z3WqQGIOqFjvD/mKEuQdE5mEYw +eOUCG6BnX1WY2Yr8WKd2AA/tp0/Y4d8z04u9eodMpSTbHTzYMJb5SbBN1vo6FY7q +8zSuO0BMzXlAxUsCwHsk1GQHFr8Oh3zIR7bQGtMBouI+6Lhh7sjFYsfxJboqMTBV +IKaA216M6ggHG7MU1/jeKcMGDmEfqQLQoyWp29rMK6TklUgipME2L3UD7vTyAVzz +xbVOpZkCgYEA8CXW4sZBBrSSrLR5SB+Ubu9qNTggLowOsC/kVKB2WJ4+xooc5HQo +mFhq1v/WxPQoWIxdYsfg2odlL+JclK5Qcy6vXmRSdAQ5lK9gBDKxZSYc3NwAw2HA +zyHCTK+I0n8PBYQ+yGcrxu0WqTGnlLW+Otk4CejO34WlgHwbH9bbY5UCgYEA3ZvT +C4+OoMHXlmICSt29zUrYiL33IWsR3/MaONxTEDuvgkOSXXQOl/8Ebd6Nu+3WbsSN +bjiPC/JyL1YCVmijdvFpl4gjtgvfJifs4G+QHvO6YfsYoVANk4u6g6rUuBIOwNK4 +RwYxwDc0oysp+g7tPxoSgDHReEVKJNzGBe9NGGsCgYEA4O4QP4gCEA3B9BF2J5+s +n9uPVxmiyvZUK6Iv8zP4pThTBBMIzNIf09G9AHPQ7djikU2nioY8jXKTzC3xGTHM +GJZ5m6fLsu7iH+nDvSreDSeNkTBfZqGAvoGYQ8uGE+L+ZuRfCcXYsxIOT5s6o4c3 +Dle2rVFpsuKzCY00urW796ECgYBn3go75+xEwrYGQSer6WR1nTgCV29GVYXKPooy +zmmMOT1Yw80NSkEw0pFD4cTyqVYREsTrPU0mn1sPfrOXxnGfZSVFpcR/Je9QVfQ7 +eW7GYxwfom335aqHVj10SxRqteP+UoWWnHujCPz94VRKZMakBddYCIGSan+G6YdS +7sdmwwKBgBc2qj0wvGXDF2kCLwSGfWoMf8CS1+5fIiUIdT1e/+7MfDdbmLMIFVjF +QKS3zVViXCbrG5SY6wS9hxoc57f6E2A8vcaX6zy2xkZlGHQCpWRtEM5R01OWJQaH +HsHMmQZGUQVoDm1oRkDhrTFK4K3ukc3rAxzeTZ96utOQN8/KJsTv +-----END RSA PRIVATE KEY----- diff --git a/node_modules/policyfile/tests/unit.test.js b/node_modules/policyfile/tests/unit.test.js new file mode 100644 index 0000000..932b3c1 --- /dev/null +++ b/node_modules/policyfile/tests/unit.test.js @@ -0,0 +1,231 @@ +var fspfs = require('../') + , fs = require('fs') + , http = require('http') + , https = require('https') + , net = require('net') + , should = require('should') + , assert = require('assert'); + +module.exports = { + // Library version should be Semver compatible + 'Library version': function(){ + fspfs.version.should.match(/^\d+\.\d+\.\d+$/); + } + + // Creating a server instace should not cause any problems + // either using the new Server or createServer method. +, 'Create Server instance': function(){ + var server = fspfs.createServer() + , server2 = new fspfs.Server({log:false}, ['blog.3rd-Eden.com:1337']); + + // server 2 options test + server2.log.should.be.false; + server2.origins.length.should.equal(1); + server2.origins[0].should.equal('blog.3rd-Eden.com:1337'); + + // server defaults + (typeof server.log).should.be.equal('function'); + server.origins.length.should.equal(1); + server.origins[0].should.equal('*:*'); + + // instance checking, sanity check + assert.ok(server instanceof fspfs.Server); + assert.ok(!!server.buffer); + + // more options testing + server = fspfs.createServer(['blog.3rd-Eden.com:80']); + server.origins.length.should.equal(1); + server.origins[0].should.equal('blog.3rd-Eden.com:80'); + + server = fspfs.createServer({log:false},['blog.3rd-Eden.com:80']); + server.log.should.be.false; + server.origins.length.should.equal(1); + server.origins[0].should.equal('blog.3rd-Eden.com:80'); + + } + +, 'Add origin': function(){ + var server = fspfs.createServer(); + server.add('google.com:80', 'blog.3rd-Eden.com:1337'); + + server.origins.length.should.equal(3); + server.origins.indexOf('google.com:80').should.be.above(0); + + // don't allow duplicates + server.add('google.com:80', 'google.com:80'); + + var i = server.origins.length + , count = 0; + + while(i--){ + if (server.origins[i] === 'google.com:80'){ + count++; + } + } + + count.should.equal(1); + } + +, 'Remove origin': function(){ + var server = fspfs.createServer(); + server.add('google.com:80', 'blog.3rd-Eden.com:1337'); + server.origins.length.should.equal(3); + + server.remove('google.com:80'); + server.origins.length.should.equal(2); + server.origins.indexOf('google.com:80').should.equal(-1); + } + +, 'Buffer': function(){ + var server = fspfs.createServer(); + + Buffer.isBuffer(server.buffer).should.be.true; + server.buffer.toString().indexOf('to-ports="*"').should.be.above(0); + server.buffer.toString().indexOf('domain="*"').should.be.above(0); + server.buffer.toString().indexOf('domain="google.com"').should.equal(-1); + + // The buffers should be rebuild when new origins are added + server.add('google.com:80'); + server.buffer.toString().indexOf('to-ports="80"').should.be.above(0); + server.buffer.toString().indexOf('domain="google.com"').should.be.above(0); + + server.remove('google.com:80'); + server.buffer.toString().indexOf('to-ports="80"').should.equal(-1); + server.buffer.toString().indexOf('domain="google.com"').should.equal(-1); + } + +, 'Responder': function(){ + var server = fspfs.createServer() + , calls = 0 + // dummy socket to emulate a `real` socket + , dummySocket = { + readyState: 'open' + , end: function(buffer){ + calls++; + Buffer.isBuffer(buffer).should.be.true; + buffer.toString().should.equal(server.buffer.toString()); + } + }; + + server.responder(dummySocket); + calls.should.equal(1); + } + +, 'Event proxy': function(){ + var server = fspfs.createServer() + , calls = 0; + + Object.keys(process.EventEmitter.prototype).forEach(function proxy(key){ + assert.ok(!!server[key] && typeof server[key] === 'function'); + }); + + // test if it works by calling a none default event + server.on('pew', function(){ + calls++; + }); + + server.emit('pew'); + calls.should.equal(1); + } + +, 'inline response http': function(){ + var port = 1335 + , httpserver = http.createServer(function(q,r){r.writeHead(200);r.end(':3')}) + , server = fspfs.createServer(); + + httpserver.listen(port, function(){ + server.listen(port + 1, httpserver, function(){ + var client = net.createConnection(port); + client.write('\0'); + client.on('error', function(err){ + assert.ok(!err, err) + }); + client.on('data', function(data){ + + var response = data.toString(); + console.log(response); + + response.indexOf('to-ports="*"').should.be.above(0); + response.indexOf('domain="*"').should.be.above(0); + response.indexOf('domain="google.com"').should.equal(-1); + + // clean up + client.destroy(); + server.close(); + httpserver.close(); + }); + }); + }); + } + +, 'server response': function(){ + var port = 1340 + , server = fspfs.createServer(); + + server.listen(port, function(){ + var client = net.createConnection(port); + client.write('\0'); + client.on('error', function(err){ + assert.ok(!err, err) + }); + client.on('data', function(data){ + + var response = data.toString(); + + response.indexOf('to-ports="*"').should.be.above(0); + response.indexOf('domain="*"').should.be.above(0); + response.indexOf('domain="google.com"').should.equal(-1); + + // clean up + client.destroy(); + server.close(); + }); + }); + } + +, 'inline response https': function(){ + var port = 1345 + , ssl = { + key: fs.readFileSync(__dirname + '/ssl/ssl.private.key').toString() + , cert: fs.readFileSync(__dirname + '/ssl/ssl.crt').toString() + } + , httpserver = https.createServer(ssl, function(q,r){r.writeHead(200);r.end(':3')}) + , server = fspfs.createServer(); + + httpserver.listen(port, function(){ + server.listen(port + 1, httpserver, function(){ + var client = net.createConnection(port); + client.write('\0'); + client.on('error', function(err){ + assert.ok(!err, err) + }); + client.on('data', function(data){ + + var response = data.toString(); + + response.indexOf('to-ports="*"').should.be.above(0); + response.indexOf('domain="*"').should.be.above(0); + response.indexOf('domain="google.com"').should.equal(-1); + + // clean up + client.destroy(); + server.close(); + httpserver.close(); + }); + }); + }); + } + +, 'connect_failed': function(){ + var server = fspfs.createServer(); + + server.on('connect_failed', function(){ + assert.ok(true); + }); + + server.listen(function(){ + assert.ok(false, 'Run this test without root access'); + server.close(); + }); + } +}; \ No newline at end of file diff --git a/public/WebSocketMain.swf b/public/WebSocketMain.swf new file mode 100644 index 0000000000000000000000000000000000000000..7b31ff67d33b6cc00bbd88b24589c25053ea3e6a GIT binary patch literal 177126 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 R`>fH)rs!eg)dwQ({x1O`uUY^A literal 0 HcmV?d00001 diff --git a/public/classes.js b/public/classes.js index 4ad2e00..7396fa7 100644 --- a/public/classes.js +++ b/public/classes.js @@ -1,4 +1,4 @@ - + WEB_SOCKET_SWF_LOCATION = "WebSocketMain.swf"; var Emoticons=[]; var settings=new Object(); // {"invite":"ask","growlip":"","growlpw":"","prowlkey":"","prowlpriority":"","nmakey":"","nmapriority":""}; @@ -1101,7 +1101,7 @@ var Utf8 = { } function connect(data){ - IRCConnection.data=data; + IRCConnection.data=data; nickname = data[3]; var panel = createTaskPanel(); // var objStatus = Object.create(Channel).init('status'); @@ -1114,8 +1114,7 @@ var Utf8 = { // input.hide(); // $('span').hide(); return; - } - + } connection = new WebSocket(location.href.split('http://').join('ws://')); connection.win = win; connection.onopen = function () { @@ -1158,4 +1157,4 @@ var Utf8 = { } -}( window.IRCConnection = window.IRCConnection || {})); \ No newline at end of file +}( window.IRCConnection = window.IRCConnection || {})); diff --git a/public/index.html b/public/index.html index 5893d8e..e144e90 100644 --- a/public/index.html +++ b/public/index.html @@ -12,6 +12,8 @@ + + diff --git a/public/swfobject.js b/public/swfobject.js new file mode 100644 index 0000000..8eafe9d --- /dev/null +++ b/public/swfobject.js @@ -0,0 +1,4 @@ +/* SWFObject v2.2 + is released under the MIT License +*/ +var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y0){for(var af=0;af0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad'}}aa.outerHTML='"+af+"";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab +// License: New BSD License +// Reference: http://dev.w3.org/html5/websockets/ +// Reference: http://tools.ietf.org/html/rfc6455 + +(function() { + + if (window.WEB_SOCKET_FORCE_FLASH) { + // Keeps going. + } else if (window.WebSocket) { + return; + } else if (window.MozWebSocket) { + // Firefox. + window.WebSocket = MozWebSocket; + return; + } + + var logger; + if (window.WEB_SOCKET_LOGGER) { + logger = WEB_SOCKET_LOGGER; + } else if (window.console && window.console.log && window.console.error) { + // In some environment, console is defined but console.log or console.error is missing. + logger = window.console; + } else { + logger = {log: function(){ }, error: function(){ }}; + } + + // swfobject.hasFlashPlayerVersion("10.0.0") doesn't work with Gnash. + if (swfobject.getFlashPlayerVersion().major < 10) { + logger.error("Flash Player >= 10.0.0 is required."); + return; + } + if (location.protocol == "file:") { + logger.error( + "WARNING: web-socket-js doesn't work in file:///... URL " + + "unless you set Flash Security Settings properly. " + + "Open the page via Web server i.e. http://..."); + } + + /** + * Our own implementation of WebSocket class using Flash. + * @param {string} url + * @param {array or string} protocols + * @param {string} proxyHost + * @param {int} proxyPort + * @param {string} headers + */ + window.WebSocket = function(url, protocols, proxyHost, proxyPort, headers) { + var self = this; + self.__id = WebSocket.__nextId++; + WebSocket.__instances[self.__id] = self; + self.readyState = WebSocket.CONNECTING; + self.bufferedAmount = 0; + self.__events = {}; + if (!protocols) { + protocols = []; + } else if (typeof protocols == "string") { + protocols = [protocols]; + } + // Uses setTimeout() to make sure __createFlash() runs after the caller sets ws.onopen etc. + // Otherwise, when onopen fires immediately, onopen is called before it is set. + self.__createTask = setTimeout(function() { + WebSocket.__addTask(function() { + self.__createTask = null; + WebSocket.__flash.create( + self.__id, url, protocols, proxyHost || null, proxyPort || 0, headers || null); + }); + }, 0); + }; + + /** + * Send data to the web socket. + * @param {string} data The data to send to the socket. + * @return {boolean} True for success, false for failure. + */ + WebSocket.prototype.send = function(data) { + if (this.readyState == WebSocket.CONNECTING) { + throw "INVALID_STATE_ERR: Web Socket connection has not been established"; + } + // We use encodeURIComponent() here, because FABridge doesn't work if + // the argument includes some characters. We don't use escape() here + // because of this: + // https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Functions#escape_and_unescape_Functions + // But it looks decodeURIComponent(encodeURIComponent(s)) doesn't + // preserve all Unicode characters either e.g. "\uffff" in Firefox. + // Note by wtritch: Hopefully this will not be necessary using ExternalInterface. Will require + // additional testing. + var result = WebSocket.__flash.send(this.__id, encodeURIComponent(data)); + if (result < 0) { // success + return true; + } else { + this.bufferedAmount += result; + return false; + } + }; + + /** + * Close this web socket gracefully. + */ + WebSocket.prototype.close = function() { + if (this.__createTask) { + clearTimeout(this.__createTask); + this.__createTask = null; + this.readyState = WebSocket.CLOSED; + return; + } + if (this.readyState == WebSocket.CLOSED || this.readyState == WebSocket.CLOSING) { + return; + } + this.readyState = WebSocket.CLOSING; + WebSocket.__flash.close(this.__id); + }; + + /** + * Implementation of {@link DOM 2 EventTarget Interface} + * + * @param {string} type + * @param {function} listener + * @param {boolean} useCapture + * @return void + */ + WebSocket.prototype.addEventListener = function(type, listener, useCapture) { + if (!(type in this.__events)) { + this.__events[type] = []; + } + this.__events[type].push(listener); + }; + + /** + * Implementation of {@link DOM 2 EventTarget Interface} + * + * @param {string} type + * @param {function} listener + * @param {boolean} useCapture + * @return void + */ + WebSocket.prototype.removeEventListener = function(type, listener, useCapture) { + if (!(type in this.__events)) return; + var events = this.__events[type]; + for (var i = events.length - 1; i >= 0; --i) { + if (events[i] === listener) { + events.splice(i, 1); + break; + } + } + }; + + /** + * Implementation of {@link DOM 2 EventTarget Interface} + * + * @param {Event} event + * @return void + */ + WebSocket.prototype.dispatchEvent = function(event) { + var events = this.__events[event.type] || []; + for (var i = 0; i < events.length; ++i) { + events[i](event); + } + var handler = this["on" + event.type]; + if (handler) handler.apply(this, [event]); + }; + + /** + * Handles an event from Flash. + * @param {Object} flashEvent + */ + WebSocket.prototype.__handleEvent = function(flashEvent) { + + if ("readyState" in flashEvent) { + this.readyState = flashEvent.readyState; + } + if ("protocol" in flashEvent) { + this.protocol = flashEvent.protocol; + } + + var jsEvent; + if (flashEvent.type == "open" || flashEvent.type == "error") { + jsEvent = this.__createSimpleEvent(flashEvent.type); + } else if (flashEvent.type == "close") { + jsEvent = this.__createSimpleEvent("close"); + jsEvent.wasClean = flashEvent.wasClean ? true : false; + jsEvent.code = flashEvent.code; + jsEvent.reason = flashEvent.reason; + } else if (flashEvent.type == "message") { + var data = decodeURIComponent(flashEvent.message); + jsEvent = this.__createMessageEvent("message", data); + } else { + throw "unknown event type: " + flashEvent.type; + } + + this.dispatchEvent(jsEvent); + + }; + + WebSocket.prototype.__createSimpleEvent = function(type) { + if (document.createEvent && window.Event) { + var event = document.createEvent("Event"); + event.initEvent(type, false, false); + return event; + } else { + return {type: type, bubbles: false, cancelable: false}; + } + }; + + WebSocket.prototype.__createMessageEvent = function(type, data) { + if (document.createEvent && window.MessageEvent && !window.opera) { + var event = document.createEvent("MessageEvent"); + event.initMessageEvent("message", false, false, data, null, null, window, null); + return event; + } else { + // IE and Opera, the latter one truncates the data parameter after any 0x00 bytes. + return {type: type, data: data, bubbles: false, cancelable: false}; + } + }; + + /** + * Define the WebSocket readyState enumeration. + */ + WebSocket.CONNECTING = 0; + WebSocket.OPEN = 1; + WebSocket.CLOSING = 2; + WebSocket.CLOSED = 3; + + // Field to check implementation of WebSocket. + WebSocket.__isFlashImplementation = true; + WebSocket.__initialized = false; + WebSocket.__flash = null; + WebSocket.__instances = {}; + WebSocket.__tasks = []; + WebSocket.__nextId = 0; + + /** + * Load a new flash security policy file. + * @param {string} url + */ + WebSocket.loadFlashPolicyFile = function(url){ + WebSocket.__addTask(function() { + WebSocket.__flash.loadManualPolicyFile(url); + }); + }; + + /** + * Loads WebSocketMain.swf and creates WebSocketMain object in Flash. + */ + WebSocket.__initialize = function() { + + if (WebSocket.__initialized) return; + WebSocket.__initialized = true; + + if (WebSocket.__swfLocation) { + // For backword compatibility. + window.WEB_SOCKET_SWF_LOCATION = WebSocket.__swfLocation; + } + if (!window.WEB_SOCKET_SWF_LOCATION) { + logger.error("[WebSocket] set WEB_SOCKET_SWF_LOCATION to location of WebSocketMain.swf"); + return; + } + if (!window.WEB_SOCKET_SUPPRESS_CROSS_DOMAIN_SWF_ERROR && + !WEB_SOCKET_SWF_LOCATION.match(/(^|\/)WebSocketMainInsecure\.swf(\?.*)?$/) && + WEB_SOCKET_SWF_LOCATION.match(/^\w+:\/\/([^\/]+)/)) { + var swfHost = RegExp.$1; + if (location.host != swfHost) { + logger.error( + "[WebSocket] You must host HTML and WebSocketMain.swf in the same host " + + "('" + location.host + "' != '" + swfHost + "'). " + + "See also 'How to host HTML file and SWF file in different domains' section " + + "in README.md. If you use WebSocketMainInsecure.swf, you can suppress this message " + + "by WEB_SOCKET_SUPPRESS_CROSS_DOMAIN_SWF_ERROR = true;"); + } + } + var container = document.createElement("div"); + container.id = "webSocketContainer"; + // Hides Flash box. We cannot use display: none or visibility: hidden because it prevents + // Flash from loading at least in IE. So we move it out of the screen at (-100, -100). + // But this even doesn't work with Flash Lite (e.g. in Droid Incredible). So with Flash + // Lite, we put it at (0, 0). This shows 1x1 box visible at left-top corner but this is + // the best we can do as far as we know now. + container.style.position = "absolute"; + if (WebSocket.__isFlashLite()) { + container.style.left = "0px"; + container.style.top = "0px"; + } else { + container.style.left = "-100px"; + container.style.top = "-100px"; + } + var holder = document.createElement("div"); + holder.id = "webSocketFlash"; + container.appendChild(holder); + document.body.appendChild(container); + // See this article for hasPriority: + // http://help.adobe.com/en_US/as3/mobile/WS4bebcd66a74275c36cfb8137124318eebc6-7ffd.html + swfobject.embedSWF( + WEB_SOCKET_SWF_LOCATION, + "webSocketFlash", + "1" /* width */, + "1" /* height */, + "10.0.0" /* SWF version */, + null, + null, + {hasPriority: true, swliveconnect : true, allowScriptAccess: "always"}, + null, + function(e) { + if (!e.success) { + logger.error("[WebSocket] swfobject.embedSWF failed"); + } + } + ); + + }; + + /** + * Called by Flash to notify JS that it's fully loaded and ready + * for communication. + */ + WebSocket.__onFlashInitialized = function() { + // We need to set a timeout here to avoid round-trip calls + // to flash during the initialization process. + setTimeout(function() { + WebSocket.__flash = document.getElementById("webSocketFlash"); + WebSocket.__flash.setCallerUrl(location.href); + WebSocket.__flash.setDebug(!!window.WEB_SOCKET_DEBUG); + for (var i = 0; i < WebSocket.__tasks.length; ++i) { + WebSocket.__tasks[i](); + } + WebSocket.__tasks = []; + }, 0); + }; + + /** + * Called by Flash to notify WebSockets events are fired. + */ + WebSocket.__onFlashEvent = function() { + setTimeout(function() { + try { + // Gets events using receiveEvents() instead of getting it from event object + // of Flash event. This is to make sure to keep message order. + // It seems sometimes Flash events don't arrive in the same order as they are sent. + var events = WebSocket.__flash.receiveEvents(); + for (var i = 0; i < events.length; ++i) { + WebSocket.__instances[events[i].webSocketId].__handleEvent(events[i]); + } + } catch (e) { + logger.error(e); + } + }, 0); + return true; + }; + + // Called by Flash. + WebSocket.__log = function(message) { + logger.log(decodeURIComponent(message)); + }; + + // Called by Flash. + WebSocket.__error = function(message) { + logger.error(decodeURIComponent(message)); + }; + + WebSocket.__addTask = function(task) { + if (WebSocket.__flash) { + task(); + } else { + WebSocket.__tasks.push(task); + } + }; + + /** + * Test if the browser is running flash lite. + * @return {boolean} True if flash lite is running, false otherwise. + */ + WebSocket.__isFlashLite = function() { + if (!window.navigator || !window.navigator.mimeTypes) { + return false; + } + var mimeType = window.navigator.mimeTypes["application/x-shockwave-flash"]; + if (!mimeType || !mimeType.enabledPlugin || !mimeType.enabledPlugin.filename) { + return false; + } + return mimeType.enabledPlugin.filename.match(/flashlite/i) ? true : false; + }; + + if (!window.WEB_SOCKET_DISABLE_AUTO_INITIALIZATION) { + // NOTE: + // This fires immediately if web_socket.js is dynamically loaded after + // the document is loaded. + swfobject.addDomLoadEvent(function() { + WebSocket.__initialize(); + }); + } + +})(); -- 2.20.1