XSF Discussion - 2019-06-30

  1. jonas’

    pep., https://www.youtube.com/watch?v=E09LU6XVyxs&t=4s ?

  2. jonas’

    I made a thing: https://github.com/horazont/prometheus-xmpp-blackbox-exporter

  3. ralphm

    Cool. Do you have an example output?

  4. ralphm


  5. jonas’

    ralphm, https://paste.debian.net/hidden/588851b3/

  6. ralphm

    Cool. You could add labels for why the probe fails: maybe one for the mechanism, and one for the reason. Or something.

  7. jonas’

    I don’t think that would be a valid use of labels

  8. jonas’

    (they should be low-cardinality)

  9. jonas’

    it could be made to export all offered SASL mechansims though

  10. jonas’

    https://github.com/horazont/prometheus-xmpp-blackbox-exporter#build--usage more example output

  11. pep.

    That could replace xmpp.net to some extent I guess :)

  12. jonas’

    that’s not the intention

  13. jonas’

    and ralph hasn’t even shouted at me yet, which is good

  14. ralphm

    Hah. Indeed I approve!

  15. Mikaela

    Hi, how does XMPP handle organisations with 55 channels and managing them simultaneously e.g. by adding a moderator to all of them? https://talk.feneas.org/t/federated-instant-messenger-with-easy-access-control/68?u=mikaela

  16. pep.

    I'm not sure I get the question. What kind of "managing" are you talking about?

  17. pep.

    The way I'm picturing it atm is that it could very well be done the same way as IRC with a bot on each room, or at the server level directly. I don't know any specification for that

  18. pep.

    Or even with a client.

  19. Mikaela

    If I had 55 XMPP MUCs, how would I add/remove moderators in all of them simultaneously? In IRC I can create a GroupServ group and give the GroupServ group access to 55 IRC channels and then add users to the group with flag +c so they would have access to everything the group can do

  20. lovetox

    Mikaela, you develop server software that lets you do this

  21. pep.

    GroupServ is not an IRC thing right? It's an implementation detail on some IRC network?

  22. lovetox

    what you are asking is basically you have a muc component on a server and want to administrate it in some ways

  23. Mikaela

    I don't think this is very rare scenario, maybe the number of MUCs is, but I am under impression that XMPP and even Matrix think they are better than IRC, but they cannot handle groups at all. Then Slack came and it has same administrators in all rooms and now Riot wants to replace it and it seems unable to handle this scenario. I was hoping maybe I am wrong and XMPP handles this somehow natively, but I guess it's not designed for big teams either

  24. lovetox

    first server developers would need to give you these administration features

  25. Mikaela

    GroupServ is part of Atheme IRC services, I am not sure if ANope has these

  26. lovetox

    then clients could expose them via ad hoc commands to the server

  27. pep.

    Mikaela, it's entirely doable, just that apparently nobody has needed this before

  28. Mikaela

    I am happy to hear that

  29. pep.

    Also, it's not hard to be better than IRC, when all the features are not native to the protocol but just implementation details :)

  30. lovetox

    Mikaela, i understand the use case, but this is rather easy to do, but needs no XEP standards whatsoever

  31. lovetox

    just write a plugin for prosody or ejabberd, that adds a jid to some muc member list table

  32. pep.

    hmm, you might need to redefine the group on each MUC component though

  33. lovetox

    to execute this method we have already working mechanisms like ad hoc commands, where servers offer administration features

  34. Daniel

    Yeah since you are in the channel for the protocol xmpp and not any specific implementation the answer is its pretty doable. If I were to be hired to do this (hypothetical) I'd to pretty much exactly what lovetox is suggesting. Write prosody module to configure global moderators. Expose control over adhoc

  35. Daniel

    Also not sure if this covers your use case but server admins on ejabberd are automatically owners of every muc

  36. pep.

    same in prosody

  37. pep.

    But that doesn't cover the "group" thing, nor the "at the same time" I guess

  38. Daniel

    I mean it's probably not exactly what you need but it shows that something like this is possible

  39. pep.

    It's all possible but it would be local to a MUC component always

  40. Mikaela

    It does partially, but I guess ideally all the admins wouldn't be server owners, but I am happy with these answers, thank you

  41. pep.

    Mikaela, in prosody you can add component admins as well

  42. pep.

    (I guess there's something similar in ejabberd?)

  43. Daniel

    Or make a bot that is server admin. That you can use to delegate this to

  44. Daniel

    That would allow you to script in every language

  45. Daniel

    And not just the language the server is written in

  46. pep.

    Someday we'll have prosody modules written in Rust! :)

  47. Daniel

    wrt mix it is interesting that I see more and more people asking for IRC level controls. Even 'voice' with voice by default presumably for the ability to soft ban people temporarily is something that people are now asking for

  48. Daniel

    With channels becoming bigger and easier to find

  49. pep.

    Does MIX not have some kind of access control?

  50. Daniel


  51. lovetox

    https://tools.ietf.org/html/rfc7622#section-3.5 mentions a non-jid example quotation marks are not allowed in a localpart

  52. lovetox

    but the defined UserCaseMapping, has no problems with this

  53. pep.

    Daniel, hmm

  54. Daniel

    to be clear i'm not advocating for it to be in there

  55. Daniel

    it's just interesting to me. because until recently i didn’t think people needed that stuff

  56. pep.

    Well tbh it's not like there's many people in our public rooms either

  57. pep.

    I haven't seen that used on IRC for something other than spam-related stuff though

  58. Daniel

    oh from my brief experience the moderators of that one fairly popular public MUC are pretty strict and try to get every one on topic and even kick people and stuff

  59. Daniel

    which is not really how i would handle that and that's the reason i'm not in that muc

  60. Daniel

    but maybe being strict on that kinda stuff is also why they are so popular

  61. Daniel


  62. lovetox

    from where does the rule come that Leading spaces in resourcepart is not allowed?

  63. Zash

    Do you mean Nicknames?

  64. Zash

    I don't think there's such a rule for resourceparts

  65. lovetox


  66. lovetox

    scroll to invalid examples

  67. lovetox

    the definition of resourcepart says only to apply opaqueString profile

  68. lovetox

    which at least in my impl has no problems with spaces also not in first place

  69. Zash

    Ah, must be new in the PRECIS based JID definition

  70. Zash

    I don't see that anywhere else

  71. Daniel

    PRECIS is going to be a problem if we ever actually do this

  72. lovetox

    what do you mean? im doing this already :D

  73. Daniel

    and you run into problems

  74. Zash

    I don't see where this is forbidden

  75. lovetox

    I also dont but somewhere it is, i cant change my nick on a ejabberd

  76. Daniel

    i vaguely remember trailing and leading spaces get normalized to nothing

  77. Zash

    I thought it was only for nicknames as per https://tools.ietf.org/html/rfc8266#section-5

  78. lovetox

    i also dont get jid malformed, it just leaves the space

  79. Daniel

    so ' test' becomes 'test'

  80. Daniel

    but i might be wrong

  81. Zash

    In some more abstract PRECIS class or?

  82. lovetox

    Daniel it seem so, i have no problem with that but i want to read were it actually says that

  83. lovetox

    Zash but we dont use the Nickname class

  84. Zash

    https://tools.ietf.org/html/rfc8264 doesn't say anything

  85. Daniel

    i string prep ' ' is a valid resource. in precis it gets normalized to nothing, which then is not a valid resource

  86. Daniel

    or something

  87. lovetox

    Daniel, yes but there is additional rules

  88. lovetox

    and resourcepart has to be at least 1 char

  89. lovetox

    precis does not enforce ALL rules

  90. lovetox

    we have in xmpp

  91. lovetox

    but most of it, the rest you have to check yourself

  92. lovetox

    but i dont find anything about the leading and trailing space thing

  93. Zash


  94. Zash

    https://tools.ietf.org/html/rfc6885#appendix-B.7 says that in resourceprep > Mapping: Spaces are mapped to nothing

  95. waqas

    All spaces or just spaces at the start?

  96. Zash

    This seems to be a lie

  97. Zash

    Or mistake

  98. Zash

    https://tools.ietf.org/html/rfc3920#appendix-B doesn't explicitly say so

  99. Zash

    Unless by pointing to the entire https://tools.ietf.org/html/rfc3454#section-5 it includes spaces too

  100. lovetox

    But in 7564 it says that Opaque strings such as passwords and nicknames (PRECIS-Nickname)

  101. Zash

    Link Mauve, your nickname is forbidden!

  102. lovetox

    so maybe there is somewhere something thats says to actually use PRECIS-Nickname

  103. Zash

    But resources are not nicknames

  104. Zash

    Are we descending into OOP-y class hierarchy madness now?

  105. lovetox

    no? pretty sure MUC speaks of resources when talking about nicknames

  106. Zash

    You misunderstand

  107. Zash

    Nicknames are resources

  108. Zash

    Resources are not nicknames

  109. Zash

    Nicknames are a subset/subclass of resourecs

  110. lovetox

    yes ! i see my mistake !

  111. Zash

    And resources are a subclass of opaquestring, which is a subclass of freeformstring, which is .. something?

  112. Zash

    Please correct me if I'm not reading these twenty-eleven RFCs correctly

  113. Zash

    I need a class tree viewer thing

  114. lovetox

    im having currently 10 RFCs open in my browser to figure this shit out

  115. lovetox

    it should not be that hard :D

  116. Zash

    P͞r͏e̢pa͞ra҉tion,̸ ̶E̕nf̸orcem̨ent, and̢ ̧C͘o̵m̛p̵̵a̛͢r͟͞͠isơ͢͠n ̧͠o҉͘͢f ̡I̸͠n͞t͞ę̵͡r͘n̵͠͏a̡͠t̛͝i̵̕o͟n̢̛ą́l͟͝͝i͟҉zed͏ ̴̲̝̰̼͍ͪS̼̟̭̲͕̪̅̉͌͐̑t̞̕r̘̬̯̫ͧͨi͈̩̚ņ̞ͬ͊̍͐ͪ̈́̚g̽s̷̆ͣ̃ͧ̇ͯ ͯͫͣ͏̜͓̬͖̻i͈͎͕̳͚̫͕͑́̑̄̂ͪn̸̫̩̖̳̥͖̹̎ A͔̝̦̗̫ͅp͌͆p̨̜͙̋͆ͮ̃l̰̱̲̯̮̞͖̆͋ͯͮį̫̜̺̉ͯ͌̆ͣͮc̞̥̟̥̹͎̖ͯ̒͋á͖͖͕̭͎̦̅̈͝t̸̫̳̩̝̖͉̟̍ͮ̈́ȉ̪̂͊͞ỏ̶͔͉͇̰̹̺͎̏̈́̎̃n̬̣͇̤̝̱̂̂̑͑͂͡ ̵͂ͭͧ̽P̤͚̰̙ͧ̍̔ͫr͇͍͊ͭ̋̒̊̉o̸̯͍tͭ͑ͪ̋̃oͧ̽ͮ̓̈̌͂c̾͂̕ǒ͉͔̰l̛̯͔͈̟ͯ̽́s̡̳͙̣͖͙͐̏

  117. Zash

    The ̴F̢re̕eFor͝mCl̛ass͢ does not forbid spaces!

  118. lovetox

    looks crazy

  119. lovetox

    how you do this?

  120. Zash

    Cl̢as̡s͟ hie͞r̵ar͠c҉h̡y̴ ̶m̷adne̴s̡s ̧e̴n͡s͝u͡e҉s̸!̀

  121. waqas

    Or we can stick with the simpler times, and believe in the alternate universe where PRECIS never happened.

  122. Daniel

    ascii is pretty much all i need

  123. Zash

    Daniel, why do you hate ÅÄÖ?

  124. Zash

    waqas, the universe we (prosody) are currently living in, with stringprep and IDNA2003?

  125. waqas


  126. Zash

    Ugh, don't TLS on 5222! Gaaah

  127. Zash


  128. ralphm


  129. moparisthebest

    Zash: if a public port can't handle literally any trash thrown at it I'm afraid you've done something wrong

  130. Zash

    Sure it can handle it, but it's a pain to look at

  131. moparisthebest

    If, say, it causes binary gunk in a log file that's a bug to fix in the server not a "please stop"

  132. Zash

    The binary gunk I saw in nginx log files from things shoving TLS at port 80 was painful too.