Badlop 5c94639bf2 mod_irc: Disable spurious vCard->WHOIS requests (thanks to Kousu)(#874)
It makes sense that vCard in XMPP roughly maps to WHOIS in IRC,
but there is no code that actually handles receiving WHOISes properly:
they just get passed through as plain messages coming from user!ircserver@irc.xmppserver.tld.
I suppose sometimes you want to manually be able to run a WHOIS and see the results,
so I don't want them banned entirely, but I don't want them on each run.

Sending spurious WHOISes pisses off Xabber, which overenthusiastically sends "get vCard"
IQ stanzas on every single presence change (even "unavailable"); this has the horrible
side effect of spawning a huge number of private chats with users I have never talked to,
and buzzing my phone uncontrollably for a good minute, whenever I join a channel with more
than 50 people in it, and the same every time someone's connection drops.

Disabling this scratches an itch for me and patches over what is arguably Xabber's problem,
but in fact, this code was already half-disabled: *even though it sends IRC commands* it
returns ?ERR_FEATURE_NOT_IMPLEMENTED.  Was this an oversight?
2019-01-21 14:55:31 +01:00
2015-04-29 12:59:44 +02:00
2016-03-08 00:14:25 +01:00
2014-03-14 11:47:54 -05:00

ejabberd-contrib

This is a collaborative development area for ejabberd module developers and users.

For users

To use an ejabberd module coming from this repository:

  • You need to have ejabberd installed.

  • If you have not already done it, run ejabberdctl modules_update_specs to retrieve the list of available modules.

  • Run ejabberdctl module_install <module> to get the source code and to compile and install the beam file into ejabberd's module search path. This path is either ~/.ejabberd-modules or defined by the CONTRIB_MODULES_PATH setting in ejabberdctl.cfg.

  • Edit the configuration file provided in the conf directory of the installed module and update it to your needs. Then apply the changes to your main ejabberd configuration. In a future release, ejabberd will automatically add this file to its runtime configuration without changes.

  • Run ejabberdctl module_uninstall <module> to remove a module from ejabberd.

For developers

The following organization has been set up for the development:

  • Development and compilation of modules is done by ejabberd. You need ejabberd installed. Use ejabberdctl module_check <module> to ensure it compiles correctly before committing your work. The sources of your module must be located in $CONTRIB_MODULES_PATH/sources/<module>.

  • Compilation can by done manually (if you know what you are doing) so you don't need ejabberd running:

    cd /path/of/module
    mkdir ebin
    /path/of/ejabberd's/erlc \
       -o ebin \
       -I include -I /path/of/ejabberd/lib/ejabberd-XX.YY/include \
       -DLAGER -DNO_EXT_LIB \
       src/*erl
    
  • The module directory structure is usually the following:

    • README.txt: Module description.
    • COPYING: License for the module.
    • doc/: Documentation directory.
    • src/: Erlang source directory.
    • lib/: Elixir source directory.
    • priv/msgs/: Directory with translation files (pot, po and msg).
    • conf/<module>.yml: Configuration for your module.
    • <module>.spec: Yaml description file for your module.
  • Module developers should note in the README.txt file whether the module has requirements or known incompatibilities with other modules.

Description
Growing and curated ejabberd contributions repository - PR or ask to join !
Readme 8.3 MiB
Languages
Erlang 98.7%
Ruby 0.9%
Elixir 0.2%
TSQL 0.2%