Hello,
I have set up Wildfire 3.1.1 to run as a separate file transfer proxy. Basically, I’'m trying to off load all file transfer traffic to a separate jabber server. For instance, all Jabber users are registered on JabberServer1 on domain1 (public IP address 1). JabberServer2 is running on domain2 (public IP address 2). Each Jabber user connects to JabberServer1@domain1 with all IM, presence, MUC, and file transfer stanzas passing through this server.
But, in the case of file transfer, all socks 5 negotiation will use proxy.JabberServer2@domain2. I know this configuration works, as I’‘ve tested against other public jabber servers (ejabberd) with enabled socks 5 proxies. However, I want to implement my own solution and not be constrained by some one else’‘s file transfer proxy. So, I’'m trying Wildfire 3.1.1.
But with Wildfire as the socks proxy, I can’'t get file transfer to work between two clients. The initial xml handshaking works fine (get the request, accept the request, correct streamhost values). The transfer fails during socks 5 handshaking because of exceptions raised on Wildfire.
Here are my Wildfire properties:
xmpp.auth.anonymous true
xmpp.domain JabberServer2@domain2
xmpp.proxy.enabled true
xmpp.proxy.externalip proxy.JabberServer2@domain2
xmpp.proxy.port 7777
xmpp.server.socket.active true
xmpp.session.conflict-limit 0
xmpp.socket.ssl.active true
From the Wildfire logs:
Error log:
2006.08.30 06:48:44 org.jivesoftware.wildfire.filetransfer.proxy.ProxyConnectionManager$1$1.run(Prox yConnectionManager.java:110) Error processing file transfer proxy connection
java.io.IOException: Illegal proxy transfer
at org.jivesoftware.wildfire.filetransfer.proxy.ProxyConnectionManager.processConn ection(ProxyConnectionManager.java:187)
at org.jivesoftware.wildfire.filetransfer.proxy.ProxyConnectionManager.access$100( ProxyConnectionManager.java:39)
at org.jivesoftware.wildfire.filetransfer.proxy.ProxyConnectionManager$1$1.run(Pro xyConnectionManager.java:107)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java: 885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
2006.08.30 06:48:44 org.jivesoftware.wildfire.filetransfer.proxy.ProxyConnectionManager$1$1.run(Prox yConnectionManager.java:110) Error processing file transfer proxy connection
java.io.IOException: Illegal proxy transfer
at org.jivesoftware.wildfire.filetransfer.proxy.ProxyConnectionManager.processConn ection(ProxyConnectionManager.java:187)
at org.jivesoftware.wildfire.filetransfer.proxy.ProxyConnectionManager.access$100( ProxyConnectionManager.java:39)
at org.jivesoftware.wildfire.filetransfer.proxy.ProxyConnectionManager$1$1.run(Pro xyConnectionManager.java:107)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java: 885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
2006.08.30 06:48:44 org.jivesoftware.wildfire.filetransfer.proxy.FileTransferProxy.handleIQ(FileTran sferProxy.java:140) Error activating connection
java.lang.IllegalArgumentException: Transfer doesn’'t exist or is missing parameters
at org.jivesoftware.wildfire.filetransfer.proxy.ProxyConnectionManager.activate(Pr oxyConnectionManager.java:277)
at org.jivesoftware.wildfire.filetransfer.proxy.FileTransferProxy.handleIQ(FileTra nsferProxy.java:137)
at org.jivesoftware.wildfire.filetransfer.proxy.FileTransferProxy.process(FileTran sferProxy.java:356)
at org.jivesoftware.wildfire.IQRouter.handle(IQRouter.java:218)
at org.jivesoftware.wildfire.IQRouter.route(IQRouter.java:96)
at org.jivesoftware.wildfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:67)
at org.jivesoftware.wildfire.net.SocketReader.processIQ(SocketReader.java:250)
at org.jivesoftware.wildfire.net.ServerSocketReader.access$001(ServerSocketReader. java:46)
at org.jivesoftware.wildfire.net.ServerSocketReader$1.run(ServerSocketReader.java: 79)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java: 885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
Warning log:
2006.08.30 09:00:36 Error creating secured outgoing session to remote server: JabberServer1@domain1(DNS lookup: JabberServer1@domain1:5269)
org.xmlpull.v1.XmlPullParserException: could not determine namespace bound to element prefix stream (position: START_DOCUMENT seen stream:error… @1:14)
at org.xmlpull.mxp1.MXParser.parseStartTag(MXParser.java:1816)
at org.xmlpull.mxp1.MXParser.parseProlog(MXParser.java:1479)
at org.jivesoftware.wildfire.net.MXParser.nextImpl(MXParser.java:331)
at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
at org.jivesoftware.wildfire.server.OutgoingServerSession.createOutgoingSession(Ou tgoingServerSession.java:288)
at org.jivesoftware.wildfire.server.OutgoingServerSession.authenticateDomain(Outgo ingServerSession.java:140)
at org.jivesoftware.wildfire.server.OutgoingSessionPromise.createSessionAndSendPac ket(OutgoingSessionPromise.java:130)
at org.jivesoftware.wildfire.server.OutgoingSessionPromise.access$300(OutgoingSess ionPromise.java:40)
at org.jivesoftware.wildfire.server.OutgoingSessionPromise$1$1.run(OutgoingSession Promise.java:95)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java: 885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
Any help is appreciated.
Thanks,
John