-
Client Software Programmer
Policy file server for flash as2/as3 clients
Going to leave this here to fix security issue error #2048 in as2/as3 because everyones hosting it in a non actionscript language.
This is an adobe air as3 script that I wrote to host on port 843 to respond to <policy-file-request/> requests you have to forward port 843 on your router for your machine as well.
PHP Code:
import flash.display.Sprite; import flash.events.Event; import flash.events.ProgressEvent; import flash.events.ServerSocketConnectEvent; import flash.net.ServerSocket; import flash.net.Socket; import flash.utils.ByteArray; import flash.net.FileReference; import flash.filesystem.File; import flash.filesystem.FileMode; import flash.filesystem.FileStream;
var socket:XMLSocket; var clientObject = {}; var pid:Number=0; var policy='<cross-domain-policy><allow-access-from domain="*" to-ports="*" /><allow-access-from domain="127.0.0.1" to-ports="*" /></cross-domain-policy>' var nullByte; var serverSocket:ServerSocket = new ServerSocket(); var clientSocket:Socket; serverSocket.bind(843); serverSocket.addEventListener(ServerSocketConnectEvent.CONNECT, onConnection); serverSocket.listen();
socket = new XMLSocket(); socket.connect("127.0.0.1",843); socket.send(policy); var msg_num=0 var parsedString var completeString function onClientSocketData(e:ProgressEvent){ e.currentTarget.writeUTFBytes(policy) e.currentTarget.flush(); e.currentTarget.close(); } function onConnection(e:ServerSocketConnectEvent){ clientSocket = e.socket; clientSocket.addEventListener(ProgressEvent.SOCKET_DATA, onClientSocketData); }
Last edited by AS3.0; 12-03-2018 at 03:42 AM.
-
Nice. I wish that there was an option for dcp as well. tcp only limited the potential a lot.
-
Client Software Programmer
Yeah but tcp fixes lost packets, maybe there is for udp havent needed udp yet but im surprised the policy didn't need a nullbyte, it was getting rejected with a nullbyte. I left some old unused variables in there too hmm.
Last edited by AS3.0; 12-04-2018 at 06:04 PM.
-
Client Software Programmer
new update to remove running event listeners when the client disconnects and gets its data:
PHP Code:
import flash.display.Sprite; import flash.events.Event; import flash.events.ProgressEvent; import flash.events.ServerSocketConnectEvent; import flash.net.ServerSocket; import flash.net.Socket; import flash.utils.ByteArray; import flash.net.FileReference; import flash.filesystem.File; import flash.filesystem.FileMode; import flash.filesystem.FileStream;
var socket:XMLSocket; var clientObject = {}; var pid:Number=0; var policy='<cross-domain-policy><allow-access-from domain="*" to-ports="45055" /><allow-access-from domain="127.0.0.1" to-ports="*" /></cross-domain-policy>' var nullByte; var serverSocket:ServerSocket = new ServerSocket(); var clientSocket:Socket; serverSocket.bind(843); serverSocket.addEventListener(ServerSocketConnectEvent.CONNECT, onConnection); serverSocket.listen();
socket = new XMLSocket(); socket.connect("127.0.0.1",843); socket.send(policy); var msg_num=0 var parsedString var completeString function onClientSocketData(e:ProgressEvent){ clientObject[(e.currentTarget.remoteAddress).toString()+":"+(e.currentTarget.remotePort).toString()].connection.removeEventListener(ProgressEvent.SOCKET_DATA, onClientSocketData); clientObject[(e.currentTarget.remoteAddress).toString()+":"+(e.currentTarget.remotePort).toString()].connection.removeEventListener(Event.CLOSE,closed); clientObject[(e.currentTarget.remoteAddress).toString()+":"+(e.currentTarget.remotePort).toString()].connection.removeEventListener(IOErrorEvent.IO_ERROR,closed);delete clientObject[(e.currentTarget.remoteAddress).toString()+":"+(e.currentTarget.remotePort).toString()] delete clientObject[(e.currentTarget.remoteAddress).toString()+":"+(e.currentTarget.remotePort).toString()] e.currentTarget.writeUTFBytes(policy) e.currentTarget.flush(); e.currentTarget.close(); } var cnt=0 function closed(e:*){ clientObject[(e.currentTarget.remoteAddress).toString()+":"+(e.currentTarget.remotePort).toString()].connection.removeEventListener(ProgressEvent.SOCKET_DATA, onClientSocketData); clientObject[(e.currentTarget.remoteAddress).toString()+":"+(e.currentTarget.remotePort).toString()].connection.removeEventListener(Event.CLOSE,closed); clientObject[(e.currentTarget.remoteAddress).toString()+":"+(e.currentTarget.remotePort).toString()].connection.removeEventListener(IOErrorEvent.IO_ERROR,closed); delete clientObject[(e.currentTarget.remoteAddress).toString()+":"+(e.currentTarget.remotePort).toString()] } function onConnection(e:ServerSocketConnectEvent){ clientSocket = e.socket; clientSocket.addEventListener(ProgressEvent.SOCKET_DATA, onClientSocketData); clientSocket.addEventListener(Event.CLOSE, closed); clientSocket.addEventListener(IOErrorEvent.IO_ERROR, closed); clientObject[(clientSocket.remoteAddress).toString()+":"+(clientSocket.remotePort).toString()] = {call_name:(clientSocket.remoteAddress).toString()+":"+(clientSocket.remotePort).toString(), connection:e.socket}; }
Last edited by AS3.0; 12-04-2018 at 06:45 PM.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|