Opened 12 years ago

Last modified 2 years ago

#547 new patch

jabber roster item exchange (XEP-0093, XEP-0144)

Reported by: Emil Owned by: deryni
Milestone: Patches Needing Improvement Component: XMPP
Version: 2.0 Keywords: jabber rosteritems
Cc: marsjaninzmarsa, mcepl

Description

Attachments (1)

jabber rosteritems.diff (8.8 KB) - added by Emil 12 years ago.

Download all attachments as: .zip

Change History (16)

Changed 12 years ago by Emil

comment:1 Changed 12 years ago by seanegan

  • Milestone set to 2.1.0
  • Owner set to nwalp

comment:2 Changed 12 years ago by mogul

I'm very interested in seeing this change incorporated.

When a new hire shows up, it's the only way I have to easily have him add people to his list. I'm unsure how well protocols other than XMPP support sending of contacts, but I consider this functionality sorely lacking in Pidgin, and is the only reason I still have to rely on having Windows/Exodus? installed...

comment:3 Changed 12 years ago by deryni

What server software are you using? Most of the implementations that I know of at the very least allow you to specify a default roster at account creation if not actually give you live access to the roster information from an administration interface. Either one of those should solve some or all of your new hire problem. Which isn't to say that the patch shouldn't be incorporated anyway, if I get a chance I'll take a look at it (but don't hold your breath I haven't had much chance to look at anything in a while.

comment:4 Changed 12 years ago by mogul

We're using jabberd2. There is a way to specify a set of default roster items for all new accounts, but there's not an appropriate default set for all new users. Rather, I want to send them the set of contacts they're going to interact with most closely, eg their immediate team or their counterparts in other territories. These will vary by individual.

If there's an admin interface for specifying roster contents individually, it's news to me, so please give me a pointer!

Thanks for giving this ticket some attention. I'm sure it's low-priority compared to many items, but I for one would appreciate it!

comment:5 Changed 12 years ago by deryni

I don't know if jabberd2 has such an administrative interface, I know ejabberd does, and I imagine OpenFire does (though I haven't used it myself and so can't be sure).

comment:6 Changed 12 years ago by seanegan

  • Component changed from libpurple to XMPP

comment:7 Changed 11 years ago by jberanek

FYI: Openfire (3.3.2 at least) doesn't seem to have a roster admin interface.

comment:8 Changed 11 years ago by emilyjuci

I'm also very interested in seeing this incorporated. Our department does not have administrative access to our jabber server, but relies heavily on having an up-to-date contact list for all of the users within our department.

The primary reason we have not adopted Pidgin as our main IM client department-wide is because we currently have no way to easily populate roster changes for our XMPP accounts.

comment:9 Changed 10 years ago by rekkanoryo

  • Owner changed from nwalp to deryni

This patch needs reviewed at some point.

comment:10 Changed 10 years ago by rekkanoryo

  • Milestone set to Patches Needing Review

comment:11 Changed 8 years ago by darkrain42

Ticket #13150 has been marked as a duplicate of this ticket.

comment:12 Changed 8 years ago by darkrain42

  • Milestone changed from Patches Needing Review to Patches Needing Improvement
  • Summary changed from jabber rosterintems to jabber roster item exchange (XEP-0093, XEP-0144)

Beyond the fact this wouldn't really apply cleanly anymore, it should probably:

  • Detect advertised support in the receiving client
  • Utilize either of the Roster Item specifications, as supported by the remote client
  • Optionally allow picking a specific resource to send to (maybe?)
  • Use purple_find_buddies(account, NULL) instead of iterating the list looking for buddies whose protocol pretty name is 'XMPP' (which, as an aside, breaks i18n, as that string is translated in purple_account_get_protocol_name)
  • Use C-style comments (/* */) only
  • Use a better idiom than g_list_append() (wjt had an interesting one on his blog, but that post appears to have been taken down -- which is totally unhelpful for me to write here)
  • "Name" may be too vague to be translated properly (not sure)

comment:13 Changed 8 years ago by darkrain42

Resurrected from Google Reader; wjt's glorious correct answer

GList *
mangle_some_things (const GList *things)
{
  GQueue queue = G_QUEUE_INIT;
 
  for (; things != NULL; things = things->next)
    {
      Thing *thing = l->data;
 
      if (pred (thing))
        g_queue_push_tail (&queue, func (thing));
    }
 
  return queue.head;
}

comment:14 Changed 6 years ago by notphilipfry

Please also simultaneously consider

XEP-0321: Remote Roster Management

comment:15 Changed 2 years ago by dustin

FYI I have written a plugin that implements XEP-0144 roster item exchange, partly based on the above patch.

There are still some rough edges and missing details (proper handling of <iq/> responses, adding further groups to an already known contact, ...), but the essential features work.

https://github.com/dzzinstant/pidgin-rosterx-plugin

Note: See TracTickets for help on using tickets.
All information, including names and email addresses, entered onto this website or sent to mailing lists affiliated with this website will be public. Do not post confidential information, especially passwords!