public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/ejabberd] f45: Unretirement request: https://forge.fedoraproject.org/releng/fedora-scm-requests/issues/1053
@ 2026-09-23 19:07 releng-bot
0 siblings, 0 replies; only message in thread
From: releng-bot @ 2026-09-23 19:07 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/ejabberd
Branch : f45
Commit : 046c4989058ec810f415b44a650423e7927e5924
Author : releng-bot <releng-bot@fedoraproject.org>
Date : 2026-09-23T18:16:28+00:00
Stats : +762/-1 in 16 file(s)
URL : https://src.fedoraproject.org/rpms/ejabberd/c/046c4989058ec810f415b44a650423e7927e5924?branch=f45
Log:
Unretirement request: https://forge.fedoraproject.org/releng/fedora-scm-requests/issues/1053
---
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..291e1ff
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/ejabberd-20.07.tar.gz
diff --git a/dead.package b/dead.package
deleted file mode 100644
index 5204a84..0000000
--- a/dead.package
+++ /dev/null
@@ -1 +0,0 @@
-Orphaned for 6+ weeks
diff --git a/ejabberd-0003-Install-into-BINDIR-instead-of-SBINDIR.patch b/ejabberd-0003-Install-into-BINDIR-instead-of-SBINDIR.patch
new file mode 100644
index 0000000..edb32f7
--- /dev/null
+++ b/ejabberd-0003-Install-into-BINDIR-instead-of-SBINDIR.patch
@@ -0,0 +1,63 @@
+From 81d881318ed7e4966ed9f9f00521066660ed7191 Mon Sep 17 00:00:00 2001
+From: Randy Barlow <randy@electronsweatshop.com>
+Date: Tue, 8 Jan 2019 11:56:28 -0500
+Subject: [PATCH] Install to bindir instead of sbindir.
+
+Signed-off-by: Randy Barlow <randy@electronsweatshop.com>
+---
+ Makefile.in | 13 +++++--------
+ 1 file changed, 5 insertions(+), 8 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index d3bcb282..ffd89c2a 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -14,9 +14,6 @@ ETCDIR = $(DESTDIR)@sysconfdir@/ejabberd
+ # /bin/
+ BINDIR = $(DESTDIR)@bindir@
+
+-# /sbin/
+-SBINDIR = $(DESTDIR)@sbindir@
+-
+ # /lib/
+ LIBDIR = $(DESTDIR)@libdir@
+
+@@ -221,8 +218,8 @@ install: all copy-files
+ $(INSTALL) -b -m 644 $(G_USER) inetrc $(ETCDIR)/inetrc
+ #
+ # Administration script
+- [ -d $(SBINDIR) ] || $(INSTALL) -d -m 755 $(SBINDIR)
+- $(INSTALL) -m 550 $(G_USER) ejabberdctl.example $(SBINDIR)/ejabberdctl
++ [ -d $(BINDIR) ] || $(INSTALL) -d -m 755 $(BINDIR)
++ $(INSTALL) -m 550 $(G_USER) ejabberdctl.example $(BINDIR)/ejabberdctl
+ # Elixir binaries
+ [ -d $(BINDIR) ] || $(INSTALL) -d -m 755 $(BINDIR)
+ [ -f deps/elixir/bin/iex ] && $(INSTALL) -m 550 $(G_USER) deps/elixir/bin/iex $(BINDIR)/iex || true
+@@ -230,13 +227,13 @@ install: all copy-files
+ [ -f deps/elixir/bin/mix ] && $(INSTALL) -m 550 $(G_USER) deps/elixir/bin/mix $(BINDIR)/mix || true
+ #
+ # Init script
+- $(SED) -e "s*@ctlscriptpath@*$(SBINDIR)*g" \
++ $(SED) -e "s*@ctlscriptpath@*$(BINDIR)*g" \
+ -e "s*@installuser@*$(INIT_USER)*g" ejabberd.init.template \
+ > ejabberd.init
+ chmod 755 ejabberd.init
+ #
+ # Service script
+- $(SED) -e "s*@ctlscriptpath@*$(SBINDIR)*g" ejabberd.service.template \
++ $(SED) -e "s*@ctlscriptpath@*$(BINDIR)*g" ejabberd.service.template \
+ > ejabberd.service
+ chmod 644 ejabberd.service
+ #
+@@ -266,7 +263,7 @@ install: all copy-files
+ uninstall: uninstall-binary
+
+ uninstall-binary:
+- rm -f $(SBINDIR)/ejabberdctl
++ rm -f $(BINDIR)/ejabberdctl
+ rm -f $(BINDIR)/iex
+ rm -f $(BINDIR)/elixir
+ rm -f $(BINDIR)/mix
+--
+2.20.1
+
diff --git a/ejabberd-0004-Enable-systemd-notification-if-available.patch b/ejabberd-0004-Enable-systemd-notification-if-available.patch
new file mode 100644
index 0000000..aea6ba8
--- /dev/null
+++ b/ejabberd-0004-Enable-systemd-notification-if-available.patch
@@ -0,0 +1,28 @@
+From 06b8b27aaef8229ffab5babd705c47b92b509f6c Mon Sep 17 00:00:00 2001
+From: Randy Barlow <randy@electronsweatshop.com>
+Date: Thu, 14 Nov 2019 17:00:23 -0500
+Subject: [PATCH] Enable systemd notification if available.
+
+This patch was originally written by Peter Lemenkov, and was
+adapted for ejabberd 19.09.1.
+
+Signed-off-by: Randy Barlow <randy@electronsweatshop.com>
+---
+ src/ejabberd_app.erl | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/ejabberd_app.erl b/src/ejabberd_app.erl
+index f7df1dd7..f4cd1fb2 100644
+--- a/src/ejabberd_app.erl
++++ b/src/ejabberd_app.erl
+@@ -55,6 +55,7 @@ start(normal, _Args) ->
+ {ok, SupPid} ->
+ ejabberd_system_monitor:start(),
+ register_elixir_config_hooks(),
++ {module, sd_notify} == code:load_file(sd_notify) andalso sd_notify:sd_notify(0, "READY=1\nSTATUS=Initialized\nMAINPID=" ++ os:getpid() ++ "\n"),
+ ejabberd_cluster:wait_for_sync(infinity),
+ ejabberd_hooks:run(ejabberd_started, []),
+ ejabberd:check_apps(),
+--
+2.24.0
+
diff --git a/ejabberd-18.09-fix_stun_options.patch b/ejabberd-18.09-fix_stun_options.patch
new file mode 100644
index 0000000..1cfe2d5
--- /dev/null
+++ b/ejabberd-18.09-fix_stun_options.patch
@@ -0,0 +1,23 @@
+From 73af98a8dc091f1d8eefbcce3dfc18ce20980a38 Mon Sep 17 00:00:00 2001
+From: Evgeny Khramtsov <ekhramtsov@process-one.net>
+Date: Sat, 29 Sep 2018 23:05:41 +0300
+Subject: [PATCH] Add forgotten TURN options to validator
+
+Fixes #2621
+---
+ src/ejabberd_stun.erl | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/ejabberd_stun.erl b/src/ejabberd_stun.erl
+index ef1d46f40e..1e00c85f5e 100644
+--- a/src/ejabberd_stun.erl
++++ b/src/ejabberd_stun.erl
+@@ -168,6 +168,8 @@ listen_opt_type(server_name) ->
+
+ listen_options() ->
+ [{shaper, none},
++ {use_turn, false},
++ {turn_ip, undefined},
+ {auth_type, user},
+ {auth_realm, undefined},
+ {tls, false},
diff --git a/ejabberd.fc b/ejabberd.fc
new file mode 100644
index 0000000..e797d62
--- /dev/null
+++ b/ejabberd.fc
@@ -0,0 +1,7 @@
+/usr/bin/ejabberdctl -- gen_context(system_u:object_r:ejabberd_exec_t,s0)
+
+/usr/lib/systemd/system/ejabberd.* -- gen_context(system_u:object_r:ejabberd_unit_t,s0)
+
+/var/lib/ejabberd(/.*)? gen_context(system_u:object_r:ejabberd_var_lib_t,s0)
+
+/var/log/ejabberd(/.*)? gen_context(system_u:object_r:ejabberd_var_log_t,s0)
diff --git a/ejabberd.if b/ejabberd.if
new file mode 100644
index 0000000..91ef4a4
--- /dev/null
+++ b/ejabberd.if
@@ -0,0 +1,34 @@
+## <summary>ejabberd is a Free and Open Source distributed fault-tolerant: Jabber/XMPP server. </summary>
+########################################
+## <summary>
+## All of the rules required to
+## administrate an ejabberd environment.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+## <param name="role">
+## <summary>
+## Role allowed access.
+## </summary>
+## </param>
+## <rolecap/>
+#
+interface(`ejabberd_admin',`
+ gen_require(`
+ type ejabberd_t, ejabberd_exec_t;
+ type ejabberd_var_lib_t, ejabberd_var_log_t;
+ ')
+
+ admin_process_pattern($1, ejabberd_t)
+
+ init_startstop_service($1, $2, ejabberd_t, ejabberd_initrc_exec_t, ejabberd_unit_t)
+
+ files_search_var_lib($1)
+ admin_pattern($1, ejabberd_var_lib_t)
+
+ logging_search_logs($1)
+ admin_pattern($1, ejabberd_var_log_t)
+')
diff --git a/ejabberd.logrotate b/ejabberd.logrotate
new file mode 100644
index 0000000..9921889
--- /dev/null
+++ b/ejabberd.logrotate
@@ -0,0 +1,9 @@
+/var/log/ejabberd/ejabberd.log /var/log/ejabberd/erlang.log {
+ missingok
+ notifempty
+ create 0640 ejabberd ejabberd
+ sharedscripts
+ postrotate
+ runuser -s /bin/bash - ejabberd -c "/usr/bin/ejabberdctl reopen-log" >/dev/null 2>/dev/null || true
+ endscript
+}
diff --git a/ejabberd.pam b/ejabberd.pam
new file mode 100644
index 0000000..8bbc039
--- /dev/null
+++ b/ejabberd.pam
@@ -0,0 +1,4 @@
+#%PAM-1.0
+auth include password-auth
+account include password-auth
+
diff --git a/ejabberd.service b/ejabberd.service
new file mode 100644
index 0000000..5c39af5
--- /dev/null
+++ b/ejabberd.service
@@ -0,0 +1,27 @@
+[Unit]
+Description=A distributed, fault-tolerant Jabber/XMPP server
+Requires=network-online.target
+After=network-online.target
+
+[Service]
+Type=notify
+NotifyAccess=all
+User=ejabberd
+Group=ejabberd
+LimitNOFILE=16000
+RestartSec=5
+ExecStart=/usr/bin/ejabberdctl start \
+ --config /etc/ejabberd/ejabberd.yml \
+ --ctl-config /etc/ejabberd/ejabberdctl.cfg \
+ --logs "/var/log/ejabberd" \
+ --spool "/var/lib/ejabberd"
+ExecStop=/usr/bin/ejabberdctl stop
+RemainAfterExit=yes
+# The CAP_DAC_OVERRIDE capability is required for pam authentication to work
+CapabilityBoundingSet=CAP_DAC_OVERRIDE
+PrivateTmp=true
+ProtectHome=true
+ProtectSystem=full
+
+[Install]
+WantedBy=multi-user.target
diff --git a/ejabberd.spec b/ejabberd.spec
new file mode 100644
index 0000000..fd3707d
--- /dev/null
+++ b/ejabberd.spec
@@ -0,0 +1,473 @@
+%global _hardened_build 1
+%global srcname ejabberd
+
+# Since we require the version in both BuildRequires and Requires, let's make these variables for
+# easier maintenance.
+%global base64url_ver 1.0
+%global cache_tab_ver 1.0.25
+%global eimp_ver 1.0.17
+%global epam_ver 1.0.9
+%global esip_ver 1.0.37
+%global ezlib_ver 1.0.8
+%global fast_tls_ver 1.1.8
+%global fast_xml_ver 1.1.43
+%global fast_yaml_ver 1.0.27
+%global idna_ver 6.0.0
+%global jiffy_ver 1.0.5
+%global jose_ver 1.9.0
+%global luerl_ver 0.3
+%global mqtree_ver 1.0.10
+%global p1_acme_ver 1.0.8
+%global p1_mysql_ver 1.0.16
+%global p1_oauth2_ver 0.6.7
+%global p1_pgsql_ver 1.1.10
+%global p1_utils_ver 1.0.20
+%global pkix_ver 1.0.6
+%global stringprep_ver 1.0.22
+%global stun_ver 1.0.37
+%global xmpp_ver 1.4.9
+%global yconf_ver 1.0.7
+
+# Define SELinux policy variables
+%global selinuxtype targeted
+%global selinux_policyver 3.14.2
+%global moduletype contrib
+%global modulename ejabberd
+
+
+Name: ejabberd
+Version: 20.07
+Release: 7%{?dist}
+BuildArch: noarch
+
+License: GPLv2+
+Summary: A distributed, fault-tolerant Jabber/XMPP server
+URL: https://www.ejabberd.im/
+VCS: scm:git:https://github.com/processone/ejabberd.git
+Source0: https://github.com/processone/%{name}/archive/%{version}/%{name}-%{version}.tar.gz
+Source2: ejabberd.logrotate
+
+# Support for systemd
+Source4: ejabberd.service
+
+# PAM support
+Source9: ejabberdctl.pam
+Source11: ejabberd.pam
+
+# polkit support
+Source12: ejabberdctl.polkit.actions
+Source13: ejabberdctl.polkit.rules
+# SELinux module
+Source14: ejabberd.te
+Source15: ejabberd.fc
+Source16: ejabberd.if
+
+
+# Fedora-specific
+Patch3: ejabberd-0003-Install-into-BINDIR-instead-of-SBINDIR.patch
+# Fedora-specific
+Patch4: ejabberd-0004-Enable-systemd-notification-if-available.patch
+
+
+BuildRequires: elixir >= 1.4.4
+BuildRequires: erlang-base64url >= %{base64url_ver}
+BuildRequires: erlang-cache_tab >= %{cache_tab_ver}
+BuildRequires: erlang-eimp >= %{eimp_ver}
+BuildRequires: erlang-epam >= %{epam_ver}
+BuildRequires: erlang-esip >= %{esip_ver}
+BuildRequires: erlang-ezlib >= %{ezlib_ver}
+BuildRequires: erlang-fast_tls >= %{fast_tls_ver}
+BuildRequires: erlang-fast_xml >= %{fast_xml_ver}
+BuildRequires: erlang-fast_yaml >= %{fast_yaml_ver}
+BuildRequires: erlang-idna >= %{idna_ver}
+BuildRequires: erlang-jiffy >= %{jiffy_ver}
+BuildRequires: erlang-jose >= %{jose_ver}
+BuildRequires: erlang-lager >= 3.6
+BuildRequires: erlang-luerl >= %{luerl_ver}
+BuildRequires: erlang-mqtree >= %{mqtree_ver}
+BuildRequires: erlang-odbc
+BuildRequires: erlang-p1_acme >= %{p1_acme_ver}
+BuildRequires: erlang-p1_mysql >= %{p1_mysql_ver}
+BuildRequires: erlang-p1_oauth2 >= %{p1_oauth2_ver}
+BuildRequires: erlang-p1_pgsql >= %{p1_pgsql_ver}
+BuildRequires: erlang-p1_utils >= %{p1_utils_ver}
+BuildRequires: erlang-pkix >= %{pkix_ver}
+BuildRequires: erlang-rebar
+BuildRequires: erlang-sd_notify
+BuildRequires: erlang-stringprep >= %{stringprep_ver}
+BuildRequires: erlang-stun >= %{stun_ver}
+BuildRequires: erlang-xmpp >= %{xmpp_ver}
+BuildRequires: erlang-yconf >= %{yconf_ver}
+BuildRequires: expat-devel >= 1.95
+BuildRequires: git
+BuildRequires: libyaml-devel >= 0.1.4
+BuildRequires: openssl-devel >= 1.0.0
+BuildRequires: pam-devel
+BuildRequires: selinux-policy-devel
+
+BuildRequires: autoconf
+BuildRequires: automake
+BuildRequires: make
+
+# For creating user and group
+Requires(pre): shadow-utils
+
+Requires(post): /usr/bin/openssl
+Requires(post): systemd
+Requires(preun): systemd
+Requires(postun): systemd
+
+Provides: user(%{name})
+Provides: group(%{name})
+
+Requires: ejabberd-selinux == %{version}-%{release}
+# From rebar
+Requires: elixir >= 1.4.4
+Requires: erlang-base64url >= %{base64url_ver}
+Requires: erlang-cache_tab >= %{cache_tab_ver}
+Requires: erlang-eimp >= %{eimp_ver}
+Requires: erlang-epam >= %{epam_ver}
+Requires: erlang-esip >= %{esip_ver}
+Requires: erlang-ezlib >= %{ezlib_ver}
+Requires: erlang-fast_tls >= %{fast_tls_ver}
+Requires: erlang-fast_xml >= %{fast_xml_ver}
+Requires: erlang-fast_yaml >= %{fast_yaml_ver}
+Requires: erlang-idna >= %{idna_ver}
+Requires: erlang-jiffy >= %{jiffy_ver}
+Requires: erlang-jose >= %{jose_ver}
+Requires: erlang-luerl >= %{luerl_ver}
+Requires: erlang-mqtree >= %{mqtree_ver}
+Requires: erlang-os_mon
+Requires: erlang-p1_acme >= %{p1_acme_ver}
+Requires: erlang-p1_mysql >= %{p1_mysql_ver}
+Requires: erlang-p1_oauth2 >= %{p1_oauth2_ver}
+Requires: erlang-p1_pgsql >= %{p1_pgsql_ver}
+Requires: erlang-p1_utils >= %{p1_utils_ver}
+Requires: erlang-pkix >= %{pkix_ver}
+Requires: erlang-stringprep >= %{stringprep_ver}
+Requires: erlang-stun >= %{stun_ver}
+Requires: erlang-xmpp >= %{xmpp_ver}
+Requires: erlang-yconf >= %{yconf_ver}
+# We install a logrotate.d file
+Requires: logrotate
+# for /usr/bin/pkexec
+Requires: polkit
+# for flock in ejabberdctl
+Requires: util-linux
+
+
+%description
+ejabberd is a Free and Open Source distributed fault-tolerant
+Jabber/XMPP server. It is mostly written in Erlang, and runs on many
+platforms (tested on Linux, FreeBSD, NetBSD, Solaris, Mac OS X and
+Windows NT/2000/XP).
+
+
+%package selinux
+BuildArch: noarch
+
+Summary: SELinux policy for ejabberd
+
+Requires: selinux-policy >= %{selinux_policyver}
+Requires(post): selinux-policy-base >= %{selinux_policyver}
+Requires(post): libselinux-utils
+Requires(post): policycoreutils
+Requires(post): policycoreutils-python-utils
+
+
+%description selinux
+This is the SELinux policy for ejabberd.
+
+
+%prep
+%autosetup -p1
+
+# Upstream seems to import erlang-xmpp and erlang-fast_xml in a way that isn't compatible with them
+# being system libraries. We need to patch the include statements to fix this.
+# https://github.com/processone/ejabberd/pull/1446/
+find . -name "*.hrl" | xargs sed -i \
+ "s/include(\"fxml.hrl/include_lib(\"fast_xml\/include\/fxml.hrl/"
+find . -name "*.erl" | xargs sed -i "s/include(\"jid.hrl/include_lib(\"xmpp\/include\/jid.hrl/"
+find . -name "*.hrl" | xargs sed -i "s/include(\"ns.hrl/include_lib(\"xmpp\/include\/ns.hrl/"
+find . -name "*.erl" | xargs sed -i "s/include(\"xmpp.hrl/include_lib(\"xmpp\/include\/xmpp.hrl/"
+find . -name "*.hrl" | xargs sed -i \
+ "s/include(\"xmpp_codec.hrl/include_lib(\"xmpp\/include\/xmpp_codec.hrl/"
+
+# A few dependencies are configured to be found in the deps folder instead of in system libs
+# https://github.com/processone/ejabberd/issues/1850
+perl -p -i -e "s|deps/p1_utils/include|$(rpm -ql erlang-p1_utils | grep -E '/include$' )|g" rebar.config
+perl -p -i -e "s|deps/fast_xml/include|$(rpm -ql erlang-fast_xml | grep -E '/include$' )|g" rebar.config
+perl -p -i -e "s|deps/xmpp/include|$(rpm -ql erlang-xmpp | grep -E '/include$' )|g" rebar.config
+
+cp %{S:14} %{S:15} %{S:16} .
+
+
+%build
+autoreconf -ivf
+
+%configure --disable-graphics --enable-odbc --enable-mysql --enable-pgsql --enable-pam --enable-zlib --enable-debug --libdir=%{_libdir}/erlang/lib/ --with-erlang=%{_libdir}/erlang/ --enable-system-deps --enable-stun
+
+%{erlang_compile}
+
+# Build the SELinux policy
+make NAME=ejabberd -f /usr/share/selinux/devel/Makefile DISTRO=fedora%{fedora}
+bzip2 ejabberd.pp
+
+
+%install
+%{erlang_install}
+
+sed -e "s*{{rootdir}}*%{_prefix}*" \
+ -e "s*{{installuser}}*%{name}*" \
+ -e "s*{{bindir}}*%{_bindir}*" \
+ -e "s*{{libdir}}*%{_erllibdir}*" \
+ -e "s*{{sysconfdir}}*%{_sysconfdir}*" \
+ -e "s*{{localstatedir}}*/var*" \
+ -e "s*{{docdir}}*%{_datadir}/doc/%{name}*" \
+ -e "s*{{erl}}*%{_bindir}/erl*" \
+ -e "s*{{epmd}}*%{_bindir}/epmd*" ejabberdctl.template \
+> ejabberdctl.example
+
+install -d -m 0750 %{buildroot}%{_sysconfdir}/%{name}
+install -D -p -m 0644 ejabberd.yml.example %{buildroot}%{_sysconfdir}/%{name}/ejabberd.yml
+install -D -p -m 0644 ejabberdctl.cfg.example %{buildroot}%{_sysconfdir}/%{name}/ejabberdctl.cfg
+install -D -p -m 0644 inetrc %{buildroot}%{_sysconfdir}/%{name}/inetrc
+
+install -D -p -m 0755 ejabberdctl.example %{buildroot}%{_bindir}/ejabberdctl
+
+install -d -m 0750 %{buildroot}/var/lib/ejabberd
+install -d -m 0750 %{buildroot}/var/lock/ejabberdctl
+install -d -m 0750 %{buildroot}/var/log/ejabberd
+
+# fix example SSL certificate path to real one, which we created recently (see above)
+%{__perl} -pi -e 's!/path/to/ssl.pem!/etc/ejabberd/ejabberd.pem!g' %{buildroot}/etc/ejabberd/ejabberd.yml
+
+install -D -p -m 0755 tools/captcha.sh %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/bin/captcha.sh
+# fix captcha path
+%{__perl} -pi -e 's!/lib/ejabberd/priv/bin/captcha.sh!%{_libdir}/%{name}/priv/bin/captcha.sh!g' %{buildroot}/etc/ejabberd/ejabberd.yml
+
+install -D -p -m 0644 %{S:9} %{buildroot}%{_sysconfdir}/pam.d/ejabberdctl
+install -D -p -m 0644 %{S:11} %{buildroot}%{_sysconfdir}/pam.d/ejabberd
+
+# install systemd entry
+install -D -m 0644 -p %{S:4} %{buildroot}%{_unitdir}/%{name}.service
+
+# install config for logrotate
+install -D -p -m 0644 %{S:2} %{buildroot}%{_sysconfdir}/logrotate.d/ejabberd
+
+# create room for additional files (such as SQL schemas)
+install -d -m 0755 %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/sql/
+# install sql-scripts for creating db schemes for various RDBMS
+install -p -m 0644 sql/lite.sql %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/sql/
+install -p -m 0644 sql/mssql.sql %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/sql/
+install -p -m 0644 sql/mysql.sql %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/sql/
+install -p -m 0644 sql/pg.sql %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/sql/
+# Install css files
+install -d -m 0755 %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/css
+install -p -m 0644 priv/css/* %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/css/
+# Install img files
+install -d -m 0755 %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/img
+install -p -m 0644 priv/img/* %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/img/
+# Install js files
+install -d -m 0755 %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/js
+install -p -m 0644 priv/js/* %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/js/
+# Install lua files
+install -d -m 0755 %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/lua
+install -p -m 0644 priv/lua/* %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/lua/
+
+install -d -m 0755 %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/msgs/
+install -p -m 0644 priv/msgs/*.msg %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/msgs/
+
+# Install man page
+install -d -m 0755 %{buildroot}%{_mandir}/man5/
+install -p -m 0644 man/ejabberd.yml.5 %{buildroot}%{_mandir}/man5/
+
+# Install polkit-related files
+install -D -p -m 0644 %{S:12} %{buildroot}%{_datadir}/polkit-1/actions/ejabberdctl.policy
+install -D -p -m 0644 %{S:13} %{buildroot}%{_datadir}/polkit-1/rules.d/51-ejabberdctl.rules
+
+# Install the SELinux policy
+install -d %{buildroot}%{_datadir}/selinux/packages
+install -d -p %{buildroot}%{_datadir}/selinux/devel/include/%{moduletype}
+
+install -p -m 0644 ejabberd.if %{buildroot}%{_datadir}/selinux/devel/include/%{moduletype}
+install -p -m 0644 ejabberd.pp.bz2 %{buildroot}%{_datadir}/selinux/packages
+
+
+%check
+%{rebar_eunit}
+
+
+%pre
+getent group %{name} >/dev/null || groupadd -r %{name}
+getent passwd %{name} >/dev/null || \
+useradd -r -g %{name} -d %{_localstatedir}/lib/%{name} -s /sbin/nologin -M \
+-c "ejabberd" %{name} 2>/dev/null || :
+
+
+if [ $1 -gt 1 ]; then
+ # we should backup DB in every upgrade
+ if ejabberdctl status >/dev/null ; then
+ # Use timestamp to make database restoring easier
+ TIME=$(date +%%Y-%%m-%%dT%%H:%%M:%%S)
+ BACKUPDIR=$(mktemp -d -p /var/tmp/ ejabberd-$TIME.XXXXXX)
+ chown ejabberd:ejabberd $BACKUPDIR
+ BACKUP=$BACKUPDIR/ejabberd-database
+ ejabberdctl backup $BACKUP
+ # Change ownership to root:root because ejabberd user might be
+ # removed on package removal.
+ chown -R root:root $BACKUPDIR
+ chmod 700 $BACKUPDIR
+ echo
+ echo The ejabberd database has been backed up to $BACKUP.
+ echo
+ fi
+
+ # fix cookie path (since ver. 2.1.0 cookie stored in /var/lib/ejabberd/spool
+ # rather than in /var/lib/ejabberd
+ if [ -f /var/lib/ejabberd/spool/.erlang.cookie ]; then
+ cp -pu /var/lib/ejabberd/{spool/,}.erlang.cookie
+ echo
+ echo The ejabberd cookie file was moved again.
+ echo Please delete old one from /var/lib/ejabberd/spool/.erlang.cookie
+ echo
+ fi
+fi
+
+
+%pre selinux
+%selinux_relabel_pre -s %{selinuxtype}
+
+
+%post
+%systemd_post %{name}.service
+
+# Create SSL certificate with default values if it doesn't exist
+(cd /etc/ejabberd
+if [ ! -f ejabberd.pem ]
+then
+ echo "Generating SSL certificate /etc/ejabberd/ejabberd.pem..."
+ HOSTNAME=$(hostname -s 2>/dev/null || echo "localhost")
+ DOMAINNAME=$(hostname -d 2>/dev/null || echo "localdomain")
+ openssl req -new -x509 -days 365 -nodes -out ejabberd.pem \
+ -keyout ejabberd.pem > /dev/null 2>&1 <<+++
+.
+.
+.
+$DOMAINNAME
+$HOSTNAME
+ejabberd
+root@$HOSTNAME.$DOMAINNAME
++++
+chown ejabberd:ejabberd ejabberd.pem
+chmod 600 ejabberd.pem
+fi)
+
+
+%post selinux
+%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{modulename}.pp.bz2
+
+
+%posttrans selinux
+/usr/sbin/restorecon -i -R /var/lib/ejabberd/
+/usr/sbin/restorecon -i -R /var/log/ejabberd/
+%selinux_relabel_post -s %{selinuxtype}
+
+
+%preun
+%systemd_preun %{name}.service
+
+
+%postun
+%systemd_postun_with_restart %{name}.service
+
+
+%postun selinux
+if [ $1 -eq 0 ]; then
+ %selinux_modules_uninstall -s %{selinuxtype} %{modulename}
+fi
+
+
+%files
+%license COPYING
+%doc CHANGELOG.md CONTRIBUTING.md CONTRIBUTORS.md README.md
+
+%attr(750,ejabberd,ejabberd) %dir %{_sysconfdir}/ejabberd
+%attr(640,ejabberd,ejabberd) %config(noreplace) %{_sysconfdir}/ejabberd/ejabberd.yml
+%attr(640,ejabberd,ejabberd) %config(noreplace) %{_sysconfdir}/ejabberd/ejabberdctl.cfg
+%attr(640,ejabberd,ejabberd) %config(noreplace) %{_sysconfdir}/ejabberd/inetrc
+
+%{_unitdir}/%{name}.service
+
+%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
+%config(noreplace) %{_sysconfdir}/pam.d/%{name}
+%config(noreplace) %{_sysconfdir}/pam.d/ejabberdctl
+%{_mandir}/man5/ejabberd.yml.5*
+%{_datadir}/polkit-1/actions/ejabberdctl.policy
+%{_datadir}/polkit-1/rules.d/51-ejabberdctl.rules
+%{_bindir}/ejabberdctl
+
+%{_erllibdir}/%{name}-%{version}
+
+%attr(750,ejabberd,ejabberd) %dir /var/lib/ejabberd
+%attr(750,ejabberd,ejabberd) %dir /var/log/ejabberd
+
+
+%files selinux
+%{_datadir}/selinux/devel/include/%{moduletype}/ejabberd.if
+%{_datadir}/selinux/packages/ejabberd.pp.bz2
+
+
+%changelog
+* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 20.07-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
+
+* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 20.07-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
+
+* Sat Aug 07 2021 Randy Barlow <bowlofeggs@fedoraproject.org> - 20.07-5
+- Allow to bind to name_bind on udp (#1901466).
+
+* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 20.07-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
+
+* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 20.07-3
+- Rebuilt for updated systemd-rpm-macros
+ See https://pagure.io/fesco/issue/2583.
+
+* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 20.07-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Fri Jul 31 2020 Randy Barlow <bowlofeggs@fedoraproject.org> - 20.07-1
+- Update to 20.07 (#1807271).
+- https://www.process-one.net/blog/ejabberd-20-07/
+
+* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 20.01-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Fri Feb 14 2020 Randy Barlow <bowlofeggs@fedoraproject.org> - 20.01-1
+- Update to 20.01 (#1792572).
+- https://blog.process-one.net/ejabberd-20-01/
+
+* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 19.09.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Thu Nov 14 2019 Randy Barlow <bowlofeggs@fedoraproject.org> - 19.09.1-1
+- Update to 19.09.1 (#1742538).
+- https://blog.process-one.net/ejabberd-19-08/
+- https://blog.process-one.net/ejabberd-19-09/
+- https://blog.process-one.net/ejabberd-19-09-1/
+
+* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 19.05-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Wed Jun 05 2019 Randy Barlow <bowlofeggs@fedoraproject.org> - 19.05-1
+- Update to 19.05.
+- https://blog.process-one.net/ejabberd-19-05/
+
+* Sat Apr 13 2019 Randy Barlow <bowlofeggs@fedoraproject.org> - 19.02-1
+- Update to 19.02 (#1683310).
+- https://blog.process-one.net/ejabberd-19-02-the-mqtt-edition/
+
+* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 18.12.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
diff --git a/ejabberd.te b/ejabberd.te
new file mode 100644
index 0000000..187bcf0
--- /dev/null
+++ b/ejabberd.te
@@ -0,0 +1,67 @@
+policy_module(ejabberd,0.0)
+
+########################################
+#
+# Declarations
+#
+
+# Private type declarations
+type ejabberd_t;
+type ejabberd_exec_t;
+init_daemon_domain(ejabberd_t, ejabberd_exec_t)
+
+type ejabberd_unit_t;
+systemd_unit_file(ejabberd_unit_t)
+
+type ejabberd_var_lib_t;
+files_type(ejabberd_var_lib_t)
+
+type ejabberd_var_log_t;
+logging_log_file(ejabberd_var_log_t)
+
+
+# What will we allow
+allow ejabberd_t self:tcp_socket { accept bind connect create getattr getopt listen name_bind read setopt write };
+allow ejabberd_t self:udp_socket { bind connect create getattr getopt read setopt write };
+allow ejabberd_t self:unix_dgram_socket { connect create getopt setopt write };
+allow ejabberd_t unreserved_port_t:udp_socket name_bind;
+
+auth_use_nsswitch(ejabberd_t)
+
+corecmd_exec_bin(ejabberd_t)
+corecmd_exec_shell(ejabberd_t)
+
+corenet_tcp_bind_epmd_port(ejabberd_t)
+corenet_tcp_bind_generic_node(ejabberd_t)
+corenet_tcp_bind_generic_port(ejabberd_t)
+corenet_tcp_bind_jabber_client_port(ejabberd_t)
+corenet_tcp_bind_jabber_interserver_port(ejabberd_t)
+corenet_tcp_bind_prosody_port(ejabberd_t)
+corenet_tcp_connect_epmd_port(ejabberd_t)
+corenet_tcp_connect_generic_port(ejabberd_t)
+corenet_tcp_connect_jabber_interserver_port(ejabberd_t)
+corenet_tcp_connect_postgresql_port(ejabberd_t)
+postgresql_stream_connect(ejabberd_t)
+corenet_tcp_connect_mysqld_port(ejabberd_t)
+mysql_stream_connect(ejabberd_t)
+
+corenet_udp_bind_generic_node(ejabberd_t)
+
+dev_read_rand(ejabberd_t)
+dev_read_sysfs(ejabberd_t)
+
+files_search_var_lib(ejabberd_t, ejabberd_var_lib_t, dir)
+
+kernel_dgram_send(ejabberd_t)
+
+logging_create_devlog_dev(ejabberd_t)
+logging_log_filetrans(ejabberd_t, ejabberd_var_log_t, { dir file })
+
+manage_dirs_pattern(ejabberd_t, ejabberd_var_lib_t, ejabberd_var_lib_t)
+manage_dirs_pattern(ejabberd_t, ejabberd_var_log_t, ejabberd_var_log_t)
+manage_files_pattern(ejabberd_t, ejabberd_var_lib_t, ejabberd_var_lib_t)
+manage_files_pattern(ejabberd_t, ejabberd_var_log_t, ejabberd_var_log_t)
+
+miscfiles_read_generic_certs(ejabberd_t)
+
+sysnet_read_config(ejabberd_t)
diff --git a/ejabberdctl.pam b/ejabberdctl.pam
new file mode 100644
index 0000000..1952d97
--- /dev/null
+++ b/ejabberdctl.pam
@@ -0,0 +1,4 @@
+#%PAM-1.0
+auth include config-util
+account include config-util
+session include config-util
diff --git a/ejabberdctl.polkit.actions b/ejabberdctl.polkit.actions
new file mode 100644
index 0000000..7232718
--- /dev/null
+++ b/ejabberdctl.polkit.actions
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE policyconfig PUBLIC
+ "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
+<policyconfig>
+ <action id="ejabberd.ejabberdctl.run">
+ <_description>Run ejabberd control script</_description>
+ <_message>Authentication is required for running ejabberdctl</_message>
+ <defaults>
+ <allow_any>auth_admin</allow_any>
+ <allow_inactive>auth_admin</allow_inactive>
+ <allow_active>auth_admin</allow_active>
+ </defaults>
+ <annotate key="org.freedesktop.policykit.exec.path">/bin/sh</annotate>
+ <annotate key="org.freedesktop.policykit.exec.argv1">/usr/bin/ejabberdctl</annotate>
+ </action>
+</policyconfig>
diff --git a/ejabberdctl.polkit.rules b/ejabberdctl.polkit.rules
new file mode 100644
index 0000000..cf899b5
--- /dev/null
+++ b/ejabberdctl.polkit.rules
@@ -0,0 +1,4 @@
+polkit.addRule(function(action, subject) {
+ if ((action.id == "ejabberd.ejabberdctl.run") && (subject.isInGroup("ejabberd")))
+ return polkit.Result.YES;
+});
diff --git a/sources b/sources
new file mode 100644
index 0000000..e7d43df
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (ejabberd-20.07.tar.gz) = 68a23cd0404d9f5cdf86585ec235663424c629d2145ff4e40efd35f70d934b2ec632b18797ea790791677429aa19ed3967744c2f774eb6d3d20795d84bdf0d4d
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-09-23 19:07 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-23 19:07 [rpms/ejabberd] f45: Unretirement request: https://forge.fedoraproject.org/releng/fedora-scm-requests/issues/1053 releng-bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox