[jdev] Jabber4r

Neil Mc Laughlin nml at fjserv.net
Thu Apr 8 04:09:33 CDT 2004


Many thanks for the advice, especially the link to the JEP.

I added the resource to the API call as suggested. That wasn't quite enough,
Apparently a minor patch was required for the current ruby xml parser. This
is done by the second require statement. It's still a bit rough round the
edges, but it does work now.

Purely for the record, the code is:

require 'jabber4r/jabber4r'
require 'jabber4r/rexml_1.8_patch'

begin
  session = Jabber::Session.bind('bob at jabber/Ruby', 'passwd', 5222, true)
  msg = session.new_message('neilmcl at jabber')
  msg.set_subject('test message')
  msg.set_body('test transmission')
  msg.send
rescue Exception => error
  puts error
ensure
  session.release if session
end


Thanks again,
Regards,
Neil.


----- Original Message ----- 
From: "JD Conley" <jconley at winfessor.com>
To: "Jabber software development list" <jdev at jabber.org>
Sent: Tuesday, April 06, 2004 5:36 PM
Subject: RE: [jdev] Jabber4r


Using Non-SASL digest auth (the method used by jabber4r in your XML) you
need to specify a resource for the user at the time of login.  I don't
know how to do that as I've never used that library.  Notice the empty
<resource/> element in the iq set you sent for authentication.  That is
not allowed.  See the JEP fo Non-SASL Authentication for more details.
http://www.jabber.org/jeps/jep-0078.html

JD

> -----Original Message-----
> From: Neil Mc Laughlin [mailto:nml at fjserv.net]
> Sent: Tuesday, April 06, 2004 7:25 AM
> To: jdev at jabber.org
> Subject: [jdev] Jabber4r
>
> Hi all,
> I am quite new to jabber programming, so my apologies - this
> is probably
> quite basic stuff.
>
> I want to write a jabber bot in ruby using the Jabber4r
> library. The first
> generation bot will just logon to the jabber server without
> throwing an
> exception, but I haven't got that far yet. I'm hoping someone can spot
> what's going wrong here.
>
> Briefly, when the script trys to logon, the server refuses to
> authorize the
> connection. The error is 406 - Not Acceptable. The same uid &
> password works
> fine with rhymbox or exodus.
>
> The xml dialogue is included below, first for the script and
> then for a
> exodus session logging into the same account.
>
>
> Software versions below.
> Ruby version: ruby 1.8.0 (2003-08-04) [i386-mswin32]
> Jabber version: Jabber4r 0.6.0 for Ruby 1.8.1
> Running on win 2k with Cygwin. uname -a output follows:
> CYGWIN_NT-5.0 neil 1.5.5(0.94/3/2) 2003-09-20 16:31 i686
> unknown unknown
> Cygwin
>
>
> This is the script.
> #!/usr/bin/env ruby
> require 'jabber4r/jabber4r'
> Jabber::DEBUG = true
> session = Jabber::Session.bind('neilmcl at jabber', 'password',
> 5222, true)
>
> nb: 'password' isn't my real password.
>
> This is a transcript of the script running.
> bash-2.05b$ jab.rb
> SENDING:
> <?xml version="1.0" encoding="UTF-8" ?><stream:stream to="jabber"
> xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams">
> RECEIVED:
>
> <stream:stream xmlns:stream"http://etherx.jabber.org/streams"
> from"jabber"
> id"407275C1" xmlns"jabber:client"/>
> SENDING:
> <iq type="set" id="2">
>     <query xmlns="jabber:iq:auth"><username>neilmcl</username>
> <digest>a729db796aa737fb20755a154689a22c6c423bce</digest>
> <resource/>
> </query>
> </iq>
> RECEIVED:
>
> <iq type"error" id"2">
> <error code"406">Not Acceptable</error>
> <query xmlns"jabber:iq:auth">
> <resource/>
> <digest
> sid"407275C1">a729db796aa737fb20755a154689a22c6c423bce</digest>
> <username>neilmcl</username>
> </query>
> </iq>
> ./jab.rb:7: warning: already initialized constant DEBUG
> d:/ruby/lib/ruby/site_ruby/1.8/jabber4r/session.rb:141:in `bind':
> Authentication failed (RuntimeError)
>  from ./jab.rb:9
> bash-2.05b$
>
> This is a transcript of the equivalent exodus login.
> SENT: <stream:stream to="jabber" xmlns="jabber:client"
> xmlns:stream="http://etherx.jabber.org/streams" version="1.0" >
> RECV: <?xml version='1.0'?><stream:stream
> xmlns:stream='http://etherx.jabber.org/streams' id='40727C56'
> xmlns='jabber:client' from='jabber'>
> SENT: <iq id="jcl_7" type="get"><query
> xmlns="jabber:iq:auth"><username>neilmcl</username></query></iq>
> RECV: <iq id='jcl_7' type='result'><query
> xmlns='jabber:iq:auth'><username>neilmcl</username><password/>
<digest/><sequ
> ence>495</sequence><token>3F040A38</token><resource/></query></iq>
> SENT: <iq id="jcl_8" type="set"><query
> xmlns="jabber:iq:auth"><username>neilmcl</username><resource>E
xodus</resourc
> e><hash>acfb2bd52679a19c25bb758894ac905e7f308689</hash></query></iq>
> RECV: <iq id='jcl_8' type='result'/>
>
> Cheers everyone,
> Neil
>
> _______________________________________________
> jdev mailing list
> jdev at jabber.org
> https://jabberstudio.org/mailman/listinfo/jdev
>
_______________________________________________
jdev mailing list
jdev at jabber.org
https://jabberstudio.org/mailman/listinfo/jdev




More information about the JDev mailing list