ICQ Gateway testing

So, today i have started testing with JIT. What i’‘ve done. Upgraded my system, installed JM, compiled JIT (few warnings about xdb-file at the end). Well, it’‘s hard to understand how to configure it, because it’'s written for Jabberd server. And instructions are old i think, because they say there must be jabberd binary created, and there is only jabberd-jit binary. So, i have tried and it doesnt work.

In AC i have changed External Component port to 5555 and added secret key “secret”. JIT instalaltion instructions are:

/code

so i cant do anything else in AC? And there is other config file for ICQ Transport discovering in clients browse menu:

/code

what about this?

and there is also jabber-icq.example file which i’'m starting JIT with:

jabberd/jabberd-jit -c jabber-icq.example

well, i wount paste whole this file here, only the last one:

/code

i have edited this config to match JM settings. So that’'s all. Havent tried to launch JIT in debug mode, but enough of testing today. Time to go to bed:) Maybe i should try pyicq-t instead?

Hey wroot,

Nice to hear that you are trying to make JIT work with JM.

These are my comments:

  1. If you are using the latest nightly build then you don’'t have to manually edit the properties. You can use the “External Components” page for configuring the external component service

  2. You said that in JM the secret is “secret” but in the JIT config file you are using “someSecret”. Make sure that you are using the same value in both places

  3. There are 2 elements in your first XML “paragraph”. I guess that you should leave the first host (icq.localhost) and remove (sms.icq.localhost). BTW, I’'m assuming your hostname in JM is localhost.

  4. If I’'m not wrong the last two XML “paragraph” belong to jabberd. I think that the first one is informing jabberd of the disco information that should be returned for the component. JM discovers that information automatically from component so there is no need to configure that information. The last XML information is the equivalent to the one you enter in the “External Components” page

  5. Once you have started the JIT service you can use netstat or some other handy tool to check that the service is in fact trying to connect to the port 5555. If it is trying to connect to that port then try enabling the debug log in JM and post the debug info.

Thanks,

– Gato

ok. Dont know why but today i have launched it the same way and now “icqlinker” is listed in Components Sessions Summary Page. Name, Category and Type are “null” but i think it’‘s ok. So now i’‘m little confused. What must i do now? I’'m using Psi right now. So i must try to put some icq contact to Psi roster, or should i login with my UIN somehow? BTW, i have Gaim here too. Maybe better test with it?

so the point is to be able to IM to ICQ buddies using my jabber account? And what Nickname/ID they will get? I’‘m now in doubt is it worth playing with that, or i’'m missing something?

Ok, Gato, have a look at this jabber-icq.example config file what im starting JIT with. Maybe there is something useful. And i will try PyICQ-t now.

%d: (%h): %s

/code

Hey wroot,

I never used/installed JIT but it seems to me that your config file is fine. You said that you were able to connect the component to the server but that “Name”, “Category” and “Type” columns were null/empty. Therefore, I guess that the JIT component is not handling disco packet. That means that the server won’'t include the ICQ transport (ie. the gateway) as a discoverable item. And if the server is not including the gateway as a discoverable item that supports iq:register then clients will probably have the register option disabled.

So I think that we have 2 options here.

  1. Figure out if there is a way to configure JIT so that it may handle disco packets. May be contacting the author? or

  2. Figure out if it is common for components to not handle disco packets when it is important to handle it and they are expecting the server to handle it for them. If this is the case then we may need to add a new enhancement to JM to store disco information about external components. ???

Regards,

– Gato

so, i’'m trying to move on

PyICQ-t will have to wait until i’'ll find out how to install twisted on my Archlinux.

JIT:

i have found some instructions about running JIT (in russian):

http://www.gonzo.kiev.ua/projects/jabber/jit.html

nothing new, but there is a patch at the end. this patch is intended to create disco support in JIT.

patch:

http://www.gonzo.kiev.ua/projects/jabber/files/patch-disco-sg2.gz

the problem is i’'m lame in linux, i dont understand how to patch and what to patch. Well, i figured out that 5 files need to be patched:

jabberd/lib/lib.h

jit/jit/icqtransport.h

jit/jit/iq.c

jit/jit/session.c

jit/jit/unknown.c

i have tried to start patching first file, and then it asked about other file, so i have entered path for second file and so on. It seems to work fine, but there were errors with 2 files. So now JIT is not compiling. I’‘m thinking, maybe this patch is for an older version of JIT (1.1.6 maybe). So maybe i’‘ll have to find this version. I’‘ve send mails to JIT’‘s and this manual authors. So now i’'m waiting for any response.

Would it be very complex to implement this disco function on server side?

Hey Wroot,

It’'s good to see you persisting/enduring making JIT work.

It’‘s very probable that the patch that you have found was meant for other version of JIT since it was written in 2003 and your JIT version is of this year. I also found url=http://mail.jabber.org/pipermail/jdev/2003-December/017483.htmlthis patch[/url] made by Matthias Wimmer for the same purpose. I read Matthias’'s patch and it is adding new functions and a couple of new IF statements. I think that with some patience you can add that code to your JIT source code and rebuild the JIT gateway. You may also want to contact Matthias asking him if he has a newest version of the patch since I think that he is running the JIT gateway at amessage.de.

I would try to avoid adding disco support on the server side for components that don’'t support disco but they need it since it will make things more difficult to setup making things error prone. However, if we do find out that this is a common case with components then we may need to implement this idea.

Regards,

– Gato

You can try the example config and init script for JIT I created for ejabberd:

http://svn.process-one.net/ejabberd/trunk/examples/transport-configs/

This config should work with any[/b] Jabber server:

ejabberd (tested), Jabberd 1.4 (tested in the past), Jabberd2, Jive Messenger,…

Remark that you need[/b] to install JIT from source as most packagers don’'t know of my script and config (you may point them to these ) and so make their packages incompatible with all servers that differ from Jabberd 1.4. The key component in installing JIT on non-Jabberd 1.4 servers is that you need to compile the xdb_file.so in the directory xdb_file from the JIT source (this is the library that most (all?) packagers forget to include ). Also remark that this xdb_file.so is not compatible with the one of Jabberd 1.4.

All the rest will be nearly the same as in my tutorials for Yahoo-transport-2, MSN Transport and AIM Transport (the old ones):

http://ejabberd.jabber.ru/tutorials-transports

(yes, a tutorial for JIT is on my TODO list, but I have many things planned If you want to help writing you will find my Jabber ID somewhere on the web if you are no bot )

It’'s very probable that the patch that you have found

was meant for other version of JIT since it was

written in 2003 and your JIT version is of this year.

I also found

[url=JDev - XMPP

er/017483.html]this patch[/url] made by Matthias

Wimmer for the same purpose. I read Matthias’'s patch

and it is adding new functions and a couple of new IF

statements. I think that with some patience you can

add that code to your JIT source code and rebuild the

JIT gateway. You may also want to contact Matthias

asking him if he has a newest version of the patch

since I think that he is running the JIT gateway at

amessage.de.

I think the newest version of JIT can be found in the Ports of FreeBSD:

FreshPorts -- net/jit: Jabber ICQ Transport (look at “master sites”)

Note: it seems that the JIT port is probably the best “package” for JIT I have ever seen: it looks server independant…so if you want to test JIT with Jive Messenger, you also can try it on FreeBSD to make testing easier

I would try to avoid adding disco support on the

server side for components that don’'t support disco

but they need it since it will make things more

difficult to setup making things error prone.

However, if we do find out that this is a common case

with components then we may need to implement this

idea.

AFAIK, all active (and most inactive too!) transports do support disco.

So, the first Success PyICQ-t is running on my Windows 2000 system. I was able to register with my ICQ account in Psi/Exodus and got all my roster contacts. The only inconvinience was that all roster contacts are represented by UIN@icq.server and not with nicknames So i had to rename them manually, 31 contacts And in Exodus ICQ contacts are in Unfilled group together with icq.server agent represented like ordinary contact. Not perfect. Things are better in Psi, i have separate Agent/Transports icon (with ICQ flower) and General group with contacts. BTW, i have tested it first in Psi with one local jabber user. And when i tried the same user in Exodus it was already registered with ICQ transport and all renamed contacts had their new nicknames. PyICQ-t is holding every user’'s settings in spool directory. So you dont have to set up it every time you change workplace or client. And the spool directory was created automaticly in pyicq-t dir.

Presences are working as much as i understand. It shows Away at least, and it shows it correctly, tested with a friend

And now, technical part. At first, i’'ve granted sanderd with 10 points (it seems i cant give more Helpful marks) for pointing me to http://ejabberd.jabber.ru/tutorials-transports There i have found this manual - http://ejabberd.jabber.ru/pyicqt It was very useful though not exactly correct. In this thread - http://www.jivesoftware.org/forums/thread.jspa?threadID=15063&tstart=0 in 2nd post i have described the problem. So i have made a little hack, have commented IF statement which was throwing that cycling message in main.py

#if (exe.find(“python”) >= 0):

print(“Restarting with process name %s…” % (name))

os.execv(exe, [name, sys.argv[0]]+sys.argv[1:])

/code

And i have installed Twisted (PyICQ-t need that to run, and that manual has no a mention about Twisted) from this site: http://twistedmatrix.com/projects/core/

My Python version is 2.4.1 so i took the last package. To launch transport you have to run CMD box in pyicq-t/src dir and type “python main.py”. Before that you should add directory with python.exe to your system PATH. In my case - go to My Computer > Properties > Advanced > Environment Variables > System variables > Path - and add this to the end of value - ;C:\Python24 (“Python24” is a directory where i have installed Python). Path variable is updating immediately. And that’'s all i think. Well, it should run the same in linux, i just have to figure out how to install Twisted in my Archlinux.

I have send two emails to an author of PyICQ-t, maybe he will answer what this IF statement is for in main.py. I have also posted a thread about that at ejabberd forums. So i will update it too.

As about JIT. It will have to wait. maybe i will get back to this next weekend. But it’‘s too complex with it. I’‘ve got no replies to my emails from transport’‘s author and manual’'s writer.

But we already have one ICQ transport running and working with JM. So the main work is done i think Heh, that was fun

BTW, i can add a screenshot if you’'ll grant me that rights

can someone make ICQ transport like plugin for Jive XMPP server

I have a lot of trouble finding ALL software I need, then I need to compile and such, but I don’'t like that

if someone can make TRANSPORT PLUGINs for Jive, that would be cool

your reply is appreciated

nm

What OS are you using? If Linux, u probably need to compile something. In windows with PyICQ-t you dont have to compile. Look my last bigger post. There are some instructions, if you want i can write all programs you’'ll need and links where to get.

As about plugins, maybe devs will answer if there is a plan to make transports as plugins.

I have the same problem in using PyICQt also. But everything goes fine when using pyicq-t-0.5a, I am also looking forward to anyone could solve the problem.

have you read my last HUGE post? i writing here how i’'ve manage to launch 0.6 version. You have to comment 3 lines in main.py.

BTW, PyICQ-t developer have replied that he’‘ll try to investigate that issue. And JIT’‘s developer has replied that he’'ll release new version soon, with disco support built-in.

Hey neutralman,

There is no plan to make PyICQt or JIT work as an internal plugin since they are not written in Java. However, some community members are implementing a gateway framework which may be used as an internal component (what you are looking for) or as an external component. Initially the gateway framework will be used for connecting to Yahoo and possibly MSN but it may be possible to use it for connecting to ICQ too.

Regards,

– Gato