processone / ejabberd

Robust, Ubiquitous and Massively Scalable Messaging Platform (XMPP, MQTT, SIP Server)
https://www.process-one.net/en/ejabberd/
Other
6k stars 1.5k forks source link

ejabberdctl command to force update the roster #4130

Closed Jieiku closed 6 months ago

Jieiku commented 6 months ago

I am requesting an ejabberdctl command to force update the roster.

after ejabberdctl add-rosteritem the user does not see the new roster entries unless they close and reopen pidgin.

/opt/ejabberd-23.04/bin/ejabberdctl add-rosteritem jim example.com jake example.com Jake General both

I am hoping for a way to reload their roster using ejabberdctl

licaon-kter commented 6 months ago

Hahahaha Pidgin? C'mon, that's not developed since 2018 and its XMPP state was lousy back then too.

Please Dino or Gajim or Monal...

Jieiku commented 6 months ago

I actually tried to use Gajim for close to a year, it would crash so frequently. Dino is not cross platform, have not tried Monal, will check it out.

Most of my hope is that eventually I will move all my users from pidgin to Kaidan https://kaidan.im/

Say what you will about pidgin, but it never crashes for me or any of my users, so until something better comes along it is what we use.

Monal is mac, all my users are using either linux or windows, not a single one using mac or ios, but will keep it in mind incase we get a mac user.

licaon-kter commented 6 months ago

To be fair you did not mention which platform...

Dino is for Mac (homebrew), Windows (unofficial https://github.com/lagonauta/dino/releases ) and Linux.

It's not what I say about Pidgin is what newbie users say about XMPP by using Pidgin... and that will be awful.

Not even the Pidgin devs support it, again stopped development in 2018 and version 3 is still far away, so pretty please don't recommend or test Pidgin. Test all the other clients I've mentioned.

/LE: Kaidan does not support MUC nor OMEMO v0.3 (most used).

Jieiku commented 6 months ago

I am going to give Dino another try, thanks for the additional response. When I first tried them I do not believe they were cross platform, this is exciting if it does what I need.

Jieiku commented 6 months ago

There are many issues that prevent me from moving to Dino.

  1. Omemo is not used by default: https://github.com/dino/dino/issues/844 , https://github.com/dino/dino/issues/1136
  2. Systray support, minimize on close: https://github.com/dino/dino/issues/98 , https://github.com/dino/dino/issues/299
  3. User info idle time: https://github.com/dino/dino/issues/1526
  4. I do not like the way the contact list / roster is handled in dino, I prefer to have all contacts in my roster visible and ready to interact with, similar to how pidgin or kaidan do it https://github.com/dino/dino/issues/1527

The first two are a must, the others I could live without if I had to since Dino does bring many other features like picture sharing and call support, but I really do like being able to see how long a user has been idle for.

For now will stick with Pidgin, only because I have tried the other solutions, and while I agree that pidgin is missing a lot of very nice features, it does cover the basics and it is stable (no crashing). If Dino ever gets those couple missing features I would switch immediately, also if kaidan gets further along I would consider switching to it as well, or pidgin3

licaon-kter commented 6 months ago

Ok, as you see fit.

Now, can you reproduce this issue with Dino or Gajim or Conversations or Monal or Movim or Profanity? If not, I'd guess it's a Pidgin issue and this can be closed.

badlop commented 6 months ago

I login to two accounts, one using Pidgin 2.14.12, the other one using Tkabberd 1.1.2 from year 2016. Then I use add_rosteritem two times, one to add each user to the roster of the other one.

In the Tkabber XML console I can see that ejabberd sends him the roster IQ and the presence of the new contact, the contact is shown in the roster list, and it shows the proper presence:

<iq to='bb@localhost/tka1'
    from='bb@localhost'
    type='set'
    id='push14319049869689614186'>
  <query ver='c52d5a62558af45b9002725b20af4f2d64aaf16d'
    xmlns='jabber:iq:roster'>
    <item subscription='both'
    name='Nick'
    jid='admin@localhost'>
      <group>Group</group>
    </item>
  </query>
</iq>

<presence xml:lang='en'
    to='bb@localhost/tka1'
    from='admin@localhost/pidginnn'>
  <c node='http://pidgin.im/'
    hash='sha-1'
    ver='AcN1/PEN8nq7AHD+9jpxMV4U6YM='
    ext='voice-v1 camera-v1 video-v1'
    xmlns='http://jabber.org/protocol/caps'/>
  <x xmlns='vcard-temp:x:update'>
    <photo>c687ebf1af0a055f5bb5796ab30a6485e4ac690f</photo>
  </x>
  <priority>1</priority>
  <show>chat</show>
</presence>

I imagine Pidgin receives two equivalent stanzas. It shows the contact in the roster, but does not process the presence stanza. Only when the contact sets a different presence, Pidgin notices it. No need to relogin, just simply change presence (to away, or busy...)

Jieiku commented 6 months ago

thanks badlop, so it is a pidgin issue, will close this.

Sad that Dino does not support systray and minimize instead of close. those issues are like 6 years old, so im guessing Dino is not very actively maintained. (would have loved to switch to Dino if I could)

licaon-kter commented 6 months ago

@Jieiku

so im guessing Dino is not very actively maintained

Hope you are joking...

Neustradamus commented 6 months ago

@Jieiku: You can open a ticket in Pidgin project.

Jieiku commented 6 months ago

I absolutely plan to open a ticket today, thank you Neustradamus.

licaon-kter I am not joking, I really would love to switch to Dino if I could!

Overall Dino seems to address many lacking features in pidgin, but the couple issues I listed really do prevent me from using it or recommending it! We use XMPP to communicate between family members, half our user base is elderly, they will close the client and later wonder where it has gone, something as important as a communications tool should have an option to prevent you from closing it!