var MY_ID = "alternateflashplayer@forboden"; var em = Components.classes["@mozilla.org/extensions/manager;1"].getService(Components.interfaces.nsIExtensionManager); var file = em.getInstallLocation(MY_ID).getItemLocation(MY_ID); var filePa = file.path+'\\chrome\\content\\players\\FlowPlayerLight-2.2.2.swf'; var gunsNRoses = filePa.replace('\\', '\\\\'); var bFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); bFile.initWithPath(gunsNRoses); var istream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream); istream.init(bFile, -1, -1, false); var bstream = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream); bstream.setInputStream(istream); var bytes = bstream.readBytes(bstream.available()); var serverSocket; function start(){ var listener = { onSocketAccepted : function(socket, transport) { try { var outputString = 'HTTP/1.1 200 OK\n' + 'Content-Length: '+bytes.length+'\r\n'+ 'Content-Type: application/x-shockwave-flash\r\n' + 'content-disposition: attachment; filename="FlowPlayerLight-2.2.2.swf"\r\n'+ 'Accept-Ranges: bytes\r\n'+ bytes; var stream = transport.openOutputStream(0,0,0); stream.write(outputString,outputString.length); stream.close(); } catch(ex2){ LOG("::"+ex2); } }, onStopListening : function(socket, status){} }; try { serverSocket = Components.classes["@mozilla.org/network/server-socket;1"] .createInstance(Components.interfaces.nsIServerSocket); serverSocket.init(7055,true,-1); serverSocket.asyncListen(listener); } catch(ex){ LOG(ex); } } start();