1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-23 00:43:28 +00:00

Update to version 1.1.7

PR:		ports/77653
Submitted by:	maintainer
This commit is contained in:
Kirill Ponomarev 2005-02-18 09:35:01 +00:00
parent 19d73f8b10
commit 1b22eaf356
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=129137
18 changed files with 104 additions and 644 deletions

View File

@ -6,16 +6,16 @@
#
PORTNAME= jit
PORTVERSION= 1.1.6
PORTVERSION= 1.1.7
CATEGORIES= net
MASTER_SITES= http://www.jabberstudio.org/files/jit/
MASTER_SITES= http://www.jabber.ru/files/jit/
DIST_SUBDIR= jabber
MAINTAINER= gonzo@univ.kiev.ua
MAINTAINER= alexander.timoshenko@gmail.com
COMMENT= Jabber ICQ Transport
USE_GMAKE= yes
USE_REINPLACE= yes
USE_REINPLACE= yes
HAS_CONFIGURE= yes
.include <bsd.port.pre.mk>
@ -32,7 +32,7 @@ do-install:
@${MKDIR} ${PREFIX}/lib/jabber/jit
@${INSTALL_DATA} ${WRKSRC}/jit/jit.so ${PREFIX}/lib/jabber/jit
@${INSTALL_DATA} ${WRKSRC}/xdb_file/xdb_file.so ${PREFIX}/lib/jabber/jit
@${INSTALL_PROGRAM} ${WRKSRC}/jabberd/jabberd ${PREFIX}/sbin/jit
@${INSTALL_PROGRAM} ${WRKSRC}/jabberd/jabberd-jit ${PREFIX}/sbin/jit
@${INSTALL_DATA} ${WRKSRC}/jit/jabber-icq.example ${PREFIX}/etc
@${INSTALL_SCRIPT} ${WRKSRC}/jit/jit.sh ${PREFIX}/etc/rc.d

View File

@ -1,2 +1,2 @@
MD5 (jabber/jit-1.1.6.tar.gz) = 950f6b82ab5e0542535108fd54409363
SIZE (jabber/jit-1.1.6.tar.gz) = 275246
MD5 (jabber/jit-1.1.7.tar.gz) = 5400bd79d5014fef35fed2195967e5ae
SIZE (jabber/jit-1.1.7.tar.gz) = 277018

View File

@ -1,10 +0,0 @@
--- Makefile.orig Tue Jul 6 19:11:02 2004
+++ Makefile Tue Jul 6 19:10:53 2004
@@ -2,6 +2,7 @@
all:
(cd jit && $(MAKE))
(cd jabberd && $(MAKE))
+ (cd xdb_file && $(MAKE))
clean:
(cd jit && $(MAKE) clean)

View File

@ -1,243 +0,0 @@
diff -ru jabber.orig/lib/lib.h jabberd/lib/lib.h
--- jabber.orig/lib/lib.h 2003-05-30 16:10:24.000000000 +0400
+++ jabberd/lib/lib.h 2003-12-11 22:48:04.000000000 +0300
@@ -654,6 +654,9 @@
#define NS_XDBGINSERT "jabber:xdb:ginsert"
#define NS_XDBNSLIST "jabber:xdb:nslist"
+#define NS_DISCO_INFO "http://jabber.org/protocol/disco#info"
+#define NS_DISCO_ITEMS "http://jabber.org/protocol/disco#items"
+
/* --------------------------------------------------------- */
/* */
diff -ru jit.orig/jit/icqtransport.h jit/jit/icqtransport.h
--- jit.orig/jit/icqtransport.h 2003-06-02 14:06:51.000000000 +0400
+++ jit/jit/icqtransport.h 2003-12-12 13:14:40.000000000 +0300
@@ -20,7 +20,7 @@
#include "utils/english.h"
#endif
-#define MOD_VERSION "1.1.6"
+#define MOD_VERSION "1.1.6-sg2"
#define DEFAULT_CHARSET "iso-8859-1"
typedef unsigned long UIN_t;
@@ -290,6 +290,10 @@
void it_iq_gateway_set(session s, jpacket jp);
void it_iq_browse_server(iti ti, jpacket jp);
void it_iq_browse_user(session s, jpacket jp);
+void it_iq_disco_info_server(iti ti, jpacket jp);
+void it_iq_disco_info_user(session s, jpacket jp);
+void it_iq_disco_items_server(iti ti, jpacket jp);
+void it_iq_disco_items_user(session s, jpacket jp);
void it_save_contacts(session s);
diff -ru jit.orig/jit/iq.c jit/jit/iq.c
--- jit.orig/jit/iq.c 2003-04-29 15:03:53.000000000 +0400
+++ jit/jit/iq.c 2003-12-11 22:48:04.000000000 +0300
@@ -29,6 +29,10 @@
void it_iq_gateway_set(session s, jpacket jp);
void it_iq_browse_server(iti ti, jpacket jp);
void it_iq_browse_user(session s, jpacket jp);
+void it_iq_disco_info_server(iti ti, jpacket jp);
+void it_iq_disco_info_user(session s, jpacket jp);
+void it_iq_disco_items_server(iti ti, jpacket jp);
+void it_iq_disco_items_user(session s, jpacket jp);
void SendSearchUINRequest(session s,UIN_t uin);
void SendSearchUsersRequest(session s,
@@ -73,6 +77,10 @@
it_iq_gateway_get(s,jp);
else if (j_strcmp(ns,NS_BROWSE) == 0)
jp->to->user ? it_iq_browse_user(s,jp) : it_iq_browse_server(s->ti,jp);
+ else if (j_strcmp(ns,NS_DISCO_INFO) == 0)
+ jp->to->user ? it_iq_disco_info_user(s,jp) : it_iq_disco_info_server(s->ti,jp);
+ else if (j_strcmp(ns,NS_DISCO_ITEMS) == 0)
+ jp->to->user ? it_iq_disco_items_user(s,jp) : it_iq_disco_items_server(s->ti,jp);
else if (j_strcmp(ns,NS_VCARD) == 0)
jp->to->user ? it_iq_vcard(s,jp) : it_iq_vcard_server(s->ti,jp);
else if (j_strcmp(ns,NS_LAST) == 0)
@@ -503,6 +511,8 @@
xmlnode_insert_cdata(xmlnode_insert_tag(q,"ns"),NS_REGISTER,-1);
xmlnode_insert_cdata(xmlnode_insert_tag(q,"ns"),NS_SEARCH,-1);
xmlnode_insert_cdata(xmlnode_insert_tag(q,"ns"),NS_GATEWAY,-1);
+ xmlnode_insert_cdata(xmlnode_insert_tag(q,"ns"),NS_DISCO_INFO,-1);
+ xmlnode_insert_cdata(xmlnode_insert_tag(q,"ns"),NS_DISCO_ITEMS,-1);
it_deliver(ti,jp->x);
}
@@ -538,6 +548,131 @@
it_deliver(s->ti,jp->x);
}
+/** Service Discovery support (JEP-0030) */
+/** Info */
+
+void it_iq_disco_info_server(iti ti, jpacket jp)
+{
+ xmlnode q, x;
+
+ if(xmlnode_get_attrib(xmlnode_get_tag(jp->x, "query"),"node") != NULL)
+ {
+ jutil_error(jp->x,TERROR_NOTALLOWED);
+ it_deliver(ti,jp->x);
+ return;
+ }
+
+ q = xmlnode_insert_tag(jutil_iqresult(jp->x),"query");
+ xmlnode_put_attrib(q,"xmlns",NS_DISCO_INFO);
+
+ x = xmlnode_insert_tag(q,"identity");
+ xmlnode_put_attrib(x,"category","gateway");
+ xmlnode_put_attrib(x,"type","icq");
+ xmlnode_put_attrib(x,"name",xmlnode_get_tag_data(ti->vcard,"FN"));
+
+ xmlnode_put_attrib(xmlnode_insert_tag(q,"feature"),"var",NS_REGISTER);
+ xmlnode_put_attrib(xmlnode_insert_tag(q,"feature"),"var",NS_SEARCH);
+ xmlnode_put_attrib(xmlnode_insert_tag(q,"feature"),"var",NS_VERSION);
+ xmlnode_put_attrib(xmlnode_insert_tag(q,"feature"),"var",NS_TIME);
+ xmlnode_put_attrib(xmlnode_insert_tag(q,"feature"),"var",NS_LAST);
+
+ it_deliver(ti,jp->x);
+}
+
+void it_iq_disco_info_user(session s, jpacket jp)
+{
+ xmlnode q, x;
+
+ if (s->type == stype_register)
+ {
+ queue_elem queue;
+
+ queue = pmalloco(jp->p,sizeof(_queue_elem));
+ queue->elem = (void *)jp;
+
+ QUEUE_PUT(s->queue,s->queue_last,queue);
+ return;
+ }
+
+ if (it_jid2uin(jp->from) == 0)
+ {
+ jutil_error(jp->x,TERROR_BAD);
+ it_deliver(s->ti,jp->x);
+ return;
+ }
+
+ if(xmlnode_get_attrib(xmlnode_get_tag(jp->x, "query"),"node") != NULL)
+ {
+ jutil_error(jp->x,TERROR_NOTALLOWED);
+ it_deliver(s->ti,jp->x);
+ return;
+ }
+
+ q = xmlnode_insert_tag(jutil_iqresult(jp->x),"query");
+ xmlnode_put_attrib(q,"xmlns",NS_DISCO_INFO);
+ x = xmlnode_insert_tag(q,"identity");
+ xmlnode_put_attrib(x,"category","user");
+ xmlnode_put_attrib(x,"type","client");
+ xmlnode_put_attrib(x,"name", jp->to->user);
+
+ it_deliver(s->ti,jp->x);
+}
+
+/** Service Discovery support (JEP-0030) */
+/** Items */
+
+void it_iq_disco_items_server(iti ti, jpacket jp)
+{
+ xmlnode q;
+
+ if(xmlnode_get_attrib(xmlnode_get_tag(jp->x, "query"),"node") != NULL)
+ {
+ jutil_error(jp->x,TERROR_NOTALLOWED);
+ it_deliver(ti,jp->x);
+ return;
+ }
+
+ q = xmlnode_insert_tag(jutil_iqresult(jp->x),"query");
+ xmlnode_put_attrib(q,"xmlns",NS_DISCO_ITEMS);
+
+ it_deliver(ti,jp->x);
+}
+
+void it_iq_disco_items_user(session s, jpacket jp)
+{
+ xmlnode q;
+
+ if (s->type == stype_register)
+ {
+ queue_elem queue;
+
+ queue = pmalloco(jp->p,sizeof(_queue_elem));
+ queue->elem = (void *)jp;
+
+ QUEUE_PUT(s->queue,s->queue_last,queue);
+ return;
+ }
+
+ if (it_jid2uin(jp->from) == 0)
+ {
+ jutil_error(jp->x,TERROR_BAD);
+ it_deliver(s->ti,jp->x);
+ return;
+ }
+
+ if(xmlnode_get_attrib(xmlnode_get_tag(jp->x, "query"),"node") != NULL)
+ {
+ jutil_error(jp->x,TERROR_NOTALLOWED);
+ it_deliver(s->ti,jp->x);
+ return;
+ }
+
+ q = xmlnode_insert_tag(jutil_iqresult(jp->x),"query");
+ xmlnode_put_attrib(q,"xmlns",NS_DISCO_ITEMS);
+
+ it_deliver(s->ti,jp->x);
+}
+
/** Send reply to a version inquiry to Jabber */
void it_iq_version(iti ti, jpacket jp)
{
diff -ru jit.orig/jit/session.c jit/jit/session.c
--- jit.orig/jit/session.c 2003-05-12 15:07:53.000000000 +0400
+++ jit/jit/session.c 2003-12-12 12:59:30.000000000 +0300
@@ -429,6 +429,11 @@
time(NULL)-s->start_time);
}
+ if ((s->ti->own_roster)&&(s->roster_changed)) {
+ it_save_contacts(s);
+ s->roster_changed = 0;
+ }
+
/* remove from hash */
SEM_LOCK(s->ti->sessions_sem);
wpxhash_zap(s->ti->sessions,jid_full(s->id));
@@ -468,6 +473,11 @@
else
it_session_regerr(s,e);
+ if ((s->ti->own_roster)&&(s->roster_changed)) {
+ it_save_contacts(s);
+ s->roster_changed = 0;
+ }
+
/* remove from hash */
SEM_LOCK(s->ti->sessions_sem);
wpxhash_zap(s->ti->sessions,jid_full(s->id));
diff -ru jit.orig/jit/unknown.c jit/jit/unknown.c
--- jit.orig/jit/unknown.c 2003-04-29 14:19:42.000000000 +0400
+++ jit/jit/unknown.c 2003-12-11 22:48:04.000000000 +0300
@@ -84,6 +84,10 @@
}
else if (j_strcmp(ns,NS_BROWSE) == 0)
it_iq_browse_server(ti,jp);
+ else if (j_strcmp(ns,NS_DISCO_INFO) == 0)
+ it_iq_disco_info_server(ti,jp);
+ else if (j_strcmp(ns,NS_DISCO_ITEMS) == 0)
+ it_iq_disco_items_server(ti,jp);
else if (j_strcmp(ns,NS_VERSION) == 0)
it_iq_version(ti,jp);
else if (j_strcmp(ns,NS_TIME) == 0)

View File

@ -1,24 +0,0 @@
--- jabberd/mio_xml.c.orig Tue Jul 6 19:06:24 2004
+++ jabberd/mio_xml.c Tue Jul 6 19:07:34 2004
@@ -142,14 +142,13 @@
nul += 4;
bufsz = bufsz - (nul - buf);
buf = nul;
- mio_write(m,NULL,"HTTP/1.0 200 Ok
-Server: jabber/xmlstream-hack-0.1
-Expires: Fri, 10 Oct 1997 10:10:10 GMT
-Pragma: no-cache
-Cache-control: private
-Connection: close
-
-",-1);
+ mio_write(m,NULL,"HTTP/1.0 200 Ok\n" \
+"Server: jabber/xmlstream-hack-0.1\n" \
+"Expires: Fri, 10 Oct 1997 10:10:10 GMT\n" \
+"Pragma: no-cache\n" \
+"Cache-control: private\n" \
+"Connection: close\n" \
+"\n", -1);
m->type = type_NORMAL;
}

View File

@ -1,11 +0,0 @@
--- jabberd/mtq.c.orig Tue Jul 6 19:18:05 2004
+++ jabberd/mtq.c Tue Jul 6 19:18:29 2004
@@ -127,7 +127,7 @@
while(1) {
if (t->mtq->last == NULL ) {
- Sleep(1);
+ Sleep(500);
}

View File

@ -1,5 +1,30 @@
--- jit/jabber-icq.example.orig Tue Jul 20 16:54:23 2004
+++ jit/jabber-icq.example Tue Jul 20 16:59:10 2004
--- jit/jabber-icq.example.orig Mon Jan 19 23:30:03 2004
+++ jit/jabber-icq.example Thu Feb 17 20:38:49 2005
@@ -2,20 +2,20 @@
<!-- you can add elogger and rlogger entries here if
you don't want the main Jabber server do the
- logging
+ logging -->
<log id='elogger'>
<host/>
<logtype/>
<format>%d: [%t] (%h): %s</format>
- <file>icqerror</file>
+ <file>/var/log/jabber/icqerror</file>
</log>
<log id='rlogger'>
<host/>
<logtype>record</logtype>
<format>%d %h %s</format>
- <file>icqrecord</file>
- </log> -->
+ <file>/var/log/jabber/icqrecord</file>
+ </log>
<!-- Some Jabber server implementations do not
provide XDB services (for example jabberd 2.0).
@@ -23,16 +23,16 @@
XDB requests. This is strongly recommended if
you use xdb_ldap, xdb_sql or other non-file XDB
@ -13,31 +38,24 @@
+ <xdb_file>%%PREFIX%%/lib/jabber/jit/xdb_file.so</xdb_file>
</load>
<xdb_file xmlns="jabber:config:xdb_file">
<spool><jabberd:cmdline flag='s'>./spool</jabberd:cmdline></spool>
- <spool><jabberd:cmdline flag='s'>./spool</jabberd:cmdline></spool>
+ <spool><jabberd:cmdline flag='s'>/var/spool/jit</jabberd:cmdline></spool>
</xdb_file>
- </xdb> -->
+ </xdb>
<!--
localhost is your jabber host.
@@ -102,22 +102,21 @@
@@ -103,7 +103,7 @@
<session_timeout>18000</session_timeout>
<!-- Charset -->
- <charset>windows-1252</charset>
+ <charset>windows-1251</charset>
<!-- These IP is login.icq.com
Use only IPs here, no host names.
You can use hostnames but this will slow down JIT due to DNS resoling
-->
<server>
- <host port="5190">205.188.179.233</host>
- <host port="5190">64.12.200.89</host>
+ <host port="5190">login.icq.com</host>
</server>
</icqtrans>
<!-- You may want to replace login.icq.com by the corresponding
IPs to speed up JIT but keep in mind the IPs may change -->
@@ -115,7 +115,7 @@
<!-- JIT module -->
<load>

View File

@ -1,12 +0,0 @@
--- jit/jit/wp_client.cpp Tue Jul 6 18:58:45 2004
+++ jit/jit/wp_client.cpp Tue Jul 6 18:55:31 2004
@@ -146,7 +146,8 @@
}
void WPclient::SignalDisconnected(DisconnectedEvent *ev) {
- terror e = (terror){0,""};
+ terror e;
+ e = (terror){0,""};
switch(ev->getReason()){
case DisconnectedEvent::FAILED_BADUSERNAME:

View File

@ -9,6 +9,7 @@ GROUP=${USER}
UID=93
GID=${UID}
SPOOLDIR="/var/spool/jit"
LOGDIR="/var/log/jabber"
if ! pw groupshow "${GROUP}" 2>/dev/null 1>&2; then
if pw groupadd ${GROUP} -g ${GID}; then
@ -36,6 +37,17 @@ if [ ! -d ${SPOOLDIR} ]; then
mkdir -p ${SPOOLDIR}
fi
if [ ! -d ${LOGDIR} ]; then
echo "Creating \"${LOGDIR}\"."
mkdir -p ${LOGDIR}
fi
echo "Fixing ownerships and modes in \"${SPOOLDIR}\"."
chown -R ${USER}:${GROUP} ${SPOOLDIR}
chmod -R go= ${SPOOLDIR}
echo "Fixing ownerships and modes in \"${LOGDIR}\"."
chown -R ${USER}:${GROUP} ${LOGDIR}
chmod -R go= ${LOGDIR}

View File

@ -6,16 +6,16 @@
#
PORTNAME= jit
PORTVERSION= 1.1.6
PORTVERSION= 1.1.7
CATEGORIES= net
MASTER_SITES= http://www.jabberstudio.org/files/jit/
MASTER_SITES= http://www.jabber.ru/files/jit/
DIST_SUBDIR= jabber
MAINTAINER= gonzo@univ.kiev.ua
MAINTAINER= alexander.timoshenko@gmail.com
COMMENT= Jabber ICQ Transport
USE_GMAKE= yes
USE_REINPLACE= yes
USE_REINPLACE= yes
HAS_CONFIGURE= yes
.include <bsd.port.pre.mk>
@ -32,7 +32,7 @@ do-install:
@${MKDIR} ${PREFIX}/lib/jabber/jit
@${INSTALL_DATA} ${WRKSRC}/jit/jit.so ${PREFIX}/lib/jabber/jit
@${INSTALL_DATA} ${WRKSRC}/xdb_file/xdb_file.so ${PREFIX}/lib/jabber/jit
@${INSTALL_PROGRAM} ${WRKSRC}/jabberd/jabberd ${PREFIX}/sbin/jit
@${INSTALL_PROGRAM} ${WRKSRC}/jabberd/jabberd-jit ${PREFIX}/sbin/jit
@${INSTALL_DATA} ${WRKSRC}/jit/jabber-icq.example ${PREFIX}/etc
@${INSTALL_SCRIPT} ${WRKSRC}/jit/jit.sh ${PREFIX}/etc/rc.d

View File

@ -1,2 +1,2 @@
MD5 (jabber/jit-1.1.6.tar.gz) = 950f6b82ab5e0542535108fd54409363
SIZE (jabber/jit-1.1.6.tar.gz) = 275246
MD5 (jabber/jit-1.1.7.tar.gz) = 5400bd79d5014fef35fed2195967e5ae
SIZE (jabber/jit-1.1.7.tar.gz) = 277018

View File

@ -1,10 +0,0 @@
--- Makefile.orig Tue Jul 6 19:11:02 2004
+++ Makefile Tue Jul 6 19:10:53 2004
@@ -2,6 +2,7 @@
all:
(cd jit && $(MAKE))
(cd jabberd && $(MAKE))
+ (cd xdb_file && $(MAKE))
clean:
(cd jit && $(MAKE) clean)

View File

@ -1,243 +0,0 @@
diff -ru jabber.orig/lib/lib.h jabberd/lib/lib.h
--- jabber.orig/lib/lib.h 2003-05-30 16:10:24.000000000 +0400
+++ jabberd/lib/lib.h 2003-12-11 22:48:04.000000000 +0300
@@ -654,6 +654,9 @@
#define NS_XDBGINSERT "jabber:xdb:ginsert"
#define NS_XDBNSLIST "jabber:xdb:nslist"
+#define NS_DISCO_INFO "http://jabber.org/protocol/disco#info"
+#define NS_DISCO_ITEMS "http://jabber.org/protocol/disco#items"
+
/* --------------------------------------------------------- */
/* */
diff -ru jit.orig/jit/icqtransport.h jit/jit/icqtransport.h
--- jit.orig/jit/icqtransport.h 2003-06-02 14:06:51.000000000 +0400
+++ jit/jit/icqtransport.h 2003-12-12 13:14:40.000000000 +0300
@@ -20,7 +20,7 @@
#include "utils/english.h"
#endif
-#define MOD_VERSION "1.1.6"
+#define MOD_VERSION "1.1.6-sg2"
#define DEFAULT_CHARSET "iso-8859-1"
typedef unsigned long UIN_t;
@@ -290,6 +290,10 @@
void it_iq_gateway_set(session s, jpacket jp);
void it_iq_browse_server(iti ti, jpacket jp);
void it_iq_browse_user(session s, jpacket jp);
+void it_iq_disco_info_server(iti ti, jpacket jp);
+void it_iq_disco_info_user(session s, jpacket jp);
+void it_iq_disco_items_server(iti ti, jpacket jp);
+void it_iq_disco_items_user(session s, jpacket jp);
void it_save_contacts(session s);
diff -ru jit.orig/jit/iq.c jit/jit/iq.c
--- jit.orig/jit/iq.c 2003-04-29 15:03:53.000000000 +0400
+++ jit/jit/iq.c 2003-12-11 22:48:04.000000000 +0300
@@ -29,6 +29,10 @@
void it_iq_gateway_set(session s, jpacket jp);
void it_iq_browse_server(iti ti, jpacket jp);
void it_iq_browse_user(session s, jpacket jp);
+void it_iq_disco_info_server(iti ti, jpacket jp);
+void it_iq_disco_info_user(session s, jpacket jp);
+void it_iq_disco_items_server(iti ti, jpacket jp);
+void it_iq_disco_items_user(session s, jpacket jp);
void SendSearchUINRequest(session s,UIN_t uin);
void SendSearchUsersRequest(session s,
@@ -73,6 +77,10 @@
it_iq_gateway_get(s,jp);
else if (j_strcmp(ns,NS_BROWSE) == 0)
jp->to->user ? it_iq_browse_user(s,jp) : it_iq_browse_server(s->ti,jp);
+ else if (j_strcmp(ns,NS_DISCO_INFO) == 0)
+ jp->to->user ? it_iq_disco_info_user(s,jp) : it_iq_disco_info_server(s->ti,jp);
+ else if (j_strcmp(ns,NS_DISCO_ITEMS) == 0)
+ jp->to->user ? it_iq_disco_items_user(s,jp) : it_iq_disco_items_server(s->ti,jp);
else if (j_strcmp(ns,NS_VCARD) == 0)
jp->to->user ? it_iq_vcard(s,jp) : it_iq_vcard_server(s->ti,jp);
else if (j_strcmp(ns,NS_LAST) == 0)
@@ -503,6 +511,8 @@
xmlnode_insert_cdata(xmlnode_insert_tag(q,"ns"),NS_REGISTER,-1);
xmlnode_insert_cdata(xmlnode_insert_tag(q,"ns"),NS_SEARCH,-1);
xmlnode_insert_cdata(xmlnode_insert_tag(q,"ns"),NS_GATEWAY,-1);
+ xmlnode_insert_cdata(xmlnode_insert_tag(q,"ns"),NS_DISCO_INFO,-1);
+ xmlnode_insert_cdata(xmlnode_insert_tag(q,"ns"),NS_DISCO_ITEMS,-1);
it_deliver(ti,jp->x);
}
@@ -538,6 +548,131 @@
it_deliver(s->ti,jp->x);
}
+/** Service Discovery support (JEP-0030) */
+/** Info */
+
+void it_iq_disco_info_server(iti ti, jpacket jp)
+{
+ xmlnode q, x;
+
+ if(xmlnode_get_attrib(xmlnode_get_tag(jp->x, "query"),"node") != NULL)
+ {
+ jutil_error(jp->x,TERROR_NOTALLOWED);
+ it_deliver(ti,jp->x);
+ return;
+ }
+
+ q = xmlnode_insert_tag(jutil_iqresult(jp->x),"query");
+ xmlnode_put_attrib(q,"xmlns",NS_DISCO_INFO);
+
+ x = xmlnode_insert_tag(q,"identity");
+ xmlnode_put_attrib(x,"category","gateway");
+ xmlnode_put_attrib(x,"type","icq");
+ xmlnode_put_attrib(x,"name",xmlnode_get_tag_data(ti->vcard,"FN"));
+
+ xmlnode_put_attrib(xmlnode_insert_tag(q,"feature"),"var",NS_REGISTER);
+ xmlnode_put_attrib(xmlnode_insert_tag(q,"feature"),"var",NS_SEARCH);
+ xmlnode_put_attrib(xmlnode_insert_tag(q,"feature"),"var",NS_VERSION);
+ xmlnode_put_attrib(xmlnode_insert_tag(q,"feature"),"var",NS_TIME);
+ xmlnode_put_attrib(xmlnode_insert_tag(q,"feature"),"var",NS_LAST);
+
+ it_deliver(ti,jp->x);
+}
+
+void it_iq_disco_info_user(session s, jpacket jp)
+{
+ xmlnode q, x;
+
+ if (s->type == stype_register)
+ {
+ queue_elem queue;
+
+ queue = pmalloco(jp->p,sizeof(_queue_elem));
+ queue->elem = (void *)jp;
+
+ QUEUE_PUT(s->queue,s->queue_last,queue);
+ return;
+ }
+
+ if (it_jid2uin(jp->from) == 0)
+ {
+ jutil_error(jp->x,TERROR_BAD);
+ it_deliver(s->ti,jp->x);
+ return;
+ }
+
+ if(xmlnode_get_attrib(xmlnode_get_tag(jp->x, "query"),"node") != NULL)
+ {
+ jutil_error(jp->x,TERROR_NOTALLOWED);
+ it_deliver(s->ti,jp->x);
+ return;
+ }
+
+ q = xmlnode_insert_tag(jutil_iqresult(jp->x),"query");
+ xmlnode_put_attrib(q,"xmlns",NS_DISCO_INFO);
+ x = xmlnode_insert_tag(q,"identity");
+ xmlnode_put_attrib(x,"category","user");
+ xmlnode_put_attrib(x,"type","client");
+ xmlnode_put_attrib(x,"name", jp->to->user);
+
+ it_deliver(s->ti,jp->x);
+}
+
+/** Service Discovery support (JEP-0030) */
+/** Items */
+
+void it_iq_disco_items_server(iti ti, jpacket jp)
+{
+ xmlnode q;
+
+ if(xmlnode_get_attrib(xmlnode_get_tag(jp->x, "query"),"node") != NULL)
+ {
+ jutil_error(jp->x,TERROR_NOTALLOWED);
+ it_deliver(ti,jp->x);
+ return;
+ }
+
+ q = xmlnode_insert_tag(jutil_iqresult(jp->x),"query");
+ xmlnode_put_attrib(q,"xmlns",NS_DISCO_ITEMS);
+
+ it_deliver(ti,jp->x);
+}
+
+void it_iq_disco_items_user(session s, jpacket jp)
+{
+ xmlnode q;
+
+ if (s->type == stype_register)
+ {
+ queue_elem queue;
+
+ queue = pmalloco(jp->p,sizeof(_queue_elem));
+ queue->elem = (void *)jp;
+
+ QUEUE_PUT(s->queue,s->queue_last,queue);
+ return;
+ }
+
+ if (it_jid2uin(jp->from) == 0)
+ {
+ jutil_error(jp->x,TERROR_BAD);
+ it_deliver(s->ti,jp->x);
+ return;
+ }
+
+ if(xmlnode_get_attrib(xmlnode_get_tag(jp->x, "query"),"node") != NULL)
+ {
+ jutil_error(jp->x,TERROR_NOTALLOWED);
+ it_deliver(s->ti,jp->x);
+ return;
+ }
+
+ q = xmlnode_insert_tag(jutil_iqresult(jp->x),"query");
+ xmlnode_put_attrib(q,"xmlns",NS_DISCO_ITEMS);
+
+ it_deliver(s->ti,jp->x);
+}
+
/** Send reply to a version inquiry to Jabber */
void it_iq_version(iti ti, jpacket jp)
{
diff -ru jit.orig/jit/session.c jit/jit/session.c
--- jit.orig/jit/session.c 2003-05-12 15:07:53.000000000 +0400
+++ jit/jit/session.c 2003-12-12 12:59:30.000000000 +0300
@@ -429,6 +429,11 @@
time(NULL)-s->start_time);
}
+ if ((s->ti->own_roster)&&(s->roster_changed)) {
+ it_save_contacts(s);
+ s->roster_changed = 0;
+ }
+
/* remove from hash */
SEM_LOCK(s->ti->sessions_sem);
wpxhash_zap(s->ti->sessions,jid_full(s->id));
@@ -468,6 +473,11 @@
else
it_session_regerr(s,e);
+ if ((s->ti->own_roster)&&(s->roster_changed)) {
+ it_save_contacts(s);
+ s->roster_changed = 0;
+ }
+
/* remove from hash */
SEM_LOCK(s->ti->sessions_sem);
wpxhash_zap(s->ti->sessions,jid_full(s->id));
diff -ru jit.orig/jit/unknown.c jit/jit/unknown.c
--- jit.orig/jit/unknown.c 2003-04-29 14:19:42.000000000 +0400
+++ jit/jit/unknown.c 2003-12-11 22:48:04.000000000 +0300
@@ -84,6 +84,10 @@
}
else if (j_strcmp(ns,NS_BROWSE) == 0)
it_iq_browse_server(ti,jp);
+ else if (j_strcmp(ns,NS_DISCO_INFO) == 0)
+ it_iq_disco_info_server(ti,jp);
+ else if (j_strcmp(ns,NS_DISCO_ITEMS) == 0)
+ it_iq_disco_items_server(ti,jp);
else if (j_strcmp(ns,NS_VERSION) == 0)
it_iq_version(ti,jp);
else if (j_strcmp(ns,NS_TIME) == 0)

View File

@ -1,24 +0,0 @@
--- jabberd/mio_xml.c.orig Tue Jul 6 19:06:24 2004
+++ jabberd/mio_xml.c Tue Jul 6 19:07:34 2004
@@ -142,14 +142,13 @@
nul += 4;
bufsz = bufsz - (nul - buf);
buf = nul;
- mio_write(m,NULL,"HTTP/1.0 200 Ok
-Server: jabber/xmlstream-hack-0.1
-Expires: Fri, 10 Oct 1997 10:10:10 GMT
-Pragma: no-cache
-Cache-control: private
-Connection: close
-
-",-1);
+ mio_write(m,NULL,"HTTP/1.0 200 Ok\n" \
+"Server: jabber/xmlstream-hack-0.1\n" \
+"Expires: Fri, 10 Oct 1997 10:10:10 GMT\n" \
+"Pragma: no-cache\n" \
+"Cache-control: private\n" \
+"Connection: close\n" \
+"\n", -1);
m->type = type_NORMAL;
}

View File

@ -1,11 +0,0 @@
--- jabberd/mtq.c.orig Tue Jul 6 19:18:05 2004
+++ jabberd/mtq.c Tue Jul 6 19:18:29 2004
@@ -127,7 +127,7 @@
while(1) {
if (t->mtq->last == NULL ) {
- Sleep(1);
+ Sleep(500);
}

View File

@ -1,5 +1,30 @@
--- jit/jabber-icq.example.orig Tue Jul 20 16:54:23 2004
+++ jit/jabber-icq.example Tue Jul 20 16:59:10 2004
--- jit/jabber-icq.example.orig Mon Jan 19 23:30:03 2004
+++ jit/jabber-icq.example Thu Feb 17 20:38:49 2005
@@ -2,20 +2,20 @@
<!-- you can add elogger and rlogger entries here if
you don't want the main Jabber server do the
- logging
+ logging -->
<log id='elogger'>
<host/>
<logtype/>
<format>%d: [%t] (%h): %s</format>
- <file>icqerror</file>
+ <file>/var/log/jabber/icqerror</file>
</log>
<log id='rlogger'>
<host/>
<logtype>record</logtype>
<format>%d %h %s</format>
- <file>icqrecord</file>
- </log> -->
+ <file>/var/log/jabber/icqrecord</file>
+ </log>
<!-- Some Jabber server implementations do not
provide XDB services (for example jabberd 2.0).
@@ -23,16 +23,16 @@
XDB requests. This is strongly recommended if
you use xdb_ldap, xdb_sql or other non-file XDB
@ -13,31 +38,24 @@
+ <xdb_file>%%PREFIX%%/lib/jabber/jit/xdb_file.so</xdb_file>
</load>
<xdb_file xmlns="jabber:config:xdb_file">
<spool><jabberd:cmdline flag='s'>./spool</jabberd:cmdline></spool>
- <spool><jabberd:cmdline flag='s'>./spool</jabberd:cmdline></spool>
+ <spool><jabberd:cmdline flag='s'>/var/spool/jit</jabberd:cmdline></spool>
</xdb_file>
- </xdb> -->
+ </xdb>
<!--
localhost is your jabber host.
@@ -102,22 +102,21 @@
@@ -103,7 +103,7 @@
<session_timeout>18000</session_timeout>
<!-- Charset -->
- <charset>windows-1252</charset>
+ <charset>windows-1251</charset>
<!-- These IP is login.icq.com
Use only IPs here, no host names.
You can use hostnames but this will slow down JIT due to DNS resoling
-->
<server>
- <host port="5190">205.188.179.233</host>
- <host port="5190">64.12.200.89</host>
+ <host port="5190">login.icq.com</host>
</server>
</icqtrans>
<!-- You may want to replace login.icq.com by the corresponding
IPs to speed up JIT but keep in mind the IPs may change -->
@@ -115,7 +115,7 @@
<!-- JIT module -->
<load>

View File

@ -1,12 +0,0 @@
--- jit/jit/wp_client.cpp Tue Jul 6 18:58:45 2004
+++ jit/jit/wp_client.cpp Tue Jul 6 18:55:31 2004
@@ -146,7 +146,8 @@
}
void WPclient::SignalDisconnected(DisconnectedEvent *ev) {
- terror e = (terror){0,""};
+ terror e;
+ e = (terror){0,""};
switch(ev->getReason()){
case DisconnectedEvent::FAILED_BADUSERNAME:

View File

@ -9,6 +9,7 @@ GROUP=${USER}
UID=93
GID=${UID}
SPOOLDIR="/var/spool/jit"
LOGDIR="/var/log/jabber"
if ! pw groupshow "${GROUP}" 2>/dev/null 1>&2; then
if pw groupadd ${GROUP} -g ${GID}; then
@ -36,6 +37,17 @@ if [ ! -d ${SPOOLDIR} ]; then
mkdir -p ${SPOOLDIR}
fi
if [ ! -d ${LOGDIR} ]; then
echo "Creating \"${LOGDIR}\"."
mkdir -p ${LOGDIR}
fi
echo "Fixing ownerships and modes in \"${SPOOLDIR}\"."
chown -R ${USER}:${GROUP} ${SPOOLDIR}
chmod -R go= ${SPOOLDIR}
echo "Fixing ownerships and modes in \"${LOGDIR}\"."
chown -R ${USER}:${GROUP} ${LOGDIR}
chmod -R go= ${LOGDIR}