var JX = require('javelin').JX; var net = require('net'); /** * Server which handles cross-domain policy requests for Flash. * * var server = new AphlictFlashPolicyServer() * .setAccessPort(9999) * .start(); */ JX.install('AphlictFlashPolicyServer', { members: { _server: null, _port: 843, _accessPort: null, _debug: null, setDebugLog: function(log) { this._debug = log; return this; }, setAccessPort: function(port) { this._accessPort = port; return this; }, start: function() { this._server = net.createServer(JX.bind(this, this._didConnect)); this._server.listen(this._port); return this; }, _didConnect: function(socket) { this._log(' Policy Request From %s', socket.remoteAddress); socket.on('error', JX.bind(this, this._didSocketError, socket)); socket.write(this._getFlashPolicyResponse()); socket.end(); }, _didSocketError: function(socket, error) { this._log(' Socket Error: %s', error); }, _log: function() { this._debug && this._debug.log.apply(this._debug, arguments); }, _getFlashPolicyResponse: function() { var policy = [ '', '', '', '', '' ]; return policy.join('\n') + '\0'; } } });