1 |
Summary: A distributed, fault-tolerant Jabber/XMPP server |
2 |
Name: ejabberd |
3 |
Version: 2.1.11 |
4 |
Release: %mkrel 8 |
5 |
Group: System/Servers |
6 |
License: GPLv2+ |
7 |
URL: http://www.ejabberd.im/ |
8 |
Source0: http://www.process-one.net/downloads/ejabberd/%{version}/%{name}-%{version}.tgz |
9 |
Source3: inetrc |
10 |
# http://ejabberd.jabber.ru/ejabberdctl-extra |
11 |
Source4: http://ejabberd.jabber.ru/files/efiles/mod_ctlextra.erl |
12 |
# The following were extracted from a patch found on http://realloc.spb.ru/share/ejabberdad.html |
13 |
Source5: ejabberd_auth_ad.erl |
14 |
Source6: mod_shared_roster_ad.erl |
15 |
Source7: mod_vcard_ad.erl |
16 |
|
17 |
Source8: ejabberd.init |
18 |
Source9: ejabberd.logrotate |
19 |
Source10: ejabberd.sysconfig |
20 |
|
21 |
# Support for systemd |
22 |
Source11: ejabberd.service |
23 |
Source12: ejabberd.tmpfiles.conf |
24 |
|
25 |
# PAM support |
26 |
Source13: ejabberdctl.pam |
27 |
Source14: ejabberdctl.apps |
28 |
Source15: ejabberd.pam |
29 |
|
30 |
|
31 |
# Use ejabberd as an example for PAM service name (fedora/epel-specific) |
32 |
Patch1: ejabberd-0001-Fix-PAM-service-example-name-to-match-actual-one.patch |
33 |
# fixed delays in s2s connections |
34 |
Patch2: ejabberd-0002-Fixed-delays-in-s2s-connections.patch |
35 |
# Introducing mod_admin_extra |
36 |
Patch3: ejabberd-0003-Introducing-mod_admin_extra.patch |
37 |
# BZ# 439583, 452326, 451554, 465196, 502361 (fedora/epel-specific) |
38 |
Patch4: ejabberd-0004-Fedora-specific-changes-to-ejabberdctl.patch |
39 |
# Fix so-lib permissions while installing (fedora/epel-specific) |
40 |
Patch5: ejabberd-0005-Install-.so-objects-with-0755-permissions.patch |
41 |
# Will be proposed for inclusion into upstream |
42 |
Patch6: ejabberd-0006-Use-versioned-directory-for-storing-docs.patch |
43 |
# Backported from upstream |
44 |
Patch7: ejabberd-0007-Support-SASL-GSSAPI-authentication-thanks-to-Mikael-.patch |
45 |
# Disable IP restriction for ejabberdctl (seems that it doesn't work well) |
46 |
Patch8: ejabberd-0008-Disable-INET_DIST_INTERFACE-by-default.patch |
47 |
# cherry-picked from trunk |
48 |
Patch9: ejabberd-0009-On-shutdown-first-stop-listeners-then-modules-thanks.patch |
49 |
# cherry-picked from trunk |
50 |
Patch10: ejabberd-0010-Added-clause-so-ejabberdctl-number-of-arguments-erro.patch |
51 |
# cherry-picked from trunk |
52 |
Patch11: ejabberd-0011-Log-IP-address-when-auth-attempt-fails-thanks-to-Zac.patch |
53 |
|
54 |
BuildRequires: erlang-base |
55 |
BuildRequires: erlang-ssl |
56 |
BuildRequires: erlang-devel |
57 |
BuildRequires: erlang-erl_interface |
58 |
BuildRequires: erlang-compiler |
59 |
BuildRequires: erlang-asn1 |
60 |
BuildRequires: erlang-public_key |
61 |
BuildRequires: erlang-parsetools |
62 |
BuildRequires: libexpat-devel |
63 |
BuildRequires: openssl-devel |
64 |
BuildRequires: zlib-devel |
65 |
BuildRequires: tetex-latex |
66 |
BuildRequires: hevea |
67 |
BuildRequires: rpm-helper >= 0.21 |
68 |
Requires: erlang-base |
69 |
Requires: erlang-crypto |
70 |
Requires: erlang-mnesia |
71 |
Requires: erlang-syntax_tools |
72 |
Requires: erlang-compiler |
73 |
Requires: erlang-asn1 |
74 |
Requires: erlang-ssl |
75 |
Requires(post): systemd >= %{systemd_required_version} |
76 |
Requires(pre): rpm-helper >= 0.19 |
77 |
Requires(post): rpm-helper >= 0.21 |
78 |
Requires(preun): rpm-helper >= 0.19 |
79 |
Requires(postun): rpm-helper >= 0.19 |
80 |
|
81 |
|
82 |
%description |
83 |
ejabberd is a Free and Open Source distributed fault-tolerant |
84 |
Jabber/XMPP server. It is mostly written in Erlang, and runs on many |
85 |
platforms (tested on Linux, FreeBSD, NetBSD, Solaris, Mac OS X and |
86 |
Windows NT/2000/XP). |
87 |
|
88 |
%package devel |
89 |
Summary: Development files for %{name} |
90 |
Group: Development/Other |
91 |
Requires: %{name} = %{version}-%{release} |
92 |
Requires: erlang-devel |
93 |
|
94 |
%description devel |
95 |
Development files for %{name}. |
96 |
|
97 |
%package doc |
98 |
Summary: Documentation for ejabberd |
99 |
Group: System/Servers |
100 |
|
101 |
%description doc |
102 |
Documentation for ejabberd. |
103 |
|
104 |
%prep |
105 |
%setup -q |
106 |
|
107 |
|
108 |
%patch1 -p1 -b .pam_name |
109 |
%patch2 -p1 -b .s2s_delays |
110 |
%patch3 -p1 -b .mod_admin_extra |
111 |
#%patch4 -p1 -b .fedora_specific |
112 |
%patch5 -p1 -b .fix_perms |
113 |
%patch6 -p1 -b .versioned_docdir |
114 |
%patch7 -p1 -b .gssapi |
115 |
%patch8 -p1 -b .disable_ip_restriction_for_ejabberdctl |
116 |
%patch9 -p1 -b .stop_listeners_first |
117 |
%patch10 -p1 -b .r15b |
118 |
%patch11 -p1 -b .log_intruders_ip |
119 |
|
120 |
# FIXME last-minute fix for 2.1.11 only |
121 |
sed -i -e "s,2.1.x,2.1.11,g" src/configure |
122 |
touch -r src/configure.ac src/configure |
123 |
|
124 |
%{__perl} -pi -e "s!/var/lib/ejabberd!%{_libdir}/ejabberd-%{version}!g" src/Makefile.in |
125 |
%{__perl} -pi -e "s!/etc!%{_sysconfdir}!g" src/Makefile.in |
126 |
|
127 |
cp %{SOURCE4} src |
128 |
cp %{SOURCE5} src |
129 |
cp %{SOURCE6} src |
130 |
cp %{SOURCE7} src |
131 |
|
132 |
%build |
133 |
%define _disable_ld_no_undefined 1 |
134 |
pushd src |
135 |
%configure2_5x \ |
136 |
--enable-odbc \ |
137 |
--disable-pam \ |
138 |
--disable-ejabberd_zlib |
139 |
|
140 |
%make -j1 |
141 |
popd |
142 |
pushd doc |
143 |
make html pdf |
144 |
popd |
145 |
|
146 |
%install |
147 |
pushd src |
148 |
%makeinstall_std |
149 |
popd |
150 |
|
151 |
# fix example SSL certificate path to real one, which we created recently (see above) |
152 |
%{__perl} -pi -e 's!/path/to/ssl.pem!/etc/ejabberd/ejabberd.pem!g' %{buildroot}/etc/ejabberd/ejabberd.cfg |
153 |
|
154 |
# fix captcha path |
155 |
%{__perl} -pi -e 's!/lib/ejabberd/priv/bin/captcha.sh!%{_libdir}/%{name}/priv/bin/captcha.sh!g' %{buildroot}/etc/ejabberd/ejabberd.cfg |
156 |
|
157 |
mkdir -p %{buildroot}/var/log/ejabberd |
158 |
mkdir -p %{buildroot}/var/lib/ejabberd/spool |
159 |
|
160 |
chmod a+x %{buildroot}%{_libdir}/ejabberd/priv/lib/ |
161 |
|
162 |
%{__perl} -pi -e 's!./ssl.pem!/etc/pki/tls/private/ejabberd.pem!g' \ |
163 |
%{buildroot}/etc/ejabberd/ejabberd.cfg |
164 |
|
165 |
install -d -m 755 %{buildroot}/var/log/ejabberd |
166 |
install -d -m 755 %{buildroot}%{_var}/lib/ejabberd |
167 |
|
168 |
# install systemd entry |
169 |
install -D -m 0644 -p %{S:11} %{buildroot}%{_unitdir}/%{name}.service |
170 |
install -D -m 0644 -p %{S:12} %{buildroot}%{_tmpfilesdir}/%{name}.conf |
171 |
|
172 |
# install sysconfig file |
173 |
install -D -p -m 0644 %{S:10} %{buildroot}%{_sysconfdir}/sysconfig/ejabberd |
174 |
|
175 |
mkdir -p %{buildroot}%{_bindir} |
176 |
ln -s consolehelper %{buildroot}%{_bindir}/ejabberdctl |
177 |
install -D -p -m 0644 %{S:13} %{buildroot}%{_sysconfdir}/pam.d/ejabberdctl |
178 |
install -D -p -m 0644 %{S:14} %{buildroot}%{_sysconfdir}/security/console.apps/ejabberdctl |
179 |
install -D -p -m 0644 %{S:15} %{buildroot}%{_sysconfdir}/pam.d/ejabberd |
180 |
|
181 |
|
182 |
# install config for logrotate |
183 |
install -D -p -m 0644 %{S:9} %{buildroot}%{_sysconfdir}/logrotate.d/ejabberd |
184 |
|
185 |
cp %{S:3} %{buildroot}%{_sysconfdir}/ejabberd/inetrc |
186 |
|
187 |
cat > README.urpmi <<EOF |
188 |
Mageia RPM specific notes |
189 |
|
190 |
Post-installation |
191 |
----------------- |
192 |
There is no users created with the default configuration. |
193 |
|
194 |
You have to first create an user, either through a client supporting registration (kopete, psi), or through command line: |
195 |
|
196 |
$> su ejabberd -c 'ejabberdctl --node ejabberd@host register user domain.tld passwd' |
197 |
|
198 |
Then you have to grant him admin privilege, by adding such a line in /etc/ejabberd/ejabberd.cfg: |
199 |
|
200 |
{acl, admin, {user, "user"}}. |
201 |
|
202 |
More commands are available, through ejabberctl: |
203 |
|
204 |
$> su ejabberd -c 'ejabberdctl --node ejabberd@host help' |
205 |
|
206 |
You can also access the web console at http://host:5280/admin |
207 |
EOF |
208 |
|
209 |
install -d -m 755 %{buildroot}%{_docdir}/%{name} |
210 |
install -m 644 README %{buildroot}%{_docdir}/%{name} |
211 |
install -m 644 README.urpmi %{buildroot}%{_docdir}/%{name} |
212 |
install -m 644 COPYING %{buildroot}%{_docdir}/%{name} |
213 |
install -m 644 doc/*.pdf doc/*.html doc/*.png doc/release_notes_* %{buildroot}%{_docdir}/%{name} |
214 |
|
215 |
install -d -m 755 %{buildroot}%{_sbindir} |
216 |
# ejabberd wrapper |
217 |
cat > %{buildroot}%{_sbindir}/ejabberd <<'EOF' |
218 |
#!/bin/sh |
219 |
|
220 |
ERLANG_NODE=ejabberd |
221 |
ERL=/usr/bin/erl |
222 |
LIB=%{_var}/lib/ejabberd/ebin |
223 |
CONFIG=/etc/ejabberd/ejabberd.cfg |
224 |
INETRC=/etc/ejabberd/inetrc |
225 |
LOG=/var/log/ejabberd/ejabberd.log |
226 |
SASL_LOG=/var/log/ejabberd/sasl.log |
227 |
SPOOL=/var/lib/ejabberd |
228 |
|
229 |
if [ -r /var/lib/ejabberd/.erlang.cookie ] ; then |
230 |
export HOME=/var/lib/ejabberd |
231 |
fi |
232 |
|
233 |
ARGS= |
234 |
while [ $# -ne 0 ] ; do |
235 |
PARAM=$1 |
236 |
shift |
237 |
case $PARAM in |
238 |
--) break ;; |
239 |
--node) ERLANG_NODE=$1; shift ;; |
240 |
--config) CONFIG=$1 ; shift ;; |
241 |
--log) LOG=$1 ; shift ;; |
242 |
--sasl-log) SASL_LOG=$1 ; shift ;; |
243 |
--spool) SPOOL=$1 ; shift ;; |
244 |
*) ARGS="$ARGS $PARAM" ;; |
245 |
esac |
246 |
done |
247 |
|
248 |
if [ "$ERLANG_NODE" = "${ERLANG_NODE%.*}" ] ; then |
249 |
SNAME=-sname |
250 |
else |
251 |
SNAME=-name |
252 |
fi |
253 |
|
254 |
exec $ERL -pa $LIB \ |
255 |
$SNAME $ERLANG_NODE \ |
256 |
-s ejabberd \ |
257 |
-kernel inetrc \"$INETRC\" \ |
258 |
-ejabberd config \"$CONFIG\" log_path \"$LOG\" \ |
259 |
-sasl sasl_error_logger \{file,\"$SASL_LOG\"\} \ |
260 |
-mnesia dir \"$SPOOL\" \ |
261 |
$ERL_OPTIONS $ARGS "$@" |
262 |
EOF |
263 |
chmod 755 %{buildroot}%{_sbindir}/ejabberd |
264 |
|
265 |
%pre |
266 |
if [ -d %{_var}/lib/%{name}/spool ]; then |
267 |
mv -f %{_var}/lib/%{name}/spool/* %{_var}/lib/%{name} |
268 |
rmdir %{_var}/lib/%{name}/spool |
269 |
fi |
270 |
%_pre_useradd %{name} /var/lib/%{name} /bin/sh |
271 |
%_pre_groupadd %{name} %{name} |
272 |
|
273 |
%preun |
274 |
%_preun_service %{name} |
275 |
|
276 |
%post |
277 |
%_create_ssl_certificate %{name} -b -g %{name} |
278 |
%_tmpfilescreate %{name} |
279 |
%_post_service %{name} |
280 |
|
281 |
%postun |
282 |
%_postun_userdel %{name} |
283 |
%_postun_groupdel %{name} |
284 |
|
285 |
%clean |
286 |
rm -rf %{buildroot} |
287 |
|
288 |
%files |
289 |
%defattr(-,root,root) |
290 |
%dir %{_docdir}/%{name} |
291 |
%dir %{_docdir}/%{name}-%{version} |
292 |
%doc %{_docdir}/%{name}-%{version} |
293 |
%{_docdir}/%{name}/COPYING |
294 |
%{_docdir}/%{name}/README |
295 |
%{_docdir}/%{name}/README.urpmi |
296 |
%dir %attr(750,root,ejabberd) %{_sysconfdir}/ejabberd |
297 |
%attr(750,root,ejabberd) %{_sysconfdir}/sysconfig/ejabberd |
298 |
%attr(640,root,ejabberd) %config(noreplace) %{_sysconfdir}/ejabberd/ejabberd.cfg |
299 |
%attr(640,root,ejabberd) %config(noreplace) %{_sysconfdir}/ejabberd/inetrc |
300 |
%attr(640,root,ejabberd) %config(noreplace) %{_sysconfdir}/ejabberd/ejabberdctl.cfg |
301 |
%{_unitdir}/%{name}.service |
302 |
%{_tmpfilesdir}/%{name}.conf |
303 |
%{_sbindir}/ejabberd |
304 |
%config(noreplace) %{_sysconfdir}/pam.d/%{name} |
305 |
%config(noreplace) %{_sysconfdir}/pam.d/ejabberdctl |
306 |
%config(noreplace) %{_sysconfdir}/security/console.apps/ejabberdctl |
307 |
%{_bindir}/ejabberdctl |
308 |
%attr(550,root,ejabberd) %{_sbindir}/ejabberdctl |
309 |
%dir %{_libdir}/ejabberd |
310 |
%dir %{_libdir}/ejabberd/ebin |
311 |
%dir %{_libdir}/ejabberd/priv |
312 |
%{_libdir}/ejabberd/ebin/* |
313 |
%{_libdir}/ejabberd/priv/* |
314 |
%config(noreplace) %{_sysconfdir}/logrotate.d/ejabberd |
315 |
%attr(-,ejabberd,ejabberd) /var/lib/ejabberd |
316 |
%attr(-,ejabberd,ejabberd) /var/log/ejabberd |
317 |
|
318 |
%files devel |
319 |
%defattr(-,root,root) |
320 |
%{_libdir}/ejabberd/include |
321 |
|
322 |
%files doc |
323 |
%defattr(-,root,root) |
324 |
%{_docdir}/%{name} |
325 |
%exclude %{_docdir}/%{name}/COPYING |
326 |
%exclude %{_docdir}/%{name}/README |
327 |
%exclude %{_docdir}/%{name}/README.urpmi |