SIPE (SIP Exchange Protocol)

SIPE has new site

Hi everybody. I know much people are interested on this project called SIPE. For that, I’m releasing a new site on SourceForge http://sipe.sf.net.

Pidgin Plug-in SIPE (Sip Exchange Protocol)

Pidgin is a multiprotocol instant messenger for Linux (and other plataforms). SIP is another popular protocol used for VoIP, and it also has an IM (Instant Messenger) analog in the form of SIP/SIMPLE. The SIP/SIMPLE is an open protocol with a documented specification. The Microsoft Live Communication Server (LCS) has support very similar the Sip/Simple protocol (indeed is based 100% on it), but it has non standard especifications classical for a MSN product, is an extend version SIP.

For that, I implemented a Pidgin Plug-in for LCS called SIPE (SIP Exchange). I taked the SIP/Simple implementation developed by Thomas Butter for Pidgin. Thomas had success with the NTLM authentication problem for LCS (at least one part), but I found the LCS SIP especification is very incompatible. The original SIP/Simpe code needed a lot changes (broken the original especification). Then I decided to add that support building a Pidgin plug-in called SIPE (SIP Exchange).

Why the LCS? Because this Communications server is extensively used on enterprise environments (like intranets, coorporative subnets, etc) like Novell-wise or Lotus-SameTime. But the most important reason: I need this support for my job, because I (always) use Linux 😉

Do you want to know more about SIP/Simple protocol?, please read this PDF document from Hannu-Pekka Rajaniemi and Kliment Yanev. On page ten they talked about SIP/Simple -LCS 2005 problem.

Comming soon my project will be hosted in SourceForge

Version 1.3.2

My plugin today is functional and works.

It can do this:

  • Authentication type NTLM (full implement)
  • Retrieve the contacts from the server (with groups)
  • Add/Delete/Move contacts
  • Presense in both sides (full implement) with correct status
  • Send/receive messages (text/plain) to other users.
  • Search contacs in the server
  • Support for TCP/TLS/UDP protocols
  • Support for LCS 2003/2005 and OCS 2007

Remember, you need a LCS (Live Communication Server) and one account (the LCS administrator should give you), my plugin doesn”t create account, just connect to the server.

SIPE on action

I got some screenshots for you check how my plug-in works

SIPE configure basic

SIPE configure advanced (domain and user-windows are the key)

Contacts online

All contacts

32 Comments

  • Jason
    April 9, 2007 - 8:36 am | Permalink

    Glad to see someone finally got this working!

    I’m close – gaim2 beta5, got your plugin installed, but it keeps segfaulting right when it goes to connect.

    Any chance I can get some troubleshooting tips?

  • Anibal
    April 15, 2007 - 8:56 pm | Permalink

    Uhm. Bad news. But I should tell you this code is very experimental. I’m working on this. But I can’t prove all features and configurations posibles. Please, all people need to send me the output from (gaim -d > output.log) command. And if you can, the gdb output.

    Regards.

  • April 20, 2007 - 2:16 am | Permalink

    Is there any chance to have it running on windows?

  • sarang
    May 4, 2007 - 6:22 am | Permalink

    Yup can you make for windows?

  • May 4, 2007 - 4:59 pm | Permalink

    Yes, i have to use a windows interface at work and i would love to keep my gaim/pidgin for everything. this would be worth donating for. Thanks

  • prince
    May 7, 2007 - 9:06 am | Permalink

    I tried your plugin but some how I am not able to connect using it… it always keep trying to connect… is there any way i can debug this?

  • Tom
    May 9, 2007 - 5:50 pm | Permalink

    It was segfaulting for me too, in the sipe_network_get_local_system_ip(void)– I modified the code to return my hardcoded ip and I was able to work around it. It still didn’t work with our exchange server. I wasn’t able to message anyone and I wasn’t getting any presence information

  • Vinoda Kumar
    May 10, 2007 - 2:27 pm | Permalink

    Thanks for a very good plugin for GAIM (Pidgin). I got your plugin to work with gaim 2beta5 (on centos5). But am facing few problems,
    1. Am not able to see the contacts as online (even though they are online).
    2. My status is shown as off-line even if I select the status as available.
    3. It takes a long time to receive the message.

    Could you please help me on this?

  • darbs
    May 11, 2007 - 7:27 pm | Permalink

    i have a question, i am running ubuntu in my work env and every time i go to compile this i get :

    Consider adjusting the PKG_CONFIG_PATH environment variable if you
    installed software in a non-standard prefix.

    I am not that great at linux but i am trying. i cant figure out how to get around that.

    Any help would be amazing, thank you

  • Miro Skriputa
    May 14, 2007 - 6:35 pm | Permalink

    Hi, I am willing to test windows port, we need this plugin to work with TLS, as our LCS server supports nonVPN environment if connected via TLS (is that port 5061?)

    btw are you in contact with official gaim/pidgin guys?
    they have new project for Google sommer of code to make SIP/SIMPLE plugin wok with LCS, and they also track this as issue to be fixed for version 2.0.1, maybe you could give them helping hand to make this work for all of us

    anyway thanks for bringing the gaim/pidgin closer to replacing the standard MS communicator client (which really sux a lot…)

  • Richard Laager
    May 15, 2007 - 10:29 pm | Permalink

    This got referenced from: http://developer.pidgin.im/ticket/48

    For 2.0.0, we’ve gone with this concept of splitting out the common code into a small library and then creating two prpls. If there is significantly different code for LCS, I’d recommend that route. If it’s just a little bit, I’d recommend keeping one prpl.

    If you were to develop this as a patch against Pidgin, we might be willing to merge it upstream. Also, either way, you’d probably see some great advantages from developing this on a branch using our Monotone repository. If you want some help with that, I’m available via IM and my contact information is at: http://developer.pidgin.im/wiki/rlaager

  • June 28, 2007 - 4:07 am | Permalink

    I have installed and configured as described, however now gaim just sets there says “Connecting”, but it never does. Any ideas?

  • avelar
    July 8, 2007 - 11:08 pm | Permalink

    Hi Jeff.

    I need you send me the debug file.

    Please, you run pidgin so:

    pidgin -d > debug.log

    After you send me the debug.log file.

    Regards.

    Fixxxer

  • zerohalo
    August 9, 2007 - 7:05 am | Permalink

    I’m experiencing the same as Jeff (using on Ubuntu).

  • August 15, 2007 - 3:08 pm | Permalink

    I’m getting the same segfault upon connect.

    Running under gdb shows:

    Program received signal SIGSEGV, Segmentation fault.
    [Switching to Thread -1221375792 (LWP 8972)]
    0xb74d6b68 in strcmp () from /lib/libc.so.6

    A backtrace shows:
    (gdb) backtrace
    #0 0xb74d6b68 in strcmp () from /lib/libc.so.6
    #1 0xb6e82540 in sipe_add_lcs_contacts (sip=0x841af58, msg=0x8423540,
    tc=0x8320ee0) at sipe.c:874
    #2 0xb6e807bd in process_input_message (sip=0x841af58, msg=0x8423540)
    at sipe.c:1408
    #3 0xb6e81380 in sipe_input_cb (data=0x841a188, source=16,
    cond=PURPLE_INPUT_READ) at sipe.c:1463

    So when it processes the contacts list, it seems to overflow a buffer or something (I’m not a C coder, so I’m not sure if I’m right there).

    This was on Arch Linux, with gcc version 4.2.1 20070704 (prerelease)

    The last few lines of the output from pidgin -d before the crash show:

    (17:44:28) sipe: name_group->General
    (17:44:28) sipe: id->1
    (17:44:28) sipe: id->General
    (17:44:28) sipe: URI->person1@internal.ourdomain,Groups->1
    (17:44:28) sipe: Groups->parts[i] 1
    (17:44:28) sipe: Found Groups->gr[i].id(1),gr[i].name_group (General)
    (17:44:28) sipe: Groups->parts[i]

    I might see if I can fix this myself, but as I said, I’m no C/C++ coder… perhaps the info above will give the author or someone else a chance to sort it. (I did email this (with a full crashlog) to the author previously.

    Looks like it’s nearly there 🙂

  • hans
    August 28, 2007 - 8:59 pm | Permalink

    Hi! im using fedora 7…. i compile it succesfully but it doens connect. The LCS server use port 5061
    do u know why?
    [hans@ramona ~]$ uname -a
    Linux ramona.eds 2.6.22.4-65.fc7 #1 SMP Tue Aug 21 22:36:56 EDT 2007 i686 i686 i386 GNU/Linux
    [hans@ramona ~]$ rpm -qa|grep pidgin
    pidgin-2.1.0-2.fc7
    pidgin-devel-2.1.0-2.fc7
    [hans@ramona ~]$ rpm -qa|grep libpurple
    libpurple-devel-2.1.0-2.fc7
    libpurple-2.1.0-2.fc7

  • avelar
    August 29, 2007 - 5:51 am | Permalink

    When the LCS uses the port 5061 is because was configurated with TLS/SSL support. I’m probing in the development version that support.

    Please, you follow this pidgin ticket, to read the last messages:

    http://developer.pidgin.im/ticket/48

    Regards.

  • Sean
    January 9, 2008 - 4:51 am | Permalink

    Hey fixxxer:

    This looks quite promising. I have installed your plugin and it seems to work, but all my buddy list shows as “offline”, and I can’t send or receive messages. Are you still supporting this plugin?

    thanks

    Sean

  • Ryan
    January 30, 2008 - 8:04 pm | Permalink

    I also am interested if this plugin is still in active development. Will this be incorporated into the pidgin code? What is the status of the TLS/SSL support?

    Thanks,
    Ryan

  • avelar
    February 8, 2008 - 8:40 am | Permalink

    I’m working with the sofia-sip project to update my plugin. The sofia-sip has support for TLS support and others features. I hope to have good results soon …

  • nofear
    February 16, 2008 - 12:06 am | Permalink

    Do you have any beta code for sofia-sip ? I’d be willing to help you debug it, if it remotely works.

  • February 29, 2008 - 7:11 am | Permalink

    hey fixxxre great work. I am getting stuck and I am getting wrong password errors.

    the trouble is our ecs server is ecs.corp.ds.mycompany.com and thats what the office communicator is connecting to .

    and my email id is myname.mysurname@anothername.com . I am quite confused as to which way to configure this. I set the username to myname.mysurname and in the server i put in ecs.corp.ds.mycompany.com but it keeps saying wrong password.

    cud u help?

    thanks,
    abdul

  • February 29, 2008 - 8:59 am | Permalink

    ========
    (14:57:03) sipe: in process response response: 404
    (14:57:03) sipe: msg->response(404),msg->method(REGISTER)
    (14:57:03) sipe: RE-REGISTER
    (14:57:03) sipe: in process register response response: 404
    (14:57:06) util: Writing file accounts.xml to directory /home/xxxxxxxxxxx/.purple
    (14:57:06) util: Writing file /home/xxxxxxxxx/.purple/accounts.xml
    (14:57:06) util: Writing file blist.xml to directory /home/xxxxxxx/.purple
    (14:57:06) util: Writing file /home/xxxxx/.purple/blist.xml
    (14:58:00) sipe: sipe_input_cb: read error
    ============

    This is till where i manage to get to. in the debug. any suggestions?

  • brad smith
    April 15, 2008 - 7:28 pm | Permalink

    I had the same error. I got it to connect but it still does not work. I put my windows domain name in Screen name.
    brad.smith
    server: I had to put my domain(i.e. mydomain.net)
    Under advanced:
    port: 5060
    check use proxy.
    proxy: the ip of Office communicator server
    auth_user: me
    domain: mydomain.net

    hope that helps you. Do not know if it is even correct but it does connect. I only see one person though. To them I am away. I cant send any messages either.

  • Jeff Sumner
    May 16, 2008 - 5:54 pm | Permalink

    I have the same trouble as Brad, but I also have wireshark traces- the proxy I’ve defined (to get my userid@appropriatedomain.com, which is NOT the internal e-mail address!) works to the extent that I get a SIP connection and authorized, but as soon as the client tries the “SUBSCRIBE” method, I get ” proxy authentication required…”

    And the client, though it looks connected, isn’t.

  • Robert Hau
    March 13, 2009 - 9:59 pm | Permalink

    I think your plugin is great. I use a product called Reuters Messaging. I managed to connect, and download my users and groups. When i send a messages it goes through every time, but when some sends a message to me. I always see the initial “typing”, but only sometimes do i see the messages come actually in. Looking at Debug is see “SIP/2.0 501 Not Implemented” any ideas. I can send some debug output for you to see.

  • Marcelo
    July 10, 2009 - 1:49 am | Permalink

    Hi guys. Any progress on the TLS support for the sipe project?.
    Best Regards.

  • avelar
    July 16, 2009 - 11:06 am | Permalink

    The TLS support was incorpored along time ago.
    Please go to the official site http://sipe.sf.net

  • August 21, 2009 - 11:14 am | Permalink

    Hi Robert,

    Reuters Messaging is very well supported since approximately April 2009.
    Now it is even support multi-party chat.

    Please comment on SIPE sourceforge’s project forums if you have any thoughts/issues.

    Regards,
    pier11

  • KenP
    February 10, 2011 - 1:04 pm | Permalink

    Any chance you can port this as a plugin for Kopete? I use KDE (and Linux) exclusively and have to use pidgin just for this plugin. Not saying pidgin is bad but kopete fits in better with KDE.

    Cheers.

  • February 20, 2012 - 11:03 am | Permalink

    OK, I can’t get this working at all. I get the following error when trying to connect:

    myname@mycompany.com,mydomain\myusername disconnected
    Wrong password

    What could be wrong? My password is correct.

    Configuration:-
    Protocol: Office Communicator
    User name: myname@mycompany.com
    Login: mydomain\myname
    Password: mypassword
    Server: Blank
    Connection type: Auto
    User Agent: Nothing
    Use kerberos: Unchecked
    Use Single Sign-On: Checked
    Calendar source: None
    Proxy: No proxy

  • rajesh
    November 27, 2014 - 12:10 pm | Permalink

    Hi,
    u said that u implemented “Search contacs in the server” does that search retrieves all the contacts?
    for example if I enter email of a user whether it retrieves all other attributes related to that email ?

    presently pidgin-sipe does not retrieve “user” attribute. I changed the DLX_SEARCH_ITEM in sipe-buddy.c but it does not retrieves “user” . do you have any idea how it will retrieve?

  • Leave a Reply

    Your email address will not be published. Required fields are marked *