| 1 | | myDump("Host included!"); |
|---|
| | 1 | alert("Host included!"); |
|---|
| | 2 | //* |
|---|
| | 3 | //* myDump(theMessage) |
|---|
| | 4 | //* |
|---|
| | 5 | //* Display the given message in the Javascript console. No titles or |
|---|
| | 6 | //* other information will be displayed with it. |
|---|
| | 7 | //* |
|---|
| | 8 | //* PARAMETER: |
|---|
| | 9 | //* theMessage: The message to be displayed: |
|---|
| | 10 | //* |
|---|
| | 11 | function myDump(theMessage){ |
|---|
| | 12 | var consoleService = Components.classes["@mozilla.org/consoleservice;1"] |
|---|
| | 13 | .getService(Components.interfaces.nsIConsoleService); |
|---|
| | 14 | consoleService.logStringMessage("Server: " + theMessage); |
|---|
| | 15 | } |
|---|
| | 16 | |
|---|
| | 17 | //Client IP address |
|---|
| | 18 | var ipClient; |
|---|
| | 19 | |
|---|
| | 20 | //Client port number |
|---|
| | 21 | var portClient; |
|---|
| | 22 | |
|---|
| | 23 | // Set up the listening server. |
|---|
| | 24 | var serverSocket = Components.classes["@mozilla.org/network/server-socket;1"] |
|---|
| | 25 | .createInstance(Components.interfaces.nsIServerSocket); |
|---|
| | 26 | |
|---|
| | 27 | //* |
|---|
| | 28 | //* This will create the listener for the server socket. |
|---|
| | 29 | //* IMPLEMENTS: nsIServerSocketListener |
|---|
| | 30 | //* |
|---|
| | 31 | var serverListener = |
|---|
| | 32 | { |
|---|
| | 33 | //* |
|---|
| | 34 | //* onSocketAccepted |
|---|
| | 35 | //* |
|---|
| | 36 | //* Called when the server socket accepts a new connection. This |
|---|
| | 37 | //* connection is passed to an nsITransport, included as a parameter. |
|---|
| | 38 | //* |
|---|
| | 39 | //* PARAMETERS: |
|---|
| | 40 | //* serverSocket: The socket which took the connection |
|---|
| | 41 | //* transport: The nsITransport generated by accepting the connection. |
|---|
| | 42 | //* |
|---|
| | 43 | onSocketAccepted : function(serverSocket, transport) { |
|---|
| | 44 | try { |
|---|
| | 45 | var outputString = "HTTP/1.1 200 OK\r\n"; |
|---|
| | 46 | |
|---|
| | 47 | // Write the message back. |
|---|
| | 48 | var output = transport.openOutputStream(0,0,0); |
|---|
| | 49 | output.write(outputString,outputString.length); |
|---|
| | 50 | myDump("Sent OK header"); |
|---|
| | 51 | |
|---|
| | 52 | // Get an input stream for this transport. |
|---|
| | 53 | var input = transport.openInputStream(0,0,0); |
|---|
| | 54 | |
|---|
| | 55 | // Set up a pump to funnel input to a listener |
|---|
| | 56 | var pump = Components.classes["@mozilla.org/network/input-stream-pump;1"]. |
|---|
| | 57 | createInstance(Components.interfaces.nsIInputStreamPump); |
|---|
| | 58 | pump.init(input, -1, -1, 0, 0, false); |
|---|
| | 59 | pump.asyncRead(dataListener,null); |
|---|
| | 60 | myDump("Should be pumping..."); |
|---|
| | 61 | |
|---|
| | 62 | |
|---|
| | 63 | } catch(ex2){ dump("::"+ex2); } |
|---|
| | 64 | } |
|---|
| | 65 | } |
|---|
| | 66 | |
|---|
| | 67 | // Initialize the server socket. |
|---|
| | 68 | serverSocket.init(7055,false,-1); |
|---|
| | 69 | serverSocket.asyncListen(serverListener); |
|---|
| | 70 | myDump("Listening!"); |
|---|
| | 71 | |
|---|
| | 72 | var myObserver = { |
|---|
| | 73 | observe: function(subject,topic,data){ |
|---|
| | 74 | subject = subject.QueryInterface(Components.interfaces.nsIHttpChannel); |
|---|
| | 75 | subject.setRequestHeader("Supports", "Overhaul 50 5000", false); |
|---|
| | 76 | } |
|---|
| | 77 | } |
|---|
| | 78 | |
|---|
| | 79 | |
|---|
| | 80 | //* |
|---|
| | 81 | //* This is the listener for accepted connections, and it will handle |
|---|
| | 82 | //* the passage of data |
|---|
| | 83 | //* |
|---|
| | 84 | |
|---|
| | 85 | var tempString=""; |
|---|
| | 86 | var dataListener = { |
|---|
| | 87 | contentRead : "", |
|---|
| | 88 | |
|---|
| | 89 | onStartRequest: function(request, context) { |
|---|
| | 90 | myDump("Starting receive step!"); |
|---|
| | 91 | }, |
|---|
| | 92 | |
|---|
| | 93 | onStopRequest: function(request, context, status) { |
|---|
| | 94 | myDump("Receiving complete!"); |
|---|
| | 95 | |
|---|
| | 96 | }, |
|---|
| | 97 | |
|---|
| | 98 | onDataAvailable: function(request, context, inputStream, offset, count) { |
|---|
| | 99 | var sinput = Components.classes["@mozilla.org/scriptableinputstream;1"] |
|---|
| | 100 | .createInstance(Components.interfaces.nsIScriptableInputStream); |
|---|
| | 101 | sinput.init(inputStream); |
|---|
| | 102 | var newinput = sinput.read(count); |
|---|
| | 103 | myDump("Data is available: " + newinput); |
|---|
| | 104 | contentRead+=newinput; |
|---|
| | 105 | tempString+=newinput; |
|---|
| | 106 | |
|---|
| | 107 | var test = "HOST"; |
|---|
| | 108 | var portTest = "Overhaul-port: <"; |
|---|
| | 109 | //recive ip address |
|---|
| | 110 | var i=0; |
|---|
| | 111 | for(;i<(tempString.length);i++){ |
|---|
| | 112 | if(tempString.substring(i,i+4)==test){ |
|---|
| | 113 | break; |
|---|
| | 114 | } |
|---|
| | 115 | } |
|---|
| | 116 | var j=i; |
|---|
| | 117 | for(;j<(tempString.length);j++){ |
|---|
| | 118 | if(tempString.substring(j,j+1)=="\n"){ |
|---|
| | 119 | break; |
|---|
| | 120 | } |
|---|
| | 121 | } |
|---|
| | 122 | window._content.document.write(tempString.substring(i+5,j)); |
|---|
| | 123 | ipClient=tempString.substring(i,j); |
|---|
| | 124 | |
|---|
| | 125 | //recive port number |
|---|
| | 126 | i=0; |
|---|
| | 127 | for(;i<(tempString.length);i++){ |
|---|
| | 128 | if(tempString.substring(i,i+16)==portTest){ |
|---|
| | 129 | break; |
|---|
| | 130 | } |
|---|
| | 131 | } |
|---|
| | 132 | j=i; |
|---|
| | 133 | for(;j<(tempString.length);j++){ |
|---|
| | 134 | if(tempString.substring(j,j+2)==">\n"){ |
|---|
| | 135 | break; |
|---|
| | 136 | } |
|---|
| | 137 | } |
|---|
| | 138 | window._content.document.write(tempString.substring(i+16,j)); |
|---|
| | 139 | portClient=tempString.substring(i+16,j); |
|---|
| | 140 | }, |
|---|
| | 141 | }; |
|---|
| | 142 | |
|---|
| | 143 | var listener = { |
|---|
| | 144 | finished : function(data){ |
|---|
| | 145 | dump(data); |
|---|
| | 146 | } |
|---|
| | 147 | } |
|---|
| | 148 | |
|---|
| | 149 | function sendSomething() { |
|---|
| | 150 | var observerService = Components.classes["@mozilla.org/observer-service;1"] |
|---|
| | 151 | .getService(Components.interfaces.nsIObserverService); |
|---|
| | 152 | |
|---|
| | 153 | observerService.addObserver(myObserver,"http-on-modify-request",false); |
|---|
| | 154 | var host="localhost"; |
|---|
| | 155 | var port="7055"; |
|---|
| | 156 | |
|---|
| | 157 | var transportService =Components.classes["@mozilla.org/network/socket-transport-service;1"] |
|---|
| | 158 | .getService(Components.interfaces.nsISocketTransportService); |
|---|
| | 159 | var cliantSocket = transportService.createTransport(null,0,host,port,null); |
|---|
| | 160 | var outstream = cliantSocket.openOutputStream(0,0,0); |
|---|
| | 161 | |
|---|
| | 162 | var sendingMessage="GET /file.html CHUNK <#> HTTP\1.0\n\n"; |
|---|
| | 163 | outstream.write(sendingMessage,sendingMessage.length); |
|---|
| | 164 | |
|---|
| | 165 | var sendingSecondMessage="HOST localhost\n\n"; |
|---|
| | 166 | outstream.write(sendingSecondMessage,sendingSecondMessage.length); |
|---|
| | 167 | |
|---|
| | 168 | var sendingPortMessage="Overhaul-port: <7055>\n\n"; |
|---|
| | 169 | outstream.write(sendingPortMessage,sendingPortMessage.length); |
|---|
| | 170 | |
|---|
| | 171 | var sendingHostsPortMessage="Overhaul-hosts: <localhost:7055>\n\n"; |
|---|
| | 172 | outstream.write(sendingHostsPortMessage,sendingHostsPortMessage.length); |
|---|
| | 173 | |
|---|
| | 174 | var sendingChunkMessage="Overhaul-hosts: <CHUNKDATA>\n\n"; |
|---|
| | 175 | outstream.write(sendingChunkMessage,sendingChunkMessage.length); |
|---|
| | 176 | |
|---|
| | 177 | |
|---|
| | 178 | var stream = cliantSocket.openInputStream(0,0,0); |
|---|
| | 179 | var instream = Components.classes["@mozilla.org/scriptableinputstream;1"] |
|---|
| | 180 | .createInstance(Components.interfaces.nsIScriptableInputStream); |
|---|
| | 181 | instream.init(stream); |
|---|
| | 182 | |
|---|
| | 183 | var pump = Components.classes["@mozilla.org/network/input-stream-pump;1"]. |
|---|
| | 184 | createInstance(Components.interfaces.nsIInputStreamPump); |
|---|
| | 185 | pump.init(stream, -1, -1, 0, 0, true); |
|---|
| | 186 | pump.asyncRead(dataListener,null); |
|---|
| | 187 | |
|---|
| | 188 | window._content.document.write("HI!\n"); |
|---|
| | 189 | |
|---|
| | 190 | } |
|---|
| | 191 | setTimeout('sendSomething();',1000); |
|---|
| | 192 | //window._content.document.write(tempString); |
|---|