Hello everyone! It seems that I may be confusing this issue, so let me see if I have everything straight :
My understanding is that the SOCKS(5) server acts as a firewall between a host and a client. In order for a client to reach the host, it must authenticate with the SOCKS(5) server which is in essence a proxy. The SOCKS(5) server in turn then forwards the data to the actual host. The following is a diagram of what I think is going on : client ---- SOCKS(5) server [aka. proxy] --- host If my understanding is correct, then I must assume that a barebones SOCKS(5) library *MUST* include a connection mechanism in which they must specify both a proxy AND a host address as such [in pseudo code] : SetSOCKS5Proxy(proxy_ip, proxy_port) s = OpenSOCKS5Socket(host_ip, host_port) In this particular case, where a jabber bytstream file transfer occurs as detailed in http://www.jabber.org/jeps/jep-0065.html#proto-establish, I see this as being the case : client [aka. file xfer receiver] ---- internet --- SOCKS(5) server [aka. proxy] --- host [aka. file xfer initiator] Now, here is where I am running into trouble... The JEP-0065 seems to indicate that the host is a SHA-1 hash of the sid + initiator_jid + target_jid. I would assume such a host would not exist, but that's what the protocol says to do, so I go with it. Given the following actual data, I get a UnknownHost exception (and I am going by the book!) : ** INITIATOR TO RECEIVER ** <iq xmlns='jabber:client' type='set' to='[EMAIL PROTECTED]/JClient' id='aad5a' from='[EMAIL PROTECTED]/Psi'> <query xmlns='http://jabber.org/protocol/bytestreams' mode='tcp' sid='s5b_9490b8d451352325'> <streamhost xmlns='http://jabber.org/protocol/bytestreams' port='8010' host='192.168.1.100' jid='[EMAIL PROTECTED]/Psi'/> <fast xmlns='http://affinix.com/jabber/stream'/> </query> </iq> *** END *** sid = "s5b_9490b8d451352325'" // note : the following jid's have been nodeprepped + "@" + nameprepped + "/" + resourceprepped... turns out that in this case the result jid's are the same as the originals. initiator_jid = "[EMAIL PROTECTED]/Psi" target_jid = "[EMAIL PROTECTED]/JClient" proxy_host = "192.168.1.100" proxy_port = 8010 host = SHA1(sid + initiator_jid + target_jid) // resulting HASH = "863965e5a89fed0b9aeeab809733b3ef234aa835" port = 0 Given the above data, the diagram should look as follows : client [aka. file xfer receiver] ---- internet --- SOCKS5 PROXY [192.168.1.100:8010] --- host [863965e5a89fed0b9aeeab809733b3ef234aa835:0] Therefore, I must issue the following calls to the SOCKS5 library in order to establish the connection [pseudo_code] : SetSOCKS5Proxy("192.168.1.100", 8010) s = OpenSOCKS5Socket("863965e5a89fed0b9aeeab809733b3ef234aa835", 0) The OpenSOCKS5Socket call does exactly what the JEP-0065 protocol describes... that is, it sends the following : ** REQUEST PACKET ** CMD = X'01' ATYP = X'03' DST.ADDR = "863965e5a89fed0b9aeeab809733b3ef234aa835" DST.PORT = 0 ** END ** Yet, this results in an exception error!!! :( I have also implemented a straight SOCKS5 connection to 192.168.1.100:8010 and (upon successfull connection) manually sending that request packet as the protocol describes, but I get 9 bytes of 0's as a result, which indicates an error of some sort. Can anyone shed some light on the matter??? Thanks! Anthony _______________________________________________ jdev mailing list [email protected] http://mail.jabber.org/mailman/listinfo/jdev
