The latest info about getting MSN gateways to work

I’‘m just doing a bit of searching about getting MSN support into JM, I see references to Alex working on something, a couple months ago, but nothing definitive since. Can someone get me a status update? Does anyone have JM working with MSN? This is a pretty major part of our implementation here, and though it doesn’'t have to be immediate for our bosses, they at least would like a timeline. I appreciate any and all feedback, mucho.

D

As far as I know, Alex is still working on the MSN support. Hopefully he’'ll see this thread and post an update.

Regards,

Matt

As far as I know, Alex is still working on the MSN

support. Hopefully he’'ll see this thread and post an

update.

Why is a new transport needed? I thaught Jive Messenger would support the component protocol. In that case you can use PyMSNt perfectly with Jive Messenger.

http://msn-transport.jabberstudio.org/

Duplicate work seems useless…isn’'t it better to improve PyMSNt instead of creating a new MSN transport?

Why is a new transport needed? I thaught Jive

Messenger would support the component protocol. In

that case you can use PyMSNt perfectly with Jive

Messenger.

http://msn-transport.jabberstudio.org/

You’'re right. It should hypothetically work just fine and it would be great if someone has a chance to test.

Duplicate work seems useless…isn’'t it better to

improve PyMSNt instead of creating a new MSN

transport?

I think Jive Messenger users would see very strong value in a transport created specifically to work well with JM. A few reasons:

  • If it’'s deployable as a plugin, installation is as simple as dropping a JAR file into the plugins directory.

  • Integration with the admin console so that the gateway settings can be configured in the same place as everything else.

  • Written in Java. Python is widely supported, but on many OS’‘es you have to install Python specially. Twisted also needs to be specially installed which isn’'t a happy setup process.

So, I agree that PyMSNt should work, but I don’‘t agree that it’'s the best possible solution for Jive Messenger users.

Regards,

Matt

I’‘m taking ay look at PyMSNt, though it’‘s documentation is geared towards using the non-java based servers. I’'m not really understanding how to bridge the gap between the two when reading the documentation.

e.g. - If you are using Jabberd2 then you shouldn’'t have to do much configuration. Make sure the ‘‘mainServer’’ setting is the IP or DNS of your Jabber server, and leave the ‘‘port’’ setting alone. Double-check that the secret for legacy components in router.xml (for Jabberd2) is the same as the secret setting in config.xml.

I’'m not even sure if Jive is jabber2 or or 1.4.

How does this info relate to what I can see and edit with JM?

Off to do a bit of reading.

I noticed that PyMSNt is looking for port 5437 which I read is where jabberd would listen for componets to connect, but there is nothing listening with JM… Where do I go with this?

First, make sure you’‘re using a 2.2 nightly build. You should then be able to use the default port of 10013 (arbitrary, and we’‘ll probably change it before the final 2.2. release). You’'ll also need to set the Jive property component.external.secretKey with some value.

Regards,

Matt

First, make sure you’'re using a 2.2 nightly build.

Ah. that might help, I was running the latest RPM.

You should then be able to use the default port of

10013 (arbitrary, and we’'ll probably change it before

the final 2.2. release). You’'ll also need to set the

Jive property component.external.secretKey with some

value.

I was just reading an old post about that. Cool. Thanks Matt, I’'m off for the day, more info tomorrow.

where do I get a 2.2 nightly build?

where do I get a 2.2 nightly build?

http://www.jivesoftware.org/nightly.jsp

Hope that helps,

Ryan

Ok, a short walkthru,

get the nightly build at http://www.jivesoftware.org/nightly.jsp of messenger 2.2

start it up and add a property named “component.external.secretKey” with a password value, eg “ThisIsMySecretKey”

use the install instructions for PyMSNt (needs some external python ssl libs on windows)

then in the PyMSNt dir make a config.xml (copy the example) and edit, the most importend entries are:

msn.your.domain.here.org

127.0.0.1

10015

ThisIsMySecretKey

in windows open a command window and cd to “PyMSNt home dir”\src

and start the gateway with python main.py

under *nix you can use the PyMSNt script in the PyMSNt home dir

with netstat -an you can check if the connection is setup between the component and server (debug log also shows a line when the componen connects), eg

2005.06.14 19:38:19 Connect Socket[addr=/127.0.0.1,port=4652,localport=10015]

with a jabber client use the browser to see if the service shows up and register to the service

anyway, works like a charm on my comp here

Ok.

I’'ve done the walk through and aparently everything is ok (including the command netstat).

but, using pandion, I’‘ve tryed to register an MSN user in my Roster and it didn’'t function.

I’'ve added a transport in pandion using the name mns.myhost.mydomain and it had identified the MSN Transport service.

but I couldn’'t send a message to an MSN user

I think Jive Messenger users would see very strong

value in a transport created specifically to work

well with JM. A few reasons:

  • If it’'s deployable as a plugin, installation is as

simple as dropping a JAR file into the plugins

directory.

  • Integration with the admin console so that the

gateway settings can be configured in the same place

as everything else.

  • Written in Java. Python is widely supported, but

on many OS’'es you have to install Python specially.

Twisted also needs to be specially installed which

isn’'t a happy setup process.

So, I agree that PyMSNt should work, but I don’'t

agree that it’'s the best possible solution for Jive

Messenger users.

Well, then the solution is to make the Py*transports better integrated in Jive Messenger instead of creating yet another difficult to maintain transport codebase. (e.g. automatic Python installation; same drag’‘n drop support as native Java plugins; adding support for JEP-0133 in Jive Messenger and the Pytransports; finalize the webinterface in cvs of some of the Pytransport, add a “Jive Messenger CSS theme”, and add some code in Jive Messenger’'s Admin Console so that it automatically points to this web interface;…)

Advantages of this way:

    • one transport codebase with a big community,
  • that can react very fast on protocol changes on the proprietary networks,

  • that has enough man-power to compete against multi-protocol clients like GAIM,

  • which will result in new JEPs to bring the proprietary network features to Jabber,

  • which will result in a bigger Jabber user base,

  • which will result in a general increased interest in Jabber software like Jive Messenger.

  1. as the py*transports will probably have a bigger community than the Jive Java transports, they will have more features and so the other Jabber servers will have an advantage here as newbies imediately will be pointed to the best transports (newbies trying Jive will try the less-featured, but easier to install plugin and will think: hey, that do not suits my needs…let’'s try another Jabber server).

Btw: remember why the old C-based transports that do need Jabberd14 parts are now all dead…don’'t make history happen again… (this was also the reason why the py*transports where created and why Jabberd2 do not has its own transports, why ejabberd do not has its own Erlang based transports,…)

About installing PyMSNt, badlop wrote some nice tutorials for the Py*transports. You can find the PyMSNt one at: http://ejabberd.jabber.ru/pymsnt

Most of the tutorial is server independant, and at the end there is separate information for ejabberd, jabberd14 and jabberd2. The server dependant part is just about how you have to set the secret, host and port of the transport. I don’'t know how this is done for Jive Messenger, but it would be not very difficult I think.

PS: instructions for Jive Messenger to add to the tutorial are welcome.

Sander,

You make some compelling points and I agree with many of them.

It would be really interesting to see if Jython could be used to run the transport. That might make it possible to run it as a Jive Messenger plugin in a very simple way. From doing a bit of research, it looks like Twisted works with Jython so it should be possible.

-Matt

to use msn users i did the following in exodus,

register with the service, you have to provide your msn account here, eg

me@hotmail.com and password.

then the service in exodus is in my roster

to add a msn member to my roster i have to use the following JID

someone%hotmail.com@msn.myserver.mydomain.com

after a while (first time login/classloding whatever, takes a few seconds) the user with msn (someone@hotmail.com) gets a invite. from then on i can chat with him

It would be really interesting to see if Jython could

be used to run the transport. That might make it

possible to run it as a Jive Messenger plugin in a

very simple way. From doing a bit of research, it

looks like Twisted works with Jython so it should

be possible.

I don’'t have experience with Jython, but it seems to be a much better solution then creating yet another transport. So I vote for it

I’'m think my problem is LDAP integration.

I’'ve configured LDAP integration and every time I try to register a MSN user I get the exception UserAlreadyExistsException on logs/errors.log file.

How I solve my problem?

the full exception stack

2005.06.17 12:39:40 org.jivesoftware.messenger.handler.IQRosterHandler.handleIQ(IQRosterHandler.java :118) Internal server error

org.jivesoftware.messenger.user.UserAlreadyExistsException: ricardoaquin%hotmail.com@msn.quimera.sjes.gov.br

at org.jivesoftware.messenger.roster.RosterItemProvider.createItem(RosterItemProvi der.java:110)

at org.jivesoftware.messenger.roster.Roster.provideRosterItem(Roster.java:276)

at org.jivesoftware.messenger.roster.Roster.provideRosterItem(Roster.java:246)

at org.jivesoftware.messenger.roster.Roster.createRosterItem(Roster.java:234)

at org.jivesoftware.messenger.handler.IQRosterHandler.manageRoster(IQRosterHandler .java:199)

at org.jivesoftware.messenger.handler.IQRosterHandler.handleIQ(IQRosterHandler.jav a:103)

at org.jivesoftware.messenger.handler.IQHandler.process(IQHandler.java:48)

at org.jivesoftware.messenger.IQRouter.handle(IQRouter.java:213)

at org.jivesoftware.messenger.IQRouter.route(IQRouter.java:73)

at org.jivesoftware.messenger.PacketRouter.route(PacketRouter.java:65)

at org.jivesoftware.messenger.net.SocketReader.processIQ(SocketReader.java:253)

at org.jivesoftware.messenger.net.ClientSocketReader.processIQ(ClientSocketReader. java:43)

at org.jivesoftware.messenger.net.SocketReader.readStream(SocketReader.java:225)

at org.jivesoftware.messenger.net.SocketReader.run(SocketReader.java:111)

at java.lang.Thread.run(Unknown Source)

That was another problem that I solved,

excuse