gitextract_hsr6yf71/ ├── .devcontainer/ │ ├── Dockerfile │ ├── devcontainer.json │ └── prepare-container.sh ├── .dockerignore ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ ├── PULL_REQUEST_TEMPLATE │ ├── actions/ │ │ ├── manage-database/ │ │ │ └── action.yml │ │ └── manage-ejabberd/ │ │ └── action.yml │ ├── container/ │ │ ├── Dockerfile │ │ ├── ejabberd-container-install.bat │ │ ├── ejabberd.yml.example │ │ └── ejabberdctl.template │ ├── lock.yml │ └── workflows/ │ ├── ci.yml │ ├── container.yml │ ├── installers.yml │ ├── runtime.yml │ └── weekly.yml ├── .gitignore ├── .shellcheckrc ├── .vscode/ │ ├── extensions.json │ ├── launch.json │ ├── relive.sh │ └── settings.json ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── COMPILE.md ├── CONTAINER.md ├── CONTRIBUTING.md ├── CONTRIBUTORS.md ├── COPYING ├── Makefile.in ├── README.md ├── SECURITY.md ├── _checkouts/ │ └── configure_deps/ │ ├── rebar.config │ └── src/ │ ├── configure_deps.app.src │ ├── configure_deps.erl │ └── configure_deps_prv.erl ├── autogen.sh ├── config/ │ ├── ejabberd.exs │ └── runtime.exs ├── configure.ac ├── configure.bat ├── cover.spec ├── ejabberd.doap ├── ejabberd.init.template ├── ejabberd.service.template ├── ejabberd.yml.example ├── ejabberdctl.cfg.example ├── ejabberdctl.template ├── elvis.config ├── erlang_ls.config ├── include/ │ ├── ELDAPv3.hrl │ ├── bosh.hrl │ ├── ejabberd_auth.hrl │ ├── ejabberd_commands.hrl │ ├── ejabberd_ctl.hrl │ ├── ejabberd_db_serialize.hrl │ ├── ejabberd_http.hrl │ ├── ejabberd_oauth.hrl │ ├── ejabberd_router.hrl │ ├── ejabberd_sm.hrl │ ├── ejabberd_sql.hrl │ ├── ejabberd_sql_pt.hrl │ ├── ejabberd_web_admin.hrl │ ├── eldap.hrl │ ├── http_bind.hrl │ ├── logger.hrl │ ├── mod_announce.hrl │ ├── mod_antispam.hrl │ ├── mod_caps.hrl │ ├── mod_invites.hrl │ ├── mod_last.hrl │ ├── mod_mam.hrl │ ├── mod_matrix_gw.hrl │ ├── mod_muc.hrl │ ├── mod_muc_room.hrl │ ├── mod_offline.hrl │ ├── mod_privacy.hrl │ ├── mod_private.hrl │ ├── mod_proxy65.hrl │ ├── mod_push.hrl │ ├── mod_roster.hrl │ ├── mod_shared_roster.hrl │ ├── mod_vcard.hrl │ ├── mqtt.hrl │ ├── pubsub.hrl │ └── translate.hrl ├── inetrc ├── install-sh ├── lib/ │ ├── ejabberd/ │ │ ├── config/ │ │ │ ├── attr.ex │ │ │ ├── config.ex │ │ │ ├── ejabberd_hook.ex │ │ │ ├── ejabberd_module.ex │ │ │ ├── logger/ │ │ │ │ └── ejabberd_logger.ex │ │ │ ├── opts_formatter.ex │ │ │ ├── store.ex │ │ │ └── validator/ │ │ │ ├── validation.ex │ │ │ ├── validator_attrs.ex │ │ │ ├── validator_dependencies.ex │ │ │ └── validator_utility.ex │ │ ├── config_util.ex │ │ ├── hooks.ex │ │ └── logger.ex │ ├── ejabberd_auth_example.ex │ ├── mix/ │ │ └── tasks/ │ │ └── deps.tree.ex │ └── mod_example.ex ├── m4/ │ ├── ax_lib_sqlite3.m4 │ └── erlang-extra.m4 ├── man/ │ └── ejabberd.yml.5 ├── mix.exs ├── package.json ├── plugins/ │ ├── configure_deps.erl │ ├── deps_erl_opts.erl │ ├── override_deps_versions2.erl │ └── override_opts.erl ├── priv/ │ ├── css/ │ │ ├── admin.css │ │ ├── bosh.css │ │ ├── muc.css │ │ ├── oauth.css │ │ └── register.css │ ├── js/ │ │ ├── admin.js │ │ └── muc.js │ ├── lua/ │ │ └── redis_sm.lua │ ├── mod_invites/ │ │ ├── apps.html │ │ ├── apps.json │ │ ├── base.html │ │ ├── base_min.html │ │ ├── client.html │ │ ├── copyright │ │ ├── invite.html │ │ ├── invite_invalid.html │ │ ├── register.html │ │ ├── register_error.html │ │ ├── register_success.html │ │ ├── roster.html │ │ └── static/ │ │ ├── invite.css │ │ └── invite.js │ └── msgs/ │ ├── ar.msg │ ├── bg.msg │ ├── ca.msg │ ├── cs.msg │ ├── de.msg │ ├── el.msg │ ├── eo.msg │ ├── es.msg │ ├── fr.msg │ ├── gl.msg │ ├── he.msg │ ├── hu.msg │ ├── id.msg │ ├── it.msg │ ├── ja.msg │ ├── nl.msg │ ├── no.msg │ ├── pl.msg │ ├── pt-br.msg │ ├── pt.msg │ ├── ru.msg │ ├── sk.msg │ ├── sq.msg │ ├── sv.msg │ ├── ta.msg │ ├── th.msg │ ├── tr.msg │ ├── uk.msg │ ├── vi.msg │ ├── wa.msg │ └── zh.msg ├── rebar ├── rebar.config ├── rebar.config.script ├── rebar3 ├── rel/ │ ├── files/ │ │ ├── erl │ │ └── install_upgrade.escript │ ├── relive.config │ ├── relive.escript │ ├── reltool.config.script │ ├── setup-dev.sh │ ├── setup-relive.sh │ ├── sys.config │ └── vm.args ├── sql/ │ ├── lite.new.sql │ ├── lite.sql │ ├── mssql.new.sql │ ├── mssql.sql │ ├── mysql.new.sql │ ├── mysql.old-to-new.sql │ ├── mysql.sql │ ├── pg.new.sql │ └── pg.sql ├── src/ │ ├── ELDAPv3.asn1db │ ├── ELDAPv3.erl │ ├── acl.erl │ ├── econf.erl │ ├── ejabberd.app.src.script │ ├── ejabberd.erl │ ├── ejabberd_access_permissions.erl │ ├── ejabberd_acme.erl │ ├── ejabberd_admin.erl │ ├── ejabberd_app.erl │ ├── ejabberd_auth.erl │ ├── ejabberd_auth_anonymous.erl │ ├── ejabberd_auth_external.erl │ ├── ejabberd_auth_jwt.erl │ ├── ejabberd_auth_ldap.erl │ ├── ejabberd_auth_mnesia.erl │ ├── ejabberd_auth_pam.erl │ ├── ejabberd_auth_sql.erl │ ├── ejabberd_backend_sup.erl │ ├── ejabberd_batch.erl │ ├── ejabberd_bosh.erl │ ├── ejabberd_c2s.erl │ ├── ejabberd_c2s_config.erl │ ├── ejabberd_captcha.erl │ ├── ejabberd_cluster.erl │ ├── ejabberd_cluster_mnesia.erl │ ├── ejabberd_commands.erl │ ├── ejabberd_commands_doc.erl │ ├── ejabberd_config.erl │ ├── ejabberd_config_transformer.erl │ ├── ejabberd_ctl.erl │ ├── ejabberd_db_serialize.erl │ ├── ejabberd_db_sup.erl │ ├── ejabberd_doc.erl │ ├── ejabberd_hooks.erl │ ├── ejabberd_http.erl │ ├── ejabberd_http_ws.erl │ ├── ejabberd_iq.erl │ ├── ejabberd_listener.erl │ ├── ejabberd_local.erl │ ├── ejabberd_logger.erl │ ├── ejabberd_mnesia.erl │ ├── ejabberd_oauth.erl │ ├── ejabberd_oauth_mnesia.erl │ ├── ejabberd_oauth_rest.erl │ ├── ejabberd_oauth_sql.erl │ ├── ejabberd_old_config.erl │ ├── ejabberd_option.erl │ ├── ejabberd_options.erl │ ├── ejabberd_options_doc.erl │ ├── ejabberd_piefxis.erl │ ├── ejabberd_pkix.erl │ ├── ejabberd_redis.erl │ ├── ejabberd_redis_sup.erl │ ├── ejabberd_regexp.erl │ ├── ejabberd_router.erl │ ├── ejabberd_router_mnesia.erl │ ├── ejabberd_router_multicast.erl │ ├── ejabberd_router_redis.erl │ ├── ejabberd_router_sql.erl │ ├── ejabberd_s2s.erl │ ├── ejabberd_s2s_in.erl │ ├── ejabberd_s2s_out.erl │ ├── ejabberd_service.erl │ ├── ejabberd_shaper.erl │ ├── ejabberd_sip.erl │ ├── ejabberd_sm.erl │ ├── ejabberd_sm_mnesia.erl │ ├── ejabberd_sm_redis.erl │ ├── ejabberd_sm_sql.erl │ ├── ejabberd_sql.erl │ ├── ejabberd_sql_pt.erl │ ├── ejabberd_sql_schema.erl │ ├── ejabberd_sql_sup.erl │ ├── ejabberd_stun.erl │ ├── ejabberd_sup.erl │ ├── ejabberd_system_monitor.erl │ ├── ejabberd_systemd.erl │ ├── ejabberd_tmp_sup.erl │ ├── ejabberd_update.erl │ ├── ejabberd_web.erl │ ├── ejabberd_web_admin.erl │ ├── ejabberd_websocket.erl │ ├── ejabberd_websocket_codec.erl │ ├── ejabberd_xmlrpc.erl │ ├── ejd2sql.erl │ ├── eldap.erl │ ├── eldap_filter.erl │ ├── eldap_filter_yecc.yrl │ ├── eldap_pool.erl │ ├── eldap_utils.erl │ ├── ext_mod.erl │ ├── extauth.erl │ ├── extauth_sup.erl │ ├── gen_iq_handler.erl │ ├── gen_mod.erl │ ├── gen_pubsub_node.erl │ ├── gen_pubsub_nodetree.erl │ ├── jd2ejd.erl │ ├── misc.erl │ ├── mod_adhoc.erl │ ├── mod_adhoc_api.erl │ ├── mod_adhoc_api_opt.erl │ ├── mod_adhoc_opt.erl │ ├── mod_admin_extra.erl │ ├── mod_admin_update_sql.erl │ ├── mod_announce.erl │ ├── mod_announce_mnesia.erl │ ├── mod_announce_opt.erl │ ├── mod_announce_sql.erl │ ├── mod_antispam.erl │ ├── mod_antispam_dump.erl │ ├── mod_antispam_files.erl │ ├── mod_antispam_filter.erl │ ├── mod_antispam_opt.erl │ ├── mod_antispam_rtbl.erl │ ├── mod_auth_fast.erl │ ├── mod_auth_fast_mnesia.erl │ ├── mod_auth_fast_opt.erl │ ├── mod_avatar.erl │ ├── mod_avatar_opt.erl │ ├── mod_block_strangers.erl │ ├── mod_block_strangers_opt.erl │ ├── mod_blocking.erl │ ├── mod_bosh.erl │ ├── mod_bosh_mnesia.erl │ ├── mod_bosh_opt.erl │ ├── mod_bosh_redis.erl │ ├── mod_bosh_sql.erl │ ├── mod_caps.erl │ ├── mod_caps_mnesia.erl │ ├── mod_caps_opt.erl │ ├── mod_caps_sql.erl │ ├── mod_carboncopy.erl │ ├── mod_client_state.erl │ ├── mod_client_state_opt.erl │ ├── mod_configure.erl │ ├── mod_configure_opt.erl │ ├── mod_conversejs.erl │ ├── mod_conversejs_opt.erl │ ├── mod_delegation.erl │ ├── mod_delegation_opt.erl │ ├── mod_disco.erl │ ├── mod_disco_opt.erl │ ├── mod_fail2ban.erl │ ├── mod_fail2ban_opt.erl │ ├── mod_host_meta.erl │ ├── mod_host_meta_opt.erl │ ├── mod_http_api.erl │ ├── mod_http_api_opt.erl │ ├── mod_http_fileserver.erl │ ├── mod_http_fileserver_opt.erl │ ├── mod_http_upload.erl │ ├── mod_http_upload_opt.erl │ ├── mod_http_upload_quota.erl │ ├── mod_http_upload_quota_opt.erl │ ├── mod_invites.erl │ ├── mod_invites_http.erl │ ├── mod_invites_http_erlylib.erl │ ├── mod_invites_mnesia.erl │ ├── mod_invites_opt.erl │ ├── mod_invites_register.erl │ ├── mod_invites_sql.erl │ ├── mod_jidprep.erl │ ├── mod_jidprep_opt.erl │ ├── mod_last.erl │ ├── mod_last_mnesia.erl │ ├── mod_last_opt.erl │ ├── mod_last_sql.erl │ ├── mod_legacy_auth.erl │ ├── mod_mam.erl │ ├── mod_mam_mnesia.erl │ ├── mod_mam_opt.erl │ ├── mod_mam_sql.erl │ ├── mod_matrix_gw.erl │ ├── mod_matrix_gw_opt.erl │ ├── mod_matrix_gw_room.erl │ ├── mod_matrix_gw_s2s.erl │ ├── mod_matrix_gw_sup.erl │ ├── mod_metrics.erl │ ├── mod_metrics_opt.erl │ ├── mod_mix.erl │ ├── mod_mix_mnesia.erl │ ├── mod_mix_opt.erl │ ├── mod_mix_pam.erl │ ├── mod_mix_pam_mnesia.erl │ ├── mod_mix_pam_opt.erl │ ├── mod_mix_pam_sql.erl │ ├── mod_mix_sql.erl │ ├── mod_mqtt.erl │ ├── mod_mqtt_bridge.erl │ ├── mod_mqtt_bridge_opt.erl │ ├── mod_mqtt_bridge_session.erl │ ├── mod_mqtt_mnesia.erl │ ├── mod_mqtt_opt.erl │ ├── mod_mqtt_session.erl │ ├── mod_mqtt_sql.erl │ ├── mod_mqtt_ws.erl │ ├── mod_muc.erl │ ├── mod_muc_admin.erl │ ├── mod_muc_admin_opt.erl │ ├── mod_muc_log.erl │ ├── mod_muc_log_opt.erl │ ├── mod_muc_mnesia.erl │ ├── mod_muc_opt.erl │ ├── mod_muc_room.erl │ ├── mod_muc_rtbl.erl │ ├── mod_muc_rtbl_opt.erl │ ├── mod_muc_sql.erl │ ├── mod_muc_sup.erl │ ├── mod_multicast.erl │ ├── mod_multicast_opt.erl │ ├── mod_offline.erl │ ├── mod_offline_mnesia.erl │ ├── mod_offline_opt.erl │ ├── mod_offline_sql.erl │ ├── mod_ping.erl │ ├── mod_ping_opt.erl │ ├── mod_pres_counter.erl │ ├── mod_pres_counter_opt.erl │ ├── mod_privacy.erl │ ├── mod_privacy_mnesia.erl │ ├── mod_privacy_opt.erl │ ├── mod_privacy_sql.erl │ ├── mod_private.erl │ ├── mod_private_mnesia.erl │ ├── mod_private_opt.erl │ ├── mod_private_sql.erl │ ├── mod_privilege.erl │ ├── mod_privilege_opt.erl │ ├── mod_providers.erl │ ├── mod_providers_opt.erl │ ├── mod_proxy65.erl │ ├── mod_proxy65_lib.erl │ ├── mod_proxy65_mnesia.erl │ ├── mod_proxy65_opt.erl │ ├── mod_proxy65_redis.erl │ ├── mod_proxy65_service.erl │ ├── mod_proxy65_sql.erl │ ├── mod_proxy65_stream.erl │ ├── mod_pubsub.erl │ ├── mod_pubsub_mnesia.erl │ ├── mod_pubsub_opt.erl │ ├── mod_pubsub_serverinfo.erl │ ├── mod_pubsub_serverinfo_opt.erl │ ├── mod_pubsub_sql.erl │ ├── mod_push.erl │ ├── mod_push_keepalive.erl │ ├── mod_push_keepalive_opt.erl │ ├── mod_push_mnesia.erl │ ├── mod_push_opt.erl │ ├── mod_push_sql.erl │ ├── mod_register.erl │ ├── mod_register_opt.erl │ ├── mod_register_web.erl │ ├── mod_roster.erl │ ├── mod_roster_mnesia.erl │ ├── mod_roster_opt.erl │ ├── mod_roster_sql.erl │ ├── mod_s2s_bidi.erl │ ├── mod_s2s_dialback.erl │ ├── mod_s2s_dialback_opt.erl │ ├── mod_scram_upgrade.erl │ ├── mod_scram_upgrade_opt.erl │ ├── mod_service_log.erl │ ├── mod_service_log_opt.erl │ ├── mod_shared_roster.erl │ ├── mod_shared_roster_ldap.erl │ ├── mod_shared_roster_ldap_opt.erl │ ├── mod_shared_roster_mnesia.erl │ ├── mod_shared_roster_opt.erl │ ├── mod_shared_roster_sql.erl │ ├── mod_sic.erl │ ├── mod_sip.erl │ ├── mod_sip_opt.erl │ ├── mod_sip_proxy.erl │ ├── mod_sip_registrar.erl │ ├── mod_stats.erl │ ├── mod_stream_mgmt.erl │ ├── mod_stream_mgmt_opt.erl │ ├── mod_stun_disco.erl │ ├── mod_stun_disco_opt.erl │ ├── mod_time.erl │ ├── mod_vcard.erl │ ├── mod_vcard_ldap.erl │ ├── mod_vcard_ldap_opt.erl │ ├── mod_vcard_mnesia.erl │ ├── mod_vcard_mnesia_opt.erl │ ├── mod_vcard_opt.erl │ ├── mod_vcard_sql.erl │ ├── mod_vcard_xupdate.erl │ ├── mod_vcard_xupdate_opt.erl │ ├── mod_version.erl │ ├── mod_version_opt.erl │ ├── mqtt_codec.erl │ ├── node_flat.erl │ ├── node_flat_sql.erl │ ├── node_pep.erl │ ├── node_pep_sql.erl │ ├── nodetree_tree.erl │ ├── nodetree_tree_sql.erl │ ├── nodetree_virtual.erl │ ├── prosody2ejabberd.erl │ ├── proxy_protocol.erl │ ├── pubsub_db_sql.erl │ ├── pubsub_index.erl │ ├── pubsub_migrate.erl │ ├── pubsub_subscription.erl │ ├── pubsub_subscription_sql.erl │ ├── rest.erl │ ├── str.erl │ ├── translate.erl │ ├── win32_dns.erl │ └── xml_compress.erl ├── test/ │ ├── README │ ├── announce_tests.erl │ ├── antispam_tests.erl │ ├── carbons_tests.erl │ ├── commands_tests.erl │ ├── configtest_tests.erl │ ├── csi_tests.erl │ ├── docker/ │ │ ├── README.md │ │ ├── db/ │ │ │ └── mssql/ │ │ │ └── initdb/ │ │ │ └── initdb_mssql.sql │ │ └── docker-compose.yml │ ├── ejabberd_SUITE.erl │ ├── ejabberd_SUITE_data/ │ │ ├── ca.key │ │ ├── ca.pem │ │ ├── cert.pem │ │ ├── configtest.yml │ │ ├── ejabberd.extauth.yml │ │ ├── ejabberd.ldap.yml │ │ ├── ejabberd.ldif │ │ ├── ejabberd.mnesia.yml │ │ ├── ejabberd.mssql.yml │ │ ├── ejabberd.mysql.yml │ │ ├── ejabberd.pgsql.yml │ │ ├── ejabberd.redis.yml │ │ ├── ejabberd.sqlite.yml │ │ ├── ejabberd.yml │ │ ├── extauth.py │ │ ├── gencerts.sh │ │ ├── macros.yml │ │ ├── openssl.cnf │ │ ├── self-signed-cert.pem │ │ ├── spam_domains.txt │ │ ├── spam_jids.txt │ │ ├── spam_urls.txt │ │ ├── sql_sort.pl │ │ └── whitelist_domains.txt │ ├── ejabberd_test_options.erl │ ├── elixir-config/ │ │ ├── attr_test.exs │ │ ├── config_test.exs │ │ ├── ejabberd_logger.exs │ │ ├── shared/ │ │ │ ├── ejabberd.exs │ │ │ ├── ejabberd_different_from_default.exs │ │ │ └── ejabberd_for_validation.exs │ │ └── validation_test.exs │ ├── example_tests.erl │ ├── invites_tests.erl │ ├── jidprep_tests.erl │ ├── json_test.erl │ ├── ldap_srv.erl │ ├── mam_tests.erl │ ├── mod_configtest.erl │ ├── muc_tests.erl │ ├── offline_tests.erl │ ├── privacy_tests.erl │ ├── private_tests.erl │ ├── proxy65_tests.erl │ ├── pubsub_tests.erl │ ├── push_tests.erl │ ├── replaced_tests.erl │ ├── roster_tests.erl │ ├── sm_tests.erl │ ├── stundisco_tests.erl │ ├── suite.erl │ ├── suite.hrl │ ├── upload_tests.erl │ ├── vcard_tests.erl │ └── webadmin_tests.erl ├── tools/ │ ├── captcha-ng.sh │ ├── captcha.sh │ ├── check_xep_versions.sh │ ├── dl_invites_page_deps.sh │ ├── ejabberdctl.bc │ ├── emacs-indent.sh │ ├── extract-erlydtl-templates.sh │ ├── extract-tr.sh │ ├── generate-doap.sh │ ├── hook_deps.sh │ ├── jhbtest.pl │ ├── make-binaries │ ├── make-installers │ ├── make-packages │ ├── opt_types.sh │ ├── prepare-tr.sh │ ├── rebar3-format.sh │ ├── update-deps-releases.pl │ └── xml_compress_gen.erl └── vars.config.in