JEP-0114 support and external components for transport

Hi,

Few days ago, we were told that JM un-officially supports JEP-0114 but that it has not been tested yet. As I recently need to connect my JM server to foreign IM networks, I checked the jabber.org components list to get an external component that would provide me a transport to MSN or ICQ or AIM or Y!, but it seems that all available components are designed for jabberd or ejabbered (without JEP-0114 support).

As a result, I sent a mail to jadmin mailing list to try to get some projects that could suit me, but I thought that maybe someone here have already tested it.

So:

  • Does someone know some external transport components that could work with JM?

  • Did someone test the JEP-0114 support of JM? (if the developpers have not performed tests yet, when is it schedule?)

Thanks for your help,

Seb

I am going to give a little bit more precisions.

After reading some coponents’’ documentation, it seems that a transport component, such as pyMSNt for example, communicates with the XMPP server thanks to a socket. Moreover, the server and the component must share a secret string (as defined in JEP-0114). The component is also defined with a name such as component.XMPPServerDomain.

As a consequence, as I would like to test some transport components on Jive Messenger (which is the server that best responds to my needs ), I would like to know how to configure the socket and where to define the secret so that JM accepts this component. As I suppose JM’'s developers have not enough time to test some component with their server, I promise to post my compliance results asap.

Regards,

Seb

Hey Seb,

  • Does someone know some external transport

components that could work with JM?

I don’'t know of any external transport implementation available for JM. Alex is writing an MSN gateway but we need first to fix this url=http://www.jivesoftware.org/issues/browse/JM-190issue[/url] which affects rosters removals. Let me know if you found a transport for JM though it may have some problems when removing contacts from the roster.

  • Did someone test the JEP-0114 support of JM? (if

the developpers have not performed tests yet, when is

it schedule?)

I have tested it thoroughly but since I wrote both the client and the server code it is potentially possible that there is a hidden bug in the code or a misunderstanding of the JEP. Let me know if you were able to test any other external component with JM.

Regards,

– Gato

Oups… Cross Posting…

Gato >> As I said before, I found some component that should work with JM but I do not know how to configure JM so that it recognize them… Perhaps could you give me further explication about component installation on JM…

Hey Seb,

I would

like to know how to configure the socket and where to

define the secret so that JM accepts this component.

Currently Messenger is listening on port 5222 (same port that regular clients are using) for external components. You will need to set the component.external.secretKey property with the secret key value. Currently all components will need to use the same secret key.

As I suppose JM’'s developers have not enough time to

test some component with their server, I promise to

post my compliance results asap.

Awesome.

Thanks,

– Gato

Add support for internal and external components. The exact spec to follow remains to be determined. However, it will likely be some combination of:

JEP-114 – http://www.jabber.org/jeps/jep-0114.html

and the Jabberd2 component protocol: http://jabberd.jabberstudio.org/dev/docs/component.shtml

this is property for jive messenger is good !

Well, I saved time to test external components. I tried the Python ones: PyAIMt, PyICQt and PyMSNt.

I installed easily AIM and ICQ transport. They are all recognized by the Service Discovery but I cannot use it. Indeed, I am not able to register my AIM/ICQ account on the transport. I think it might be a simple configuration trouble…

For PyMSNt, I still get an OpenSSL problem that I cannot solve…

As I have no more time today, I will finish my tests at the end of the week.

Regards,

Seb

PS: if someone want to test these components, notice that they are compliant with Twisted 1.3 library and not with the latest one

Hey Seb,

In order to isolate the variables being tested I would suggest testing external components support and transports in different test cases. So I think that it would help to first get working a simpler component and then try connecting a transport to Messenger.

They are all recognized by the Service Discovery but I cannot use it.

Does this mean that you are able to discover the server items using a client? So are you able to discover the gateway when sending a disco#items request?

I am not able to register my AIM/ICQ account on the transport

Do you see any error in the logs?

Great work!

– Gato

Hey zhuam,

We currently officially support internal components and unofficially external components. We followed JEP-114 to implement external components and currently the accept method is the only one being supported.

Using Whack it is possible to drop the same jar file that we use for internal components in Whack. If the plugin includes a component.xml file then Whack will register the component with the server.

Our plan is to include in future versions some features mentioned in the Jabberd2 component protocol such as url=http://jabberd.jabberstudio.org/dev/docs/component.shtml#sect-id25930963.3. Binding a domain[/url] and url=http://jabberd.jabberstudio.org/dev/docs/component.shtml#sect-id2589209 3.7. Domain advertisements[/url].

Regards,

– Gato

Thanks for the quick reply.

Gato >> As I need Transport components, I began installing these components…

I sorted out my problems about running PyMSNt and, as the others, it is recognised but not active. What I mean is that, while I use Psi to browse the services available on the XMPP server (I suppose it uses disco#items), I can see the transport components (node: aim.domain, msn.domain…) but I cannot register on these services (to use my MSN account for example) and, as a result, I cannot chat with foreign networks’’ users.

In the error log, I get this error each 3 seconds:

+2005.04.21 10:49:30 org.jivesoftware.messenger.net.SocketReadThread.run(SocketReadThread.java:160) Connection closed before session established

Socket[addr=/127.0.0.1,port=47299,localport=5222]+

If I can save time, I will try to test a simple component and give you some feedback. But, as business is business (and my boss wants results soon!), I must carry on working on my projects, so, I installed an ejabberd server with transports (I need to write a client API that could use transports, I am going to try to code it with Smack). However, I would like to use JM instead of ejabberd because it is more user friendly and written in Java… So it would be great if transport components could work with JM soon

Regards,

Seb

With a closer look, I found that the error that was logged each 3 seconds was due to ghost processes of transport components that were trying to connect to the server. Since I killed these process and restart properly the server and the transport components, I have not got any error logged…