[PATCH] jabberd14-1.4.4

Michal Kochanowicz michal w michal.waw.pl
Pon, 26 Gru 2005, 14:56:56 CET


On Mon, Dec 26, 2005 at 11:14:22AM +0100, Jacek Konieczny wrote:
> On Sun, Dec 25, 2005 at 09:58:47PM +0100, Michal Kochanowicz wrote:
> > 2. W 1.4.3 moduły znajdowały się w plikach *.so w /usr/lib/jabberd14.
> >    Teraz powstają pliki *.so.0.0.0 w /usr/lib. W związku z tym po
> >    upgrade trzeba ręcznie poprawić jabberd14.xml. Dodatkowo w %install
> >    użyłem sed'a żeby umieścić w dystrybucyjnej konfiguracji poprawne
> >    nazwy bibliotek. Zastanawiam się czy nie lepiej byłoby w %install
> >    przenieść te pliki do /usr/lib/jabberd14 i nazwać je tak jak nazywały
> >    się wcześniej. sed w %install zostanie, ale nie będzie trzeba grzebać
> >    w XML przy upgrade.
> 
> Na pewno moduły (skoro nie są to biblioteki używane przez cokolwiek poza
> jabberd14) powinny wylądować w podkatalogu. Ale lepiej byłoby to

Tu się zgadzam.

> załatwić patchem na Makegile lub jakąś opcją do configure, niż w
> %isntall przestawiać.

Problem jest taki, że od 1.4.4 jabberd14 korzysta z ac/am i z mojego
punktu widzenia (osoby która nie zna ac/am) szkoda spędzać niewiadomo
ile godzin nad czymś co można rozwiązać w 5 minut. Dodam że nie
wystarczy tu zwykłe --libdir, bo jedna z jedną z bibliotek jest
zlinkowany jabberd14.

W załączeniu wersja zmodyfikowana. FHS patch wrócił, cfg_name wyleciał.

-- 
--= Michal Kochanowicz =--==--==BOFH==--==--= michal w michal.waw.pl =--
--= finger me for PGP public key or visit http://michal.waw.pl/PGP =--
--==--==--==--==--==-- Vodka. Connecting people.--==--==--==--==--==--
A chodzenie po górach SSIE!!!
-------------- następna część ---------
Index: jabberd14.spec
===================================================================
RCS file: /cvsroot/SPECS/jabberd14.spec,v
retrieving revision 1.40
diff -u -r1.40 jabberd14.spec
--- jabberd14.spec	11 Aug 2005 09:46:18 -0000	1.40
+++ jabberd14.spec	26 Dec 2005 13:55:56 -0000
@@ -6,26 +6,27 @@
 Summary:	Old "jabber.org" Jabber server daemon
 Summary(pl):	Stary serwer Jabbera "z jabber.org"
 Name:		jabberd14
-Version:	1.4.3.1
-Release:	2
+Version:	1.4.4
+Release:	0.4
 License:	distributable
 Group:		Applications/Communications
-Source0:	http://jabberd.jabberstudio.org/1.4/dist/jabberd-1.4.3.tar.gz
-# Source0-md5:	a3e964d6fa07b5d850302ae0512f94c6
+Source0:	http://download.jabberd.org/jabberd14/jabberd-%{version}.tar.gz
+# Source0-md5:	395f814a6627436ba7bd235509adcbc7
 Source1:	%{name}.init
 Source2:	%{name}.sysconfig
 Patch0:		%{name}-FHS.patch
-Patch1:		%{name}-mod_stats.patch
+# Obsolete?
+#Patch1:		%{name}-mod_stats.patch
 Patch2:		%{name}-register-deny_new.patch
 Patch3:		%{name}-browse.patch
 Patch4:		%{name}-detach_from_terminal.patch
-Patch5:		%{name}-opt.patch
-# Patch6:	http://devel.amessage.info/jabberd14/jabberd-1.4.3.1.diff.bz2
-Patch6:		jabberd14-1.4.3.1.patch
+# Obsolete?
+#Patch5:		%{name}-opt.patch
 URL:		http://jabberd.jabberstudio.org/1.4/
 BuildRequires:	expat-devel
 BuildRequires:	openssl-devel >= 0.9.7d
 BuildRequires:	pth-devel
+BuildRequires:	libidn-devel
 PreReq:		jabber-common
 PreReq:		rc-scripts
 Requires(post,preun):	/sbin/chkconfig
@@ -81,20 +82,21 @@
 jabberd-1.4.x.
 
 %prep
-%setup -qn jabberd-1.4.3
+%setup -qn jabberd-1.4.4
 %patch0 -p1
-%patch1 -p1
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
-%patch5 -p1
-%patch6 -p1
 
 %build
 JHOME="%{_localstatedir}/lib/%{name}"; export JHOME
 %configure \
+	--sysconfdir=%{_sysconfdir}/jabber \
+	--includedir=%{_includedir}/%{name}/lib \
 	--enable-ssl \
-	--%{?with_ipv6:enable}%{?!with_ipv6:disable}-ipv6
+	--%{?with_ipv6:enable}%{?!with_ipv6:disable}-ipv6 \
+	--without-mysql \
+	--without-postgresql
 
 %{__make} \
 	CC="%{__cc}" \
@@ -102,24 +104,29 @@
 
 %install
 rm -rf $RPM_BUILD_ROOT
+
+%{__make} install DESTDIR=$RPM_BUILD_ROOT
+
 install -d $RPM_BUILD_ROOT{%{_sysconfdir}/jabber,%{_sbindir},/etc/{rc.d/init.d,sysconfig}} \
 	$RPM_BUILD_ROOT%{_localstatedir}/lib/%{name}/spool \
-	$RPM_BUILD_ROOT{/var/log/%{name},%{_libdir}/%{name}} \
+	$RPM_BUILD_ROOT/var/log/%{name} \
+	$RPM_BUILD_ROOT%{_libdir}/%{name} \
 	$RPM_BUILD_ROOT%{_includedir}/%{name}/lib
 
-install jabberd/jabberd $RPM_BUILD_ROOT%{_sbindir}/%{name}
-sed -e 's, w libdir@,%{_libdir},g' jabber.xml > $RPM_BUILD_ROOT%{_sysconfdir}/jabber/jabberd14.xml
-install xdb_file/xdb_file.so $RPM_BUILD_ROOT%{_libdir}/%{name}
-install pthsock/pthsock_client.so $RPM_BUILD_ROOT%{_libdir}/%{name}
-install jsm/jsm.so $RPM_BUILD_ROOT%{_libdir}/%{name}
-install dialback/dialback.so $RPM_BUILD_ROOT%{_libdir}/%{name}
-install dnsrv/dnsrv.so $RPM_BUILD_ROOT%{_libdir}/%{name}
-install jabberd/*.h $RPM_BUILD_ROOT%{_includedir}/%{name}
-install jabberd/lib/*.h $RPM_BUILD_ROOT%{_includedir}/%{name}/lib
-install platform-settings $RPM_BUILD_ROOT%{_libdir}/%{name}/
+sed -e 's|%{_libdir}|%{_libdir}/%{name}|' \
+	< $RPM_BUILD_ROOT%{_sysconfdir}/jabber/jabber.xml \
+	> $RPM_BUILD_ROOT%{_sysconfdir}/jabber/jabberd14.xml
+rm $RPM_BUILD_ROOT%{_sysconfdir}/jabber/jabber.xml
+
+for f in libjabberddialback.so libjabberddnsrv.so libjabberdpthsock.so libjabberdsm.so libjabberdxdbfile.so libjabberdxdbsql.so; do
+	mv "$RPM_BUILD_ROOT%{_libdir}/$f.0.0.0" "$RPM_BUILD_ROOT%{_libdir}/%{name}/$f"
+done
+
 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}
 install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/%{name}
 
+mv $RPM_BUILD_ROOT{%{_bindir}/jabberd,%{_sbindir}/jabberd14}
+
 %clean
 rm -rf $RPM_BUILD_ROOT
 
@@ -146,11 +153,13 @@
 %files
 %defattr(644,root,root,755)
 %doc README UPGRADE pthsock/README*
+%attr(755,root,root) %{_bindir}/*
 %attr(755,root,root) %{_sbindir}/*
-%dir %{_libdir}/%{name}
-%attr(755,root,root) %{_libdir}/%{name}/*.so
+%attr(755,root,root) %{_libdir}/libjabberd.so.*.*
+%attr(755,root,root) %{_libdir}/%{name}
 %attr(771,root,jabber) %{_localstatedir}/lib/%{name}
 %attr(770,root,jabber) /var/log/%{name}
+%{_mandir}/*/*
 
 %files server
 %defattr(644,root,root,755)
@@ -161,7 +170,6 @@
 %files devel
 %defattr(644,root,root,755)
 %{_includedir}/*
-%{_libdir}/%{name}/platform-settings
 
 %define date	%(echo `LC_ALL="C" date +"%a %b %d %Y"`)
 %changelog
-------------- następna część ---------
diff -ur jabberd-1.4.4.orig/jabber.xml.dist.in jabberd-1.4.4/jabber.xml.dist.in
--- jabberd-1.4.4.orig/jabber.xml.dist.in	2005-12-26 13:58:36.807871168 +0100
+++ jabberd-1.4.4/jabber.xml.dist.in	2005-12-26 14:10:24.883227352 +0100
@@ -382,7 +382,7 @@
       <xdb_file>@libdir@/libjabberdxdbfile.so</xdb_file>
     </load>
     <xdb_file xmlns="jabber:config:xdb_file">
-      <spool><jabberd:cmdline flag='s'>@localstatedir@/spool/jabberd</jabberd:cmdline></spool>
+      <spool><jabberd:cmdline flag='s'>@localstatedir@/lib/jabberd14/spool</jabberd:cmdline></spool>
       <!-- How long should XDB data be kept in memory?
            Default: 3600 seconds. Change to <timeout/> to disable. -->
       <timeout>3600</timeout>
@@ -580,7 +580,7 @@
     <host/>
     <logtype/>
     <format>%d: [%t] (%h): %s</format>
-    <file>@localstatedir@/log/jabberd/error.log</file>
+    <file>@localstatedir@/log/jabberd14/error.log</file>
     <stderr/>
     
     <!-- if you want to send the messages to the syslog instead of      -->
@@ -603,7 +603,7 @@
     <host/>
     <logtype>record</logtype>
     <format>%d %h %s</format>
-    <file>@localstatedir@/log/jabberd/record.log</file>
+    <file>@localstatedir@/log/jabberd14/record.log</file>
   </log>
 
   <!-- The following two services are for handling server-to-server traffic. -->
@@ -932,7 +932,7 @@
   <!--
   This specifies the file to store the pid of the process in.
   -->
-  <pidfile>@localstatedir@/run/jabberd/jabber.pid</pidfile>
+  <pidfile>@localstatedir@/run/jabber/jabberd14.pid</pidfile>
 
 
 </jabber>
diff -ur jabberd-1.4.4.orig/jabberd/config.c jabberd-1.4.4/jabberd/config.c
--- jabberd-1.4.4.orig/jabberd/config.c	2005-04-16 00:07:23.000000000 +0200
+++ jabberd-1.4.4/jabberd/config.c	2005-12-26 13:59:07.626186072 +0100
@@ -211,7 +211,7 @@
 
 int configurate(char *file, xht cmd_line)
 {
-    char def[] = CONFIG_DIR"/jabber.xml";
+    char def[] = CONFIG_DIR"/jabberd14.xml";
     char *realfile = (char *)def;
     xmlnode incl;
     char *c;
-------------- następna część ---------
diff -durN -x '*~' -x '*.orig' -x '*.rej' jabberd-1.4.3.orig/jabber.xml jabberd-1.4.3/jabber.xml
--- jabberd-1.4.3.orig/jabber.xml.dist.in	2004-01-03 12:19:35.927263605 +0100
+++ jabberd-1.4.3/jabber.xml.dist.in	2004-01-03 12:22:42.962257513 +0100
@@ -218,14 +218,14 @@
         <!-- 
         This is the default agent for the master Jabber User 
         Directory, a.k.a. "JUD", which is located at jabber.org.
-        You can add separate <service/> sections for additional
+        You can add separate <item/> sections for additional
         directories, e.g., one for a company intranet.
         -->
 
-        <service type="jud" jid="users.jabber.org" name="Jabber User Directory">
+	<item category="service" type="jud" jid="users.jabber.org" name="Jabber User Directory">
           <ns>jabber:iq:search</ns>
           <ns>jabber:iq:register</ns>
-        </service>
+        </item>
 
         <!--
         The following services are examples only, you will need to
@@ -236,17 +236,17 @@
 
         <!-- we're commenting these out, of course :)
 
-        <service type="aim" jid="aim.localhost" name="AIM Transport">
+        <item category="service" type="aim" jid="aim.localhost" name="AIM Transport">
           <ns>jabber:iq:gateway</ns>
           <ns>jabber:iq:register</ns>
         </service>
 
-        <service type="yahoo" jid="yahoo.localhost" name="Yahoo! Transport">
+        <item category="service" type="yahoo" jid="yahoo.localhost" name="Yahoo! Transport">
           <ns>jabber:iq:gateway</ns>
           <ns>jabber:iq:register</ns>
         </service>
 
-        end of <service/> examples -->
+        end of service examples -->
 
       </browse>
 
diff -durN -x '*~' -x '*.orig' -x '*.rej' jabberd-1.4.3.orig/jsm/modules/mod_browse.c jabberd-1.4.3/jsm/modules/mod_browse.c
--- jabberd-1.4.3.orig/jsm/modules/mod_browse.c	2003-11-08 00:54:25.000000000 +0100
+++ jabberd-1.4.3/jsm/modules/mod_browse.c	2004-01-03 12:21:15.220930031 +0100
@@ -52,7 +52,8 @@
     { /* no browse is set up yet, we must create one for this user! */
         if(id->resource == NULL)
         { /* a user is only the user w host */
-            browse = xmlnode_new_tag("user");
+            browse = xmlnode_new_tag("item");
+            xmlnode_put_attrib(browse,"category","user");
             /* get the friendly name for this user from somewhere */
             if((x = xdb_get(m->si->xc, m->user->id, NS_VCARD)) != NULL)
                 xmlnode_put_attrib(browse,"name",xmlnode_get_tag_data(x,"FN"));
@@ -178,7 +179,8 @@
         {
             /* if(s->priority < 0) continue; *** include all resources I guess */
             if(xmlnode_get_tag(browse,spools(m->packet->p,"?jid=",jid_full(s->id),m->packet->p)) != NULL) continue; /* already in the browse result */
-            cur = xmlnode_insert_tag(browse,"user");
+            cur = xmlnode_insert_tag(browse,"item");
+            xmlnode_put_attrib(cur,"category", "user");
             xmlnode_put_attrib(cur,"type", "client");
             xmlnode_put_attrib(cur,"jid", jid_full(s->id));
         }
@@ -208,8 +210,9 @@
     log_debug("mod_browse","handling browse query");
 
     /* build the result IQ */
-    query = xmlnode_insert_tag(jutil_iqresult(m->packet->x),"service");
+    query = xmlnode_insert_tag(jutil_iqresult(m->packet->x),"item");
     xmlnode_put_attrib(query,"xmlns",NS_BROWSE);
+    xmlnode_put_attrib(query,"category","service");
     xmlnode_put_attrib(query,"type","jabber");
     xmlnode_put_attrib(query,"jid",m->packet->to->server);
     xmlnode_put_attrib(query,"name",xmlnode_get_data(js_config(m->si,"vCard/FN"))); /* pull name from the server vCard */
-------------- następna część ---------
diff -ur jabberd-1.4.4.orig/jabber.xml.dist.in jabberd-1.4.4/jabber.xml.dist.in
--- jabberd-1.4.4.orig/jabber.xml.dist.in	2005-12-25 20:45:24.000000000 +0100
+++ jabberd-1.4.4/jabber.xml.dist.in	2005-12-25 20:47:59.984860544 +0100
@@ -73,8 +73,11 @@
       notify attribute will send the server administrator(s)
       a message after each valid registration if the notify
       attribute is present.
+      A deny_new attribute will disable registration for new users, but
+      password change and unregistration will still be enabled.
       -->
 
+      <!-- <register deny_new="yes"> -->
       <register notify="yes">
         <instructions>Choose a username and password to register with this server.</instructions>
         <name/>
diff -ur jabberd-1.4.4.orig/jsm/modules/mod_auth_plain.c jabberd-1.4.4/jsm/modules/mod_auth_plain.c
--- jabberd-1.4.4.orig/jsm/modules/mod_auth_plain.c	2005-04-16 00:07:15.000000000 +0200
+++ jabberd-1.4.4/jsm/modules/mod_auth_plain.c	2005-12-25 20:47:11.541225096 +0100
@@ -181,6 +181,15 @@
     return M_PASS;
 }
 
+mreturn mod_auth_plain_reg_new(mapi m, void *arg)
+{
+    xmlnode reg;
+
+    if((reg = js_config(m->si, "register")) == NULL) return M_PASS;
+    if(xmlnode_get_attrib(reg,"deny_new") != NULL) return M_PASS;
+    return mod_auth_plain_reg(m,arg);
+}
+
 /**
  * handle password change requests from a session
  *
@@ -226,5 +235,5 @@
 
     js_mapi_register(si, e_AUTH, mod_auth_plain_jane, NULL);
     js_mapi_register(si, e_SERVER, mod_auth_plain_server, NULL);
-    if (js_config(si,"register") != NULL) js_mapi_register(si, e_REGISTER, mod_auth_plain_reg, "registered account");
+    js_mapi_register(si, e_REGISTER, mod_auth_plain_reg_new, NULL);
 }
diff -ur jabberd-1.4.4.orig/jsm/modules/mod_register.c jabberd-1.4.4/jsm/modules/mod_register.c
--- jabberd-1.4.4.orig/jsm/modules/mod_register.c	2005-04-16 00:07:15.000000000 +0200
+++ jabberd-1.4.4/jsm/modules/mod_register.c	2005-12-25 20:49:28.243443200 +0100
@@ -67,6 +67,7 @@
     xmlnode reg, x;
 
     if((reg = js_config(m->si, "register")) == NULL) return M_PASS;
+    if(xmlnode_get_attrib(reg,"deny_new") != NULL) return M_PASS;
 
     log_debug2(ZONE, LOGT_AUTH, "checking");
 


Więcej informacji o liście dyskusyjnej pld-devel-pl