Re: [jdev] Best ways for a JID to advertise what services it uses?

2010-10-08 Thread Bruce Campbell


On Fri, 8 Oct 2010, Sergey Dobrov wrote:


On 09/21/2010 09:15 PM, Dave Cridland wrote:

On Tue Sep 21 14:34:54 2010, Stephen Pendleton wrote:
Right, and the ideal answer is to use PEP - or rather, pubsub-onna-jid.


PEP has another restriction, there are can't be more than one publisher.


I'm missing the language in the XEP which limits a given node to only 
having one publisher at a time.  I do see where a given item has only one 
publisher though.



This makes impossible to build some kinds of applications on it.


How so?

--
  Bruce.

___
JDev mailing list
Forum: http://www.jabberforum.org/forumdisplay.php?f=20
Info: http://mail.jabber.org/mailman/listinfo/jdev
Unsubscribe: jdev-unsubscr...@jabber.org
___


Re: [jdev] Best ways for a JID to advertise what services it uses?

2010-10-08 Thread Bruce Campbell


On Sat, 9 Oct 2010, Sergey Dobrov wrote:


On 10/09/2010 02:05 AM, Bruce Campbell wrote:


On Fri, 8 Oct 2010, Sergey Dobrov wrote:


On 09/21/2010 09:15 PM, Dave Cridland wrote:

On Tue Sep 21 14:34:54 2010, Stephen Pendleton wrote:
Right, and the ideal answer is to use PEP - or rather, pubsub-onna-jid.


PEP has another restriction, there are can't be more than one publisher.


I'm missing the language in the XEP which limits a given node to only
having one publisher at a time.  I do see where a given item has only
one publisher though.

I don't really understood you but this is explaining link:
http://xmpp.org/extensions/xep-0163.html#approach-publisher


The option of having multiple publishers per node is covered under the 
following:


: A PEP service MAY support other use cases, affiliations, access models, 
: and features, but such support is OPTIONAL.


( http://xmpp.org/extensions/xep-0163.html#defaults )


This makes impossible to build some kinds of applications on it.


How so?


For example if I want to do the service with friends feedbacks about
user. Then I need to allow other users to publish to a node.


Similar to a user's 'wall' in facebook.  Its possible.

--
  Bruce.

___
JDev mailing list
Forum: http://www.jabberforum.org/forumdisplay.php?f=20
Info: http://mail.jabber.org/mailman/listinfo/jdev
Unsubscribe: jdev-unsubscr...@jabber.org
___


Re: [jdev] Best ways for a JID to advertise what services it uses?

2010-10-06 Thread Bruce Campbell


On Thu, 7 Oct 2010, Sergey Dobrov wrote:


On 10/07/2010 03:13 AM, Matthew Wild wrote:


It occured to me that this issue actually relates to a recurring
problem we have in XMPP. When an account is removed from a server we
remove subscriptions to their contacts also. Unfortunately there is no
standard way to know what services an account may have also been
associated with, and so no way to notify them of the accounts
deletion.


But what about transports? It's not enough to remove subscription on
them. We need to unregister also. Otherwise a new JID's owner will be
allowed to access old owner's legacy accounts...


Account re-use is more of a political problem (ie, do the server 
administrators prevent re-use of a given account name for all time, or 
allow it to be used after a certain period ) than a protocol problem.


One way to address it would be to 'suggest' that administrators don't 
re-use a given account for a given period, and for everything that has 
subscriptions to peridocially re-verify all subscribers in some manner. 
Ugh.


--
  Bruce.

___
JDev mailing list
Forum: http://www.jabberforum.org/forumdisplay.php?f=20
Info: http://mail.jabber.org/mailman/listinfo/jdev
Unsubscribe: jdev-unsubscr...@jabber.org
___


Re: [jdev] Embedding a XMPP stream within an IMAP stream, thoughts?

2010-06-21 Thread Bruce Campbell


On Fri, 18 Jun 2010, Dave Cridland wrote:


On Fri Jun 18 18:46:51 2010, Kurt Zeilenga wrote:


On Jun 18, 2010, at 3:32 AM, Dave Cridland wrote:

  A least abomination method for this would be to have a new protocol 
  which acted as a multiplex and single authenticator, and then you could 
  have that use proxy-auth to handle the connect/authenticate cycles of 
  both IMAP and XMPP (and others).


BEEP?  :-)


The worst thing about that is it actually makes quite a bit of sense.


Huh, I'd completely forgotten all about BEEP.  That might also work quite 
well.


--
  Bruce.

___
JDev mailing list
Forum: http://www.jabberforum.org/forumdisplay.php?f=20
Info: http://mail.jabber.org/mailman/listinfo/jdev
Unsubscribe: jdev-unsubscr...@jabber.org
___


[jdev] Embedding a XMPP stream within an IMAP stream, thoughts?

2010-06-16 Thread Bruce Campbell


This is an odd idea that I'm mulling over as part of the creation of a 
user interface (email and IM) within a limited connectivity-but-controlled 
environment.  Essentially, creating connections is expensive, and both 
IMAP and XMPP user credentials are the same.  Think BOSH within a 
pre-existing IMAP stream.


So far I've got a set of draft notes which amount to creating a new IMAP 
capability 'XMPP', a group of client subcommands to control XMPP 
connection/disconnection/multiple identities/sending stanzas, and the 
facility for the server to send arbitary stanzas via untagged responses, 
along with various protocol handwaving to keep things nice and neat.


Any thoughts on the concept and suggestions as to whether to raise this as 
a XEP here or within the appropriate IETF group (Lemonade I believe) ?


--
  Bruce.

___
JDev mailing list
Forum: http://www.jabberforum.org/forumdisplay.php?f=20
Info: http://mail.jabber.org/mailman/listinfo/jdev
Unsubscribe: jdev-unsubscr...@jabber.org
___


Re: [jdev] When to pass the JID??

2010-05-21 Thread Bruce Campbell

On Fri, 21 May 2010, Mason, Matt wrote:


Reading through the spec http://www.ietf.org/rfc/rfc3920.txt  on the
bottom of page 17, top of 18 shows a basic session.  In my
implementation I am trying to figure out when the heck to pass the JID
of the client.  Not in the stream.


Section 3.5 of rfc3920, Determination of Addresses, is probably what you 
want to be reading, along with section 7, Resource Binding.


--
  Bruce.
___
JDev mailing list
Forum: http://www.jabberforum.org/forumdisplay.php?f=20
Info: http://mail.jabber.org/mailman/listinfo/jdev
Unsubscribe: jdev-unsubscr...@jabber.org
___


Re: [jdev] XEP-0080: adding location source information

2010-04-02 Thread Bruce Campbell

On Fri, 2 Apr 2010, Peter Saint-Andre wrote:


On 2/23/10 9:03 AM, Kyle Usbeck wrote:

I very strongly support the addition of source and provider
information to the geoloc spec,


Great. Patches welcome. :)


but their addition means that we might
also have to modify the way we represent stop commands.  According to
XEP-0080:

In order to indicate that the user is no longer publishing any
location information, the user's client shall send an empty
geoloc/ element, which can be considered a stop command for
geolocation.

Example Use Case: Transmit a stop command for a WIFI source, but
continue sending information from a GPS source.


The stop command indicates that the entity has stopped all publishing of
geolocation data from all sources and providers.


The options are 1) include source and provider as optional
attributes of the geoloc/ element, or 2) alter the representation of
the stop command.

By including the source and provider as optional attributes of
geoloc/, we can continue using an empty geoloc/ as a stop command:

geoloc
  xmlns='http://jabber.org/protocol/geoloc'
http://www.google.com/url?sa=Dq=http://jabber.org/protocol/geoloc%27usg=AFQjCNEeMfdwnaV7yu2Aqox0OVKaz2IXlw
  xml:lang='en'
  source='wifi'/

I prefer, though, altering the representation by adding an explicit
termination, such as the type='stop' below:

geoloc
xmlns='http://jabber.org/protocol/geoloc'
http://www.google.com/url?sa=Dq=http://jabber.org/protocol/geoloc%27usg=AFQjCNEeMfdwnaV7yu2Aqox0OVKaz2IXlw
xml:lang='en'
type='stop'
  sourcewifi/source
/geoloc


I'd keep using the source/ child elements for consistency with 
publishing the source of the location information, rather than making it a 
sometime attribute on geoloc/.


Since the geoloc/ element would not be empty in the above case, existing 
implementations shouldn't be treating it as the complete end of location 
informations from the source user, but I guess this depends on whether 
'empty' is considered by the implementation as being 'no child elements' 
or 'no lat/lon/usable elements'.



Are there any other options that I'm missing?


Why do you need to indicate that you are stopping publication from a
particular source or provider? Is there a use case for that feature?


I've got two mildly-contrived-but-plausible use cases.  Firstly, say that 
your device is being used to feed location information (GPS and Intertial) 
to a subscriber which is providing you with real-time driving directions. 
As you enter an extended tunnel, the GPS source loses its signal lock, and 
at the next publication interval, sends a stop stanza for that source. 
This lets the real-time driving directions supplier know that you are 
where you should be (ie, in the tunnel, and not on the surface street), 
and to fall back on timed directions based on the information from the 
Inertial source.


Second use case, say that the same device is actually receiving detailed 
Inertial information via a bluetooth connection to the vehicle.  As you 
park in the parking lot and turn off your vehicle, that source goes away 
and a stop stanza for that source is generated.  A subscriber notices the 
disconnection of that particular source, and records your last-received 
location for later use when you press the ``dude, where's my car?'' button 
on the device.


--
  Bruce.


___
JDev mailing list
Forum: http://www.jabberforum.org/forumdisplay.php?f=20
Info: http://mail.jabber.org/mailman/listinfo/jdev
Unsubscribe: jdev-unsubscr...@jabber.org
___


[jdev] That presence problem again

2007-04-20 Thread Bruce Campbell


This more of a 'what are people doing now' question, not a 'what should 
the implementations be doing'.


Lets say that my Jabber client has an avid desire to know the accurate 
online status of remote JIDs, and the roster subscriptions are 'both'.  To 
that end, my client makes the assumption that if no update to the status 
has been received in an hour, then something has possibly happened to the 
remote JID that hasn't been properly pushed to my client (remote server 
restart normally ).


How should my Jabber _client_ get the latest news about the remote JID?

The solutions that I've tried to get this information are:

  A) Presence probes.  Swallowed by some servers.
presence to='[EMAIL PROTECTED]' type='probe'/
  or
presence to='[EMAIL PROTECTED]' from='[EMAIL PROTECTED]' type='probe'/

  B) Directed presence saying unavailable then available again.
presence to='[EMAIL PROTECTED]' type='unavailable'/
presence to='[EMAIL PROTECTED]'/

  C) Subscribe to their presence again.
presence to='[EMAIL PROTECTED]' type='subscribe'/

and finally (this far less frequently than anything directed at a given 
JID):


  D) Unavailable then available again to the entire roster.
presence type='unavailable/presence/

Of these, the 'subscribe' trick seems to be the most consistent at 
returning the desired information.  'probe's seem to get swallowed by a 
number of servers, and appearing to go offline and online again just 
irritates the remote users.


Any other tricks that people use?

--
  Bruce Campbell.


Re: [jdev] That presence problem again

2007-04-20 Thread Bruce Campbell


On Sat, 21 Apr 2007, Robin Redeker wrote:


On Fri, Apr 20, 2007 at 10:22:33PM +, Nathan Fritz wrote:

I don't see this as being the client's job.

[.snip.]

I don't believe that the client should take it upon itself to nag
about presence, as presence is high traffic enough as it is.


I indeed agree with that. Having clients polling is very undesireable
w.r.t. bandwidth and traffic.


Either I could treat the existing presence push mechanism as being 
partially broken, poll occasionally, and have reasonably updated 
information and, or I could rely completely on the existing presence push 
mechanism, and deal with complaints of, say, a mail notification bot 
filling up an offline message store, or a pretty web presence bot giving 
the wrong information for hours on end.


In this particular situation (mail notification bot), I personally prefer 
the fewer complaints option, since the poll traffic isn't leaving the 
local server.


I like the iq/ option that JD supplied.

--
  Bruce Campbell.

  Of course, I'll argue the other way when it comes to chat clients ;)


Re: [jdev] Re: XMPP Ping method?

2006-11-02 Thread Bruce Campbell


On Wed, 1 Nov 2006, Tomasz Sterna wrote:


On 11/1/06, Alexander Gnauck [EMAIL PROTECTED] wrote:

for some devices it's not. If you work with wireless devices (WLAN, GSM,
UMTS) you will see lot's of strange behavior.


Isn't that broken TCP implementation then?


No; it reflects the design of TCP being based around reliable connections 
where interruptions were infrequent and short in duration (or permanently 
long).


With the advent of new underlying medias which suffer from frequent 
interruptions of highly variable durations, the default TCP values do not 
cope as well.


I'd imagine that certain embedded wireless devices tightly couple the TCP 
retransmission to the underlying carrier detection.  However, many 
devices, for example my laptop, do not have such a tight coupling (if at 
all) and must rely on the TCP retransmission coinciding with the wireless 
card having a reliable signal to the base station.


You can change the client, but asking the server to do so is not the 
solution.


--
  Bruce Campbell.



Re: [jdev] XMPP Ping method?

2006-11-02 Thread Bruce Campbell



On Wed, Nov 01, 2006 at 06:07:39PM +0100, Tobias Markmann wrote:
 Isn't that a TCP problem since that can happen to any protocol which is
 based to TCP?


You should diffentiate between interactive and bulk protocols that use 
TCP.  The latter tend towards getting as much data in the shortest amount 
of time (eg HTTP and FTP request - response setup), whilst the former 
(telnet/ssh, xmpp etc) tend to small amounts of data being sent at 
arbitary intervals.


On Wed, 1 Nov 2006, Dave Cridland wrote:

Hop-by-hop tests are quite easy, too, but there's a gotcha - when they fail, 
you want to know which stanzas you need to resend. And XMPP does not provide 
any mechanism for that, and nor do pings.


If you can be assured of whitespace pings between the client and the 
server, the server can simply queue up all stanzas as received and 
forwarded, and delete from the queue any stanzas sent between successful 
receipt of whitespace pings.  Without protocol changes, the odd duplicated 
stanza is probably the best of a known evil.


--
  Bruce Campbell.


Re: [jdev] net::jabber connect w/ srv dns

2006-07-24 Thread Bruce Campbell

On Thu, 13 Jul 2006, Gabriel Millerd wrote:


You will need to do the SRV lookups yourself in order to hand Net::Jabber
a hostname, either via Net::DNS (requiring you to know how SRV records
work), or Net::RULI (interface to extra library, but hands you the results
on a platter).


 Thanks for replying.

 I can resolve the actual _xmpp-client._tcp myself (worse case I
could statically code it). But it seems that I am still left with
'hostname,port,username,passwd,resource' for my options. And username
automatically becomes [EMAIL PROTECTED] I cannot supply a realm or it
wont auth.


Ah (realisation dawns).  There is an undocumented 'componentname' variable 
that you can pass to Net::Jabber::Client-Connect() (actually 
Net::XMPP::Connection via Net::XMPP::Client) which will do what you want 
it to do.


--
  Bruce Campbell


Re: [jdev] net::jabber connect w/ srv dns

2006-07-13 Thread Bruce Campbell

On Wed, 12 Jul 2006, Gabriel Millerd wrote:


Recently my server addressing has changed somewhat. Now its location
is srv based and the actual host doesn't match the realm. Because of
this I am unable to get anything to work in net::jabber or the perl
interface to loudmoth. Though once change to my /etc/hosts gets me in
the door. I cannot really do that sadly.

Is there a way around this?


You will need to do the SRV lookups yourself in order to hand Net::Jabber 
a hostname, either via Net::DNS (requiring you to know how SRV records 
work), or Net::RULI (interface to extra library, but hands you the results 
on a platter).


I'd point at the -resolve routine of Jabber::Lite (perl-only Jabber 
parser/whathaveyou), but thats just blatant self-promotion ;)


--
  Bruce Campbell


Re: [jdev] XMPP Ping/Keepalive: Recommended method ?

2006-06-28 Thread Bruce Campbell

On Tue, 27 Jun 2006, Joe Hildebrand wrote:


Date: Tue, 27 Jun 2006 05:59:54 -0600
From: Joe Hildebrand [EMAIL PROTECTED]
Reply-To: Jabber software development list jdev@jabber.org
To: Jabber software development list jdev@jabber.org
Subject: Re: [jdev] XMPP Ping/Keepalive: Recommended method ?

On Jun 27, 2006, at 4:09 AM, Bruce Campbell wrote:

Well, not really.  You'll get a TCP ack back, which should be enough to 
keep the lights on.


Not if you are dealing with inspection-type firewalls which don't really 
treat a TCP ACK as a data packet.


If firewalls did this, TCP would *break* for all applications.  Can you 
please give a concrete example of a firewall that has this property?


Not a firewall appliance, but 'interesting' configurations with ISPs 
seeking to keep their dial-up lines/wavelan channels free (timers on their 
end were only reset on certain types of packets, which did not include tcp 
acks).


--
  Bruce Campbell


Re: [jdev] XMPP Ping/Keepalive: Recommended method ?

2006-06-27 Thread Bruce Campbell

On Mon, 26 Jun 2006, Joe Hildebrand wrote:


On Jun 19, 2006, at 1:15 AM, Sergei Golovan wrote:


The problem is that this ping is not a ping at all because it only
sends data and does not expect reply.


Well, not really.  You'll get a TCP ack back, which should be enough to keep 
the lights on.


Not if you are dealing with inspection-type firewalls which don't really 
treat a TCP ACK as a data packet.


Some servers can also be configured to send space 
keep-alives.  If both sides use this algorithm things seem to work pretty 
well:


1) set a timer to some amount of time, say 30 seconds
2) when the timer fires, send a space
3) whenever you send something, reset to the timer to zero
4) whenever you receive something, reset the timer to zero


It works to a point (being probably 95% of cases).  If you have a client 
sending pings every 40 seconds unless first reset, and the server sending 
pings every 30 seconds unless first reset, the client's first ping will be 
the one that discovers that the packet-inspecting firewall wants to see 
non-TCP-ack packets.


If you want to go down that path, you need two timeouts; a short one (30 
seconds) to be reset each time a packet is sent or received as above, and 
a longer one (60 seconds) to trigger a send locally.  In practice, this 
eventually settles down to each side sending a packet at 60 second 
intervals, with a roughly 30 second gap between them.


Even so, this requires server-side configuration; the server may not do 
whitespace pings for policy reasons.


this allows you to detect dead links about as quickly as possible, without 
increasing network traffic any more than absolutely necessary.


There isn't a lot of difference between a TCP packet containing a single 
whitespace character, and a TCP packet containing a dummy iq/ or 
message/ stanza.  Neither will be fragmented.


A whitespace ping is less expensive on the server side, as it gets thrown 
out by the c2s-equivilant component, and just returns a TCP ack. Conversely,
a dummy stanza will always be more expensive, as depending on the server 
design, it may be routed through several components to get to the 
sm-equivilant, then routed back and sent to the client in a second 
TCP-data + TCP-ack pair.


However, the gain is that the client 'knows' that the server is fully 
functioning, and any firewalls in between which expect to see data flowing 
in both directions have nicely had their idle timers reset, vs the client 
just knowing that the TCP stream to the c2s component is still 
functioning.


On the reverse issue, I don't think that servers should generate anything 
more than whitespace pings to verify an ongoing TCP stream with a client. 
This would require changes to most client (which are user-driven, not 
server driven), and generally servers want to clean up after any departed 
TCP streams as soon as possible.


I guess the point I'm trying to make is, do you want the clients to know 
that their next message/ will not generate a TCP error, or do you want 
clients to know that their next message/, if not delivered, will come 
back with an undeliverable stanza ?


--
  Bruce Campbell


Re: [jdev] jabber aliases?

2006-06-19 Thread Bruce Campbell

On Mon, 19 Jun 2006, Igor Goryachev wrote:


On 19 Jun 2006, Tony Finch wrote:


Consider what happens if I send a presence subscription request to an
alias JID, and get a response from the real JID. Will my client behave
sensibly?


Well, I suppose you will just have a dead JID in your roster (with
subscription none) in addition to the real JID.


RFC3921 #8.2 step #8 explicitly states that the original server should 
silently drop the request in such a situation.  Eg:


[EMAIL PROTECTED] ---subscribe---  [EMAIL PROTECTED]

  This by way of aliasing gets resent to [EMAIL PROTECTED] .

  You then approve Tony's subscription:

[EMAIL PROTECTED] ---subscribed---  [EMAIL PROTECTED]

  However, [EMAIL PROTECTED]'s internal roster has no knowledge of
  [EMAIL PROTECTED] (ie, it asked Igor.Goryachev, not Igor), and
  thus Tony's server immediately drops the packet without passing it
  to Tony's client.

--
  Bruce Campbell


Re: [jdev] Transport suggestions

2006-05-24 Thread Bruce Campbell

On Tue, 23 May 2006, Norman Rasmussen wrote:


On May 23, 2006, at 2:09 PM, Daniel Dura wrote:
 Unfortunately, that doesn't fit our use case. We are using XMPP as
 the communications layer for our application and want people to be
 able to login to their GTalk account and see their GTalk contacts


On 5/23/06, Daniel Henninger wrote:

For what it's worth, I've been interested in a Jabber Transport of
sorts as well.  I have a bazillion Jabber accounts at this point and


There's a Perl XMPP transport [1] written by Bruce Campbell while we
were waiting for Google to enable s2s.  I haven't tried it, but I
think it only allows a single registration at a time.


Currently yes.  Its also using the venerable Jabber::Connection library.


Phycon (a buddy of mine) talks [2] about XMPP transports as 'hat
racks' - providing the user the ability to login to many other xmpp
accounts via a transport.  (Very similar to how the pyirct transport
allows you to login to many irc networks at once)


Huh.  Thats actually quite cool overloading the '^' character to seperate 
the destination JID from the proxied JID.  Putting on my security hat 
though, it exposes the proxied JID to view in the routing information, 
which is not good if you are running over a hostile network.  This can be 
worked around by also allowing an internal gateway identifier.


Ok, one new version of xmppgateway coming up.

--
  Bruce Campbell


Re: [jdev] Re: VTD-XML version 1.6

2006-05-21 Thread Bruce Campbell

On Sat, 20 May 2006, Jimmy Zhang wrote:

2. In the future, XML capability will get built into the network layer, but 
if a message is not well-formed
XML, they are less likely to take advantage of those capabilities of network 
routers and switches, again

hindering adoption


I suspect you're smoking better quality drugs than I can get locally. 
Please read through http://en.wikipedia.org/wiki/OSI_model .


Introducing XML at the 'network layer' has a huge number of complications, 
as XML is not a strictly-ordered protocol. It means that every device 
receiving such a packet must run an XML parser, in order to find out where 
in the packet the routing information actually is.  This differs from a 
'real' network layer protocol such as IP, where the routing information is 
located at fixed offsets within the packet, and thus, is comparitively 
easy to put into silicon.


Within the context of Jabber, XML is simply a data format used by an 
Application Layer protcol formerly named 'XMPP'.


--
  Bruce Campbell


Re: [jdev] How to handle SRV lookups when the root domain is referenced

2006-05-03 Thread Bruce Campbell

On Tue, 2 May 2006, Dave Cridland wrote:


On Sun Apr 30 14:16:57 2006, Bruce Campbell wrote:
Both of these documents also refer to DNS-SRV (rfc2781), which states that 
if the target of the sole (successful) SRV answer is the root domain ('.'), 
then 'abort'.
You mean RFC2782, which states that 'A Target of . means that the service 
is decidedly not available at the domain.' - later, in the description of how 
to use SRV records, it merely says 'abort'.


This means your interpretation must be correct - sort of. The server could 
lookup records in _simple.example.com, for instance, if it were capable of 
gatewaying to SIMPLE, but no server to server XMPP service is available.


Something that struck me over the course of today, is that although a 
(sole) target of '.' means 'not available', and imho, 'stop completely', 
it could be argued that since XMPP-IM encourages SRV lookup chains, it 
might be permissible to continue with looking up 
_im._xmpp.example.com/_pres._xmpp.example.com , depending on whether you 
view generic server-to-server XMPP as being different from 
message-or-presence-server-to-server XMPP.


Definitely it's wrong to resolve example.com and try randomly connecting to 
it - not only wrong, but arguably illegal, since you've been explicitly told 
there is no such service at the domain.


Agreed, but enforcement is another matter.

--
  Bruce Campbell


[jdev] How to handle SRV lookups when the root domain is referenced

2006-04-30 Thread Bruce Campbell


In XMPP-IM (rfc3921), the appropriate SRV name to look up for server to 
server connections is '_xmpp-server._tcp.HOST', followed by 
'_im._xmpp.HOST' or '_pres._xmpp.HOST', followed by '_jabber._tcp.HOST' 
(if one wishes compatibility with old records) finally followed by A/ 
lookups for 'HOST'.


In both XMPP-CORE and XMPP-IM, the wording used is 'if the (previous) 
address record resolution fails, (continue with the next resolution)'. 
In DNS terms, 'fails' usually means 'if there was no positive answer'.


Both of these documents also refer to DNS-SRV (rfc2781), which states that 
if the target of the sole (successful) SRV answer is the root domain 
('.'), then 'abort'.


Since there appear to be two sides of the fence in what to do after 
encountering the DNS-SRV 'abort', I'm interested in knowing what have 
Jabber server implementors done with the following corner case, assuming 
that they want to deliver a presence/ and initial message/ to a JID 
@example.com :


_xmpp-server._tcp.example.com.  IN SRV 0 0 5269 .
_im._xmpp.example.com.  IN SRC 0 0 5269 imhandler.example.com.
_pres._xmpp.example.com.IN SRC 0 0 5269 presence.example.com.
_jabber._tcp.example.com.   IN SRV 0 0 5269 jabber.example.com.
example.com.IN A192.168.1.1
jabber.example.com. IN A192.168.2.2
imhandler.example.com.  IN A192.168.3.3
presence.example.com.   IN A192.168.4.4

Since the lookup of _xmpp-server._tcp.example.com is successful, but 
returns just one record with a target of '.', have implementors treated 
this record as:


'stop attempting to look up an address for example.com',
( my personal intrepretation )
 or
'fallback to looking up _im._xmpp.example.com. or
 _pres._xmpp.example.com. as appropriate',
( after all, there wasn't anything with an address resulting
  from the first lookup ).
 or
'fallback to looking up _jabber.example.com.'
( the I haven't read XMPP-IM response ;) )
 or
'stop attempting to look up SRV records and fallback to looking
 up A/ for example.com'
 ?

Various giggle searches on this topic haven't really answered the 
question, and I'm not really keen on examining source code ;)


--
  Bruce Campbell.


Re: [jdev] sasl digest-response

2006-04-23 Thread Bruce Campbell

On Sat, 22 Apr 2006, [ISO-8859-2] Asia G?siewska wrote:

during digest- response. After reading RFC2831 I just don' t understand 
this part:


passwd   = *OCTET

  The username-value, realm-value and passwd are encoded
  according to the value of the charset directive. If charset=UTF-8
  is present, and all the characters of either username-value or
  passwd are in the ISO 8859-1 character set, then it must be
  converted to ISO 8859-1 before being hashed.

What does it mean *OCTET


'*OCTET' - as many octets (bytes, 8 bits) as required for the password.

and should I change everything everytime to iso 
8859-1 ?


The whole reference to ISO 8859-1 is to maintain compatibility with HTTP. 
The way it works is that for the 'username-value' and 'password' fields, 
you scan through the field looking for any characters that are _not_ in 
ISO 8859-1 .  If there are no characters outside ISO 8859-1 in the field, 
you send that field in ISO 8859-1, assuming that the value of the 
'charset' directive is 'ISO 8859-1' for that specific field.


So, if you have a username of 'ez$' with a password of '¥$¢£??' (Yen 
Dollar Cents Pounds Francs Euro), the 'username-value' only contains 
characters in ISO 8859-1, and should be sent in ISO 8859-1.  The 
'password' contains characters outside of ISO 8859-1, and should be sent 
in 'UTF-8', _but_ only if the 'charset' directive is already set to 
'UTF-8'.


Section 8 of 2831 contains a snippet of C which will do all of this for 
you.


--
  Bruce Campbell


Re: [jdev] Using chat room as resource pool -- need advice

2006-02-17 Thread Bruce Campbell

On Mon, 13 Feb 2006, Matthew Wilson wrote:


We have a bunch of boxes (20 or so) that offer web-services to our
server farm of several hundred boxes.  Right now, if a box on a farm
needs to connect to one of the web service boxes, it iterates through
a list of all the web-service boxes, and tries to connect to each one,
until it finds one that is free to handle the request.


Yick.  Your current selection method sucks.


I'm thinking that a better model might be to create a MUC where each
of the web-service boxes are persistently connected.  They would use
their presence attribute to indicate whether they are available or
busy.



I'd prefer that the clients and servers communicate through the room,
rather than directly, so that I can just log the chat room and see all
the transactions.


I'd avoid the MUC (central dependency) and rely on Jabber servers on a few 
boxes to establish inter-server connections.



A few questions:
* Is this asinine?


It depends on the application really.


* Has anyone done anything like this?


Yes.  Code is even available[1].


Are there any hidden gotchas
you discovered?


Essentially, you are wanting to use Jabber as a method to select the 
'most' available host.  Now, whilst you can do this, and it will work, 
there are three gotchas:


a) Jabber has high latency compared to dedicated methods:

The time for each web server JID to report back its
process state to the chat room/other JIDs may well be
longer than the time to process the request; any such
information may well be out of date.

b) Jabber has high latency compared to dedicated methods:

The time taken to receive the roster on each connection
may well be longer than the client wishes to wait.  If you
do implement this, do not connect to Jabber each time you
wish to find an appropriate server; maintain persistent
connections and write the current 'best' choice to a
known file or socket.

c) Jabber is object based, not stream based:

The fundamentals of Jabber are packets, and before any
Jabber-processing does anything with the packet, it needs
to have the full packet in its grubby little hands.  Thus,
sending the web request via Jabber and expecting to
receive a timely reply is somewhat foolish.

In the situation you have described, you would be better served by 
avoiding Jabber; put a web load balancer in front of your web farm.


--
  Bruce Campbell

  [1] I have proof of concept code available privately that sends received
  web requests via Jabber off to a master JID and waits for replies
  via Jabber, but the gotchas described above really kill the
  performance.


Re: [jdev] jabberSMTP

2005-12-16 Thread Bruce Campbell

On Thu, 15 Dec 2005, Jon Scottorn wrote:


Ok, now I don't get any errors but my jabber message is still not coming
through, all I get is:

03:29:26 PM] *** jabbermail is Online [forwarding email]
[03:29:26 PM] *** jabbermail is Offline


Have a read through of this article:

http://www.pipetree.com/jabber/mail_notify.html

It might not be quite what you are looking for, but it does work.

Norman Rasmussen wrote:


I think this would be much cooler with a full smtp transport gateway
idea, but this works for now.


For the jabberd 1.4 series, there was a smtp gateway project listed at 
jabberstudio.  Doesn't appear to be there now, but someone helpfully 
posted the entire tarball to the jadmin list a few days ago.


--
  Bruce Campbell


Re: [jdev] if anyone is having problems with slow propogation forx xmlns=MY_NAMESPACE messages...

2005-12-01 Thread Bruce Campbell

On Wed, 30 Nov 2005, Norman Rasmussen wrote:


You might also try presence elements instead of message elements -
depending on what you mean by the game event.

Typically I would map game movement to presence elements, and game
actions via messages - thoughts?


As long as its always directed presence elements (ie, with a 'to') that is 
being sent out.  I have vague worries of such a game engine being used 
with a user's regular jabber credentials and annoying everyone on their 
roster with floods of spurious update information.


Quite apart from that, its a good idea.  It means that regular jabber 
servers can be used on the servers, and the normal availability mechanism 
will nicely kick when a game connection disconnects.


--
  Bruce Campbell
  [EMAIL PROTECTED]


Re: [jdev] [JEP-33] Some questions

2005-12-01 Thread Bruce Campbell

On Tue, 29 Nov 2005, Norman Rasmussen wrote:


On 11/29/05, Gaston Dombiak [EMAIL PROTECTED] wrote:

I was reading JEP-33 and some questions came up to my mind. :)


Are you considering that the 'server' is a standard jabber server,
with no extra multicast support.  There's an extra multicast component
that is handling all the multicast requests.


Has anyone actually implemented JEP-33 yet?

Quite apart from the obvious usage cases of roster and conferencing 
component, I can see some situations where a s2s component might 
dynamically start implementing it on traffic to a remote domain.


--
  Bruce Campbell


Re: [jdev] Google Talk transport?

2005-10-04 Thread Bruce Campbell

On Mon, 3 Oct 2005, Norman Rasmussen wrote:


On 03/10/05, John Talbot [EMAIL PROTECTED] wrote:

Norman Rasmussen wrote:

I was thinking of making a general XMPP transport for jabber.  You
would have to register with it to supply your gtalk account details.
Also when you set it up on your server you would override the
@gmail.com with the transport, and then all your google talk stuff is
100% transparent to the user after he has registered.

...but why the phrase was thinking? Aren't you thinking of going ahead
anymore?

I'm hoping that google will enable s2s before I have time to code it :-P


Doesn't look that hard.  JEP 100 documents most of the cases.

Actually, it wasn't that hard.  You can download a simple version at 
http://zerlargal.org/c/xmppgateway.pl .


As-is, it probably will _not_ work for realtime conversations with Google 
talk, but enterprising people will understand what line 191 does and be 
able to work around it.


Known Bugs:

PSI drops certain fields in the registration, Gabber doesn't.
This makes registering with the gateway a touch difficult.

Its a 1 to 1 mapping; a given client cannot register multiple
times to different remote networks.

The polling is crufty, and I wouldn't be surprised if it managed
to mix up messages when gatewaying multiple users.

If there are bugs beyond what is documented, I'd love to hear about them.

--
  Bruce Campbell

  Now, all I have to do is to complete my idea of having a corporate
  gateway relaying from [EMAIL PROTECTED] to
  [EMAIL PROTECTED], and I'm set.


Re: [jdev] Google Talk transport?

2005-10-04 Thread Bruce Campbell

On Tue, 4 Oct 2005, Norman Rasmussen wrote:


I'm not that up to speed with the Perl Jabber libraries, so please
excuse me if I'm wrong here.  When I got around to implementing a
transport is going to be in python, because I'm familiar with that.

I was going to make one client connection per-resource.  So basically
if you login twice, you proxy twice too.


The way that I've handled it is to use '[EMAIL PROTECTED]' as the key for looking 
up stored credentials.  Although changing it to use '[EMAIL PROTECTED]/resource' 
as the key, that approach would mean that the user would have to resupply 
credentials if they connect using a different resource value (perhaps this 
means different client, perhaps it means a different instance of the same 
client).


Peter Saint-Andre can probably comment which is the intended approach for 
JEP-100.



Wouldn't that get rid of the
Handling of the Resource portion of the JID is at times crufty
comment?


The cruftyness comment is because I don't bother to copy the resource 
value from the requesting client to the proxied [EMAIL PROTECTED]  Eg, if you 
start talking to the gateway as '[EMAIL PROTECTED]/Gabber', the proxied connection 
is '[EMAIL PROTECTED]/gateway.processid.timevalue' .



Also why not move to data forms to address Certain clients silently
drop some of the tags requested for registration..  That way you can
make your own fields, and things will just-work(tm).


I'm not sure I follow you.  I'm passing from the component to the user:

iq from='componentname' to='[EMAIL PROTECTED]/resource' type='result'
   query xmlns='jabber:iq:register'
instructions
All of the requested fields must be filled in.
/instructions
username/
password/
domain/
server/
port/
   /query
/iq

With Gabber, I see a window that asks for:

Domain:
Password:
Server:
Port:
Username:

With PSI 0.9.3, I see a window that asks for

Password:
Username:

Debug on PSI shows that the packet is received as quoted above, so its a 
bug in PSI.


However, if I register with Gabber, I can still use the gateway with PSI.

--
  Bruce Campbell

  Up to version 1.6 now.


Re: [jdev] jabberd2 clusters?

2005-04-21 Thread Bruce Campbell
On Tue, 19 Apr 2005, Tijl Houtbeckers wrote:

 On Tue, 19 Apr 2005 17:00:17 +0200, Bruce Campbell wrote:

  On Tue, 19 Apr 2005, Mickael Remond wrote:
  a new release of ejabberd 0.9 has been published. ejabberd is a
  clustered, scalable, robust and full featured XMPP server.
 
  Are there any efforts to have jabberd2 be a clusterisable server?  That

 Ironically you make this reply in the thread about the latetst release of
 ejabberd. Take a look at that instead..

Erlang just rubs me the wrong way, and I'd like to see more than one free
clusterisable jabber server around.

Thanks for all the replies; I'll take this to the jabberd list as
indicated.

--==--
Bruce.
___
jdev mailing list
jdev@jabber.org
http://mail.jabber.org/mailman/listinfo/jdev


[jdev] jabberd2 clusters?

2005-04-19 Thread Bruce Campbell
On Tue, 19 Apr 2005, Mickael Remond wrote:

 a new release of ejabberd 0.9 has been published. ejabberd is a
 clustered, scalable, robust and full featured XMPP server.

Are there any efforts to have jabberd2 be a clusterisable server?  That
is, something with those nice sexy buzz words of 'redundant' and
'fault-tolerant' across multiple machines without a single point of
failure, and no mucking about with multiple domains for the user?

--==--
Bruce.
___
jdev mailing list
jdev@jabber.org
http://mail.jabber.org/mailman/listinfo/jdev