diff --git a/support/aphlict/server/aphlict_server.js b/support/aphlict/server/aphlict_server.js
index 6635a230c0..8d1bd61a03 100644
--- a/support/aphlict/server/aphlict_server.js
+++ b/support/aphlict/server/aphlict_server.js
@@ -8,6 +8,7 @@
var JX = require('./lib/javelin').JX;
+JX.require('lib/AphlictFlashPolicyServer', __dirname);
JX.require('lib/AphlictListenerList', __dirname);
JX.require('lib/AphlictLog', __dirname);
@@ -64,33 +65,15 @@ var http = require('http');
var url = require('url');
var querystring = require('querystring');
-
process.on('uncaughtException', function (err) {
- log("\n<<< UNCAUGHT EXCEPTION! >>>\n\n" + err);
+ debug.log("\n<<< UNCAUGHT EXCEPTION! >>>\n\n" + err);
process.exit(1);
});
-function getFlashPolicy() {
- return [
- '',
- '',
- '',
- '',
- ''
- ].join('\n');
-}
-
-net.createServer(function(socket) {
- socket.write(getFlashPolicy() + '\0');
- socket.end();
-
- debug.log('[' + socket.remoteAddress + '] Sent Flash Policy');
-
- socket.on('error', function (e) {
- debug.log('Error in policy server: ' + e);
- });
-}).listen(843);
+var flash_server = new JX.AphlictFlashPolicyServer()
+ .setDebugLog(debug)
+ .setAccessPort(config.port)
+ .start();
var send_server = net.createServer(function(socket) {
diff --git a/support/aphlict/server/lib/AphlictFlashPolicyServer.js b/support/aphlict/server/lib/AphlictFlashPolicyServer.js
new file mode 100644
index 0000000000..77cb6311f8
--- /dev/null
+++ b/support/aphlict/server/lib/AphlictFlashPolicyServer.js
@@ -0,0 +1,68 @@
+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(pattern) {
+ this._debug && this._debug.log.apply(this._debug, arguments);
+ },
+
+ _getFlashPolicyResponse: function() {
+ var policy = [
+ '',
+ '',
+ '',
+ '',
+ ''
+ ];
+
+ return policy.join("\n") + "\0";
+ }
+
+ }
+
+});