├── .editorconfig ├── .github └── workflows │ └── ci.yml ├── .gitignore ├── README.md ├── atom_pubsub ├── COPYING ├── README.txt ├── atom_pubsub.spec.broken ├── conf │ └── atom_pubsub.yml └── src │ ├── atom_microblog.erl │ ├── atom_pubsub.erl │ └── mod_couch.erl ├── ejabberd_auth_http ├── COPYING ├── README.md ├── ejabberd_auth_http.spec ├── rebar.config └── src │ ├── ejabberd_auth_http.erl │ └── scram2.erl ├── ejabberd_observer_cli ├── COPYING ├── README.md ├── ejabberd_observer_cli.spec ├── rebar.config └── src │ ├── ejabberd_observer_cli.erl │ ├── ejabberd_observer_cli_muc.erl │ ├── ejabberd_observer_cli_users.erl │ ├── ejabberd_observer_cli_userstophost.erl │ └── ejabberd_observer_cli_vhosts.erl ├── extra ├── ejabberd_mod_mam.spec.broken ├── ejabberd_trace.spec.broken ├── mod_http_offline.spec.broken ├── mod_prometheus_exporter.spec.broken └── mod_restful.spec.broken ├── ircd ├── README.txt ├── ircd.spec.broken └── src │ └── ejabberd_ircd.erl ├── mod_archive ├── COPYING ├── README.txt ├── mod_archive.spec.broken ├── priv │ └── msgs │ │ ├── mod_archive_webview.pot │ │ └── pl.mod_archive_webview.po └── src │ ├── mod_archive.erl │ ├── mod_archive_odbc.erl │ ├── mod_archive_odbc_mysql.sql │ ├── mod_archive_odbc_pgsql.sql │ ├── mod_archive_odbc_sqlite3.sql │ ├── mod_archive_sql.erl │ ├── mod_archive_webview.erl │ └── pg_mod_archive.sql ├── mod_captcha_rust ├── COPYING ├── README.md ├── conf │ └── mod_captcha_rust.yml ├── lib │ └── mod_captcha_rust.ex └── mod_captcha_rust.spec ├── mod_cron ├── COPYING ├── ChangeLog ├── README.md ├── conf │ └── mod_cron.yml ├── mod_cron.spec └── src │ └── mod_cron.erl ├── mod_default_contacts ├── COPYING ├── README.md ├── conf │ └── mod_default_contacts.yml ├── mod_default_contacts.spec └── src │ └── mod_default_contacts.erl ├── mod_default_rooms ├── COPYING ├── README.md ├── conf │ └── mod_default_rooms.yml ├── mod_default_rooms.spec └── src │ └── mod_default_rooms.erl ├── mod_deny_omemo ├── COPYING ├── README.md ├── conf │ └── mod_deny_omemo.yml ├── mod_deny_omemo.spec └── src │ └── mod_deny_omemo.erl ├── mod_ecaptcha ├── COPYING ├── README.md ├── conf │ └── mod_ecaptcha.yml ├── mod_ecaptcha.spec ├── rebar.config └── src │ └── mod_ecaptcha.erl ├── mod_example ├── COPYING ├── README.md ├── conf │ └── mod_example.yml ├── mod_example.spec ├── rebar.config └── src │ └── mod_example.erl ├── mod_filter ├── README.md ├── conf │ └── mod_filter.yml ├── mod_filter.spec └── src │ └── mod_filter.erl ├── mod_grafite ├── README.md ├── conf │ └── mod_grafite.yml ├── mod_grafite.spec └── src │ └── mod_grafite.erl ├── mod_http_redirect ├── COPYING ├── README.md ├── conf │ └── mod_http_redirect.yml ├── mod_http_redirect.spec └── src │ └── mod_http_redirect.erl ├── mod_irc ├── README.md ├── include │ └── mod_irc.hrl ├── sql │ ├── lite.new.sql │ ├── lite.sql │ ├── mssql.sql │ ├── mysql.new.sql │ ├── mysql.sql │ ├── pg.new.sql │ └── pg.sql └── src │ ├── mod_irc.erl │ ├── mod_irc_connection.erl │ ├── mod_irc_mnesia.erl │ ├── mod_irc_riak.erl │ └── mod_irc_sql.erl ├── mod_isolation ├── COPYING ├── README.md ├── conf │ └── mod_isolation.yml ├── mod_isolation.spec └── src │ └── mod_isolation.erl ├── mod_libcluster ├── COPYING ├── README.md ├── conf │ └── mod_libcluster.yml ├── lib │ └── mod_libcluster.ex ├── mod_libcluster.spec ├── rebar.config └── test │ ├── epmd.yml │ ├── local_epmd.yml │ └── test.sh ├── mod_log_chat ├── COPYING ├── README.md ├── TODO ├── conf │ └── mod_log_chat.yml ├── mod_log_chat.spec └── src │ └── mod_log_chat.erl ├── mod_logsession ├── COPYING ├── ChangeLog ├── README.md ├── conf │ └── mod_logsession.yml ├── mod_logsession.spec └── src │ ├── failed_auth.patch │ └── mod_logsession.erl ├── mod_logxml ├── COPYING ├── ChangeLog ├── README.md ├── conf │ └── mod_logxml.yml ├── mod_logxml.spec └── src │ └── mod_logxml.erl ├── mod_mam_mnesia ├── README.md └── import-mam-archives ├── mod_message_log ├── COPYING ├── README.md ├── conf │ └── mod_message_log.yml ├── mod_message_log.spec └── src │ └── mod_message_log.erl ├── mod_muc_log_http ├── COPYING ├── ChangeLog ├── README.md ├── conf │ └── mod_muc_log_http.yml ├── mod_muc_log_http.spec └── src │ └── mod_muc_log_http.erl ├── mod_muc_webchat_url ├── COPYING ├── README.md ├── conf │ └── mod_muc_webchat_url.yml ├── mod_muc_webchat_url.spec └── src │ ├── mod_muc_webchat_url.erl │ └── mod_muc_webchat_url_opt.erl ├── mod_openid ├── README.txt ├── mod_openid.spec.broken └── src │ └── mod_openid.erl ├── mod_post_log ├── COPYING ├── README.md ├── conf │ └── mod_post_log.yml ├── mod_post_log.spec └── src │ └── mod_post_log.erl ├── mod_pottymouth ├── COPYING ├── README.md ├── conf │ └── mod_pottymouth.yml ├── mod_pottymouth.spec └── src │ ├── banword_gen_server.erl │ ├── mod_pottymouth.erl │ ├── normalize_leet.erl │ └── normalize_leet_gen_server.erl ├── mod_profile ├── README.txt ├── conf │ └── mod_profile.yml ├── mod_profile.spec.broken └── src │ └── mod_profile.erl ├── mod_prometheus ├── COPYING ├── README.md ├── conf │ └── mod_prometheus.yml ├── example │ ├── docker-compose.yml │ ├── ejabberd-dash.json │ └── prometheus.yml ├── mod_prometheus.spec ├── rebar.config └── src │ └── mod_prometheus.erl ├── mod_pubsub_serverinfo ├── COPYING ├── README.md ├── conf │ └── mod_pubsub_serverinfo.yml ├── include │ └── pubsub_serverinfo_codec.hrl ├── mod_pubsub_serverinfo.spec ├── spec │ └── pubsub_serverinfo_codec.spec └── src │ ├── mod_pubsub_serverinfo.erl │ ├── pubsub_serverinfo_codec.erl │ └── pubsub_serverinfo_codec_external.erl ├── mod_push_offline ├── COPYING ├── README.md ├── conf │ └── mod_push_offline.yml ├── mod_push_offline.spec └── src │ ├── mod_push_offline.erl │ └── mod_push_offline_opt.erl ├── mod_rest ├── COPYING ├── README.md ├── conf │ └── mod_rest.yml ├── mod_rest.spec └── src │ └── mod_rest.erl ├── mod_s2s_log ├── COPYING ├── ChangeLog ├── README.md ├── conf │ └── mod_s2s_log.yml ├── mod_s2s_log.spec └── src │ └── mod_s2s_log.erl ├── mod_s3_upload ├── COPYING ├── README.md ├── conf │ └── mod_s3_upload.yml ├── include │ └── aws.hrl ├── mod_s3_upload.spec └── src │ ├── aws_util.erl │ └── mod_s3_upload.erl ├── mod_shcommands ├── COPYING ├── ChangeLog ├── README.md ├── conf │ └── mod_shcommands.yml ├── mod_shcommands.spec └── src │ └── mod_shcommands.erl ├── mod_spam_filter ├── COPYING ├── README.md ├── TODO.org ├── conf │ └── mod_spam_filter.yml ├── mod_spam_filter.spec └── src │ ├── mod_spam_filter.erl │ └── mod_spam_filter_rtbl.erl ├── mod_statsdx ├── COPYING ├── ChangeLog ├── README.md ├── conf │ └── mod_statsdx.yml ├── mod_statsdx.spec └── src │ ├── mod_stats2file.erl │ └── mod_statsdx.erl ├── mod_tombstones ├── COPYING ├── README.md ├── conf │ └── mod_tombstones.yml ├── mod_tombstones.spec └── src │ ├── mod_tombstones.erl │ └── mod_tombstones_mnesia.erl ├── mod_webadmin_config ├── COPYING ├── README.md ├── conf │ └── mod_webadmin_config.yml ├── mod_webadmin_config.spec └── src │ └── mod_webadmin_config.erl └── mod_webpresence ├── AUTHORS ├── COPYING ├── ChangeLog ├── README.md ├── TODO.txt ├── conf └── mod_webpresence.yml ├── mod_webpresence.spec ├── priv ├── msgs │ ├── es.mod_webpresence.msg │ ├── es.mod_webpresence.po │ ├── mod_webpresence.pot │ ├── wa.mod_webpresence.msg │ └── wa.mod_webpresence.po └── pixmaps │ ├── 3d-dot1 │ ├── available.gif │ ├── away.gif │ ├── chat.gif │ ├── dnd.gif │ ├── unavailable.gif │ └── xa.gif │ ├── 3d-dot2 │ ├── available.gif │ ├── away.gif │ ├── chat.gif │ ├── dnd.gif │ ├── unavailable.gif │ └── xa.gif │ ├── alphamod │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── amibulb │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── amigadu │ ├── available.gif │ ├── away.gif │ ├── chat.gif │ ├── dnd.gif │ ├── unavailable.gif │ └── xa.gif │ ├── amiglobe │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── amiicq │ ├── available.gif │ ├── away.gif │ ├── chat.gif │ ├── dnd.gif │ ├── unavailable.gif │ └── xa.gif │ ├── amimsn │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── amistellar │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── amitlen │ ├── available.gif │ ├── away.gif │ ├── chat.gif │ ├── dnd.gif │ ├── unavailable.gif │ └── xa.gif │ ├── bulb │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── chrome-pl │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── crystal │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── crystal2 │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── crystal3 │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── dcraven │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── dudes │ ├── available.gif │ ├── away.gif │ ├── chat.gif │ ├── dnd.gif │ ├── unavailable.gif │ └── xa.gif │ ├── frickenhuge │ ├── available.gif │ ├── away.gif │ ├── chat.gif │ ├── dnd.gif │ ├── unavailable.gif │ └── xa.gif │ ├── gabber │ ├── available.gif │ ├── away.gif │ ├── chat.gif │ ├── dnd.gif │ ├── unavailable.gif │ └── xa.gif │ ├── gg │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── gnome │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── gossip │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── gota │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── gtalk │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── icq │ ├── available.gif │ ├── away.gif │ ├── chat.gif │ ├── dnd.gif │ ├── unavailable.gif │ └── xa.gif │ ├── invision │ ├── available.gif │ ├── away.gif │ ├── chat.gif │ ├── dnd.gif │ ├── unavailable.gif │ └── xa.gif │ ├── jabberbulb │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── jsf-jabber-text │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── jsf-text │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── jsf-text2 │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── koniczynek │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── licq │ ├── available.gif │ ├── away.gif │ ├── chat.gif │ ├── dnd.gif │ ├── unavailable.gif │ └── xa.gif │ ├── nahuatl │ ├── available.gif │ ├── away.gif │ ├── chat.gif │ ├── dnd.gif │ ├── unavailable.gif │ └── xa.gif │ ├── nuvola │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── phpbb │ ├── available.gif │ ├── away.gif │ ├── chat.gif │ ├── dnd.gif │ ├── unavailable.gif │ └── xa.gif │ ├── pogoda │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── psi │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── simple │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── simplebulb │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── stellar │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── stellar2 │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── sun │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── tux │ ├── available.gif │ ├── away.gif │ ├── chat.gif │ ├── dnd.gif │ ├── unavailable.gif │ └── xa.gif │ ├── wpkontakt │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ ├── yipee │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png │ └── zyx │ ├── available.png │ ├── away.png │ ├── chat.png │ ├── dnd.png │ ├── unavailable.png │ └── xa.png └── src └── mod_webpresence.erl /.editorconfig: -------------------------------------------------------------------------------- 1 | [*.erl] 2 | indent_style = tab 3 | indent_size = 4 4 | tab_width = 8 -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.beam 2 | */deps/* 3 | -------------------------------------------------------------------------------- /atom_pubsub/atom_pubsub.spec.broken: -------------------------------------------------------------------------------- 1 | author: "Eric Cestari " 2 | category: "pubsub" 3 | summary: "Provides access to all PEP nodes via an AtomPub interface" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/atom_pubsub" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /atom_pubsub/conf/atom_pubsub.yml: -------------------------------------------------------------------------------- 1 | listen: 2 | - 3 | port: 8080 4 | module: ejabberd_http 5 | request_handlers: 6 | "pep": atom_microblog 7 | "pubsub": atom_pubsub 8 | -------------------------------------------------------------------------------- /atom_pubsub/src/mod_couch.erl: -------------------------------------------------------------------------------- 1 | %%%---------------------------------------------------------------------- 2 | %%% File : mod_couch.erl 3 | %%% Author : Eric Cestari 4 | %%% Purpose : Configures and starts ecouch client 5 | %%% Created : 6 | %%% Id : $Id$ 7 | %%%---------------------------------------------------------------------- 8 | 9 | -module(mod_couch). 10 | -author('eric@ohmforce.com'). 11 | -vsn('0.2.0'). 12 | 13 | -behaviour(gen_mod). 14 | 15 | -export([start/2, stop/1]). 16 | 17 | start(Host, Opts) -> 18 | Server = gen_mod:get_opt(server, Opts, {"127.0.0.1", "5984"}), 19 | inets:start(), 20 | application:set_env(ecouch, Server, {}), 21 | application:start(ecouch). 22 | 23 | stop(_Host) -> 24 | application:stop(ecouch). -------------------------------------------------------------------------------- /ejabberd_auth_http/ejabberd_auth_http.spec: -------------------------------------------------------------------------------- 1 | author: "Piotr Nosek " 2 | category: "auth" 3 | summary: "Authentication via HTTP request" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /ejabberd_auth_http/rebar.config: -------------------------------------------------------------------------------- 1 | {deps, [ 2 | {cuesport, ".*", {git, "https://github.com/goj/cuesport"}}, 3 | {fusco, "0.1.1", {git, "https://github.com/esl/fusco"}} 4 | ]}. 5 | -------------------------------------------------------------------------------- /ejabberd_observer_cli/README.md: -------------------------------------------------------------------------------- 1 | ejabberd observer_cli plugins 2 | ============================= 3 | 4 | [observer_cli][oc] is an erlang tool to 5 | visualize Erlang node statistics on the command line. 6 | 7 | This directory contains several plugins 8 | specifically written to view statistics of [ejabberd][ej]. 9 | 10 | To install this, just run: 11 | ```bash 12 | ejabberdctl module_install ejabberd_observer_cli 13 | ``` 14 | It will automatically download, compile and install the required dependencies: 15 | [observer_cli][oc], [recon][recon], 16 | and the additional plugin [os_stats][os]. 17 | 18 | Then, start an erlang shell attached to your ejabberd node, for example: 19 | ```bash 20 | ejabberdctl debug 21 | ``` 22 | in that erlang shell execute: 23 | ```erlang 24 | ejabberd_observer_cli:start(). 25 | ``` 26 | 27 | If using Elixir (for example when started with `ejabberdctl iexdebug`, run: 28 | ```elixir 29 | :ejabberd_observer_cli.start() 30 | ``` 31 | 32 | To sort columns or change between the different pages, 33 | type the corresponding letter and hit Enter. 34 | For example, to view MUC statistics, type: `M and then Enter`. 35 | 36 | There is no configuration required. 37 | 38 | [oc]: https://github.com/zhongwencool/observer_cli 39 | [os]: https://github.com/zhongwencool/os_stats 40 | [recon]: https://github.com/ferd/recon 41 | [ej]: https://www.ejabberd.im/ 42 | -------------------------------------------------------------------------------- /ejabberd_observer_cli/ejabberd_observer_cli.spec: -------------------------------------------------------------------------------- 1 | author: "Badlop " 2 | category: "stats" 3 | summary: "Observer CLI plugins for ejabberd" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /ejabberd_observer_cli/rebar.config: -------------------------------------------------------------------------------- 1 | {deps, [ 2 | {observer_cli, "1.8.3", {git, "https://github.com/zhongwencool/observer_cli"}}, 3 | {os_stats, ".*", {git, "https://github.com/zhongwencool/os_stats"}}, 4 | {recon, "2.5.6", {git, "https://github.com/ferd/recon"}} 5 | ]}. 6 | -------------------------------------------------------------------------------- /ejabberd_observer_cli/src/ejabberd_observer_cli.erl: -------------------------------------------------------------------------------- 1 | -module(ejabberd_observer_cli). 2 | 3 | -export([start/0, stop/1, mod_status/0]). 4 | 5 | start() -> 6 | application:set_env(observer_cli, plugins, plugins(), [{persistent, true}]), 7 | observer_cli:start_plugin(). 8 | 9 | stop(_Host) -> 10 | ok. 11 | 12 | mod_status() -> 13 | "In an erlang shell run: ejabberd_observer_cli:start().". 14 | 15 | plugins() -> 16 | [ 17 | #{ 18 | module => ejabberd_observer_cli_vhosts, 19 | title => "VHosts", 20 | interval => 1600, 21 | shortcut => "V", 22 | sort_column => 2 23 | }, 24 | #{ 25 | module => ejabberd_observer_cli_users, 26 | title => "Users", 27 | interval => 1600, 28 | shortcut => "U", 29 | sort_column => 2 30 | }, 31 | %% #{module => ejabberd_observer_cli_userstophost, title => "Users Top Vhost", 32 | %% interval => 1600, shortcut => "T", sort_column => 2}, 33 | #{ 34 | module => ejabberd_observer_cli_muc, 35 | title => "MUC", 36 | interval => 1600, 37 | shortcut => "M", 38 | sort_column => 2 39 | }, 40 | #{ 41 | module => os_stats_plug, 42 | title => "OS", 43 | interval => 2000, 44 | shortcut => "O", 45 | sort_column => 2 46 | } 47 | ]. 48 | -------------------------------------------------------------------------------- /ejabberd_observer_cli/src/ejabberd_observer_cli_muc.erl: -------------------------------------------------------------------------------- 1 | -module(ejabberd_observer_cli_muc). 2 | 3 | %% observer_cli_plugin Callback API 4 | -export([attributes/1, sheet_header/0, sheet_body/1]). 5 | 6 | attributes(PrevState) -> 7 | OnlineRoomsNumber = lists:foldl( 8 | fun(Host, Acc) -> 9 | Acc + mod_muc:count_online_rooms(Host) 10 | end, 11 | 0, 12 | mod_muc_admin:find_hosts(global) 13 | ), 14 | 15 | Attrs = [ 16 | [ 17 | #{content => "MUC Rooms", width => 25}, 18 | #{content => OnlineRoomsNumber, width => 8} 19 | ] 20 | ], 21 | NewState = PrevState, 22 | {Attrs, NewState}. 23 | 24 | sheet_header() -> 25 | [ 26 | #{title => "Room Name", width => 20, shortcut => "n"}, 27 | #{title => "MUC Service", width => 30, shortcut => "s"}, 28 | #{title => "Occupants", width => 12, shortcut => "o"}, 29 | #{title => "Subscribers", width => 13, shortcut => "r"} 30 | ]. 31 | 32 | sheet_body(PrevState) -> 33 | Body = [ 34 | begin 35 | {Name, Service, _} = jid:split(jid:decode(RoomStr)), 36 | OccupantsNumber = mod_muc_admin:get_room_occupants_number(Name, Service), 37 | SubsNumber = length(mod_muc_admin:get_subscribers(Name, Service)), 38 | [ 39 | Name, 40 | Service, 41 | OccupantsNumber, 42 | SubsNumber 43 | ] 44 | end 45 | || RoomStr <- mod_muc_admin:muc_online_rooms(global) 46 | ], 47 | NewState = PrevState, 48 | {Body, NewState}. 49 | -------------------------------------------------------------------------------- /ejabberd_observer_cli/src/ejabberd_observer_cli_userstophost.erl: -------------------------------------------------------------------------------- 1 | -module(ejabberd_observer_cli_userstophost). 2 | 3 | %% observer_cli_plugin Callback API 4 | -export([attributes/1, sheet_header/0, sheet_body/1]). 5 | 6 | get_top_host() -> 7 | lists:foldl( 8 | fun(Host, {HostRelativeMax, CountRelativeMax}) -> 9 | case ejabberd_auth:count_users(Host) of 10 | Count when Count > CountRelativeMax -> 11 | {Host, Count}; 12 | _ -> 13 | {HostRelativeMax, CountRelativeMax} 14 | end 15 | end, 16 | {unknown, -1}, 17 | ejabberd_option:hosts() 18 | ). 19 | 20 | attributes(PrevState) -> 21 | {Host, _} = get_top_host(), 22 | RegisteredUsers = ejabberd_auth:count_users(Host), 23 | Sessions = length(ejabberd_sm:dirty_get_sessions_list()), 24 | SessionsThisNode = length(ejabberd_sm:dirty_get_my_sessions_list()), 25 | 26 | Attrs = [ 27 | [ 28 | #{content => "Virtual Host", width => 12}, 29 | #{content => Host, width => 14}, 30 | #{content => "Sessions Total", width => 18}, 31 | #{content => Sessions, width => 8} 32 | ], 33 | [ 34 | #{content => "Accounts Total", width => 12}, 35 | #{content => RegisteredUsers, width => 14}, 36 | #{content => "Sessions This Node", width => 18}, 37 | #{content => SessionsThisNode, width => 8} 38 | ] 39 | ], 40 | NewState = PrevState, 41 | {Attrs, NewState}. 42 | 43 | sheet_header() -> 44 | [ 45 | #{title => "Username", width => 25, shortcut => "u"}, 46 | #{title => "Resources", width => 15, shortcut => "r"} 47 | ]. 48 | 49 | sheet_body(PrevState) -> 50 | {Host, _} = get_top_host(), 51 | Body = [ 52 | begin 53 | [ 54 | Username, 55 | length(ejabberd_sm:get_user_resources(Username, Host)) 56 | ] 57 | end 58 | || {Username, _} <- lists:reverse(lists:sort(ejabberd_auth:get_users(Host))) 59 | ], 60 | NewState = PrevState, 61 | {Body, NewState}. 62 | -------------------------------------------------------------------------------- /extra/ejabberd_mod_mam.spec.broken: -------------------------------------------------------------------------------- 1 | author: "Gregor Uhlenheuer " 2 | category: "archive" 3 | summary: "Message Archive Management (XEP-0313)" 4 | home: "https://github.com/kongo2002/ejabberd-mod-mam/tree/master/" 5 | url: "git@github.com:kongo2002/ejabberd-mod-mam.git" 6 | -------------------------------------------------------------------------------- /extra/ejabberd_trace.spec.broken: -------------------------------------------------------------------------------- 1 | author: "Lavrin" 2 | category: "admin" 3 | summary: "Easy tracing of connections made to ejabberd" 4 | home: "https://github.com/lavrin/ejabberd-trace/tree/master/" 5 | url: "git@github.com:lavrin/ejabberd-trace.git" 6 | -------------------------------------------------------------------------------- /extra/mod_http_offline.spec.broken: -------------------------------------------------------------------------------- 1 | author: "Rael Max" 2 | category: "http" 3 | summary: "POST offline messages to a web" 4 | home: "https://github.com/raelmax/mod_http_offline/tree/master/" 5 | url: "git@github.com:raelmax/mod_http_offline.git" 6 | -------------------------------------------------------------------------------- /extra/mod_prometheus_exporter.spec.broken: -------------------------------------------------------------------------------- 1 | author: "Mark.Wang Wxj3791906@gmail.com" 2 | category: "monitor" 3 | summary: "Provides access to get ejabberd runtime info interface" 4 | home: "https://github.com/lemon2015/ejabberd-prometheus-exporter" 5 | url: "https://github.com/lemon2015/ejabberd-prometheus-exporter.git" 6 | -------------------------------------------------------------------------------- /extra/mod_restful.spec.broken: -------------------------------------------------------------------------------- 1 | author: "Jonas Ådahl " 2 | category: "http" 3 | summary: "RESTful API for ejabberd" 4 | home: "https://github.com/jadahl/mod_restful/tree/master/" 5 | url: "git@github.com:jadahl/mod_restful.git" 6 | -------------------------------------------------------------------------------- /ircd/ircd.spec.broken: -------------------------------------------------------------------------------- 1 | author: "Magnus Henoch " 2 | category: "listener" 3 | summary: "IRC server frontend to ejabberd" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_archive/COPYING: -------------------------------------------------------------------------------- 1 | TODO -------------------------------------------------------------------------------- /mod_archive/README.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | *************** 4 | PLEASE NOTE 5 | *************** 6 | 7 | Those modules do NOT work 8 | with ejabberd 13 or newer. 9 | 10 | *************** 11 | 12 | 13 | mod_archive - Message Archiving (XEP-0136) 14 | 15 | There are three different modules, the main difference between them is the storage method: 16 | - mod_archive uses Mnesia 17 | - mod_archive_sql uses PostgreSQL 18 | - mod_archive_odbc uses MySQL or SQLite3 19 | 20 | As of today (2008-03-15) mod_archive_odbc is the most complete and maintained. 21 | 22 | And another module is used to view archive onlines 23 | - mod_archive_webview webviewer for mod_archive_odbc 24 | 25 | 26 | MOD_ARCHIVE 27 | =========== 28 | 29 | Author: Olivier Goffart 30 | 31 | This module does support almost all the XEP-0136 version 0.6 except otr (off-the-record). 32 | 33 | Features 34 | - Automatic archiving 35 | - User may enable/disable automatic archiving for one contact or globally 36 | - Manual archiving 37 | - Retrieve or remove archive 38 | - XEP-0059 39 | 40 | Not Supported 41 | - Off the record 42 | - Groupchats message 43 | 44 | Options 45 | - save_default: true or false: whether or not messages should be saved by default 46 | - session_duration: The time in seconds before a session timeout (for a collection). The default value is 30 minutes. 47 | 48 | Support of XEP-136 on Jabber clients 49 | - JWChat: Implemented, but does not work, since it implements an old version. An update on JWChat is expected in the mid-term. 50 | - Kopete: Planned for the mid-term. 51 | 52 | 53 | 54 | MOD_ARCHIVE_SQL 55 | =============== 56 | 57 | Author: Alexey Shchepin 58 | Based in mod_archive, author: Olivier Goffart 59 | 60 | 61 | 62 | MOD_ARCHIVE_ODBC 63 | ================ 64 | 65 | Author: Alexander Tsvyashchenko 66 | Based in mod_archive, author: Olivier Goffart 67 | Based in mod_archive_sql, author: Alexey Shchepin 68 | 69 | For a detailed documentation about this module, please refer to 70 | http://endl.ch/content/mod_archive_odbc-release 71 | 72 | 73 | MOD_ARCHIVE_WEBVIEW 74 | =================== 75 | Author: Olivier Goffart 76 | 77 | This module woks with the database of mod_archive_odbc 78 | 79 | Edit ejabberd.cfg and add the HTTP and module definitions: {["archive"], mod_archive_webview} to the list of request handler 80 | {listen, [ {5280, ejabberd_http, [ %... 81 | {request_handlers, [{["archive"], mod_archive_webview} 82 | ]} ]} ]}. 83 | 84 | then go on http://your.server.com:5280/archive 85 | -------------------------------------------------------------------------------- /mod_archive/mod_archive.spec.broken: -------------------------------------------------------------------------------- 1 | author: "Olivier Goffart " 2 | category: "archive" 3 | summary: "Supports almost all the XEP-0136 version 0.6 except otr" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_archive/src/pg_mod_archive.sql: -------------------------------------------------------------------------------- 1 | CREATE SEQUENCE archive_collection_sid_seq; 2 | 3 | CREATE TABLE archive_collection ( 4 | sid bigint NOT NULL DEFAULT nextval('archive_collection_sid_seq') PRIMARY KEY, 5 | username text NOT NULL, 6 | jid_u text NOT NULL, 7 | jid_s text NOT NULL, 8 | jid_r text NOT NULL, 9 | start int8 NOT NULL, 10 | subject text NOT NULL 11 | ); 12 | 13 | CREATE INDEX i_archive_collection_username ON archive_collection USING btree (username); 14 | CREATE INDEX i_archive_collection_user_jid ON archive_collection USING btree (username, jid_u, jid_s); 15 | CREATE UNIQUE INDEX i_archive_collection_user_jid_start ON archive_collection USING btree (username, jid_u, jid_s, start); 16 | 17 | CREATE SEQUENCE archive_message_ser_seq; 18 | 19 | CREATE TABLE archive_message ( 20 | sid bigint REFERENCES archive_collection ON DELETE CASCADE, 21 | ser bigint NOT NULL DEFAULT nextval('archive_message_ser_seq'), 22 | direction_to boolean NOT NULL, 23 | secs int NOT NULL, 24 | utc int8 NOT NULL, 25 | name text NOT NULL, 26 | jid text NOT NULL, 27 | body text NOT NULL 28 | ); 29 | 30 | CREATE INDEX i_archive_message_sid ON archive_message USING btree (sid); 31 | 32 | -- FTS support 33 | -- Requires tsearch2 and btree_gist 34 | 35 | ALTER TABLE archive_collection ADD COLUMN fts tsvector NOT NULL DEFAULT to_tsvector(''); 36 | 37 | CREATE INDEX i_archive_collection_fts on archive_collection USING gist(username, fts); 38 | 39 | CREATE RULE r_archive_fts_update AS ON INSERT TO archive_message DO ALSO 40 | UPDATE archive_collection 41 | SET fts = fts || to_tsvector(translate(NEW.body, '<>&', ' ')) 42 | WHERE sid = NEW.sid; 43 | 44 | --CREATE TABLE archive_fts ( 45 | -- sid bigint PRIMARY KEY REFERENCES archive_collection ON DELETE CASCADE, 46 | -- username text NOT NULL, 47 | -- fts tsvector 48 | --); 49 | -- 50 | --CREATE INDEX i_archive_fts on archive_fts USING gist(username, fts); 51 | -- 52 | --CREATE RULE r_archive_fts_empty AS ON INSERT TO archive_collection DO ALSO 53 | -- INSERT INTO archive_fts(sid, username, fts) 54 | -- VALUES (NEW.sid, NEW.username, to_tsvector('')); 55 | -- 56 | --CREATE RULE r_archive_fts_update AS ON INSERT TO archive_message DO ALSO 57 | -- UPDATE archive_fts 58 | -- SET fts = fts || to_tsvector(translate(NEW.body, '<>&', ' ')) 59 | -- WHERE sid = NEW.sid; 60 | 61 | -------------------------------------------------------------------------------- /mod_captcha_rust/conf/mod_captcha_rust.yml: -------------------------------------------------------------------------------- 1 | captcha_cmd: 'Ejabberd.Module.CaptchaRust' 2 | 3 | captcha_url: http://localhost:5288/captcha/ 4 | 5 | listen: 6 | - 7 | port: 5288 8 | module: ejabberd_http 9 | request_handlers: 10 | /captcha: ejabberd_captcha 11 | 12 | modules: 13 | 'Ejabberd.Module.CaptchaRust': {} 14 | -------------------------------------------------------------------------------- /mod_captcha_rust/lib/mod_captcha_rust.ex: -------------------------------------------------------------------------------- 1 | defmodule Ejabberd.Module.CaptchaRust do 2 | 3 | @behaviour :gen_mod 4 | import Ejabberd.Logger 5 | 6 | require Record 7 | 8 | ##==================================================================== 9 | ## gen_mod callbacks 10 | ##==================================================================== 11 | 12 | def start(_host, _opts) do 13 | :ok 14 | end 15 | 16 | def stop(_host) do 17 | :ok 18 | end 19 | 20 | def depends(_host, _opts) do 21 | [] 22 | end 23 | 24 | def mod_opt_type(:color) do 25 | :econf.list(:econf.int(0, 255)) 26 | end 27 | 28 | def mod_opt_type(:difficulty) do 29 | :econf.enum([:easy, :medium, :hard]) 30 | end 31 | 32 | def mod_options(_host) do 33 | [ 34 | {:color, [0, 0, 0]}, 35 | {:difficulty, :easy}, 36 | ] 37 | end 38 | 39 | def mod_doc() do 40 | %{:desc => 'This is just a demonstration.'} 41 | end 42 | 43 | ##==================================================================== 44 | ## Captcha Rust 45 | ##==================================================================== 46 | 47 | def create_image(_key) do 48 | [r, g, b] = get_opt(:color) 49 | color = %{r: r, g: g, b: b} 50 | 51 | {captcha_text, captcha_image} = case get_opt(:difficulty) do 52 | :easy -> Captcha.easy(set_color: color) 53 | :medium -> Captcha.medium(set_color: color) 54 | :hard -> Captcha.hard(set_color: color) 55 | end 56 | 57 | {:ok, "image/png", captcha_text, captcha_image} 58 | end 59 | 60 | def get_opt(option_name) do 61 | host = List.first(:ejabberd_option.hosts()) 62 | :gen_mod.get_module_opt(host, Ejabberd.Module.CaptchaRust, option_name) 63 | end 64 | 65 | end 66 | -------------------------------------------------------------------------------- /mod_captcha_rust/mod_captcha_rust.spec: -------------------------------------------------------------------------------- 1 | author: "Badlop " 2 | category: "captcha" 3 | summary: "Generate CAPTCHAs using Rust library" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_cron/ChangeLog: -------------------------------------------------------------------------------- 1 | 2009-06-09 Badlop 2 | 3 | * src/mod_cron.erl: Fix paths (thanks to Bman) 4 | 5 | 2008-10-12 Badlop 6 | 7 | * src/mod_cron.erl: Update from ctl to commands (EJAB-694) 8 | 9 | 2008-07-29 Badlop 10 | 11 | * src/mod_cron.erl: Fix call to ejabberd_hooks:delete 12 | 13 | 2007-12-26 Badlop 14 | 15 | * src/mod_cron.erl: Translate menu items of webadmin hooks in each 16 | module (EJAB-485) 17 | 18 | 2007-08-31 Badlop 19 | 20 | * src/mod_cron.erl (web_page_host): Small improvement on page 21 | format. 22 | 23 | 2007-08-23 Badlop 24 | 25 | * src/mod_cron.erl: Added page in Web Admin; currently only tasks 26 | view is possible. * README.txt: Idem. 27 | 28 | 2007-08-05 Badlop 29 | 30 | * ChangeLog: New file to track changes. 31 | 32 | * src/mod_cron.erl: Fixed indentation. 33 | 34 | -------------------------------------------------------------------------------- /mod_cron/conf/mod_cron.yml: -------------------------------------------------------------------------------- 1 | #modules: 2 | # mod_cron: {} 3 | -------------------------------------------------------------------------------- /mod_cron/mod_cron.spec: -------------------------------------------------------------------------------- 1 | author: "Badlop " 2 | category: "admin" 3 | summary: "Execute scheduled commands" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_default_contacts/README.md: -------------------------------------------------------------------------------- 1 | mod_default_contacts - Add roster contact(s) on registration 2 | ============================================================ 3 | 4 | * Author: Holger Weiss 5 | 6 | 7 | Description 8 | ----------- 9 | 10 | This module allows for specifying one or more contacts that should be 11 | added to the user's roster automatically on successful registration (via 12 | `mod_register`, or, for example, `ejabberdctl register`). Note that no 13 | presence subscription is performed, and the rosters of the contacts aren't 14 | modified. 15 | 16 | 17 | Configuration 18 | ------------- 19 | 20 | In order to use this module, add a configuration snippet such as the 21 | following: 22 | 23 | ```yaml 24 | modules: 25 | mod_default_contacts: 26 | contacts: 27 | - 28 | name: "Bob Virding" 29 | jid: bob@example.com 30 | - 31 | name: "Alice Armstrong" 32 | jid: alice@example.com 33 | ``` 34 | 35 | The configurable `mod_default_contacts` options are: 36 | 37 | - `contacts` (default: `[]`) 38 | 39 | The list of contact JIDs that should be auto-added to the user's roster 40 | on account registration. Each list item must specify the `jid:` and 41 | optionally the `name:` of the contact. 42 | -------------------------------------------------------------------------------- /mod_default_contacts/conf/mod_default_contacts.yml: -------------------------------------------------------------------------------- 1 | #modules: 2 | # mod_default_contacts: 3 | # contacts: [] 4 | -------------------------------------------------------------------------------- /mod_default_contacts/mod_default_contacts.spec: -------------------------------------------------------------------------------- 1 | author: "Holger Weiss " 2 | category: "roster" 3 | summary: "Auto-add roster contacts on registration" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_default_rooms/README.md: -------------------------------------------------------------------------------- 1 | mod_default_rooms - Add MUC bookmark(s) on registration 2 | ======================================================= 3 | 4 | * Author: Holger Weiss 5 | 6 | 7 | Description 8 | ----------- 9 | 10 | This module allows for specifying one or more rooms that should be 11 | bookmarked automatically on successful user registration (via 12 | `mod_register`, or, for example, `ejabberdctl register`). 13 | 14 | 15 | Configuration 16 | ------------- 17 | 18 | In order to use this module, add a configuration snippet such as the 19 | following: 20 | 21 | ```yaml 22 | modules: 23 | mod_default_rooms: 24 | rooms: 25 | - foo@conference.example.net 26 | - bar@conference.example.org 27 | ``` 28 | 29 | The configurable `mod_default_rooms` options are: 30 | 31 | - `rooms` (default: `[]`) 32 | 33 | The list of rooms users that should be auto-bookmarked on account 34 | registration. 35 | 36 | - `auto_join` (default: `true`) 37 | 38 | This option specifies whether the auto-join flag should be set for the 39 | bookmarks created on registration. 40 | -------------------------------------------------------------------------------- /mod_default_rooms/conf/mod_default_rooms.yml: -------------------------------------------------------------------------------- 1 | #modules: 2 | # mod_default_rooms: 3 | # rooms: [] 4 | -------------------------------------------------------------------------------- /mod_default_rooms/mod_default_rooms.spec: -------------------------------------------------------------------------------- 1 | author: "Holger Weiss " 2 | category: "muc" 3 | summary: "Auto-bookmark rooms on registration" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_deny_omemo/README.md: -------------------------------------------------------------------------------- 1 | mod_deny_omemo - Prevent OMEMO sessions from being established 2 | ============================================================== 3 | 4 | * Author: Holger Weiss 5 | 6 | 7 | Description 8 | ----------- 9 | 10 | Unless the configured access rule (called `omemo` by default) returns 11 | `allow`, this module prevents OMEMO sessions from being established. 12 | Requests to query the devicelist from other users are rejected. Requests 13 | to publish a devicelist are also rejected, and all OMEMO nodes referenced 14 | in that devicelist are removed. Incoming devicelist updates are silently 15 | dropped. OMEMO-encrypted messages are bounced with an error message. 16 | 17 | 18 | Configuration 19 | ------------- 20 | 21 | In order to use this module, add configuration snippets such as the 22 | following: 23 | 24 | ```yaml 25 | access_rules: 26 | # [...] 27 | omemo: 28 | - deny: 29 | - user: "alice@example.com" 30 | - user: "bob@example.com" 31 | - allow # Permit OMEMO except for the JIDs above. 32 | 33 | modules: 34 | # [...] 35 | mod_deny_omemo: {} 36 | ``` 37 | 38 | The configurable `mod_deny_omemo` options are: 39 | 40 | - `access` (default: `omemo`) 41 | 42 | This option defines the access rule to control who will be able to 43 | establish OMEMO sessions. The default value is `omemo`. Establishing 44 | OMEMO sessions is only permitted if an access rule of that name exists 45 | and returns `allow`. 46 | -------------------------------------------------------------------------------- /mod_deny_omemo/conf/mod_deny_omemo.yml: -------------------------------------------------------------------------------- 1 | #modules: 2 | # mod_deny_omemo: {} 3 | -------------------------------------------------------------------------------- /mod_deny_omemo/mod_deny_omemo.spec: -------------------------------------------------------------------------------- 1 | author: "Holger Weiss " 2 | category: "policy" 3 | summary: "Prevent OMEMO sessions from being established" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_ecaptcha/conf/mod_ecaptcha.yml: -------------------------------------------------------------------------------- 1 | captcha_cmd: mod_ecaptcha 2 | 3 | captcha_url: http://localhost:5288/captcha/ 4 | 5 | listen: 6 | - 7 | port: 5288 8 | module: ejabberd_http 9 | request_handlers: 10 | /captcha: ejabberd_captcha 11 | 12 | modules: 13 | mod_ecaptcha: {} 14 | -------------------------------------------------------------------------------- /mod_ecaptcha/mod_ecaptcha.spec: -------------------------------------------------------------------------------- 1 | author: "Badlop " 2 | category: "captcha" 3 | summary: "Generate CAPTCHAs using ecaptcha" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_ecaptcha/rebar.config: -------------------------------------------------------------------------------- 1 | 2 | % There's a bug in ecaptcha 0.2.0 that breaks compilation with 3 | % Erlang/OTP 26, and 0.2.0 is the latest version published in hex right now. 4 | % Consequently, let's use the latest ecaptcha from git repository. 5 | 6 | {deps, [ 7 | {ecaptcha, ".*", {git, "https://github.com/seriyps/ecaptcha", {branch, "master"}}} 8 | ]}. 9 | -------------------------------------------------------------------------------- /mod_example/README.md: -------------------------------------------------------------------------------- 1 | mod_example - Example ejabberd module 2 | ==================================== 3 | 4 | - Requires: ejabberd 25.03 or higher 5 | - Author: Author name 6 | 7 | This is an example ejabberd module. 8 | Right now it includes example use of commands and hooks. 9 | 10 | In the future, it could also include examples of 11 | module options, documentation, webadmin pages, iq handlers ... 12 | 13 | Copy those files, rename, modify as you please. 14 | 15 | 16 | Options 17 | ------- 18 | 19 | No configurable options. 20 | -------------------------------------------------------------------------------- /mod_example/conf/mod_example.yml: -------------------------------------------------------------------------------- 1 | modules: 2 | mod_example: {} 3 | -------------------------------------------------------------------------------- /mod_example/mod_example.spec: -------------------------------------------------------------------------------- 1 | author: "Author name " 2 | category: "example" 3 | summary: "Example ejabberd module for testing and development" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_example/rebar.config: -------------------------------------------------------------------------------- 1 | {deps, [ 2 | ]}. 3 | -------------------------------------------------------------------------------- /mod_filter/conf/mod_filter.yml: -------------------------------------------------------------------------------- 1 | #modules: 2 | # mod_filter: {} 3 | 4 | #access_rules: 5 | # mod_filter: 6 | # - allow: all 7 | # mod_filter_presence: 8 | # - allow: all 9 | # mod_filter_message: 10 | # - allow: all 11 | # mod_filter_iq: 12 | # - allow: all 13 | -------------------------------------------------------------------------------- /mod_filter/mod_filter.spec: -------------------------------------------------------------------------------- 1 | author: "Magnus Henoch " 2 | category: "data" 3 | summary: "Flexible filtering by server policy" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_grafite/README.md: -------------------------------------------------------------------------------- 1 | mod_grafite - Gathers statistics and publishes via statsd/grafite 2 | ================================================================= 3 | 4 | * Author: Thiago Rocha Camargo (rochacamargothiago@gmail.com) 5 | 6 | Gathers statistics and publishes via statsd/grafite 7 | 8 | 9 | Configuration 10 | ------------- 11 | 12 | Configurable options: 13 | - `statsdhost`: Host of the statsd server 14 | - `statsdport`: Port of the statsd server 15 | 16 | 17 | Example Configuration 18 | --------------------- 19 | 20 | ```yaml 21 | modules: 22 | mod_grafite: 23 | statsdhost: "carbonr.xmpp.com.br" 24 | statsdport: 8125 25 | ``` 26 | 27 | 28 | Feature Requests 29 | --------------- 30 | 31 | - Add support for configurable Hooks 32 | -------------------------------------------------------------------------------- /mod_grafite/conf/mod_grafite.yml: -------------------------------------------------------------------------------- 1 | #modules: 2 | # mod_grafite: 3 | # statsdhost: "carbonr.xmpp.com.br" 4 | # statsdport: 8125 5 | -------------------------------------------------------------------------------- /mod_grafite/mod_grafite.spec: -------------------------------------------------------------------------------- 1 | author: "Thiago Rocha Camargo " 2 | category: "statistics" 3 | summary: "Publishes Statistics via statsd/grafite" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_http_redirect/README.md: -------------------------------------------------------------------------------- 1 | mod_http_redirect - Redirect HTTP path to another URI 2 | ============================================================ 3 | 4 | * Author: Badlop 5 | 6 | 7 | Description 8 | ----------- 9 | 10 | 11 | This simple module redirects the web browser to the configured URI. 12 | 13 | 14 | Configuration 15 | ------------- 16 | 17 | The configurable option is: 18 | 19 | - `location` (default: `[]`) 20 | 21 | The URI where requests will be redirected. 22 | 23 | This module should be added not only to the `modules` section, 24 | also to `request_handlers` inside the `listen` option. 25 | 26 | It is very important to set this request handler as the last one, 27 | otherwise it could produce infinite redirects. 28 | 29 | ```yaml 30 | listen: 31 | - 32 | port: 5280 33 | module: ejabberd_http 34 | request_handlers: 35 | /admin: ejabberd_admin 36 | /register: mod_register_web 37 | /: mod_http_redirect 38 | 39 | modules: 40 | mod_http_redirect: 41 | location: http://example.com 42 | ``` 43 | 44 | With that configuration, a request for `http://localhost:5280/` 45 | will be redirected to `http://example.com` 46 | 47 | -------------------------------------------------------------------------------- /mod_http_redirect/conf/mod_http_redirect.yml: -------------------------------------------------------------------------------- 1 | #listen: 2 | # - 3 | # port: 5286 4 | # module: ejabberd_http 5 | # request_handlers: 6 | # /: mod_http_redirect 7 | # 8 | #modules: 9 | # mod_http_redirect: 10 | # location: http://example.com/some-path/ 11 | -------------------------------------------------------------------------------- /mod_http_redirect/mod_http_redirect.spec: -------------------------------------------------------------------------------- 1 | author: "Badlop " 2 | category: "HTTP" 3 | summary: "Redirect HTTP path to another URI" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_irc/include/mod_irc.hrl: -------------------------------------------------------------------------------- 1 | %%%---------------------------------------------------------------------- 2 | %%% 3 | %%% ejabberd, Copyright (C) 2002-2020 ProcessOne 4 | %%% 5 | %%% This program is free software; you can redistribute it and/or 6 | %%% modify it under the terms of the GNU General Public License as 7 | %%% published by the Free Software Foundation; either version 2 of the 8 | %%% License, or (at your option) any later version. 9 | %%% 10 | %%% This program is distributed in the hope that it will be useful, 11 | %%% but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 | %%% General Public License for more details. 14 | %%% 15 | %%% You should have received a copy of the GNU General Public License along 16 | %%% with this program; if not, write to the Free Software Foundation, Inc., 17 | %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | %%% 19 | %%%---------------------------------------------------------------------- 20 | 21 | -type conn_param() :: {binary(), binary(), inet:port_number(), binary()} | 22 | {binary(), binary(), inet:port_number()} | 23 | {binary(), binary()} | 24 | {binary()}. 25 | 26 | -type irc_data() :: [{username, binary()} | {connections_params, [conn_param()]}]. 27 | 28 | -record(irc_connection, 29 | {jid_server_host = {#jid{}, <<"">>, <<"">>} :: {jid(), binary(), binary()}, 30 | pid = self() :: pid()}). 31 | 32 | -record(irc_custom, 33 | {us_host = {{<<"">>, <<"">>}, <<"">>} :: {{binary(), binary()}, 34 | binary()}, 35 | data = [] :: irc_data()}). 36 | -------------------------------------------------------------------------------- /mod_irc/sql/lite.new.sql: -------------------------------------------------------------------------------- 1 | -- 2 | -- ejabberd, Copyright (C) 2002-2020 ProcessOne 3 | -- 4 | -- This program is free software; you can redistribute it and/or 5 | -- modify it under the terms of the GNU General Public License as 6 | -- published by the Free Software Foundation; either version 2 of the 7 | -- License, or (at your option) any later version. 8 | -- 9 | -- This program is distributed in the hope that it will be useful, 10 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | -- General Public License for more details. 13 | -- 14 | -- You should have received a copy of the GNU General Public License along 15 | -- with this program; if not, write to the Free Software Foundation, Inc., 16 | -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 17 | -- 18 | 19 | CREATE TABLE irc_custom ( 20 | jid text NOT NULL, 21 | host text NOT NULL, 22 | server_host text NOT NULL, 23 | data text NOT NULL, 24 | created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 25 | ); 26 | 27 | CREATE UNIQUE INDEX i_irc_custom_jid_host ON irc_custom (jid, host); 28 | -------------------------------------------------------------------------------- /mod_irc/sql/lite.sql: -------------------------------------------------------------------------------- 1 | -- 2 | -- ejabberd, Copyright (C) 2002-2020 ProcessOne 3 | -- 4 | -- This program is free software; you can redistribute it and/or 5 | -- modify it under the terms of the GNU General Public License as 6 | -- published by the Free Software Foundation; either version 2 of the 7 | -- License, or (at your option) any later version. 8 | -- 9 | -- This program is distributed in the hope that it will be useful, 10 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | -- General Public License for more details. 13 | -- 14 | -- You should have received a copy of the GNU General Public License along 15 | -- with this program; if not, write to the Free Software Foundation, Inc., 16 | -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 17 | -- 18 | 19 | CREATE TABLE irc_custom ( 20 | jid text NOT NULL, 21 | host text NOT NULL, 22 | data text NOT NULL, 23 | created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 24 | ); 25 | 26 | CREATE UNIQUE INDEX i_irc_custom_jid_host ON irc_custom (jid, host); 27 | -------------------------------------------------------------------------------- /mod_irc/sql/mssql.sql: -------------------------------------------------------------------------------- 1 | -- 2 | -- ejabberd, Copyright (C) 2002-2020 ProcessOne 3 | -- 4 | -- This program is free software; you can redistribute it and/or 5 | -- modify it under the terms of the GNU General Public License as 6 | -- published by the Free Software Foundation; either version 2 of the 7 | -- License, or (at your option) any later version. 8 | -- 9 | -- This program is distributed in the hope that it will be useful, 10 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | -- General Public License for more details. 13 | -- 14 | -- You should have received a copy of the GNU General Public License along 15 | -- with this program; if not, write to the Free Software Foundation, Inc., 16 | -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 17 | -- 18 | 19 | SET ANSI_PADDING OFF; 20 | SET ANSI_NULLS ON; 21 | SET QUOTED_IDENTIFIER ON; 22 | SET ANSI_PADDING ON; 23 | 24 | CREATE TABLE [dbo].[irc_custom] ( 25 | [jid] [varchar] (255) NOT NULL, 26 | [host] [varchar] (255) NOT NULL, 27 | [data] [text] NOT NULL, 28 | [created_at] [datetime] NOT NULL DEFAULT GETDATE() 29 | ) TEXTIMAGE_ON [PRIMARY]; 30 | 31 | CREATE UNIQUE CLUSTERED INDEX [irc_custom_jid_host] ON [irc_custom] (jid, host) 32 | WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON); 33 | -------------------------------------------------------------------------------- /mod_irc/sql/mysql.new.sql: -------------------------------------------------------------------------------- 1 | -- 2 | -- ejabberd, Copyright (C) 2002-2020 ProcessOne 3 | -- 4 | -- This program is free software; you can redistribute it and/or 5 | -- modify it under the terms of the GNU General Public License as 6 | -- published by the Free Software Foundation; either version 2 of the 7 | -- License, or (at your option) any later version. 8 | -- 9 | -- This program is distributed in the hope that it will be useful, 10 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | -- General Public License for more details. 13 | -- 14 | -- You should have received a copy of the GNU General Public License along 15 | -- with this program; if not, write to the Free Software Foundation, Inc., 16 | -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 17 | -- 18 | 19 | CREATE TABLE irc_custom ( 20 | jid text NOT NULL, 21 | host text NOT NULL, 22 | server_host text NOT NULL, 23 | data text NOT NULL, 24 | created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 25 | ) ENGINE=InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 26 | 27 | CREATE UNIQUE INDEX i_irc_custom_jid_host USING BTREE ON irc_custom(jid(75), host(75)); 28 | -------------------------------------------------------------------------------- /mod_irc/sql/mysql.sql: -------------------------------------------------------------------------------- 1 | -- 2 | -- ejabberd, Copyright (C) 2002-2020 ProcessOne 3 | -- 4 | -- This program is free software; you can redistribute it and/or 5 | -- modify it under the terms of the GNU General Public License as 6 | -- published by the Free Software Foundation; either version 2 of the 7 | -- License, or (at your option) any later version. 8 | -- 9 | -- This program is distributed in the hope that it will be useful, 10 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | -- General Public License for more details. 13 | -- 14 | -- You should have received a copy of the GNU General Public License along 15 | -- with this program; if not, write to the Free Software Foundation, Inc., 16 | -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 17 | -- 18 | 19 | CREATE TABLE irc_custom ( 20 | jid text NOT NULL, 21 | host text NOT NULL, 22 | data text NOT NULL, 23 | created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 24 | ) ENGINE=InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 25 | 26 | CREATE UNIQUE INDEX i_irc_custom_jid_host USING BTREE ON irc_custom(jid(75), host(75)); 27 | -------------------------------------------------------------------------------- /mod_irc/sql/pg.new.sql: -------------------------------------------------------------------------------- 1 | -- 2 | -- ejabberd, Copyright (C) 2002-2020 ProcessOne 3 | -- 4 | -- This program is free software; you can redistribute it and/or 5 | -- modify it under the terms of the GNU General Public License as 6 | -- published by the Free Software Foundation; either version 2 of the 7 | -- License, or (at your option) any later version. 8 | -- 9 | -- This program is distributed in the hope that it will be useful, 10 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | -- General Public License for more details. 13 | -- 14 | -- You should have received a copy of the GNU General Public License along 15 | -- with this program; if not, write to the Free Software Foundation, Inc., 16 | -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 17 | -- 18 | 19 | -- To update from the old schema, replace with the host's domain: 20 | 21 | -- ALTER TABLE irc_custom ADD COLUMN server_host text NOT NULL DEFAULT ''; 22 | -- ALTER TABLE irc_custom ALTER COLUMN server_host DROP DEFAULT; 23 | 24 | CREATE TABLE irc_custom ( 25 | jid text NOT NULL, 26 | host text NOT NULL, 27 | server_host text NOT NULL, 28 | data text NOT NULL, 29 | created_at TIMESTAMP NOT NULL DEFAULT now() 30 | ); 31 | 32 | CREATE UNIQUE INDEX i_irc_custom_jid_host ON irc_custom USING btree (jid, host); 33 | -------------------------------------------------------------------------------- /mod_irc/sql/pg.sql: -------------------------------------------------------------------------------- 1 | -- 2 | -- ejabberd, Copyright (C) 2002-2020 ProcessOne 3 | -- 4 | -- This program is free software; you can redistribute it and/or 5 | -- modify it under the terms of the GNU General Public License as 6 | -- published by the Free Software Foundation; either version 2 of the 7 | -- License, or (at your option) any later version. 8 | -- 9 | -- This program is distributed in the hope that it will be useful, 10 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | -- General Public License for more details. 13 | -- 14 | -- You should have received a copy of the GNU General Public License along 15 | -- with this program; if not, write to the Free Software Foundation, Inc., 16 | -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 17 | -- 18 | 19 | CREATE TABLE irc_custom ( 20 | jid text NOT NULL, 21 | host text NOT NULL, 22 | data text NOT NULL, 23 | created_at TIMESTAMP NOT NULL DEFAULT now() 24 | ); 25 | 26 | CREATE UNIQUE INDEX i_irc_custom_jid_host ON irc_custom USING btree (jid, host); 27 | -------------------------------------------------------------------------------- /mod_irc/src/mod_irc_riak.erl: -------------------------------------------------------------------------------- 1 | %%%------------------------------------------------------------------- 2 | %%% File : mod_irc_riak.erl 3 | %%% Author : Evgeny Khramtsov 4 | %%% Created : 14 Apr 2016 by Evgeny Khramtsov 5 | %%% 6 | %%% 7 | %%% ejabberd, Copyright (C) 2002-2020 ProcessOne 8 | %%% 9 | %%% This program is free software; you can redistribute it and/or 10 | %%% modify it under the terms of the GNU General Public License as 11 | %%% published by the Free Software Foundation; either version 2 of the 12 | %%% License, or (at your option) any later version. 13 | %%% 14 | %%% This program is distributed in the hope that it will be useful, 15 | %%% but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17 | %%% General Public License for more details. 18 | %%% 19 | %%% You should have received a copy of the GNU General Public License along 20 | %%% with this program; if not, write to the Free Software Foundation, Inc., 21 | %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 22 | %%% 23 | %%%---------------------------------------------------------------------- 24 | 25 | -module(mod_irc_riak). 26 | 27 | -behaviour(mod_irc). 28 | 29 | %% API 30 | -export([init/2, get_data/3, set_data/4, import/2]). 31 | 32 | -include("jid.hrl"). 33 | -include("mod_irc.hrl"). 34 | 35 | %%%=================================================================== 36 | %%% API 37 | %%%=================================================================== 38 | init(_Host, _Opts) -> 39 | ok. 40 | 41 | get_data(_LServer, Host, From) -> 42 | {U, S, _} = jid:tolower(From), 43 | case ejabberd_riak:get(irc_custom, irc_custom_schema(), {{U, S}, Host}) of 44 | {ok, #irc_custom{data = Data}} -> 45 | Data; 46 | {error, notfound} -> 47 | empty; 48 | _Err -> 49 | error 50 | end. 51 | 52 | set_data(_LServer, Host, From, Data) -> 53 | {U, S, _} = jid:tolower(From), 54 | {atomic, ejabberd_riak:put(#irc_custom{us_host = {{U, S}, Host}, 55 | data = Data}, 56 | irc_custom_schema())}. 57 | 58 | import(_LServer, #irc_custom{} = R) -> 59 | ejabberd_riak:put(R, irc_custom_schema()). 60 | 61 | %%%=================================================================== 62 | %%% Internal functions 63 | %%%=================================================================== 64 | irc_custom_schema() -> 65 | {record_info(fields, irc_custom), #irc_custom{}}. 66 | -------------------------------------------------------------------------------- /mod_isolation/README.md: -------------------------------------------------------------------------------- 1 | mod_isolation: Isolate virtual hosts from each other 2 | ==================================================== 3 | 4 | The module blocks communication of users between different virtual hosts. 5 | 6 | # Configuration 7 | 8 | The module doesn't have any options, so the simplest way to configure is: 9 | ```yaml 10 | modules: 11 | mod_isolation: {} 12 | ``` 13 | 14 | Hint: if you also want to block whole s2s, use built-in ejabberd's `s2s_access` option: 15 | ```yaml 16 | s2s_access: none 17 | 18 | modules: 19 | mod_isolation: {} 20 | ``` 21 | -------------------------------------------------------------------------------- /mod_isolation/conf/mod_isolation.yml: -------------------------------------------------------------------------------- 1 | modules: 2 | mod_isolation: {} 3 | 4 | ### If you want to block whole s2s as well: 5 | # s2s_access: none 6 | -------------------------------------------------------------------------------- /mod_isolation/mod_isolation.spec: -------------------------------------------------------------------------------- 1 | author: "Evgeny Khramtsov " 2 | category: "policy" 3 | summary: "Prevent routing of packets between virtual hosts" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_libcluster/README.md: -------------------------------------------------------------------------------- 1 | mod_libcluster - Join nodes into cluster 2 | ======================================== 3 | 4 | Requires: 5 | - ejabberd 24.07 or higher compiled with Elixir support 6 | 7 | 8 | This small module connects this ejabberd node to other nodes 9 | using [libcluster](https://github.com/bitwalker/libcluster). 10 | 11 | Options 12 | ------- 13 | 14 | This module supports several configurable options. 15 | There are some example configuration files in the `test/` directory. 16 | Options supported by this module: 17 | 18 | * `strategy` 19 | 20 | Sets the clustering strategy to use. 21 | 22 | Supported values are: 23 | - `local_epmd`: connect to all nodes managed by the local epmd program 24 | - `epmd`: connect to the nodes you specify in the `config: hosts` option 25 | - `kubernetes` 26 | 27 | Default value: `local_epmd`. 28 | 29 | * `hosts` 30 | 31 | List of erlang node names to connect. 32 | This is required, and only useful, when using the `epmd` strategy. 33 | Default value: `[]`. 34 | 35 | * `timeut` 36 | 37 | Timeout to connect to a node, expressed in milliseconds. 38 | This is only useful when using the `epmd` strategy. 39 | Default value: `infinity`. 40 | 41 | For details of options supported please check the 42 | [libcluster documentation](https://hexdocs.pm/libcluster). 43 | 44 | Test 45 | ---- 46 | 47 | There's a test script in `test/test.sh` that you can run. 48 | It compiles ejabberd, installs in `/tmp/` several nodes, 49 | and builds a cluster using the desired strategy. 50 | -------------------------------------------------------------------------------- /mod_libcluster/conf/mod_libcluster.yml: -------------------------------------------------------------------------------- 1 | #modules: 2 | # 'Ejabberd.Module.Libcluster': 3 | 4 | # Connect with any other local node 5 | #strategy: local_epmd 6 | 7 | # Connect only to those specific nodes 8 | #strategy: epmd 9 | #config: 10 | # hosts: 11 | # - ejabberd1@127.0.0.1 12 | # - ejabberd2@127.0.0.1 13 | # - ejabberd3@127.0.0.1 14 | 15 | #strategy: kubernetes 16 | #config: 17 | # mode: hostname 18 | # kubernetes_ip_lookup_mode: pods 19 | # kubernetes_namespace: "ejabberd" 20 | # kubernetes_selector: "app=ejabberd" 21 | # kubernetes_node_basename: "ejabberd" 22 | # kubernetes_service_name: "ejabberd-headless" 23 | # polling_interval: 10000 24 | 25 | -------------------------------------------------------------------------------- /mod_libcluster/lib/mod_libcluster.ex: -------------------------------------------------------------------------------- 1 | defmodule Ejabberd.Module.Libcluster do 2 | 3 | @behaviour :gen_mod 4 | import Ejabberd.Logger 5 | 6 | def start(_host, opts) do 7 | 8 | strategy = case opts[:strategy] do 9 | :local_epmd -> 10 | :"Elixir.Cluster.Strategy.LocalEpmd" 11 | :epmd -> 12 | :"Elixir.Cluster.Strategy.Epmd" 13 | :kubernetes -> 14 | :"Elixir.Cluster.Strategy.Kubernetes" 15 | other_strategy -> 16 | other_strategy 17 | end 18 | info("Starting ejabberd module Libcluster with stategy #{inspect(strategy)}") 19 | 20 | config = [ 21 | hosts: opts[:hosts], 22 | timeout: opts[:timeout] 23 | ] 24 | info("Starting ejabberd module Libcluster with config #{inspect(config)}") 25 | 26 | topologies = [ 27 | ejabberd_cluster: [ 28 | strategy: strategy, 29 | config: config, 30 | connect: {:ejabberd_admin, :join_cluster, []}, 31 | disconnect: {:ejabberd_admin, :leave_cluster, []} 32 | ] 33 | ] 34 | children = [ 35 | {Cluster.Supervisor, [topologies, [name: Ejabberd.ClusterSupervisor]]}, 36 | ] 37 | Supervisor.start_link(children, strategy: :one_for_one, name: Ejabberd.Supervisor) 38 | info("Started ejabberd module Libcluster Demo") 39 | :ok 40 | end 41 | 42 | def stop(_host) do 43 | info("Stopping ejabberd module Libcluster Demo") 44 | :ok 45 | end 46 | 47 | def depends(_host, _opts) do 48 | [] 49 | end 50 | 51 | def mod_opt_type(:hosts) do 52 | :econf.list(:econf.atom) 53 | end 54 | 55 | def mod_opt_type(:strategy) do 56 | :econf.atom 57 | end 58 | 59 | def mod_opt_type(:timeout) do 60 | :econf.either(:infinity, :econf.int()); 61 | end 62 | 63 | def mod_options(_host) do 64 | [ 65 | {:hosts, []}, 66 | {:strategy, :local_epmd}, 67 | {:timeout, :infinity} 68 | ] 69 | end 70 | 71 | def mod_doc() do 72 | %{:desc => "This is just an empty string."} 73 | end 74 | 75 | end 76 | -------------------------------------------------------------------------------- /mod_libcluster/mod_libcluster.spec: -------------------------------------------------------------------------------- 1 | author: "Badlop " 2 | category: "cluster" 3 | summary: "Join nodes into cluster" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_libcluster/rebar.config: -------------------------------------------------------------------------------- 1 | {deps, [ 2 | {jason, "1.5.0-alpha.2", {git, "https://github.com/michalmuskala/jason", {branch, "master"}}}, 3 | {libcluster, "3.3.3", {git, "https://github.com/bitwalker/libcluster", {branch, "main"}}} 4 | ]}. 5 | -------------------------------------------------------------------------------- /mod_libcluster/test/epmd.yml: -------------------------------------------------------------------------------- 1 | modules: 2 | 'Ejabberd.Module.Libcluster': 3 | # Connect only to those specific nodes 4 | strategy: epmd 5 | timeout: 5000 6 | hosts: 7 | - ejabberd1@127.0.0.1 8 | - ejabberd2@127.0.0.1 9 | - ejabberd3@127.0.0.1 10 | -------------------------------------------------------------------------------- /mod_libcluster/test/local_epmd.yml: -------------------------------------------------------------------------------- 1 | modules: 2 | 'Ejabberd.Module.Libcluster': 3 | # Connect with any other local node 4 | strategy: local_epmd 5 | -------------------------------------------------------------------------------- /mod_log_chat/README.md: -------------------------------------------------------------------------------- 1 | mod_log_chat 2 | ============ 3 | 4 | `mod_log_chat` is an ejabberd module aimed at logging chat messages in 5 | text files. `mod_log_chat` creates one file per couple of chatters and 6 | per day (it doesn't log muc messages, use `mod_muc_log` for this). 7 | 8 | It can store messages in plain text or HTML format. 9 | 10 | Be sure that the directories where you want to create your log 11 | files exists and are writable by you ejabberd user. 12 | -------------------------------------------------------------------------------- /mod_log_chat/TODO: -------------------------------------------------------------------------------- 1 | 2 | - Custom templates and CSS in the configuration file 3 | - XML format -------------------------------------------------------------------------------- /mod_log_chat/conf/mod_log_chat.yml: -------------------------------------------------------------------------------- 1 | # edit this file to fit your needs 2 | 3 | # log all vhosts chats in /var/log/ejabberd/chat directory in html 4 | modules: 5 | mod_log_chat: 6 | path: auto 7 | # path: /var/log/ejabberd/chat 8 | # format: html 9 | 10 | 11 | # log only vh1.myjabberserver.net vhost in /var/log/ejabberd/vh1.myjabberserver.net directory 12 | # in HTML format and vh2.myjabberserver.net vhost in /var/log/ejabberd/vh2.myjabberserver.net directory 13 | # in text format 14 | # mod_log_chat: 15 | # host_config: 16 | # - "vh1.myjabberserver.net": 17 | # - path: /var/log/ejabberd/vh1.myjabberserver.net 18 | # - format: html 19 | # - "vh2.myjabberserver.net": 20 | # - path: /var/log/ejabberd/vh2.myjabberserver.net 21 | # - format: text 22 | -------------------------------------------------------------------------------- /mod_log_chat/mod_log_chat.spec: -------------------------------------------------------------------------------- 1 | author: "Jérôme Sautret " 2 | category: "log" 3 | summary: "Logging chat messages in text files" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_logsession/ChangeLog: -------------------------------------------------------------------------------- 1 | 2008-12-12 Badlop 2 | 3 | * src/mod_logsession.erl: Replace the ejabberdctl command with an 4 | ejabberd command; requires ejabberd trunk SVN 5 | * README.txt: Documented the change and the requirement 6 | 7 | 2008-04-25 Badlop 8 | 9 | * mod_logsession: New module to log session connections 10 | 11 | -------------------------------------------------------------------------------- /mod_logsession/README.md: -------------------------------------------------------------------------------- 1 | mod_logsession - Log session connections to file 2 | ================================================ 3 | 4 | * Requirements: ejabberd 19.08 or higher 5 | * Homepage: http://www.ejabberd.im/mod_logsession 6 | * Author: Badlop 7 | 8 | 9 | Description 10 | ----------- 11 | 12 | This module is intended to log in a text file the session connections. 13 | Right now it only logs the forbidden connection attempts and the 14 | failed authentication attempts. 15 | Each vhost is logged in a different file. 16 | 17 | Note: to log the failed authentication attempts, you need to patch ejabberd. 18 | 19 | 20 | Configuration 21 | ------------- 22 | 23 | - `sessionlog` 24 | 25 | Define the name of log files, or set to `auto`. 26 | The keyword `@HOST@` is substituted with the name of the vhost. 27 | If set to `auto`, it will store in the ejabberd log path 28 | with the filename `"session_@HOST@.log"` 29 | Default value: `auto` 30 | 31 | 32 | Example Configuration 33 | --------------------- 34 | 35 | ```yaml 36 | modules: 37 | ... 38 | mod_logsession: 39 | sessionlog: "/var/log/ejabberd/session_@HOST@.log" 40 | ... 41 | ``` 42 | 43 | With that configuration, if the server has three vhosts: 44 | "localhost", "example.org" and "example.net", 45 | then the forbidden accesses will be logged in the files: 46 | ``` 47 | /var/log/ejabberd/session_localhost.log 48 | /var/log/ejabberd/session_example.org.log 49 | /var/log/ejabberd/session_example.net.log 50 | ``` 51 | 52 | 53 | Log Format 54 | ---------- 55 | 56 | The content of the file is the date and time of the attempted login 57 | and the JID of the denied user. 58 | 59 | For example: 60 | ``` 61 | 2008-01-08 12:20:50 Forbidden session for tron@localhost/teeest 62 | 2008-01-08 12:36:01 Forbidden session for baduser@localhost/aaa22 63 | 2010-04-02 17:21:37 Failed authentication for someuser@localhost from 127.0.0.1 port 58973 64 | 2010-04-02 17:25:20 Failed authentication for badlop@localhost from 127.0.0.1 port 45842 65 | ``` 66 | 67 | 68 | Reopen Log Files 69 | ---------------- 70 | 71 | This module provides an ejabberd command to reopen the log file 72 | of a host where the module is enabled. 73 | 74 | Example usage: 75 | ``` 76 | ejabberdctl reopen-seslog localhost 77 | ejabberdctl reopen-seslog jabber.example.org 78 | ``` 79 | -------------------------------------------------------------------------------- /mod_logsession/conf/mod_logsession.yml: -------------------------------------------------------------------------------- 1 | modules: 2 | mod_logsession: 3 | sessionlog: auto 4 | # sessionlog: "/var/log/ejabberd/session_@HOST@.log" 5 | -------------------------------------------------------------------------------- /mod_logsession/mod_logsession.spec: -------------------------------------------------------------------------------- 1 | author: "Badlop " 2 | category: "log" 3 | summary: "Log session connections to file" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_logxml/ChangeLog: -------------------------------------------------------------------------------- 1 | 2008-03-18 Badlop 2 | 3 | * README.txt: Disable show_ip in example configuration because it 4 | requires ejabberd 2.0.0 5 | 6 | * src/mod_logxml.erl: Fixed indentation 7 | 8 | * ChangeLog.txt: New file to track changes 9 | 10 | 2007-07-20 Badlop 11 | 12 | * mod_logxml.erl: Added new option: show_ip 13 | 14 | 2007-03-20 Badlop 15 | 16 | * mod_logxml.erl: The file name respects the timezone option 17 | 18 | 2007-02-03 Badlop 19 | 20 | * mod_logxml.erl: Added new option: timezone 21 | 22 | 2006-08-08 Badlop 23 | 24 | * mod_logxml.erl: Fixed small bug on start/2 25 | 26 | 2006-03-08 Badlop 27 | 28 | * mod_logxml.erl: Changed some configuration options: rotate_days, 29 | rotate_mages and rotate_kpackets can now be set independently 30 | 31 | * mod_logxml.erl: New format of XML logs: now XMPP packets are 32 | enclosed in a 'packet' element with attributes: or, ljid, ts 33 | 34 | 2005-11-11 Badlop 35 | 36 | * mod_logxml.erl: Initial version 37 | 38 | -------------------------------------------------------------------------------- /mod_logxml/README.md: -------------------------------------------------------------------------------- 1 | mod_logxml - Log XMPP packets to XML file 2 | ========================================= 3 | 4 | * Homepage: http://www.ejabberd.im/mod_logxml 5 | * Author: Badlop 6 | * Requires: ejabberd 19.08 or higher 7 | 8 | 9 | Description 10 | ----------- 11 | 12 | This module sniffs all the XMPP traffic send and received by ejabberd, 13 | both internally and externally transmitted. It logs the XMPP packets 14 | to a XML formatted file. It's posible to filter transmitted packets 15 | by orientation, stanza and direction. It's possible to configure the 16 | file rotation rules and intervals. 17 | 18 | This module reuses code from `mod_log_forensic`, `mod_stats2file`, `mod_muc_log`. 19 | 20 | 21 | Configuration 22 | ------------- 23 | 24 | - `stanza`: 25 | Log packets only when stanza matches. 26 | Default value: `[iq, message, presence, other]` 27 | - `direction`: 28 | Log packets only when direction matches. 29 | Default value: `[internal, vhosts, external]` 30 | - `orientation`: 31 | Log packets only when orientation matches. 32 | Default value: `[send, recv]` 33 | - `logdir`: 34 | Base filename, including absolute path. 35 | If set to `auto`, it uses the ejabberd log path. 36 | Default value: `auto` 37 | - `show_ip`: 38 | If the IP address of the local user should be logged to file. 39 | Default value: `false` 40 | - `rotate_days`: 41 | Rotate logs every X days. 42 | Put 0 to disable this limit. 43 | Default value: `1` 44 | - `rotate_megs`: 45 | Rotate when the logfile size is higher than this, in megabytes. 46 | Put 0 to disable this limit. 47 | Default value: `10` 48 | - `rotate_kpackets`: 49 | Rotate every *1000 XMPP packets logged. 50 | Put `0` to disable this limit. 51 | Default value: `10` 52 | - `check_rotate_kpackets`: 53 | Check rotation every `*1000` packets. 54 | Default value: `1` 55 | 56 | 57 | Example Configuration 58 | --------------------- 59 | 60 | ```yaml 61 | modules: 62 | mod_logxml: 63 | stanza: 64 | - iq 65 | - other 66 | direction: 67 | - external 68 | orientation: 69 | - send 70 | - recv 71 | logdir: "/tmp/logs/" 72 | show_ip: false 73 | rotate_days: 1 74 | rotate_megs: 100 75 | rotate_kpackets: 0 76 | check_rotate_kpackets: 1 77 | ``` 78 | 79 | XML Format 80 | ---------- 81 | 82 | XMPP packets are enclosed in ``, with attributes: 83 | - `or`: orientation of the packet, either `send` or `recv` 84 | - `ljid`: local JID of the sender or receiver, depending on the orientation 85 | - `ts`: timestamp when the packet was logged 86 | -------------------------------------------------------------------------------- /mod_logxml/conf/mod_logxml.yml: -------------------------------------------------------------------------------- 1 | #modules: 2 | # mod_logxml: 3 | # stanza: 4 | # - iq 5 | # - other 6 | # direction: 7 | # - external 8 | # orientation: 9 | # - send 10 | # - recv 11 | # logdir: "/tmp/logs/" 12 | # show_ip: false 13 | # rotate_days: 1 14 | # rotate_megs: 100 15 | # rotate_kpackets: 0 16 | # check_rotate_kpackets: 1 17 | -------------------------------------------------------------------------------- /mod_logxml/mod_logxml.spec: -------------------------------------------------------------------------------- 1 | author: "Badlop " 2 | category: "log" 3 | summary: "Log XMPP packets to XML file" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_mam_mnesia/README.md: -------------------------------------------------------------------------------- 1 | mod_mam_mnesia 2 | ============== 3 | 4 | Current Status 5 | -------------- 6 | 7 | _This module is deprecated._ 8 | 9 | ejabberd 15.06 and newer ships a `mod_mam` module which supports Mnesia 10 | and SQL/ODBC storage. It is recommended to use that module, as 11 | `mod_mam_mnesia` is no longer supported. Existing `mod_mam_mnesia` 12 | tables can be imported into `mod_mam` using the `import-mam-archives` 13 | script, as described below. 14 | 15 | Migrating to mod_mam 16 | -------------------- 17 | 18 | You might want to log off your users during the migration. However, 19 | note that importing the MAM archives might take up to a few hours. 20 | 21 | Also note that with `mod_mam`, the total size of all MAM archives cannot 22 | exceed 2 GB. The `delete_old_mam_messages` command could be run 23 | periodically to make sure the Mnesia data won't grow beyond that limit. 24 | To support larger archives, SQL/ODBC storage must be used. 25 | 26 | 1. In your ejabberd.yml file, replace `mod_mam_mnesia` with `mod_mam`, 27 | and adjust the configuration of that module. `mod_mam` supports a 28 | different set of options, so you should check [the documentation][1]. 29 | Since ejabberd 16.02, `mod_mam` supports the 30 | `request_activates_archiving` option, but it's not enabled by 31 | default. To mimic `mod_mam_mnesia`'s default behavior, you could 32 | configure `mod_mam` like this: 33 | 34 | modules: 35 | mod_mam: 36 | default: always 37 | request_activates_archiving: true 38 | 39 | 2. Check the node name of your server by running `ejabberdctl status`. 40 | If the name is _not_ `ejabberd@localhost`, you must replace the 41 | `localhost` part of the two node names at the top of the script 42 | with the host name part of your ejabberd node. 43 | 44 | 3. The `import-mam-archives` script _removes_ the `mod_mam_mnesia` 45 | tables after importing them into `mod_mam`. Therefore, **you should 46 | take a backup of your MAM archives** (and the other Mnesia data) by 47 | running a command such as: 48 | 49 | ejabberdctl dump $HOME/ejabberd-backup.dat 50 | 51 | 4. [Download][2] and run the import script: 52 | 53 | chmod +x import-mam-archives 54 | ./import-mam-archives 55 | 56 | If only the messages stored during the last `N` days should be 57 | imported, run `./import-mam-archives N` instead. 58 | 59 | 5. Restart ejabberd. 60 | 61 | [1]: https://docs.ejabberd.im/admin/guide/configuration/#modmam 62 | [2]: https://raw.githubusercontent.com/processone/ejabberd-contrib/master/mod_mam_mnesia/import-mam-archives 63 | -------------------------------------------------------------------------------- /mod_message_log/README.md: -------------------------------------------------------------------------------- 1 | mod_message_log - Log one line per message transmission 2 | ======================================================= 3 | 4 | * Author: Holger Weiss 5 | 6 | 7 | Description 8 | ----------- 9 | 10 | This module writes a line for each sent or received message to a log file. 11 | Each line mentions the sender's JID and the recipient's JID, and also the 12 | message type (e.g., `"normal"`, `"chat"`, or `"groupchat"`). Carbon copies are 13 | marked as such. The log lines look similar to this one: 14 | 15 | ``` 16 | 2014-05-25 11:55:04 [outgoing, normal] dan@example.com/Foo -> eve@example.net/Bar 17 | ``` 18 | 19 | After log rotation, you can execute the following command in order to tell 20 | `mod_message_log` to reopen the log file: 21 | 22 | ``` 23 | ejabberdctl reopen_log 24 | ``` 25 | 26 | 27 | Configuration 28 | ------------- 29 | 30 | - `filename` 31 | 32 | Define the filename and path to store the log. 33 | If the filename option is set to `auto`, it will be set to 34 | the default ejabberd log path, with the file name `"message.log"`. 35 | The filename option takes as default value `auto`. 36 | 37 | 38 | Example Configuration 39 | --------------------- 40 | 41 | ```yaml 42 | modules: 43 | mod_message_log: 44 | filename: "/path/to/ejabberd-message.log" 45 | ``` 46 | -------------------------------------------------------------------------------- /mod_message_log/conf/mod_message_log.yml: -------------------------------------------------------------------------------- 1 | modules: 2 | mod_message_log: 3 | filename: auto 4 | # filename: "/var/log/ejabberd/message.log" 5 | -------------------------------------------------------------------------------- /mod_message_log/mod_message_log.spec: -------------------------------------------------------------------------------- 1 | author: "Holger Weiss " 2 | category: "log" 3 | summary: "Log one line per message transmission in text file" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_muc_log_http/ChangeLog: -------------------------------------------------------------------------------- 1 | 2009-06-14 Badlop 2 | 3 | * src/mod_muc_log_http.erl: Include mod_muc_room.hrl 4 | 5 | 2009-03-11 Badlop 6 | 7 | * src/mod_muc_log_http.erl: Fix capitalization of HTTP headers 8 | 9 | 2009-02-28 Badlop 10 | 11 | * src/mod_muc_log_http.erl: Add support to run in several vhosts 12 | * README.txt: Explain that it requires recent ejabberd SVN 13 | 14 | 2008-09-30 Badlop 15 | 16 | * src/mod_muc_log_http.erl: Update record definitions to ejabberd 17 | trunk SVN 18 | 19 | 2008-05-17 Badlop 20 | 21 | * src/mod_muc_log_http.erl: Use httpd_util:to_lower when not 22 | compiling with Erlang R12 (EJAB-628) 23 | * Emakefile: Assumes that Erlang/OTP R11B-4 or newer is used 24 | * README.txt: Explain how to compile in older versions 25 | 26 | 2008-04-12 Badlop 27 | 28 | * src/mod_muc_log_http.erl: Include Last-Modified HTTP 29 | header in responses to allow caching (EJAB-546) 30 | 31 | 2008-03-12 Badlop 32 | 33 | * README.txt: Updated text formatting. Require ejabberd 2.0.0 34 | 35 | * mod_muc_log_http.erl: Updated to ejabberd 2.0.0 36 | 37 | * ChangeLog: New file to log changes 38 | 39 | 2007-04-13 Badlop 40 | 41 | * mod_muc_log_http: New module to serve MUC HTML logs over HTTP 42 | -------------------------------------------------------------------------------- /mod_muc_log_http/README.md: -------------------------------------------------------------------------------- 1 | mod_muc_log_http - Serve MUC logs on the web 2 | ============================================ 3 | 4 | * Requires: ejabberd 19.08 or higher 5 | * Homepage: http://ejabberd.im/mod_muc_log_http 6 | * Author: Badlop 7 | 8 | 9 | Description 10 | ----------- 11 | 12 | This module serves the directory containing MUC logs already 13 | configured on `mod_muc_log`. So, there's no need to setup a web server 14 | to allow your users to view the MUC logs. It is a small modification 15 | of `mod_http_fileserver`, customized for log serving. 16 | 17 | 18 | Configuration 19 | ------------- 20 | 21 | This module has no configurable options, simply enable it. 22 | 23 | 24 | Example Configuration 25 | --------------------- 26 | 27 | The directory to serve is already defined on `mod_muc_log`. 28 | 29 | ```yaml 30 | listen: 31 | - 32 | port: 5282 33 | module: ejabberd_http 34 | request_handlers: 35 | /muclogs: mod_muc_log_http 36 | 37 | modules: 38 | mod_muc_log: 39 | outdir: "/tmp/muclogs" 40 | mod_muc_log_http: {} 41 | ``` 42 | 43 | With that example configuration, open your web browser at: 44 | `http://server:5282/muclogs/` 45 | -------------------------------------------------------------------------------- /mod_muc_log_http/conf/mod_muc_log_http.yml: -------------------------------------------------------------------------------- 1 | listen: 2 | - 3 | port: 5282 4 | module: ejabberd_http 5 | request_handlers: 6 | /muclogs: mod_muc_log_http 7 | 8 | modules: 9 | # mod_muc_log: 10 | # outdir: "/tmp/muclogs" 11 | mod_muc_log_http: {} 12 | -------------------------------------------------------------------------------- /mod_muc_log_http/mod_muc_log_http.spec: -------------------------------------------------------------------------------- 1 | author: "Badlop " 2 | category: "log" 3 | summary: "Serve MUC logs on the web" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_muc_webchat_url/README.md: -------------------------------------------------------------------------------- 1 | mod_muc_webchat_url - Show webchat_url in MUC rooms disco#info 2 | ============================================================== 3 | 4 | Requires: 5 | - ejabberd 25.xx 6 | 7 | 8 | This small module shows webchat_url in MUC rooms disco#info. 9 | 10 | 11 | Options 12 | ------- 13 | 14 | This module supports those configurable options: 15 | 16 | * `base_url: auto | binary()` 17 | 18 | The URL that will be shown in room disco#info. 19 | 20 | If set to `auto`, it searches the ejabberd configuration for mod_conversejs and generates an URL. 21 | If set manually, it can use all the keywords available in ejabberd, 22 | and also those specific keywords: `ROOM_JID`, `ROOM_NAME`, `ROOM_HOST`. 23 | 24 | Default value: `auto` 25 | 26 | * `room_names: [binary()]` 27 | 28 | The URL will be shown also to the rooms which name is in this list. 29 | 30 | Default value: `[]` 31 | 32 | * `room_options: {OptionName: boolean()}` 33 | 34 | Map of room options that should match in order to show the URL: 35 | all the rooms that are configured like this will show the URL. 36 | 37 | Default value: 38 | ```yaml 39 | room_options: 40 | members_only: false 41 | password_protected: false 42 | public: true 43 | ``` 44 | 45 | 46 | Configuration with mod_conversejs 47 | --------------------------------- 48 | 49 | ```yaml 50 | listen: 51 | - 52 | port: 5443 53 | module: ejabberd_http 54 | tls: true 55 | request_handlers: 56 | /conversejs: mod_conversejs 57 | /ws: ejabberd_http_ws 58 | 59 | auth_method: anonymous 60 | anonymous_protocol: login_anon 61 | 62 | modules: 63 | mod_conversejs: 64 | conversejs_resources: "/home/ejabberd/conversejs/10.1.8/dist" 65 | mod_host_meta: {} 66 | mod_muc_webchat_url: {} 67 | ``` 68 | 69 | The URLs are like: 70 | `https://localhost:5443/conversejs/#converse/room?jid=room1@conference.localhost` 71 | 72 | 73 | Example Configuration 74 | --------------------- 75 | 76 | Example of module configuration: 77 | 78 | ```yaml 79 | modules: 80 | mod_muc_webchat_url: 81 | base_url: "https://@HOST@:443/webclient/join?name=@ROOM_NAME@&host=@ROOM_HOST@&jid=@ROOM_JID@" 82 | room_names: 83 | - "general" 84 | - "support" 85 | room_options: 86 | members_only: false 87 | password_protected: false 88 | public: true 89 | ``` 90 | 91 | In that case, the URL is shown to rooms named `general` and `support`, 92 | and also to rooms that are public, not password protected and not members_only. 93 | 94 | The URLs are like: 95 | `"https://localhost:443/webclient/join?name=room1&host=conference.localhost&jid=room1@conference.localhost"` 96 | 97 | -------------------------------------------------------------------------------- /mod_muc_webchat_url/conf/mod_muc_webchat_url.yml: -------------------------------------------------------------------------------- 1 | modules: 2 | mod_muc_webchat_url: {} 3 | -------------------------------------------------------------------------------- /mod_muc_webchat_url/mod_muc_webchat_url.spec: -------------------------------------------------------------------------------- 1 | author: "Badlop " 2 | category: "web" 3 | summary: "Show webchat_url in MUC rooms disco#info" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_muc_webchat_url/src/mod_muc_webchat_url_opt.erl: -------------------------------------------------------------------------------- 1 | %% Generated automatically 2 | %% DO NOT EDIT: run `make options` instead 3 | 4 | -module(mod_muc_webchat_url_opt). 5 | 6 | -export([base_url/1]). 7 | -export([room_names/1]). 8 | -export([room_options/1]). 9 | 10 | -spec base_url(gen_mod:opts() | global | binary()) -> binary(). 11 | base_url(Opts) when is_map(Opts) -> 12 | gen_mod:get_opt(base_url, Opts); 13 | base_url(Host) -> 14 | gen_mod:get_module_opt(Host, mod_muc_webchat_url, base_url). 15 | 16 | -spec room_names(gen_mod:opts() | global | binary()) -> [binary()]. 17 | room_names(Opts) when is_map(Opts) -> 18 | gen_mod:get_opt(room_names, Opts); 19 | room_names(Host) -> 20 | gen_mod:get_module_opt(Host, mod_muc_webchat_url, room_names). 21 | 22 | -spec room_options(gen_mod:opts() | global | binary()) -> [{atom(),boolean()}]. 23 | room_options(Opts) when is_map(Opts) -> 24 | gen_mod:get_opt(room_options, Opts); 25 | room_options(Host) -> 26 | gen_mod:get_module_opt(Host, mod_muc_webchat_url, room_options). 27 | 28 | -------------------------------------------------------------------------------- /mod_openid/README.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | *************** 4 | PLEASE NOTE 5 | *************** 6 | 7 | This module does NOT work 8 | with ejabberd 13 or newer. 9 | 10 | *************** 11 | 12 | 13 | mod_openid 14 | Transform the Jabber Server in an openid provider. 15 | (http://openid.net/) 16 | 17 | Author: Olivier Goffart 18 | 19 | Motivation: 20 | There are already severals existing openid provider that uses the JabberId as id. 21 | ( http://openid.xmpp.za.net/ http://xmppid.net/ ) 22 | But none of them are open source. 23 | The idea is that having the openid server in the same place as the jabber server reduce 24 | the size of the security chain we have to trust. 25 | Instead of trusting both the jabber server and the openid provider, we can trust only 26 | the Jabber server. 27 | 28 | 29 | Status: 30 | Currently, the implementation just ask for the jabber password. 31 | Some security function are also lacking. 32 | The plan was to use something similair to XEP-0070 33 | 34 | How it works: 35 | Add in your ejabberd.cfg 36 | {listen, [ ... 37 | {5280, ejabberd_http, [http_poll, web_admin, {request_handlers , [{["openid"],mod_openid }]}]} , 38 | 39 | Then your open id is http://server.org:5280/openid/user@server.org 40 | Hopelifully it should be possible to have more nice-looking urls. 41 | 42 | 43 | Future: 44 | I have no plan to continue working on it. Feel free to take over. 45 | I'd be happy to reply to questions. 46 | 47 | -------------------------------------------------------------------------------- /mod_openid/mod_openid.spec.broken: -------------------------------------------------------------------------------- 1 | author: "Olivier Goffart " 2 | category: "service" 3 | summary: "Transform the Jabber Server in an openid provider" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_post_log/COPYING: -------------------------------------------------------------------------------- 1 | Copyright (C) 2014 Mojo Lingo LLC 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /mod_post_log/README.md: -------------------------------------------------------------------------------- 1 | mod_post_log - Logs messages to an HTTP API 2 | =========================================== 3 | 4 | * Author: Tim Stewart, Mojo Lingo LLC 5 | * Requirements: ejabberd 14.07 or later 6 | 7 | This module implements logging of all messages sent (chat and groupchat) via an HTTP API. 8 | 9 | 10 | Configuration 11 | ------------- 12 | 13 | - `url`: 14 | URL where the HTTP POSTs are to be sent. 15 | 16 | - `ts_header`: 17 | Default value: `"X-Message-Timestamp"` 18 | 19 | - `from_header`: 20 | Default value: `"X-Message-From"` 21 | 22 | - `to_header`: 23 | Default value: `"X-Message-To"` 24 | 25 | - `headers`: 26 | Default value: `[]` 27 | 28 | - `content_type`: 29 | Default value: `"text/xml"` 30 | 31 | - `http_options`: 32 | Default value: `[]` 33 | 34 | - `req_options`: 35 | Default value: `[]` 36 | 37 | 38 | Example Configuration 39 | --------------------- 40 | 41 | ```yaml 42 | modules: 43 | mod_post_log: 44 | url: "http://foo.bar.com/messages" 45 | ``` 46 | 47 | 48 | API Example 49 | ----------- 50 | 51 | ``` 52 | POST /messages HTTP/1.0 53 | HTTP-X-MESSAGE-FROM: doo@dah.com 54 | HTTP_X_MESSAGE_TO: foo@bar.com 55 | Content-Type: application/xml 56 | Content-Length: 122 57 | 58 | 59 | Hello there Foo! 60 | 61 | ``` 62 | -------------------------------------------------------------------------------- /mod_post_log/conf/mod_post_log.yml: -------------------------------------------------------------------------------- 1 | #modules: 2 | # mod_post_log: 3 | # url: "http://foo.bar.com/messages" 4 | -------------------------------------------------------------------------------- /mod_post_log/mod_post_log.spec: -------------------------------------------------------------------------------- 1 | author: "Tim Stewart " 2 | category: "log" 3 | summary: "Logs messages to an HTTP API" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_pottymouth/README.md: -------------------------------------------------------------------------------- 1 | mod_pottymouth - Filter bad words in messages 2 | ============================================= 3 | 4 | * Author: Tom Quackenbush 5 | 6 | 7 | This module allows individual whole words of a message to be filtered against a blacklist. 8 | 9 | It allows multiple blacklists 10 | sharded by language. The internal bloomfilter can support arbitrary blacklist 11 | sizes. Using a large list (say, 87M terms) will slow down the initial server 12 | boot time (to about 15 minutes respectively), but once loaded lookups are very 13 | speedy. 14 | 15 | `mod_pottymouth` aims to fill the void left by `mod_shit` 16 | which has disappeared from the net. 17 | 18 | 19 | Configuration 20 | ------------- 21 | 22 | ```yaml 23 | modules: 24 | mod_pottymouth: 25 | blacklists: 26 | default: /home/your_user/blacklist_en.txt 27 | en: /home/your_user/blacklist_en.txt 28 | cn: /home/your_user/blacklist_cn.txt 29 | fr: /home/your_user/blacklist_fr.txt 30 | charmaps: 31 | default: /etc/ejabberd/modules/mod_pottymouth/charmap_en.txt 32 | en: /etc/ejabberd/modules/mod_pottymouth/charmap_en.txt 33 | ``` 34 | 35 | For each language (en,cn,fr,...whatever) provide a full path to a backlist file. 36 | The blacklist file is a plain text file with blacklisted words listed one per 37 | line. 38 | 39 | You can also provide an optional 'charmap' for each language. This allows you 40 | to specify simple substitutions that will be made on the fly so you don't need 41 | to include those permutations in the blacklist. This keeps the blacklist small 42 | and reduces server startup time. For example, if you included the word: 43 | 'xyza' in the blacklist, adding the following substitutions in the charmap 44 | would filter permutations such as `XYZA`, `xYz4`, or `Xyz@` automatically. 45 | 46 | Charmap format: 47 | 48 | ``` 49 | [ 50 | {"X", "x"}, 51 | {"Y", "y"}, 52 | {"Z", "z"}, 53 | {"@", "a"}, 54 | {"4", "a"} 55 | ]. 56 | ``` 57 | 58 | Gotchas 59 | ------- 60 | 61 | The language will be looked up by whatever value is passed in the xml:lang 62 | attribute of the xml message. So, any xml:lang value to be supported will need 63 | a corresponding entry/blacklist in the config file. If `xml:lang` is missing, 64 | the 'default' entry in config will be used. 65 | 66 | For xml:lang attribute docs, see: 67 | http://wiki.xmpp.org/web/Programming_XMPP_Clients#Sending_a_message 68 | 69 | Blacklist helper 70 | ---------------- 71 | 72 | Thinking of a bunch of swear words and all the permutations can be tough. We made 73 | a helper script to take a bare wordlist and generate permutations given a 74 | dictionary of substitution characters: https://github.com/madglory/permute_wordlist 75 | -------------------------------------------------------------------------------- /mod_pottymouth/conf/mod_pottymouth.yml: -------------------------------------------------------------------------------- 1 | #modules: 2 | # mod_pottymouth: 3 | # blacklists: 4 | # default: /etc/ejabberd/modules/mod_pottymouth/blacklist_en.txt 5 | # en: /etc/ejabberd/modules/mod_pottymouth/blacklist_en.txt 6 | # charmaps: 7 | # default: /etc/ejabberd/modules/mod_pottymouth/charmap_en.txt 8 | # en: /etc/ejabberd/modules/mod_pottymouth/charmap_en.txt 9 | -------------------------------------------------------------------------------- /mod_pottymouth/mod_pottymouth.spec: -------------------------------------------------------------------------------- 1 | author: "Tom Quackenbush " 2 | category: "data" 3 | summary: "Filter bad words in messages" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_pottymouth/src/banword_gen_server.erl: -------------------------------------------------------------------------------- 1 | -module(banword_gen_server). 2 | 3 | -behaviour(gen_server). 4 | 5 | -include("logger.hrl"). 6 | 7 | -export([member/1]). 8 | 9 | %% gen_server callbacks 10 | -export([start/1, stop/0, init/1, handle_call/3, handle_cast/2, handle_info/2, 11 | terminate/2, code_change/3]). 12 | 13 | serverName(Lang) -> 14 | list_to_atom(lists:flatten([atom_to_list(?MODULE), "_", atom_to_list(Lang)])). 15 | 16 | member({Lang, Word} = _MessageToken) -> 17 | gen_server:call(serverName(Lang), {member, Word}). 18 | 19 | start({Lang, BlacklistFile} = _Opts) -> 20 | Name = serverName(Lang), 21 | ?INFO_MSG("Building blacklist name ~p~n", [Name]), 22 | gen_server:start_link({local, serverName(Lang)}, ?MODULE, [BlacklistFile], []). 23 | 24 | stop() -> 25 | ok. 26 | 27 | readlines(FileName) -> 28 | {ok, Data} = file:read_file(FileName), 29 | BinList = binary:split(Data, [<<"\n">>], [global]), 30 | [binary_to_list(X) || X <- BinList]. 31 | 32 | init([BlacklistFile]) -> 33 | ?INFO_MSG("Building blacklist ~p~n", [BlacklistFile]), 34 | {ok, loadWordList(BlacklistFile)}. 35 | 36 | check_banword(Word, BlackWord) -> 37 | try 38 | % ?INFO_MSG("== CHECK == ~p ~p~n", [Word, BlackWord]), 39 | Res = string:rstr(Word, BlackWord), 40 | if 41 | Res > 0 -> 42 | true; 43 | true -> 44 | false 45 | end 46 | catch _ -> 47 | false 48 | end. 49 | 50 | handle_call({member, Word}, _From, BlackList) -> 51 | % ?INFO_MSG("~p ~p~n", [Word, BlackList]), 52 | lists:foreach( 53 | fun(Elem) -> 54 | Res = check_banword(Word, Elem), 55 | if 56 | Res -> 57 | throw({reply, true, BlackList}); 58 | true -> 59 | false 60 | end 61 | end, BlackList), 62 | {reply, false, BlackList}. 63 | 64 | handle_cast(_Msg, State) -> {noreply, State}. 65 | handle_info(_Info, State) -> {noreply, State}. 66 | terminate(_Reason, _State) -> ok. 67 | code_change(_OldVsn, State, _Extra) -> {ok, State}. 68 | 69 | loadWordList(BlacklistFile) -> 70 | BlacklistExists = filelib:is_file(BlacklistFile), 71 | if 72 | BlacklistExists -> 73 | readlines(BlacklistFile); 74 | true -> 75 | ?ERROR_MSG("Blacklist file not found: ~p~n", [BlacklistFile]), 76 | [] 77 | end. 78 | -------------------------------------------------------------------------------- /mod_pottymouth/src/normalize_leet.erl: -------------------------------------------------------------------------------- 1 | %% -*- coding: utf-8 -*- 2 | 3 | -module(normalize_leet). 4 | 5 | -export([ 6 | normalize/2 7 | ]). 8 | 9 | distinctLetters([H|T]) -> 10 | distinctLetters(T, [H]). 11 | 12 | distinctLetters([H|T], Letters) -> 13 | distinctLetters(T, lists:umerge(Letters, [H])); 14 | distinctLetters([], Letters) -> 15 | Letters. 16 | 17 | checkMetaChar(Char) -> 18 | MetaChars = ["\\", "^", "$", ".", "|", "?", "*", "+", "(", ")", "[", "{"], 19 | lists:member(Char, MetaChars). 20 | 21 | replaceChar(true, Char, X, Word) -> 22 | re:replace(Word, ["\\", Char], X, [unicode,global,{return,list}]); 23 | replaceChar(false, Char, X, Word) -> 24 | re:replace(Word, Char, X, [unicode,global,{return,list}]). 25 | 26 | replaceLetters([H|T], CharMap, Word) -> 27 | CurChar = [H], 28 | NormChar = maps:get(CurChar, CharMap, skip), 29 | if 30 | NormChar == skip -> 31 | replaceLetters(T, CharMap, Word); 32 | true -> 33 | IsMetaChar = checkMetaChar(CurChar), 34 | replaceLetters(T, CharMap, replaceChar(IsMetaChar, CurChar, NormChar, Word)) 35 | end; 36 | replaceLetters([], _CharMap, Word) -> 37 | Word. 38 | 39 | normalize(CharMap, Word) -> 40 | replaceLetters(distinctLetters(Word), CharMap, Word). 41 | -------------------------------------------------------------------------------- /mod_pottymouth/src/normalize_leet_gen_server.erl: -------------------------------------------------------------------------------- 1 | -module(normalize_leet_gen_server). 2 | 3 | -behaviour(gen_server). 4 | 5 | -include("logger.hrl"). 6 | 7 | -import(normailize_leet, [normalize/2]). 8 | -export([normalize/1]). 9 | 10 | %% gen_server callbacks 11 | -export([start/1, stop/1, init/1, handle_call/3, handle_cast/2, handle_info/2, 12 | terminate/2, code_change/3]). 13 | 14 | serverName(Lang) -> 15 | list_to_atom(lists:flatten([atom_to_list(?MODULE), "_", atom_to_list(Lang)])). 16 | 17 | normalize({Lang, Word} = _MessageToken) -> 18 | try gen_server:call(serverName(Lang), {normalize, Word}) 19 | catch 20 | exit:{noproc, _Reason} -> Word 21 | end. 22 | 23 | start({Lang, CharMapFile} = _Opts) -> 24 | gen_server:start_link({local, serverName(Lang)}, ?MODULE, [CharMapFile], []). 25 | 26 | stop({Lang, _CharMapFile} = _Opts) -> 27 | gen_server:stop(serverName(Lang)). 28 | 29 | init([CharMapFile]) -> 30 | ?INFO_MSG("NormalizeLeet Loading: ~p~n", [CharMapFile]), 31 | {ok, loadCharMapConfig(file:consult(CharMapFile))}. 32 | 33 | loadCharMapConfig({ok, [CharMapConfig]}) -> 34 | maps:from_list(CharMapConfig); 35 | loadCharMapConfig({error, Reason}) -> 36 | ?INFO_MSG("NormalizeLeet Error: ~p~n", [Reason]), 37 | maps:new(). 38 | 39 | handle_call({normalize, Word}, _From, CharMap) -> 40 | Reply = normalize_leet:normalize(CharMap, Word), 41 | {reply, Reply, CharMap}. 42 | 43 | handle_cast(_Msg, State) -> {noreply, State}. 44 | handle_info(_Info, State) -> {noreply, State}. 45 | terminate(_Reason, _State) -> ok. 46 | code_change(_OldVsn, State, _Extra) -> {ok, State}. 47 | -------------------------------------------------------------------------------- /mod_profile/README.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | *************** 4 | PLEASE NOTE 5 | *************** 6 | 7 | This module does NOT work 8 | with ejabberd 13 or newer. 9 | 10 | *************** 11 | 12 | 13 | mod_profile - User Profile (XEP-0154) in Mnesia table 14 | 15 | http://www.ejabberd.im/mod_profile 16 | Author: Magnus Henoch 17 | mailto:henoch@dtek.chalmers.se 18 | xmpp:legoscia@jabber.cd.chalmers.se 19 | 20 | 21 | This module supports storing and retrieving a profile according to 22 | XEP-0154. It does no validation of the data, but simply stores 23 | whatever XML the user sends in a Mnesia table. The PEP parts of 24 | XEP-0154 are out of scope for this module. 25 | 26 | In the beginning of the erl file it says what parts of the XEP 27 | are implemented. 28 | 29 | 30 | BASIC CONFIGURATION 31 | =================== 32 | 33 | To install this module, follow the general build instructions, and add the 34 | following to your configuration, among the other modules: 35 | 36 | {mod_profile, []} 37 | 38 | -------------------------------------------------------------------------------- /mod_profile/conf/mod_profile.yml: -------------------------------------------------------------------------------- 1 | modules: 2 | mod_profile: {} 3 | -------------------------------------------------------------------------------- /mod_profile/mod_profile.spec.broken: -------------------------------------------------------------------------------- 1 | author: "Magnus Henoch " 2 | category: "data" 3 | summary: "User Profile (XEP-0154) in Mnesia table" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_prometheus/example/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.7' 2 | 3 | services: 4 | 5 | prometheus: 6 | image: docker.io/prom/prometheus 7 | container_name: prometheus 8 | ports: 9 | - "9090:9090" 10 | volumes: 11 | - prometheus-data:/prometheus 12 | - ./prometheus.yml:/etc/prometheus/prometheus.yml 13 | restart: always 14 | 15 | grafana: 16 | image: docker.io/grafana/grafana-enterprise 17 | container_name: grafana 18 | ports: 19 | - "3000:3000" 20 | volumes: 21 | - grafana-data:/var/lib/grafana 22 | - ./grafana_defaults.ini:/usr/share/grafana/conf/defaults.ini 23 | restart: always 24 | 25 | volumes: 26 | prometheus-data: 27 | grafana-data: 28 | -------------------------------------------------------------------------------- /mod_prometheus/example/prometheus.yml: -------------------------------------------------------------------------------- 1 | global: 2 | scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. 3 | evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. 4 | # scrape_timeout is set to the global default (10s). 5 | 6 | # Alertmanager configuration 7 | alerting: 8 | alertmanagers: 9 | - static_configs: 10 | - targets: 11 | # - alertmanager:9093 12 | 13 | # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. 14 | rule_files: 15 | # - "first_rules.yml" 16 | # - "second_rules.yml" 17 | 18 | # A scrape configuration containing exactly one endpoint to scrape: 19 | # Here it's Prometheus itself. 20 | scrape_configs: 21 | - job_name: "prometheus" 22 | static_configs: 23 | - targets: ["localhost:9090"] 24 | - job_name: "ejabberd" 25 | static_configs: 26 | - targets: ["localhost:5289"] 27 | -------------------------------------------------------------------------------- /mod_prometheus/mod_prometheus.spec: -------------------------------------------------------------------------------- 1 | author: "Pouriya Jahanbakhsh " 2 | category: "stats" 3 | summary: "Prometheus metrics" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_prometheus/rebar.config: -------------------------------------------------------------------------------- 1 | {deps, [ 2 | {quantile_estimator, "1.0.2", {git, "https://github.com/odo/quantile_estimator", {branch, "master"}}}, 3 | {prometheus, "5.0.0", {git, "https://github.com/prometheus-erl/prometheus.erl", {branch, "master"}}} 4 | ]}. 5 | -------------------------------------------------------------------------------- /mod_pubsub_serverinfo/README.md: -------------------------------------------------------------------------------- 1 | mod_pubsub_serverinfo - Exposes server information over Pub/Sub 2 | ============================================================== 3 | 4 | * Author: Stefan Strigler 5 | 6 | Initially created by Guus der Kinderen. 7 | 8 | Description 9 | ----------- 10 | 11 | Announces support for the ProtoXEP PubSub Server Information, by adding 12 | its Service Discovery feature. 13 | 14 | Active S2S connections are published to a local pubsub node as advertised by 15 | Service Discovery. Only those connections that support this feature as well are 16 | exposed with their domain names, otherwise they are shown as anonymous nodes. At 17 | startup a list of well known public servers is being fetched. Those are not 18 | shown as anonymous even if they don't support this feature. 19 | 20 | Currently the name of the node is hardcoded as "serverinfo". The local service 21 | to be used can be configured as `pubsub_host`. Otherwise a good guess is taken. 22 | 23 | This module has a hard dependency on `mod_pubsub` for this reason. Also 24 | `mod_disco` must be configured for this feature to work. 25 | 26 | > [!NOTE] 27 | > The module only shows S2S connections established while the module is running: 28 | > after installing the module, please run `ejabberdctl stop_s2s_connections`, or 29 | > restart ejabberd. 30 | 31 | Configuration 32 | ------------- 33 | 34 | Configurable options for `mod_pubsub_serverinfo`: 35 | 36 | - `pubsub_host` (default: undefined) 37 | 38 | This option specifies which pubsub host to use to advertise S2S connections. 39 | This must be a vhost local to this service and handled by `mod_pubsub`. This 40 | is only needed if your configuration has more than one vhost in mod_pubsub's 41 | `hosts` option. If there's more than one and this option is not given, we just 42 | pick the first one. 43 | -------------------------------------------------------------------------------- /mod_pubsub_serverinfo/conf/mod_pubsub_serverinfo.yml: -------------------------------------------------------------------------------- 1 | modules: 2 | mod_pubsub_serverinfo: {} 3 | -------------------------------------------------------------------------------- /mod_pubsub_serverinfo/include/pubsub_serverinfo_codec.hrl: -------------------------------------------------------------------------------- 1 | %% Created automatically by XML generator (fxml_gen.erl) 2 | %% Source: pubsub_serverinfo_codec.spec 3 | 4 | -record(pubsub_serverinfo_remote_domain, {name = <<>> :: binary(), 5 | type = [] :: ['bidi' | 'incoming' | 'outgoing']}). 6 | -type pubsub_serverinfo_remote_domain() :: #pubsub_serverinfo_remote_domain{}. 7 | 8 | -record(pubsub_serverinfo_domain, {name = <<>> :: binary(), 9 | remote_domain :: 'undefined' | [#pubsub_serverinfo_remote_domain{}]}). 10 | -type pubsub_serverinfo_domain() :: #pubsub_serverinfo_domain{}. 11 | 12 | -record(pubsub_serverinfo, {domain = [] :: [#pubsub_serverinfo_domain{}]}). 13 | -type pubsub_serverinfo() :: #pubsub_serverinfo{}. 14 | 15 | -type pubsub_serverinfo_codec() :: pubsub_serverinfo() | 16 | pubsub_serverinfo_domain() | 17 | pubsub_serverinfo_remote_domain(). 18 | -------------------------------------------------------------------------------- /mod_pubsub_serverinfo/mod_pubsub_serverinfo.spec: -------------------------------------------------------------------------------- 1 | author: "Guus der Kinderen " 2 | category: "stats" 3 | summary: "Exposes server information over Pub/Sub" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_pubsub_serverinfo/spec/pubsub_serverinfo_codec.spec: -------------------------------------------------------------------------------- 1 | -xml(pubsub_serverinfo, 2 | #elem{name = <<"serverinfo">>, 3 | xmlns = <<"urn:xmpp:serverinfo:0">>, 4 | module = pubsub_serverinfo_codec, 5 | result = {pubsub_serverinfo, '$domain'}, 6 | refs = [#ref{name = pubsub_serverinfo_domain, 7 | label = '$domain', 8 | min = 0}]}). 9 | 10 | -xml(pubsub_serverinfo_domain, 11 | #elem{name = <<"domain">>, 12 | xmlns = <<"urn:xmpp:serverinfo:0">>, 13 | module = pubsub_serverinfo_codec, 14 | result = {pubsub_serverinfo_domain, '$name', '$remote_domain'}, 15 | attrs = [#attr{name = <<"name">>, 16 | label = '$name', 17 | required = true}], 18 | refs = [#ref{name = pubsub_serverinfo_federation, 19 | label = '$remote_domain', 20 | min = 0, max = 1}]}). 21 | 22 | -xml(pubsub_serverinfo_federation, 23 | #elem{name = <<"federation">>, 24 | xmlns = <<"urn:xmpp:serverinfo:0">>, 25 | module = pubsub_serverinfo_codec, 26 | result = '$remote_domain', 27 | refs = [#ref{name = pubsub_serverinfo_remote_domain, 28 | label = '$remote_domain', 29 | min = 0}]}). 30 | 31 | -xml(pubsub_serverinfo_remote_domain, 32 | #elem{name = <<"remote-domain">>, 33 | xmlns = <<"urn:xmpp:serverinfo:0">>, 34 | module = pubsub_serverinfo_codec, 35 | result = {pubsub_serverinfo_remote_domain, '$name', '$type'}, 36 | attrs = [#attr{name = <<"name">>, 37 | label = '$name', 38 | required = true}], 39 | refs = [#ref{name = pubsub_serverinfo_connection, 40 | label = '$type', 41 | min = 0}]}). 42 | 43 | -xml(pubsub_serverinfo_connection, 44 | #elem{name = <<"connection">>, 45 | xmlns = <<"urn:xmpp:serverinfo:0">>, 46 | module = pubsub_serverinfo_codec, 47 | result = '$type', 48 | attrs = [#attr{name = <<"type">>, 49 | label = '$type', 50 | required = true, 51 | enc = {enc_enum, []}, 52 | dec = {dec_enum, [[incoming, outgoing, bidi]]}}]}). 53 | -------------------------------------------------------------------------------- /mod_pubsub_serverinfo/src/pubsub_serverinfo_codec_external.erl: -------------------------------------------------------------------------------- 1 | %% Created automatically by XML generator (fxml_gen.erl) 2 | %% Source: pubsub_serverinfo_codec.spec 3 | 4 | -module(pubsub_serverinfo_codec_external). 5 | 6 | -compile(export_all). 7 | 8 | modules() -> []. 9 | 10 | lookup(_, _) -> undefined. 11 | 12 | lookup(Term) -> erlang:error(badarg, [Term]). 13 | -------------------------------------------------------------------------------- /mod_push_offline/conf/mod_push_offline.yml: -------------------------------------------------------------------------------- 1 | modules: 2 | mod_push_offline: {} -------------------------------------------------------------------------------- /mod_push_offline/mod_push_offline.spec: -------------------------------------------------------------------------------- 1 | author: "Mujtaba Roohani " 2 | category: "data" 3 | summary: "Send offline messages to a component" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_push_offline/src/mod_push_offline_opt.erl: -------------------------------------------------------------------------------- 1 | -module(mod_push_offline_opt). 2 | 3 | -export([host/1]). 4 | 5 | -spec host(gen_mod:opts() | global | binary()) -> binary(). 6 | host(Opts) when is_map(Opts) -> 7 | gen_mod:get_opt(host, Opts); 8 | host(Host) -> 9 | gen_mod:get_module_opt(Host, mod_push_offline, host). 10 | -------------------------------------------------------------------------------- /mod_rest/conf/mod_rest.yml: -------------------------------------------------------------------------------- 1 | modules: 2 | mod_rest: 3 | allowed_ips: 4 | - "127.0.0.1" 5 | 6 | listen: 7 | - 8 | port: 5285 9 | module: ejabberd_http 10 | request_handlers: 11 | /rest: mod_rest 12 | -------------------------------------------------------------------------------- /mod_rest/mod_rest.spec: -------------------------------------------------------------------------------- 1 | author: "Nolan Eakins " 2 | category: "http" 3 | summary: "HTTP interface to POST stanzas into ejabberd" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_s2s_log/ChangeLog: -------------------------------------------------------------------------------- 1 | 2008-03-20 Badlop 2 | 3 | * README.txt: Explained requirement of ejabberd SVN 1135 trunk or 4 | 2.0.x branch 5 | 6 | * ChangeLog: Added file to track changes 7 | 8 | 2008-03-14 Mickael Remond 9 | 10 | * mod_s2s_log: Initial commit 11 | 12 | -------------------------------------------------------------------------------- /mod_s2s_log/README.md: -------------------------------------------------------------------------------- 1 | mod_s2s_log - Log all s2s connections in a file 2 | =============================================== 3 | 4 | 5 | This module can be used to keep track of other XMPP servers your server has 6 | been connected with. 7 | 8 | Example configuration: 9 | ```yaml 10 | modules: 11 | mod_s2s_log: 12 | filename: "/path/to/s2s.log" 13 | ``` 14 | -------------------------------------------------------------------------------- /mod_s2s_log/conf/mod_s2s_log.yml: -------------------------------------------------------------------------------- 1 | modules: 2 | mod_s2s_log: 3 | filename: auto 4 | # filename: "/var/log/ejabberd/s2s.log" 5 | -------------------------------------------------------------------------------- /mod_s2s_log/mod_s2s_log.spec: -------------------------------------------------------------------------------- 1 | author: "Mickael Remond " 2 | category: "log" 3 | summary: "Log all s2s connections in a file" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_s3_upload/conf/mod_s3_upload.yml: -------------------------------------------------------------------------------- 1 | modules: 2 | mod_s3_upload: 3 | region: us-west-1 4 | bucket_url: https://example.s3.us-west-1.wasabisys.com 5 | ## Set this if you wish to use a different base URL for downloads 6 | # download_url: https://my-super-cdn.com 7 | access_key_id: WBPXK3YWS457RV9P 8 | access_key_secret: N2UC4RSLPU6VH6FYGNJ9BRNMC74XM6G9MP74RNH7D4ZG9UBZY9Z5G4ZR8T782KR7 9 | ## Maximum permitted object size, in bytes 10 | # max_size: 1073741824 11 | ## How long, in seconds from generation, an upload URL is valid 12 | # put_ttl: 600 13 | ## Whether to apply the special public-read ACL to the object 14 | # set_public: true 15 | ## Advertised service name 16 | # service_name: 'S3 Upload' 17 | ## ACL containing users permitted to request slots 18 | # access: local 19 | ## Hostnames that this module will receive IQs at 20 | # hosts: 21 | # - upload.@HOST@ 22 | -------------------------------------------------------------------------------- /mod_s3_upload/include/aws.hrl: -------------------------------------------------------------------------------- 1 | %%%---------------------------------------------------------------------- 2 | %%% File : s3_util.erl 3 | %%% Usage : S3 URL Generation and Signing 4 | %%% Author : Roman Hargrave 5 | %%% Purpose : Signing AWS Requests. Intended for S3-CS use. 6 | %%% Created : 24 Aug 2022 by Roman Hargrave 7 | %%% 8 | %%% 9 | %%% This program is free software; you can redistribute it and/or 10 | %%% modify it under the terms of the GNU General Public License as 11 | %%% published by the Free Software Foundation; either version 2 of the 12 | %%% License, or (at your option) any later version. 13 | %%% 14 | %%% This program is distributed in the hope that it will be useful, 15 | %%% but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17 | %%% General Public License for more details. 18 | %%% 19 | %%% You should have received a copy of the GNU General Public License along 20 | %%% with this program; if not, write to the Free Software Foundation, Inc., 21 | %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 22 | %%%---------------------------------------------------------------------- 23 | 24 | -record(aws_auth, {access_key_id :: binary(), 25 | access_key :: binary(), 26 | region :: binary()}). 27 | 28 | -define(AWS_SERVICE_S3, <<"s3">>). 29 | -------------------------------------------------------------------------------- /mod_s3_upload/mod_s3_upload.spec: -------------------------------------------------------------------------------- 1 | # -*- mode:yaml; -*- 2 | author: "Roman Hargrave " 3 | category: "service" 4 | summary: "Upload files to S3-compatible storage" 5 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 6 | url: "git@github.com:processone/ejabberd-contrib.git" 7 | -------------------------------------------------------------------------------- /mod_shcommands/ChangeLog: -------------------------------------------------------------------------------- 1 | 2009-05-09 Badlop 2 | 3 | * src/mod_shcommands.erl: Fix unused variables and web calls. 4 | 5 | 2007-12-26 Badlop 6 | 7 | * src/mod_shcommands.erl: Translate menu items of webadmin hooks 8 | in each module (EJAB-485) 9 | 10 | 2007-09-01 Badlop 11 | 12 | * mod_shcommands: Initial commit. 13 | 14 | -------------------------------------------------------------------------------- /mod_shcommands/README.md: -------------------------------------------------------------------------------- 1 | mod_shcommands - Execute shell commands 2 | ======================================= 3 | 4 | * Requires: ejabberd 19.08 or higher 5 | * Author: Badlop 6 | * http://ejabberd.im/mod_shcommands 7 | 8 | 9 | ***************** 10 | 11 | W A R N I N G 12 | 13 | ***************** 14 | 15 | 16 | USE THIS MODULE AT YOUR OWN RISK 17 | 18 | This module allows ejabberd administrators 19 | to remotely execute shell commands 20 | which could compromise both 21 | the ejabberd server and the whole machine. 22 | 23 | 24 | ***************** 25 | 26 | W A R N I N G 27 | 28 | ***************** 29 | 30 | 31 | 32 | 33 | Description 34 | ----------- 35 | 36 | This module provides the ejabberd server administrator a method to remotely 37 | execute shell commands in the ejabberd server. 38 | 39 | It provides a page in the ejabberd Web Admin. 40 | Only the administrators of the whole server can access this page. 41 | 42 | Three types of commands are possible: 43 | * ejabberd_ctl: makes a call to ejabberd_ctl 44 | * erlang shell: executes an erlang command 45 | * system shell: executes a command on the system shell 46 | The result of the execution will be shown. 47 | 48 | In the system shell, only non-interactive commands will work correctly, 49 | for example this will work: 50 | ``` 51 | ps -all 52 | ``` 53 | Don't use commands that start an interactive mode: 54 | * DON'T TRY THIS: top 55 | * DON'T TRY THIS: vim readme.txt 56 | 57 | This module does not check if the commands are dangerous or problematic, 58 | so this module is only recommended for experienced ejabberd and Erlang/OTP 59 | administrators. 60 | 61 | 62 | Configuration 63 | ------------- 64 | 65 | This module has no configurable options, simply enable it: 66 | ``` 67 | modules: 68 | mod_shcommands: {} 69 | ``` 70 | -------------------------------------------------------------------------------- /mod_shcommands/conf/mod_shcommands.yml: -------------------------------------------------------------------------------- 1 | modules: 2 | mod_shcommands: {} 3 | -------------------------------------------------------------------------------- /mod_shcommands/mod_shcommands.spec: -------------------------------------------------------------------------------- 1 | author: "Badlop " 2 | category: "admin" 3 | summary: "Execute shell commands" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_spam_filter/TODO.org: -------------------------------------------------------------------------------- 1 | #+title: TODO / Improvements / Wishlist for mod_spam_filter 2 | #+author: Stefan Strigler (zeank@jwchat.org) 3 | #+date: 2025-04-02 4 | #+synopsis: Collection of todos, ideas, wishlist, comments. Feel free to contribute, any feedback appreciated. 5 | 6 | * TODOS [4/10] 7 | ** DONE Allow to configure node-name 8 | CLOSED: [2025-04-07 Mo 10:32] 9 | ** DONE Command to remove domain from list 10 | CLOSED: [2025-04-07 Mo 10:59] 11 | ** DONE List of blocked domains via file 12 | CLOSED: [2025-04-07 Mo 16:21] 13 | ** DONE Whitelist for blocked domains 14 | CLOSED: [2025-04-09 Mi 14:25] 15 | ** TODO Filter telegram channels (etc) via file :maybe: 16 | ** TODO Filter list of greetings (via file) :maybe: 17 | ** TODO Check if sending jid is from muc/mix service (maybe in bookmarks?) 18 | ** TODO Parse meta-info given on RTBL blocked domains 19 | *** default policy, eg `block-strangers` (basically hardcoded for now) 20 | ** TODO [0/3] Pubsub XEP bug? Publish node and retract node can only have one item? Needs clarification. Schema says otherwise. 21 | - [ ] Ask Mailinglist 22 | - [ ] Bug report on p1/xmpp -> doesn‘t handle multiple items correctly 23 | - [ ] Evtl bug in ejabberd mod_pubsub 24 | ** TODO Forward Reports (is this the right place?). See [[https://pad.nixnet.services/s/1ZrHSLq0G][Simplified XMPP Incident Exchange]] 25 | 26 | * Ideas/Wishlist 27 | ** Allow list of RTBL hosts 28 | *** Config option for multiple hosts and their node-names respectivly (and maybe default policy) 29 | *** Query list of RTBL hosts 30 | *** Merge strategy for multiple results, block policies (if more than one host), eg 31 | - one 32 | - more_than_one 33 | - all 34 | ** Scoring system (eg: is spam domain? has url(s)? suspicious jid? suspicious host (ibr active)? etc ...) 35 | ** 36 | -------------------------------------------------------------------------------- /mod_spam_filter/conf/mod_spam_filter.yml: -------------------------------------------------------------------------------- 1 | #modules: 2 | # mod_spam_filter: 3 | # rtbl_host: "xmppbl.org" 4 | # spam_domains_file: "/etc/ejabberd/spam-filter/domains.txt" 5 | # spam_jids_file: "/etc/ejabberd/spam-filter/jids.txt" 6 | # spam_urls_file: "/etc/ejabberd/spam-filter/urls.txt" 7 | # spam_dump_file: "/var/log/ejabberd/spam_dump.log" 8 | # access_spam: 9 | # allow: 10 | # user: honeypot@example.org 11 | -------------------------------------------------------------------------------- /mod_spam_filter/mod_spam_filter.spec: -------------------------------------------------------------------------------- 1 | author: "Holger Weiss " 2 | category: "data" 3 | summary: "Filter spam messages based on sender JID and content" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_statsdx/ChangeLog: -------------------------------------------------------------------------------- 1 | 2009-11-24 Badlop 2 | 3 | * src/mod_statsdx.erl: Add getstatsdx ejabberd commands. 4 | 5 | 2009-02-04 Badlop 6 | 7 | * src/mod_statsdx.erl: Fix a few stats 8 | 9 | 2009-02-03 Badlop 10 | 11 | * src/mod_statsdx.erl: New configuration {hooks, traffic}. In 12 | addition to hooks for client versions, in this case also tracks 13 | stanza traffic. Show in WebAdmin of the virtual host. 14 | * README.txt: Document traffic hooks 15 | 16 | 2009-02-02 Badlop 17 | 18 | * src/mod_statsdx.erl: New stats for erlang memory. Show new stats 19 | in node page. Show big integers with separation for easy reading. 20 | 21 | 2008-09-16 Badlop 22 | 23 | * src/mod_statsdx.erl: Fixed code indentation and 24 | trailing-whitespace. Catch table creation. Improved hooks 25 | feature. Remove the unused hook webadmin_user. Disable code for 26 | traffic stats and don't show empty section 'Ratios' in 27 | webadmin. Create an ETS table for the whole server, and a table 28 | for each vhost. Add subpages in WebAdmin to view filtered 29 | sessions. 30 | 31 | 2008-09-03 Badlop 32 | 33 | * src/mod_statsdx.erl: If client answers with unexpected response, 34 | forget stanza instead of crashing. 35 | 36 | * src/mod_statsdx.erl: The option 'hooks' in mod_statsdx is 37 | disabled by default. 38 | * README.txt: Likewise 39 | 40 | * README.txt: Several cosmetic changes. 41 | 42 | 2007-12-26 Badlop 43 | 44 | * src/mod_statsdx.erl: Translate menu items of webadmin hooks in 45 | each module (EJAB-485) 46 | 47 | 2007-08-31 Badlop 48 | 49 | * src/mod_statsdx.erl: Added pages to Web Admin. Apply Emacs-mode 50 | indentation. 51 | * src/ejabberd_web_admin.erl: No need to patch core web admin file. 52 | * Emakefile: Idem. 53 | 54 | 2007-08-21 Badlop 55 | 56 | * src/*.erl: Removed authusers statistic. 57 | 58 | * src/*.erl: Fixed credits. 59 | 60 | * ChangeLog: New file to track changes. 61 | -------------------------------------------------------------------------------- /mod_statsdx/README.md: -------------------------------------------------------------------------------- 1 | mod_statsdx - Calculates and gathers statistics actively 2 | ======================================================== 3 | 4 | * Requires: ejabberd 19.08 or higher 5 | * Homepage: http://www.ejabberd.im/mod_statsdx 6 | * Author: Badlop 7 | 8 | 9 | Measures several statistics. It provides a new section in ejabberd 10 | Web Admin and two ejabberd commands to view the information. 11 | 12 | 13 | Configuration 14 | ------------- 15 | 16 | Configurable options: 17 | 18 | - `hooks` 19 | 20 | Set to `true` to enable hooks and related statistics. 21 | This option by default `false` because it is expected to 22 | consume many resources in very populated servers. 23 | If set to `traffic`, it will also keep counters of traffic stanzas. 24 | 25 | 26 | Example Configuration 27 | --------------------- 28 | 29 | To start using the module, simply enable it: 30 | ```yaml 31 | modules: 32 | mod_statsdx: {} 33 | ``` 34 | 35 | To enable the `hooks` option: 36 | 37 | ```yaml 38 | modules: 39 | mod_statsdx: 40 | hooks: true 41 | ``` 42 | 43 | 44 | Feature Requests 45 | ---------------- 46 | 47 | - fix the problem with plain/ssl/tlsusers, it crashes ejabberd 48 | - traffic: send bytes per second, received bps 49 | - connections to a transport 50 | - traffic: send presence per second, received mps 51 | - Number of SASL c2s connections 52 | - improve to work in distributed server 53 | 54 | 55 | mod_stats2file 56 | ============== 57 | 58 | Generates files with all kind of statistics 59 | 60 | This module writes a file with all kind of statistics every few minutes. 61 | Available output formats are html (example), 62 | text file with descriptions and raw text file (for MRTG, RRDTool...). 63 | 64 | 65 | Configuration 66 | ------------- 67 | 68 | This module requires `mod_statsdx`. 69 | 70 | Configurable options: 71 | - `interval`: Time between updates, in minutes (default: `5`) 72 | - `type`: Type of output. Allowed values: `html`, `txt`, `dat` (default: `html`) 73 | - `basefilename`: Base filename including absolute path (default: `"/tmp/ejasta"`) 74 | - `split`: If split the statistics in several files (default: `false`) 75 | - `hosts`: List of virtual hosts that will be checked. By default `all` 76 | 77 | 78 | Example Configuration 79 | --------------------- 80 | 81 | The module can be simply enabled, accepting the default options configuration: 82 | ```yaml 83 | modules: 84 | mod_stats2file: {} 85 | ``` 86 | 87 | Or set some options: 88 | ```yaml 89 | modules: 90 | mod_stats2file: 91 | interval: 60 92 | type: txt 93 | split: true 94 | basefilename: "/var/www/stats" 95 | hosts: ["localhost", "server3.com"] 96 | ``` 97 | -------------------------------------------------------------------------------- /mod_statsdx/conf/mod_statsdx.yml: -------------------------------------------------------------------------------- 1 | modules: 2 | mod_statsdx: 3 | hooks: false 4 | # hooks: true 5 | -------------------------------------------------------------------------------- /mod_statsdx/mod_statsdx.spec: -------------------------------------------------------------------------------- 1 | author: "Badlop " 2 | category: "stats" 3 | summary: "Calculates and gathers statistics actively" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_tombstones/README.md: -------------------------------------------------------------------------------- 1 | mod_tombstones - Keep graveyard of accounts and rooms tombstones 2 | ================================================================ 3 | 4 | Requires: 5 | - ejabberd 24.10 or higher 6 | 7 | 8 | Keep tombstones for accounts and rooms that were removed. 9 | This prevents registration of that account, and creation of that room. 10 | 11 | 12 | Options 13 | ------- 14 | 15 | The configurable options are: 16 | 17 | - `db_type = mnesia | sql | ldap` 18 | 19 | Same as top-level `default_db` option, but applied to this module only. 20 | Default: `mnesia` 21 | 22 | - `room_tombstone_expiry = time | infinity` 23 | 24 | How long to keep MUC room tombstones. 25 | If set to `infinity` the tombstones are kept forever. 26 | The default value is `30 days`. 27 | 28 | - `user_tombstone_expiry = time | infinity` 29 | 30 | How long to keep users tombstones. 31 | If set to `infinity` the tombstones are kept forever. 32 | The default value is `365 days`. 33 | 34 | 35 | Example Configuration 36 | --------------------- 37 | 38 | This configuration keeps accounts for one month, and rooms for a week: 39 | 40 | ```yaml 41 | modules: 42 | mod_tombstones: 43 | room_tombstone_expiry: 7 days 44 | user_tombstone_expiry: 30 days 45 | ``` 46 | 47 | 48 | -------------------------------------------------------------------------------- /mod_tombstones/conf/mod_tombstones.yml: -------------------------------------------------------------------------------- 1 | modules: 2 | mod_tombstones: {} 3 | -------------------------------------------------------------------------------- /mod_tombstones/mod_tombstones.spec: -------------------------------------------------------------------------------- 1 | author: "Badlop " 2 | category: "purge" 3 | summary: "Keep graveyard of accounts and rooms tombstones" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_webadmin_config/README.md: -------------------------------------------------------------------------------- 1 | mod_webadmin_config: Show Configuration in Web Admin 2 | ==================================================== 3 | 4 | This module shows a page in ejabberd's Web Admin to view and reload the configuration. 5 | 6 | The page is available in Web Admin -> Nodes -> your node. 7 | 8 | It shows the node's current configuration as stored in the internal memory, 9 | which includes the content of the main `ejabberd.yml`, 10 | the content of any files added with `include_config_file`, 11 | and the configuration added by contributed modules. 12 | 13 | The page also allows to reload the configuration, 14 | similarly to the `reload_config` API command. 15 | It also displays a diff of last changes detected in the configuration. 16 | 17 | # Configuration 18 | 19 | The module has no options to configure, it's simply enabled with: 20 | ```yaml 21 | modules: 22 | mod_webadmin_config: {} 23 | ``` 24 | -------------------------------------------------------------------------------- /mod_webadmin_config/conf/mod_webadmin_config.yml: -------------------------------------------------------------------------------- 1 | modules: 2 | mod_webadmin_config: {} 3 | -------------------------------------------------------------------------------- /mod_webadmin_config/mod_webadmin_config.spec: -------------------------------------------------------------------------------- 1 | author: "Badlop " 2 | category: "admin" 3 | summary: "Show configuration in Web Admin" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_webpresence/AUTHORS: -------------------------------------------------------------------------------- 1 | 2 | CODE 3 | ---- 4 | 5 | Igor Goryachev: author of the original mod_presence 6 | 7 | Badlop: added WebAdmin features 8 | 9 | Tobias Markmann: example PHP code 10 | 11 | 12 | PIXMAPS 13 | ------- 14 | 15 | This module includes pixmap artwork from many different authors. 16 | The list of known authors in alphabetical order is shown below. 17 | Your help to complete this information is appreciated. 18 | 19 | Everaldo Coelho: crystal 20 | 21 | Jason Kim: stellar 22 | 23 | NoAlWin: jsf-jabber-text, jsf-text and jsf-text2 24 | 25 | Unknown author: 26 | alphamod 27 | amibulb 28 | amiglobe 29 | dcraven 30 | dudes 31 | frickenhuge 32 | gabber 33 | gnome 34 | goojim 35 | gossip 36 | gota 37 | gtalk 38 | invision 39 | jabberbulb 40 | msn_amicons 41 | nuvola 42 | phpbb 43 | simplebulb 44 | star_amicons 45 | sun 46 | zyx 47 | -------------------------------------------------------------------------------- /mod_webpresence/TODO.txt: -------------------------------------------------------------------------------- 1 | 2 | Feature requests for mod_webpresence 3 | 4 | 5 | Internationalization support 6 | ---------------------------- 7 | 8 | - The "text" output returns an empty string if the user doesn't have a status text. 9 | Proposal: in such case, return the string "Online", or "Busy" or whatever 10 | 11 | - The special cases in "presence/" and "presence/themes" should return 12 | a header lang=xx with the proper language instead of lang=en 13 | 14 | - The Icon Themes page should show the translated status. 15 | 16 | - Allow translation of separator commas and ending dots in lists of elements, 17 | since some languages may use other separation symbols. 18 | 19 | - Support the HTML attribute dir=(ltr|rtl) for languages that are RTL 20 | For example: 21 | {xmlelement, "html", [{"xmlns", "http://www.w3.org/1999/xhtml"}, ... 22 | {"dir", ltr_or_rtl()} 23 | And ltr_or_rtl() -> ?T("ltr"). 24 | This way RTL languages can change that string to rtl 25 | 26 | -------------------------------------------------------------------------------- /mod_webpresence/conf/mod_webpresence.yml: -------------------------------------------------------------------------------- 1 | listen: 2 | - 3 | port: 5284 4 | module: ejabberd_http 5 | request_handlers: 6 | /presence: mod_webpresence 7 | 8 | modules: 9 | mod_webpresence: 10 | access: local 11 | pixmaps_path: auto 12 | #pixmaps_path: "/etc/ejabberd/priv/pixmaps" 13 | -------------------------------------------------------------------------------- /mod_webpresence/mod_webpresence.spec: -------------------------------------------------------------------------------- 1 | author: "Igor Goryachev " 2 | category: "data" 3 | summary: "Publish user presence information in the web" 4 | home: "https://github.com/processone/ejabberd-contrib/tree/master/" 5 | url: "git@github.com:processone/ejabberd-contrib.git" 6 | -------------------------------------------------------------------------------- /mod_webpresence/priv/msgs/es.mod_webpresence.msg: -------------------------------------------------------------------------------- 1 | {"available","disponible"}. 2 | {"Avatar","Avatar"}. 3 | {"away","ausente"}. 4 | {"do not disturb","no molestar"}. 5 | {"Example:","Ejemplo:"}. 6 | {"extended away","muy ausente"}. 7 | {"free for chat","disponible para charlar"}. 8 | {"Icon Theme","Tema de iconos"}. 9 | {"If you forget your RandomID, register again to receive this message.","Si olvidas tu ID Aleatorio, regístrate de nuevo para recibir este mensaje."}. 10 | {"JavaScript","JavaScript"}. 11 | {"Login with a Jabber client, open the Service Discovery and register in Web Presence.","Conecta con un cliente Jabber, abre el Descubridor de Servicios y regístrate de Web Presence."}. 12 | {"Output Type","Tipo de salida"}. 13 | {"Random ID","ID Aleatorio"}. 14 | {"registered","registrado"}. 15 | {"Resource","Recurso"}. 16 | {"Select one at least","Selecciona al menos una"}. 17 | {"Text","Texto"}. 18 | {"To get a new RandomID, disable the option and register again.","Para obtener un nuevo ID Aleatorio, desactiva esta opción y regístrate de nuevo."}. 19 | {"To publish your presence using this system you need a Jabber account in this Jabber server.","Para publicar tu presencia usando este sistema necesitas una cuenta Jabber en este servidor."}. 20 | {"unavailable","desconectado"}. 21 | {"unregistered","desregistrado"}. 22 | {"URL Type","Tipo de URL"}. 23 | {"Use URLs like:","Usar URLs como:"}. 24 | {"Web Presence","Web Presence"}. 25 | {"What features do you want to enable?","¿Qué características deseas activar?"}. 26 | {"XML","XML"}. 27 | {"You have registered:","Te has registrado:"}. 28 | {"You have unregistered.","Te has desregistrado."}. 29 | {"You need an x:data capable client to register presence","Necesitas un cliente que incluya soporte de x:data para poder registrar tu presencia"}. 30 | {"You will receive a message with further instructions.","Recibirás un mensaje con instrucciones adicionales."}. 31 | -------------------------------------------------------------------------------- /mod_webpresence/priv/msgs/wa.mod_webpresence.msg: -------------------------------------------------------------------------------- 1 | {"available","disponibe"}. 2 | {"Avatar","Vizaedje"}. 3 | {"away","evoye"}. 4 | {"do not disturb","èn nén disrindjî"}. 5 | {"Example:","Egzimpe:"}. 6 | {"extended away","nén arinnåve"}. 7 | {"free for chat","libe po berdeler"}. 8 | {"Icon Theme","Tinme po ls imådjetes"}. 9 | {"If you forget your RandomID, register again to receive this message.","Si vos rovyîz vossse ID a l' astcheyance, redjîstrez vs cor on côp po rçure ci messaedje ci."}. 10 | {"JavaScript","JavaScript"}. 11 | {"Login with a Jabber client, open the Service Discovery and register in Web Presence.","Elodjîz vs avou on cliyint Jabber et s' drovoz li «Discovraedje di siervices» eyet edjîstrez vs sol «Prezince sol waibe»"}. 12 | {"Output Type","Sôre di rexhowe"}. 13 | {"Random ID","ID a l' astcheyance"}. 14 | {"registered","edjîstré"}. 15 | {"Resource","Rissoûce"}. 16 | {"Select one at least","Tchoezixhoz è pol moens ene"}. 17 | {"Text","Tecse"}. 18 | {"To get a new RandomID, disable the option and register again.","Po rçure on novea ID a l' astcheyance, dismetoz l' tchuze ey après redjîstrez vs cor on côp."}. 19 | {"To publish your presence using this system you need a Jabber account in this Jabber server.","Por vos eplaidî vosse prezince so cisse waibe ci i vs fåt on conte Jabber so ç' sierveu ci."}. 20 | {"unavailable","nén disponibe"}. 21 | {"unregistered","disdjîstré"}. 22 | {"URL Type","Sôre di hårdêye"}. 23 | {"Use URLs like:","Eployîz des hårdêyes come:"}. 24 | {"Web Presence","Prezince sol waibe"}. 25 | {"What features do you want to enable?","Kénès fonccionålités voloz vs mete en alaedje?"}. 26 | {"XML","XML"}. 27 | {"You have registered:","Vos avoz edjîstré:"}. 28 | {"You have unregistered.","Vos vs avoz disdjîstré."}. 29 | {"You need an x:data capable client to register presence","Vos avoz mezåjhe d' on cliyint ki sopoite x:data po vs edjîstrer al prezince sol waibe"}. 30 | {"You will receive a message with further instructions.","Vos riçuroz on messaedje avou pus d' instruccions."}. 31 | -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/3d-dot1/available.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/3d-dot1/available.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/3d-dot1/away.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/3d-dot1/away.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/3d-dot1/chat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/3d-dot1/chat.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/3d-dot1/dnd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/3d-dot1/dnd.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/3d-dot1/unavailable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/3d-dot1/unavailable.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/3d-dot1/xa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/3d-dot1/xa.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/3d-dot2/available.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/3d-dot2/available.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/3d-dot2/away.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/3d-dot2/away.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/3d-dot2/chat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/3d-dot2/chat.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/3d-dot2/dnd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/3d-dot2/dnd.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/3d-dot2/unavailable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/3d-dot2/unavailable.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/3d-dot2/xa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/3d-dot2/xa.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/alphamod/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/alphamod/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/alphamod/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/alphamod/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/alphamod/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/alphamod/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/alphamod/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/alphamod/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/alphamod/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/alphamod/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/alphamod/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/alphamod/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amibulb/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amibulb/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amibulb/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amibulb/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amibulb/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amibulb/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amibulb/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amibulb/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amibulb/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amibulb/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amibulb/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amibulb/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amigadu/available.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amigadu/available.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amigadu/away.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amigadu/away.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amigadu/chat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amigadu/chat.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amigadu/dnd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amigadu/dnd.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amigadu/unavailable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amigadu/unavailable.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amigadu/xa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amigadu/xa.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amiglobe/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amiglobe/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amiglobe/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amiglobe/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amiglobe/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amiglobe/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amiglobe/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amiglobe/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amiglobe/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amiglobe/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amiglobe/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amiglobe/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amiicq/available.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amiicq/available.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amiicq/away.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amiicq/away.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amiicq/chat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amiicq/chat.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amiicq/dnd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amiicq/dnd.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amiicq/unavailable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amiicq/unavailable.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amiicq/xa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amiicq/xa.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amimsn/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amimsn/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amimsn/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amimsn/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amimsn/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amimsn/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amimsn/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amimsn/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amimsn/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amimsn/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amimsn/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amimsn/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amistellar/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amistellar/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amistellar/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amistellar/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amistellar/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amistellar/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amistellar/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amistellar/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amistellar/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amistellar/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amistellar/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amistellar/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amitlen/available.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amitlen/available.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amitlen/away.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amitlen/away.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amitlen/chat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amitlen/chat.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amitlen/dnd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amitlen/dnd.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amitlen/unavailable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amitlen/unavailable.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/amitlen/xa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/amitlen/xa.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/bulb/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/bulb/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/bulb/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/bulb/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/bulb/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/bulb/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/bulb/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/bulb/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/bulb/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/bulb/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/bulb/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/bulb/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/chrome-pl/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/chrome-pl/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/chrome-pl/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/chrome-pl/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/chrome-pl/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/chrome-pl/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/chrome-pl/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/chrome-pl/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/chrome-pl/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/chrome-pl/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/chrome-pl/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/chrome-pl/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/crystal/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/crystal/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/crystal/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/crystal/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/crystal/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/crystal/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/crystal/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/crystal/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/crystal/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/crystal/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/crystal/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/crystal/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/crystal2/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/crystal2/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/crystal2/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/crystal2/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/crystal2/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/crystal2/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/crystal2/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/crystal2/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/crystal2/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/crystal2/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/crystal2/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/crystal2/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/crystal3/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/crystal3/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/crystal3/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/crystal3/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/crystal3/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/crystal3/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/crystal3/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/crystal3/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/crystal3/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/crystal3/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/crystal3/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/crystal3/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/dcraven/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/dcraven/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/dcraven/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/dcraven/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/dcraven/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/dcraven/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/dcraven/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/dcraven/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/dcraven/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/dcraven/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/dcraven/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/dcraven/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/dudes/available.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/dudes/available.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/dudes/away.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/dudes/away.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/dudes/chat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/dudes/chat.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/dudes/dnd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/dudes/dnd.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/dudes/unavailable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/dudes/unavailable.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/dudes/xa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/dudes/xa.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/frickenhuge/available.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/frickenhuge/available.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/frickenhuge/away.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/frickenhuge/away.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/frickenhuge/chat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/frickenhuge/chat.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/frickenhuge/dnd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/frickenhuge/dnd.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/frickenhuge/unavailable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/frickenhuge/unavailable.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/frickenhuge/xa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/frickenhuge/xa.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gabber/available.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gabber/available.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gabber/away.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gabber/away.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gabber/chat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gabber/chat.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gabber/dnd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gabber/dnd.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gabber/unavailable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gabber/unavailable.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gabber/xa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gabber/xa.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gg/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gg/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gg/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gg/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gg/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gg/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gg/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gg/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gg/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gg/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gg/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gg/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gnome/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gnome/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gnome/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gnome/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gnome/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gnome/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gnome/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gnome/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gnome/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gnome/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gnome/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gnome/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gossip/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gossip/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gossip/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gossip/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gossip/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gossip/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gossip/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gossip/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gossip/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gossip/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gossip/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gossip/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gota/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gota/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gota/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gota/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gota/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gota/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gota/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gota/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gota/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gota/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gota/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gota/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gtalk/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gtalk/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gtalk/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gtalk/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gtalk/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gtalk/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gtalk/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gtalk/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gtalk/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gtalk/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/gtalk/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/gtalk/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/icq/available.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/icq/available.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/icq/away.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/icq/away.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/icq/chat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/icq/chat.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/icq/dnd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/icq/dnd.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/icq/unavailable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/icq/unavailable.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/icq/xa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/icq/xa.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/invision/available.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/invision/available.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/invision/away.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/invision/away.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/invision/chat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/invision/chat.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/invision/dnd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/invision/dnd.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/invision/unavailable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/invision/unavailable.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/invision/xa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/invision/xa.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jabberbulb/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jabberbulb/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jabberbulb/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jabberbulb/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jabberbulb/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jabberbulb/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jabberbulb/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jabberbulb/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jabberbulb/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jabberbulb/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jabberbulb/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jabberbulb/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jsf-jabber-text/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jsf-jabber-text/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jsf-jabber-text/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jsf-jabber-text/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jsf-jabber-text/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jsf-jabber-text/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jsf-jabber-text/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jsf-jabber-text/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jsf-jabber-text/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jsf-jabber-text/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jsf-jabber-text/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jsf-jabber-text/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jsf-text/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jsf-text/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jsf-text/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jsf-text/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jsf-text/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jsf-text/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jsf-text/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jsf-text/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jsf-text/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jsf-text/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jsf-text/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jsf-text/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jsf-text2/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jsf-text2/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jsf-text2/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jsf-text2/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jsf-text2/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jsf-text2/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jsf-text2/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jsf-text2/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jsf-text2/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jsf-text2/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/jsf-text2/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/jsf-text2/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/koniczynek/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/koniczynek/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/koniczynek/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/koniczynek/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/koniczynek/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/koniczynek/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/koniczynek/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/koniczynek/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/koniczynek/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/koniczynek/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/koniczynek/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/koniczynek/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/licq/available.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/licq/available.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/licq/away.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/licq/away.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/licq/chat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/licq/chat.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/licq/dnd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/licq/dnd.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/licq/unavailable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/licq/unavailable.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/licq/xa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/licq/xa.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/nahuatl/available.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/nahuatl/available.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/nahuatl/away.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/nahuatl/away.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/nahuatl/chat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/nahuatl/chat.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/nahuatl/dnd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/nahuatl/dnd.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/nahuatl/unavailable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/nahuatl/unavailable.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/nahuatl/xa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/nahuatl/xa.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/nuvola/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/nuvola/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/nuvola/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/nuvola/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/nuvola/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/nuvola/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/nuvola/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/nuvola/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/nuvola/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/nuvola/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/nuvola/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/nuvola/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/phpbb/available.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/phpbb/available.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/phpbb/away.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/phpbb/away.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/phpbb/chat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/phpbb/chat.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/phpbb/dnd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/phpbb/dnd.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/phpbb/unavailable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/phpbb/unavailable.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/phpbb/xa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/phpbb/xa.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/pogoda/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/pogoda/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/pogoda/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/pogoda/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/pogoda/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/pogoda/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/pogoda/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/pogoda/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/pogoda/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/pogoda/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/pogoda/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/pogoda/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/psi/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/psi/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/psi/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/psi/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/psi/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/psi/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/psi/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/psi/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/psi/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/psi/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/psi/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/psi/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/simple/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/simple/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/simple/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/simple/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/simple/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/simple/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/simple/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/simple/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/simple/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/simple/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/simple/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/simple/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/simplebulb/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/simplebulb/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/simplebulb/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/simplebulb/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/simplebulb/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/simplebulb/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/simplebulb/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/simplebulb/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/simplebulb/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/simplebulb/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/simplebulb/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/simplebulb/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/stellar/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/stellar/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/stellar/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/stellar/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/stellar/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/stellar/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/stellar/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/stellar/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/stellar/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/stellar/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/stellar/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/stellar/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/stellar2/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/stellar2/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/stellar2/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/stellar2/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/stellar2/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/stellar2/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/stellar2/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/stellar2/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/stellar2/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/stellar2/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/stellar2/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/stellar2/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/sun/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/sun/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/sun/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/sun/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/sun/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/sun/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/sun/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/sun/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/sun/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/sun/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/sun/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/sun/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/tux/available.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/tux/available.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/tux/away.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/tux/away.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/tux/chat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/tux/chat.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/tux/dnd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/tux/dnd.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/tux/unavailable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/tux/unavailable.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/tux/xa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/tux/xa.gif -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/wpkontakt/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/wpkontakt/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/wpkontakt/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/wpkontakt/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/wpkontakt/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/wpkontakt/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/wpkontakt/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/wpkontakt/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/wpkontakt/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/wpkontakt/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/wpkontakt/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/wpkontakt/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/yipee/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/yipee/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/yipee/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/yipee/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/yipee/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/yipee/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/yipee/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/yipee/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/yipee/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/yipee/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/yipee/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/yipee/xa.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/zyx/available.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/zyx/available.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/zyx/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/zyx/away.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/zyx/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/zyx/chat.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/zyx/dnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/zyx/dnd.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/zyx/unavailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/zyx/unavailable.png -------------------------------------------------------------------------------- /mod_webpresence/priv/pixmaps/zyx/xa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/processone/ejabberd-contrib/b1f7985e8484f997c5ced475055d862bfb6a464a/mod_webpresence/priv/pixmaps/zyx/xa.png --------------------------------------------------------------------------------