Wed Nov 12 13:13:59 2008 UTC ()
Updated chat/ejabberd to 2.0.2 (patch received from Fabrice Colliot)

* Bug fixes

* Patch #389 (https://support.process-one.net/browse/EJAB-389) applied
  instead of the old pkgsrc patch. You MUST modify your ejabberd.cfg!


(martti)
diff -r1.2 -r1.3 pkgsrc/chat/ejabberd/MESSAGE
diff -r1.2 -r1.3 pkgsrc/chat/ejabberd/PLIST
diff -r1.5 -r1.6 pkgsrc/chat/ejabberd/Makefile
diff -r1.3 -r1.4 pkgsrc/chat/ejabberd/distinfo
diff -r1.2 -r1.3 pkgsrc/chat/ejabberd/patches/patch-aa
diff -r1.2 -r1.3 pkgsrc/chat/ejabberd/patches/patch-ae
diff -r1.1.1.1 -r1.2 pkgsrc/chat/ejabberd/patches/patch-ac
diff -r1.1.1.1 -r1.2 pkgsrc/chat/ejabberd/patches/patch-ad
diff -r0 -r1.1 pkgsrc/chat/ejabberd/patches/patch-af
diff -r0 -r1.1 pkgsrc/chat/ejabberd/patches/patch-ag
diff -r0 -r1.1 pkgsrc/chat/ejabberd/patches/patch-ah
diff -r0 -r1.1 pkgsrc/chat/ejabberd/patches/patch-ai

cvs diff -r1.2 -r1.3 pkgsrc/chat/ejabberd/Attic/MESSAGE (expand / switch to unified diff)

--- pkgsrc/chat/ejabberd/Attic/MESSAGE 2008/04/24 08:04:13 1.2
+++ pkgsrc/chat/ejabberd/Attic/MESSAGE 2008/11/12 13:13:59 1.3
@@ -1,12 +1,9 @@ @@ -1,12 +1,9 @@
1=========================================================================== 1===========================================================================
2$NetBSD: MESSAGE,v 1.2 2008/04/24 08:04:13 martti Exp $ 2$NetBSD: MESSAGE,v 1.3 2008/11/12 13:13:59 martti Exp $
3 3
4You will need to customize the following files to configure ejabberd for 4You will need to customize the following files to configure ejabberd for
5local use: 5local use:
6 6
7 ${PKG_SYSCONFDIR}/ejabberd.cfg 7 ${PKG_SYSCONFDIR}/ejabberd.cfg
8 8
9Note: this package includes an unofficial patch to support multiples listeners 
10on the same port number, which enables IPv4 and IPv6 concurrently. 
11 
12=========================================================================== 9===========================================================================

cvs diff -r1.2 -r1.3 pkgsrc/chat/ejabberd/PLIST (expand / switch to unified diff)

--- pkgsrc/chat/ejabberd/PLIST 2008/04/24 08:04:13 1.2
+++ pkgsrc/chat/ejabberd/PLIST 2008/11/12 13:13:59 1.3
@@ -1,202 +1,210 @@ @@ -1,202 +1,210 @@
1@comment $NetBSD: PLIST,v 1.2 2008/04/24 08:04:13 martti Exp $ 1@comment $NetBSD: PLIST,v 1.3 2008/11/12 13:13:59 martti Exp $
2${EJABBERD_EXDIR}/ejabberd.cfg 2${EJABBERD_EXDIR}/ejabberd.cfg
3${EJABBERD_EXDIR}/ejabberdctl.cfg 3${EJABBERD_EXDIR}/ejabberdctl.cfg
4${EJABBERD_EXDIR}/inetrc 4${EJABBERD_EXDIR}/inetrc
5lib/erlang/lib/${DISTNAME}/ebin/ELDAPv3.beam 5lib/erlang/lib/${PKGNAME}/ebin/ELDAPv3.beam
6lib/erlang/lib/${DISTNAME}/ebin/XmppAddr.beam 6lib/erlang/lib/${PKGNAME}/ebin/XmppAddr.beam
7lib/erlang/lib/${DISTNAME}/ebin/acl.beam 7lib/erlang/lib/${PKGNAME}/ebin/acl.beam
8lib/erlang/lib/${DISTNAME}/ebin/adhoc.beam 8lib/erlang/lib/${PKGNAME}/ebin/adhoc.beam
9lib/erlang/lib/${DISTNAME}/ebin/cyrsasl.beam 9lib/erlang/lib/${PKGNAME}/ebin/cyrsasl.beam
10lib/erlang/lib/${DISTNAME}/ebin/cyrsasl_anonymous.beam 10lib/erlang/lib/${PKGNAME}/ebin/cyrsasl_anonymous.beam
11lib/erlang/lib/${DISTNAME}/ebin/cyrsasl_digest.beam 11lib/erlang/lib/${PKGNAME}/ebin/cyrsasl_digest.beam
12lib/erlang/lib/${DISTNAME}/ebin/cyrsasl_plain.beam 12lib/erlang/lib/${PKGNAME}/ebin/cyrsasl_plain.beam
13lib/erlang/lib/${DISTNAME}/ebin/ejabberd.app 13lib/erlang/lib/${PKGNAME}/ebin/ejabberd.app
14lib/erlang/lib/${DISTNAME}/ebin/ejabberd.beam 14lib/erlang/lib/${PKGNAME}/ebin/ejabberd.beam
15lib/erlang/lib/${DISTNAME}/ebin/ejabberd_admin.beam 15lib/erlang/lib/${PKGNAME}/ebin/ejabberd_admin.beam
16lib/erlang/lib/${DISTNAME}/ebin/ejabberd_app.beam 16lib/erlang/lib/${PKGNAME}/ebin/ejabberd_app.beam
17lib/erlang/lib/${DISTNAME}/ebin/ejabberd_auth.beam 17lib/erlang/lib/${PKGNAME}/ebin/ejabberd_auth.beam
18lib/erlang/lib/${DISTNAME}/ebin/ejabberd_auth_anonymous.beam 18lib/erlang/lib/${PKGNAME}/ebin/ejabberd_auth_anonymous.beam
19lib/erlang/lib/${DISTNAME}/ebin/ejabberd_auth_external.beam 19lib/erlang/lib/${PKGNAME}/ebin/ejabberd_auth_external.beam
20lib/erlang/lib/${DISTNAME}/ebin/ejabberd_auth_internal.beam 20lib/erlang/lib/${PKGNAME}/ebin/ejabberd_auth_internal.beam
21lib/erlang/lib/${DISTNAME}/ebin/ejabberd_auth_ldap.beam 21lib/erlang/lib/${PKGNAME}/ebin/ejabberd_auth_ldap.beam
22lib/erlang/lib/${DISTNAME}/ebin/ejabberd_auth_odbc.beam 22lib/erlang/lib/${PKGNAME}/ebin/ejabberd_auth_odbc.beam
23lib/erlang/lib/${DISTNAME}/ebin/ejabberd_auth_pam.beam 23lib/erlang/lib/${PKGNAME}/ebin/ejabberd_auth_pam.beam
24lib/erlang/lib/${DISTNAME}/ebin/ejabberd_c2s.beam 24lib/erlang/lib/${PKGNAME}/ebin/ejabberd_c2s.beam
25lib/erlang/lib/${DISTNAME}/ebin/ejabberd_c2s_config.beam 25lib/erlang/lib/${PKGNAME}/ebin/ejabberd_c2s_config.beam
26lib/erlang/lib/${DISTNAME}/ebin/ejabberd_config.beam 26lib/erlang/lib/${PKGNAME}/ebin/ejabberd_check.beam
27lib/erlang/lib/${DISTNAME}/ebin/ejabberd_ctl.beam 27lib/erlang/lib/${PKGNAME}/ebin/ejabberd_config.beam
28lib/erlang/lib/${DISTNAME}/ebin/ejabberd_frontend_socket.beam 28lib/erlang/lib/${PKGNAME}/ebin/ejabberd_ctl.beam
29lib/erlang/lib/${DISTNAME}/ebin/ejabberd_hooks.beam 29lib/erlang/lib/${PKGNAME}/ebin/ejabberd_frontend_socket.beam
30lib/erlang/lib/${DISTNAME}/ebin/ejabberd_http.beam 30lib/erlang/lib/${PKGNAME}/ebin/ejabberd_hooks.beam
31lib/erlang/lib/${DISTNAME}/ebin/ejabberd_http_bind.beam 31lib/erlang/lib/${PKGNAME}/ebin/ejabberd_http.beam
32lib/erlang/lib/${DISTNAME}/ebin/ejabberd_http_poll.beam 32lib/erlang/lib/${PKGNAME}/ebin/ejabberd_http_bind.beam
33lib/erlang/lib/${DISTNAME}/ebin/ejabberd_listener.beam 33lib/erlang/lib/${PKGNAME}/ebin/ejabberd_http_poll.beam
34lib/erlang/lib/${DISTNAME}/ebin/ejabberd_local.beam 34lib/erlang/lib/${PKGNAME}/ebin/ejabberd_listener.beam
35lib/erlang/lib/${DISTNAME}/ebin/ejabberd_logger_h.beam 35lib/erlang/lib/${PKGNAME}/ebin/ejabberd_local.beam
36lib/erlang/lib/${DISTNAME}/ebin/ejabberd_loglevel.beam 36lib/erlang/lib/${PKGNAME}/ebin/ejabberd_logger_h.beam
37lib/erlang/lib/${DISTNAME}/ebin/ejabberd_node_groups.beam 37lib/erlang/lib/${PKGNAME}/ebin/ejabberd_loglevel.beam
38lib/erlang/lib/${DISTNAME}/ebin/ejabberd_odbc.beam 38lib/erlang/lib/${PKGNAME}/ebin/ejabberd_node_groups.beam
39lib/erlang/lib/${DISTNAME}/ebin/ejabberd_odbc_sup.beam 39lib/erlang/lib/${PKGNAME}/ebin/ejabberd_odbc.beam
40lib/erlang/lib/${DISTNAME}/ebin/ejabberd_rdbms.beam 40lib/erlang/lib/${PKGNAME}/ebin/ejabberd_odbc_sup.beam
41lib/erlang/lib/${DISTNAME}/ebin/ejabberd_receiver.beam 41lib/erlang/lib/${PKGNAME}/ebin/ejabberd_rdbms.beam
42lib/erlang/lib/${DISTNAME}/ebin/ejabberd_router.beam 42lib/erlang/lib/${PKGNAME}/ebin/ejabberd_receiver.beam
43lib/erlang/lib/${DISTNAME}/ebin/ejabberd_s2s.beam 43lib/erlang/lib/${PKGNAME}/ebin/ejabberd_router.beam
44lib/erlang/lib/${DISTNAME}/ebin/ejabberd_s2s_in.beam 44lib/erlang/lib/${PKGNAME}/ebin/ejabberd_s2s.beam
45lib/erlang/lib/${DISTNAME}/ebin/ejabberd_s2s_out.beam 45lib/erlang/lib/${PKGNAME}/ebin/ejabberd_s2s_in.beam
46lib/erlang/lib/${DISTNAME}/ebin/ejabberd_service.beam 46lib/erlang/lib/${PKGNAME}/ebin/ejabberd_s2s_out.beam
47lib/erlang/lib/${DISTNAME}/ebin/ejabberd_sm.beam 47lib/erlang/lib/${PKGNAME}/ebin/ejabberd_service.beam
48lib/erlang/lib/${DISTNAME}/ebin/ejabberd_socket.beam 48lib/erlang/lib/${PKGNAME}/ebin/ejabberd_sm.beam
49lib/erlang/lib/${DISTNAME}/ebin/ejabberd_sup.beam 49lib/erlang/lib/${PKGNAME}/ebin/ejabberd_socket.beam
50lib/erlang/lib/${DISTNAME}/ebin/ejabberd_system_monitor.beam 50lib/erlang/lib/${PKGNAME}/ebin/ejabberd_sup.beam
51lib/erlang/lib/${DISTNAME}/ebin/ejabberd_tmp_sup.beam 51lib/erlang/lib/${PKGNAME}/ebin/ejabberd_system_monitor.beam
52lib/erlang/lib/${DISTNAME}/ebin/ejabberd_update.beam 52lib/erlang/lib/${PKGNAME}/ebin/ejabberd_tmp_sup.beam
53lib/erlang/lib/${DISTNAME}/ebin/ejabberd_web.beam 53lib/erlang/lib/${PKGNAME}/ebin/ejabberd_update.beam
54lib/erlang/lib/${DISTNAME}/ebin/ejabberd_web_admin.beam 54lib/erlang/lib/${PKGNAME}/ebin/ejabberd_web.beam
55lib/erlang/lib/${DISTNAME}/ebin/ejabberd_zlib.beam 55lib/erlang/lib/${PKGNAME}/ebin/ejabberd_web_admin.beam
56lib/erlang/lib/${DISTNAME}/ebin/ejd2odbc.beam 56lib/erlang/lib/${PKGNAME}/ebin/ejabberd_zlib.beam
57lib/erlang/lib/${DISTNAME}/ebin/eldap.beam 57lib/erlang/lib/${PKGNAME}/ebin/ejd2odbc.beam
58lib/erlang/lib/${DISTNAME}/ebin/eldap_filter.beam 58lib/erlang/lib/${PKGNAME}/ebin/eldap.beam
59lib/erlang/lib/${DISTNAME}/ebin/eldap_pool.beam 59lib/erlang/lib/${PKGNAME}/ebin/eldap_filter.beam
60lib/erlang/lib/${DISTNAME}/ebin/eldap_utils.beam 60lib/erlang/lib/${PKGNAME}/ebin/eldap_pool.beam
61lib/erlang/lib/${DISTNAME}/ebin/extauth.beam 61lib/erlang/lib/${PKGNAME}/ebin/eldap_utils.beam
62lib/erlang/lib/${DISTNAME}/ebin/gen_iq_handler.beam 62lib/erlang/lib/${PKGNAME}/ebin/extauth.beam
63lib/erlang/lib/${DISTNAME}/ebin/gen_mod.beam 63lib/erlang/lib/${PKGNAME}/ebin/gen_iq_handler.beam
64lib/erlang/lib/${DISTNAME}/ebin/gen_pubsub_node.beam 64lib/erlang/lib/${PKGNAME}/ebin/gen_mod.beam
65lib/erlang/lib/${DISTNAME}/ebin/gen_pubsub_nodetree.beam 65lib/erlang/lib/${PKGNAME}/ebin/gen_pubsub_node.beam
66lib/erlang/lib/${DISTNAME}/ebin/iconv.beam 66lib/erlang/lib/${PKGNAME}/ebin/gen_pubsub_nodetree.beam
67lib/erlang/lib/${DISTNAME}/ebin/idna.beam 67lib/erlang/lib/${PKGNAME}/ebin/iconv.beam
68lib/erlang/lib/${DISTNAME}/ebin/jd2ejd.beam 68lib/erlang/lib/${PKGNAME}/ebin/idna.beam
69lib/erlang/lib/${DISTNAME}/ebin/jlib.beam 69lib/erlang/lib/${PKGNAME}/ebin/jd2ejd.beam
70lib/erlang/lib/${DISTNAME}/ebin/mod_adhoc.beam 70lib/erlang/lib/${PKGNAME}/ebin/jlib.beam
71lib/erlang/lib/${DISTNAME}/ebin/mod_announce.beam 71lib/erlang/lib/${PKGNAME}/ebin/mod_adhoc.beam
72lib/erlang/lib/${DISTNAME}/ebin/mod_caps.beam 72lib/erlang/lib/${PKGNAME}/ebin/mod_announce.beam
73lib/erlang/lib/${DISTNAME}/ebin/mod_configure.beam 73lib/erlang/lib/${PKGNAME}/ebin/mod_caps.beam
74lib/erlang/lib/${DISTNAME}/ebin/mod_configure2.beam 74lib/erlang/lib/${PKGNAME}/ebin/mod_configure.beam
75lib/erlang/lib/${DISTNAME}/ebin/mod_disco.beam 75lib/erlang/lib/${PKGNAME}/ebin/mod_configure2.beam
76lib/erlang/lib/${DISTNAME}/ebin/mod_echo.beam 76lib/erlang/lib/${PKGNAME}/ebin/mod_disco.beam
77lib/erlang/lib/${DISTNAME}/ebin/mod_http_bind.beam 77lib/erlang/lib/${PKGNAME}/ebin/mod_echo.beam
78lib/erlang/lib/${DISTNAME}/ebin/mod_http_fileserver.beam 78lib/erlang/lib/${PKGNAME}/ebin/mod_http_bind.beam
79lib/erlang/lib/${DISTNAME}/ebin/mod_irc.beam 79lib/erlang/lib/${PKGNAME}/ebin/mod_http_fileserver.beam
80lib/erlang/lib/${DISTNAME}/ebin/mod_irc_connection.beam 80lib/erlang/lib/${PKGNAME}/ebin/mod_ip_blacklist.beam
81lib/erlang/lib/${DISTNAME}/ebin/mod_last.beam 81lib/erlang/lib/${PKGNAME}/ebin/mod_irc.beam
82lib/erlang/lib/${DISTNAME}/ebin/mod_last_odbc.beam 82lib/erlang/lib/${PKGNAME}/ebin/mod_irc_connection.beam
83lib/erlang/lib/${DISTNAME}/ebin/mod_muc.beam 83lib/erlang/lib/${PKGNAME}/ebin/mod_last.beam
84lib/erlang/lib/${DISTNAME}/ebin/mod_muc_log.beam 84lib/erlang/lib/${PKGNAME}/ebin/mod_last_odbc.beam
85lib/erlang/lib/${DISTNAME}/ebin/mod_muc_room.beam 85lib/erlang/lib/${PKGNAME}/ebin/mod_muc.beam
86lib/erlang/lib/${DISTNAME}/ebin/mod_offline.beam 86lib/erlang/lib/${PKGNAME}/ebin/mod_muc_log.beam
87lib/erlang/lib/${DISTNAME}/ebin/mod_offline_odbc.beam 87lib/erlang/lib/${PKGNAME}/ebin/mod_muc_room.beam
88lib/erlang/lib/${DISTNAME}/ebin/mod_privacy.beam 88lib/erlang/lib/${PKGNAME}/ebin/mod_offline.beam
89lib/erlang/lib/${DISTNAME}/ebin/mod_privacy_odbc.beam 89lib/erlang/lib/${PKGNAME}/ebin/mod_offline_odbc.beam
90lib/erlang/lib/${DISTNAME}/ebin/mod_private.beam 90lib/erlang/lib/${PKGNAME}/ebin/mod_privacy.beam
91lib/erlang/lib/${DISTNAME}/ebin/mod_private_odbc.beam 91lib/erlang/lib/${PKGNAME}/ebin/mod_privacy_odbc.beam
92lib/erlang/lib/${DISTNAME}/ebin/mod_proxy65.beam 92lib/erlang/lib/${PKGNAME}/ebin/mod_private.beam
93lib/erlang/lib/${DISTNAME}/ebin/mod_proxy65_lib.beam 93lib/erlang/lib/${PKGNAME}/ebin/mod_private_odbc.beam
94lib/erlang/lib/${DISTNAME}/ebin/mod_proxy65_service.beam 94lib/erlang/lib/${PKGNAME}/ebin/mod_proxy65.beam
95lib/erlang/lib/${DISTNAME}/ebin/mod_proxy65_sm.beam 95lib/erlang/lib/${PKGNAME}/ebin/mod_proxy65_lib.beam
96lib/erlang/lib/${DISTNAME}/ebin/mod_proxy65_stream.beam 96lib/erlang/lib/${PKGNAME}/ebin/mod_proxy65_service.beam
97lib/erlang/lib/${DISTNAME}/ebin/mod_pubsub.beam 97lib/erlang/lib/${PKGNAME}/ebin/mod_proxy65_sm.beam
98lib/erlang/lib/${DISTNAME}/ebin/mod_register.beam 98lib/erlang/lib/${PKGNAME}/ebin/mod_proxy65_stream.beam
99lib/erlang/lib/${DISTNAME}/ebin/mod_roster.beam 99lib/erlang/lib/${PKGNAME}/ebin/mod_pubsub.beam
100lib/erlang/lib/${DISTNAME}/ebin/mod_roster_odbc.beam 100lib/erlang/lib/${PKGNAME}/ebin/mod_register.beam
101lib/erlang/lib/${DISTNAME}/ebin/mod_service_log.beam 101lib/erlang/lib/${PKGNAME}/ebin/mod_roster.beam
102lib/erlang/lib/${DISTNAME}/ebin/mod_shared_roster.beam 102lib/erlang/lib/${PKGNAME}/ebin/mod_roster_odbc.beam
103lib/erlang/lib/${DISTNAME}/ebin/mod_stats.beam 103lib/erlang/lib/${PKGNAME}/ebin/mod_service_log.beam
104lib/erlang/lib/${DISTNAME}/ebin/mod_time.beam 104lib/erlang/lib/${PKGNAME}/ebin/mod_shared_roster.beam
105lib/erlang/lib/${DISTNAME}/ebin/mod_vcard.beam 105lib/erlang/lib/${PKGNAME}/ebin/mod_stats.beam
106lib/erlang/lib/${DISTNAME}/ebin/mod_vcard_ldap.beam 106lib/erlang/lib/${PKGNAME}/ebin/mod_time.beam
107lib/erlang/lib/${DISTNAME}/ebin/mod_vcard_odbc.beam 107lib/erlang/lib/${PKGNAME}/ebin/mod_vcard.beam
108lib/erlang/lib/${DISTNAME}/ebin/mod_version.beam 108lib/erlang/lib/${PKGNAME}/ebin/mod_vcard_ldap.beam
109lib/erlang/lib/${DISTNAME}/ebin/node_buddy.beam 109lib/erlang/lib/${PKGNAME}/ebin/mod_vcard_odbc.beam
110lib/erlang/lib/${DISTNAME}/ebin/node_club.beam 110lib/erlang/lib/${PKGNAME}/ebin/mod_version.beam
111lib/erlang/lib/${DISTNAME}/ebin/node_default.beam 111lib/erlang/lib/${PKGNAME}/ebin/node_buddy.beam
112lib/erlang/lib/${DISTNAME}/ebin/node_dispatch.beam 112lib/erlang/lib/${PKGNAME}/ebin/node_club.beam
113lib/erlang/lib/${DISTNAME}/ebin/node_pep.beam 113lib/erlang/lib/${PKGNAME}/ebin/node_default.beam
114lib/erlang/lib/${DISTNAME}/ebin/node_private.beam 114lib/erlang/lib/${PKGNAME}/ebin/node_dispatch.beam
115lib/erlang/lib/${DISTNAME}/ebin/node_public.beam 115lib/erlang/lib/${PKGNAME}/ebin/node_pep.beam
116lib/erlang/lib/${DISTNAME}/ebin/nodetree_default.beam 116lib/erlang/lib/${PKGNAME}/ebin/node_private.beam
117lib/erlang/lib/${DISTNAME}/ebin/nodetree_virtual.beam 117lib/erlang/lib/${PKGNAME}/ebin/node_public.beam
118lib/erlang/lib/${DISTNAME}/ebin/odbc_queries.beam 118lib/erlang/lib/${PKGNAME}/ebin/nodetree_default.beam
119lib/erlang/lib/${DISTNAME}/ebin/p1_fsm.beam 119lib/erlang/lib/${PKGNAME}/ebin/nodetree_virtual.beam
120lib/erlang/lib/${DISTNAME}/ebin/p1_mnesia.beam 120lib/erlang/lib/${PKGNAME}/ebin/odbc_queries.beam
121lib/erlang/lib/${DISTNAME}/ebin/ram_file_io_server.beam 121lib/erlang/lib/${PKGNAME}/ebin/p1_fsm.beam
122lib/erlang/lib/${DISTNAME}/ebin/randoms.beam 122lib/erlang/lib/${PKGNAME}/ebin/p1_mnesia.beam
123lib/erlang/lib/${DISTNAME}/ebin/sha.beam 123lib/erlang/lib/${PKGNAME}/ebin/ram_file_io_server.beam
124lib/erlang/lib/${DISTNAME}/ebin/shaper.beam 124lib/erlang/lib/${PKGNAME}/ebin/randoms.beam
125lib/erlang/lib/${DISTNAME}/ebin/stringprep.beam 125lib/erlang/lib/${PKGNAME}/ebin/sha.beam
126lib/erlang/lib/${DISTNAME}/ebin/stringprep_sup.beam 126lib/erlang/lib/${PKGNAME}/ebin/shaper.beam
127lib/erlang/lib/${DISTNAME}/ebin/tls.beam 127lib/erlang/lib/${PKGNAME}/ebin/stringprep.beam
128lib/erlang/lib/${DISTNAME}/ebin/translate.beam 128lib/erlang/lib/${PKGNAME}/ebin/stringprep_sup.beam
129lib/erlang/lib/${DISTNAME}/ebin/xml.beam 129lib/erlang/lib/${PKGNAME}/ebin/tls.beam
130lib/erlang/lib/${DISTNAME}/ebin/xml_stream.beam 130lib/erlang/lib/${PKGNAME}/ebin/translate.beam
131lib/erlang/lib/${DISTNAME}/priv/lib/ejabberd_zlib_drv.so 131lib/erlang/lib/${PKGNAME}/ebin/treap.beam
132lib/erlang/lib/${DISTNAME}/priv/lib/expat_erl.so 132lib/erlang/lib/${PKGNAME}/ebin/xml.beam
133lib/erlang/lib/${DISTNAME}/priv/lib/iconv_erl.so 133lib/erlang/lib/${PKGNAME}/ebin/xml_stream.beam
134lib/erlang/lib/${DISTNAME}/priv/lib/stringprep_drv.so 134lib/erlang/lib/${PKGNAME}/priv/lib/ejabberd_zlib_drv.so
135lib/erlang/lib/${DISTNAME}/priv/lib/tls_drv.so 135lib/erlang/lib/${PKGNAME}/priv/lib/expat_erl.so
136lib/erlang/lib/${DISTNAME}/priv/msgs/ca.msg 136lib/erlang/lib/${PKGNAME}/priv/lib/iconv_erl.so
137lib/erlang/lib/${DISTNAME}/priv/msgs/cs.msg 137lib/erlang/lib/${PKGNAME}/priv/lib/stringprep_drv.so
138lib/erlang/lib/${DISTNAME}/priv/msgs/de.msg 138lib/erlang/lib/${PKGNAME}/priv/lib/tls_drv.so
139lib/erlang/lib/${DISTNAME}/priv/msgs/eo.msg 139lib/erlang/lib/${PKGNAME}/priv/msgs/ca.msg
140lib/erlang/lib/${DISTNAME}/priv/msgs/es.msg 140lib/erlang/lib/${PKGNAME}/priv/msgs/cs.msg
141lib/erlang/lib/${DISTNAME}/priv/msgs/fr.msg 141lib/erlang/lib/${PKGNAME}/priv/msgs/de.msg
142lib/erlang/lib/${DISTNAME}/priv/msgs/gl.msg 142lib/erlang/lib/${PKGNAME}/priv/msgs/eo.msg
143lib/erlang/lib/${DISTNAME}/priv/msgs/it.msg 143lib/erlang/lib/${PKGNAME}/priv/msgs/es.msg
144lib/erlang/lib/${DISTNAME}/priv/msgs/ja.msg 144lib/erlang/lib/${PKGNAME}/priv/msgs/fr.msg
145lib/erlang/lib/${DISTNAME}/priv/msgs/nl.msg 145lib/erlang/lib/${PKGNAME}/priv/msgs/gl.msg
146lib/erlang/lib/${DISTNAME}/priv/msgs/no.msg 146lib/erlang/lib/${PKGNAME}/priv/msgs/it.msg
147lib/erlang/lib/${DISTNAME}/priv/msgs/pl.msg 147lib/erlang/lib/${PKGNAME}/priv/msgs/ja.msg
148lib/erlang/lib/${DISTNAME}/priv/msgs/pt-br.msg 148lib/erlang/lib/${PKGNAME}/priv/msgs/nl.msg
149lib/erlang/lib/${DISTNAME}/priv/msgs/pt.msg 149lib/erlang/lib/${PKGNAME}/priv/msgs/no.msg
150lib/erlang/lib/${DISTNAME}/priv/msgs/ru.msg 150lib/erlang/lib/${PKGNAME}/priv/msgs/pl.msg
151lib/erlang/lib/${DISTNAME}/priv/msgs/sk.msg 151lib/erlang/lib/${PKGNAME}/priv/msgs/pt-br.msg
152lib/erlang/lib/${DISTNAME}/priv/msgs/sv.msg 152lib/erlang/lib/${PKGNAME}/priv/msgs/pt.msg
153lib/erlang/lib/${DISTNAME}/priv/msgs/th.msg 153lib/erlang/lib/${PKGNAME}/priv/msgs/ru.msg
154lib/erlang/lib/${DISTNAME}/priv/msgs/tr.msg 154lib/erlang/lib/${PKGNAME}/priv/msgs/sk.msg
155lib/erlang/lib/${DISTNAME}/priv/msgs/uk.msg 155lib/erlang/lib/${PKGNAME}/priv/msgs/sv.msg
156lib/erlang/lib/${DISTNAME}/priv/msgs/vi.msg 156lib/erlang/lib/${PKGNAME}/priv/msgs/th.msg
157lib/erlang/lib/${DISTNAME}/priv/msgs/wa.msg 157lib/erlang/lib/${PKGNAME}/priv/msgs/tr.msg
158lib/erlang/lib/${DISTNAME}/priv/msgs/zh.msg 158lib/erlang/lib/${PKGNAME}/priv/msgs/uk.msg
 159lib/erlang/lib/${PKGNAME}/priv/msgs/vi.msg
 160lib/erlang/lib/${PKGNAME}/priv/msgs/wa.msg
 161lib/erlang/lib/${PKGNAME}/priv/msgs/zh.msg
159sbin/ejabberdctl 162sbin/ejabberdctl
160share/doc/${DISTNAME}/Makefile 163share/doc/${PKGNAME}/Makefile
161share/doc/${DISTNAME}/COPYING 164share/doc/${PKGNAME}/COPYING
162share/doc/${DISTNAME}/dev.html 165share/doc/${PKGNAME}/dev.html
163share/doc/${DISTNAME}/dev.tex 166share/doc/${PKGNAME}/dev.tex
164share/doc/${DISTNAME}/disco.png 167share/doc/${PKGNAME}/discorus.png
165share/doc/${DISTNAME}/discorus.png 168share/doc/${PKGNAME}/features.html
166share/doc/${DISTNAME}/features.html 169share/doc/${PKGNAME}/features.tex
167share/doc/${DISTNAME}/features.tex 170share/doc/${PKGNAME}/flow.dot
168share/doc/${DISTNAME}/flow.dot 171share/doc/${PKGNAME}/guide.html
169share/doc/${DISTNAME}/guide.html 172share/doc/${PKGNAME}/guide.tex
170share/doc/${DISTNAME}/guide.tex 173share/doc/${PKGNAME}/guide.tex.orig
171share/doc/${DISTNAME}/guide.pdf 174share/doc/${PKGNAME}/introduction.tex
172share/doc/${DISTNAME}/introduction.tex 175share/doc/${PKGNAME}/logo.png
173share/doc/${DISTNAME}/logo.png 176share/doc/${PKGNAME}/mod_http_bind.tex
174share/doc/${DISTNAME}/mod_http_bind.tex 177share/doc/${PKGNAME}/mod_http_fileserver.tex
175share/doc/${DISTNAME}/mod_http_fileserver.tex 178share/doc/${PKGNAME}/release_notes_0.9.1.txt
176share/doc/${DISTNAME}/release_notes_0.9.1.txt 179share/doc/${PKGNAME}/release_notes_0.9.8.txt
177share/doc/${DISTNAME}/release_notes_0.9.8.txt 180share/doc/${PKGNAME}/release_notes_0.9.txt
178share/doc/${DISTNAME}/release_notes_0.9.txt 181share/doc/${PKGNAME}/release_notes_1.0.0.txt
179share/doc/${DISTNAME}/release_notes_1.0.0.txt 182share/doc/${PKGNAME}/release_notes_1.1.0.txt
180share/doc/${DISTNAME}/release_notes_1.1.0.txt 183share/doc/${PKGNAME}/release_notes_1.1.1.txt
181share/doc/${DISTNAME}/release_notes_1.1.1.txt 184share/doc/${PKGNAME}/release_notes_1.1.2.txt
182share/doc/${DISTNAME}/release_notes_1.1.2.txt 185share/doc/${PKGNAME}/release_notes_1.1.3.txt
183share/doc/${DISTNAME}/release_notes_1.1.3.txt 186share/doc/${PKGNAME}/release_notes_1.1.4.txt
184share/doc/${DISTNAME}/release_notes_1.1.4.txt 187share/doc/${PKGNAME}/release_notes_2.0.0.txt
185share/doc/${DISTNAME}/release_notes_2.0.0.txt 188share/doc/${PKGNAME}/release_notes_2.0.1.txt
186share/doc/${DISTNAME}/version.tex 189share/doc/${PKGNAME}/version.tex
187share/doc/${DISTNAME}/webadmmain.png 190share/doc/${PKGNAME}/webadmmain.png
188share/doc/${DISTNAME}/webadmmainru.png 191share/doc/${PKGNAME}/webadmmainru.png
189share/doc/${DISTNAME}/yozhikheader.png 192share/doc/${PKGNAME}/yozhikheader.png
190share/doc/${DISTNAME}/api/Makefile 193share/doc/${PKGNAME}/api/Makefile
191share/doc/${DISTNAME}/api/process-one.css 194share/doc/${PKGNAME}/api/process-one.css
192share/doc/${DISTNAME}/api/overview.edoc 195share/doc/${PKGNAME}/api/overview.edoc
 196share/doc/${PKGNAME}/release_notes_${PKGVERSION}.txt
 197share/examples/ejabberd/ejabberd.cfg
 198share/examples/ejabberd/ejabberdctl.cfg
 199share/examples/ejabberd/inetrc
193share/examples/rc.d/ejabberd 200share/examples/rc.d/ejabberd
194@dirrm share/examples/ejabberd 201@dirrm share/examples/ejabberd
195@dirrm share/doc/${DISTNAME}/api 202@dirrm share/doc/${PKGNAME}/api
196@dirrm share/doc/${DISTNAME} 203@dirrm share/doc/${PKGNAME}
197@dirrm lib/erlang/lib/${DISTNAME}/priv/msgs 204@dirrm lib/erlang/lib/${PKGNAME}/priv/bin
198@dirrm lib/erlang/lib/${DISTNAME}/priv/lib 205@dirrm lib/erlang/lib/${PKGNAME}/priv/msgs
199@dirrm lib/erlang/lib/${DISTNAME}/priv 206@dirrm lib/erlang/lib/${PKGNAME}/priv/lib
200@dirrm lib/erlang/lib/${DISTNAME}/ebin 207@dirrm lib/erlang/lib/${PKGNAME}/priv
201@dirrm lib/erlang/lib/${DISTNAME} 208@dirrm lib/erlang/lib/${PKGNAME}/ebin
 209@dirrm lib/erlang/lib/${PKGNAME}
202@unexec ${RMDIR} %D/etc/ejabberd 2>/dev/null || ${TRUE} 210@unexec ${RMDIR} %D/etc/ejabberd 2>/dev/null || ${TRUE}

cvs diff -r1.5 -r1.6 pkgsrc/chat/ejabberd/Makefile (expand / switch to unified diff)

--- pkgsrc/chat/ejabberd/Makefile 2008/04/24 08:04:59 1.5
+++ pkgsrc/chat/ejabberd/Makefile 2008/11/12 13:13:59 1.6
@@ -1,29 +1,30 @@ @@ -1,29 +1,30 @@
1# $NetBSD: Makefile,v 1.5 2008/04/24 08:04:59 martti Exp $ 1# $NetBSD: Makefile,v 1.6 2008/11/12 13:13:59 martti Exp $
2 2
3DISTNAME= ejabberd-2.0.0 3DISTNAME= ejabberd-2.0.2
4PKGREVISION= 2 4#PKGREVISION= 1
5CATEGORIES= chat 5CATEGORIES= chat
6MASTER_SITES= http://www.process-one.net/downloads/ejabberd/2.0.0/ 6MASTER_SITES= http://www.process-one.net/downloads/ejabberd/2.0.2/
7 7
8MAINTAINER= martti@NetBSD.org 8MAINTAINER= martti@NetBSD.org
9HOMEPAGE= http://www.ejabberd.im/ 9HOMEPAGE= http://www.ejabberd.im/
10COMMENT= Free and Open Source distributed fault-tolerant Jabber server 10COMMENT= Free and Open Source distributed fault-tolerant Jabber server
11 11
12CONFLICTS+= jabberd-[0-9]* 12CONFLICTS+= jabberd-[0-9]*
13 13
14GNU_CONFIGURE= yes 14GNU_CONFIGURE= yes
15USE_TOOLS+= gmake 15USE_TOOLS+= gmake
16 16
 17WRKSRC= ${WRKDIR}/${PKGNAME_NOREV}
17# much prefer to be explicit about the configure settings rather than 18# much prefer to be explicit about the configure settings rather than
18# depending on the defaults to continue to be sane or same between versions 19# depending on the defaults to continue to be sane or same between versions
19CONFIGURE_ARGS+= --enable-odbc 20CONFIGURE_ARGS+= --enable-odbc
20CONFIGURE_ARGS+= --enable-mod_irc 21CONFIGURE_ARGS+= --enable-mod_irc
21CONFIGURE_ARGS+= --enable-mod_muc 22CONFIGURE_ARGS+= --enable-mod_muc
22CONFIGURE_ARGS+= --enable-eldap 23CONFIGURE_ARGS+= --enable-eldap
23CONFIGURE_ARGS+= --enable-web 24CONFIGURE_ARGS+= --enable-web
24CONFIGURE_ARGS+= --enable-tls 25CONFIGURE_ARGS+= --enable-tls
25CONFIGURE_ARGS+= --enable-odbc 26CONFIGURE_ARGS+= --enable-odbc
26CONFIGURE_ARGS+= --enable-ejabberd_zlib 27CONFIGURE_ARGS+= --enable-ejabberd_zlib
27CONFIGURE_ARGS+= --with-openssl=${BUILDLINK_PREFIX.openssl} 28CONFIGURE_ARGS+= --with-openssl=${BUILDLINK_PREFIX.openssl}
28CONFIGURE_ARGS+= --with-zlib=${BUILDLINK_PREFIX.zlib} 29CONFIGURE_ARGS+= --with-zlib=${BUILDLINK_PREFIX.zlib}
29CONFIGURE_ARGS+= --with-expat=${BUILDLINK_PREFIX.expat} 30CONFIGURE_ARGS+= --with-expat=${BUILDLINK_PREFIX.expat}
@@ -65,39 +66,39 @@ OWN_DIRS_PERMS+= ${EJABBERD_PIDDIR} ${EJ @@ -65,39 +66,39 @@ OWN_DIRS_PERMS+= ${EJABBERD_PIDDIR} ${EJ
65OWN_DIRS_PERMS+= ${EJABBERD_LOGDIR} ${EJABBERD_USER} ${EJABBERD_GROUP} 0770 66OWN_DIRS_PERMS+= ${EJABBERD_LOGDIR} ${EJABBERD_USER} ${EJABBERD_GROUP} 0770
66OWN_DIRS_PERMS+= ${EJABBERD_DB} ${EJABBERD_USER} ${EJABBERD_GROUP} 0770 67OWN_DIRS_PERMS+= ${EJABBERD_DB} ${EJABBERD_USER} ${EJABBERD_GROUP} 0770
67 68
68FILES_SUBST+= JABBERD_USER=${EJABBERD_USER} 69FILES_SUBST+= JABBERD_USER=${EJABBERD_USER}
69FILES_SUBST+= JABBERD_LOGDIR=${EJABBERD_LOGDIR} 70FILES_SUBST+= JABBERD_LOGDIR=${EJABBERD_LOGDIR}
70 71
71PLIST_SUBST+= EJABBERD_EXDIR=${EJABBERD_EXDIR} 72PLIST_SUBST+= EJABBERD_EXDIR=${EJABBERD_EXDIR}
72 73
73PKG_GROUPS+= ${EJABBERD_GROUP} 74PKG_GROUPS+= ${EJABBERD_GROUP}
74PKG_USERS+= ${EJABBERD_USER}:${EJABBERD_GROUP} 75PKG_USERS+= ${EJABBERD_USER}:${EJABBERD_GROUP}
75 76
76EGDIR= ${PREFIX}/${EJABBERD_EXDIR} 77EGDIR= ${PREFIX}/${EJABBERD_EXDIR}
77 78
78INSTALLATION_DIRS+= ${PREFIX}/share/doc/${DISTNAME} 79INSTALLATION_DIRS+= ${PREFIX}/share/doc/${PKGNAME_NOREV}
79INSTALLATION_DIRS+= ${PREFIX}/share/doc/${DISTNAME}/api 80INSTALLATION_DIRS+= ${PREFIX}/share/doc/${PKGNAME_NOREV}/api
80INSTALLATION_DIRS+= ${EGDIR} 81INSTALLATION_DIRS+= ${EGDIR}
81 82
82CONF_FILES= ${EGDIR}/ejabberd.cfg ${PKG_SYSCONFDIR}/ejabberd.cfg 83CONF_FILES= ${EGDIR}/ejabberd.cfg ${PKG_SYSCONFDIR}/ejabberd.cfg
83CONF_FILES+= ${EGDIR}/ejabberdctl.cfg ${PKG_SYSCONFDIR}/ejabberdctl.cfg 84CONF_FILES+= ${EGDIR}/ejabberdctl.cfg ${PKG_SYSCONFDIR}/ejabberdctl.cfg
84CONF_FILES+= ${EGDIR}/inetrc ${PKG_SYSCONFDIR}/inetrc 85CONF_FILES+= ${EGDIR}/inetrc ${PKG_SYSCONFDIR}/inetrc
85 86
86post-install: 87post-install:
87 ${INSTALL_DATA} ${WRKSRC}/doc/*.* ${PREFIX}/share/doc/${DISTNAME} 88 ${INSTALL_DATA} ${WRKSRC}/doc/*.* ${PREFIX}/share/doc/${PKGNAME_NOREV}
88 ${INSTALL_DATA} ${WRKSRC}/doc/Makefile ${PREFIX}/share/doc/${DISTNAME} 89 ${INSTALL_DATA} ${WRKSRC}/doc/Makefile ${PREFIX}/share/doc/${PKGNAME_NOREV}
89 ${INSTALL_DATA} ${WRKSRC}/doc/COPYING ${PREFIX}/share/doc/${DISTNAME} 90 ${INSTALL_DATA} ${WRKSRC}/doc/COPYING ${PREFIX}/share/doc/${PKGNAME_NOREV}
90 ${INSTALL_DATA} ${WRKSRC}/doc/api/* ${PREFIX}/share/doc/${DISTNAME}/api 91 ${INSTALL_DATA} ${WRKSRC}/doc/api/* ${PREFIX}/share/doc/${PKGNAME_NOREV}/api
91 92
92SUBST_CLASSES+= paths 93SUBST_CLASSES+= paths
93SUBST_MESSAGE.paths= Localizing paths 94SUBST_MESSAGE.paths= Localizing paths
94SUBST_STAGE.paths= pre-configure 95SUBST_STAGE.paths= pre-configure
95SUBST_FILES.paths= src/Makefile.in 96SUBST_FILES.paths= src/Makefile.in
96SUBST_FILES.paths+= src/ejabberdctl.template 97SUBST_FILES.paths+= src/ejabberdctl.template
97SUBST_SED.paths+= -e 's,@PKG_SYSCONFDIR@,${PKG_SYSCONFDIR},g' 98SUBST_SED.paths+= -e 's,@PKG_SYSCONFDIR@,${PKG_SYSCONFDIR},g'
98SUBST_SED.paths+= -e 's,@JABBERD_LOGDIR@,${EJABBERD_LOGDIR},g' 99SUBST_SED.paths+= -e 's,@JABBERD_LOGDIR@,${EJABBERD_LOGDIR},g'
99SUBST_SED.paths+= -e 's,@EJABBERD_LOGDIR@,${EJABBERD_LOGDIR},g' 100SUBST_SED.paths+= -e 's,@EJABBERD_LOGDIR@,${EJABBERD_LOGDIR},g'
100SUBST_SED.paths+= -e 's,@EJABBERD_DB@,${EJABBERD_DB},g' 101SUBST_SED.paths+= -e 's,@EJABBERD_DB@,${EJABBERD_DB},g'
101SUBST_SED.paths+= -e 's,@DISTNAME@,${DISTNAME},g' 102SUBST_SED.paths+= -e 's,@DISTNAME@,${DISTNAME},g'
102SUBST_SED.paths+= -e 's,@EJABBERD_VARDIR@,${VARBASE},g' 103SUBST_SED.paths+= -e 's,@EJABBERD_VARDIR@,${VARBASE},g'
103 104

cvs diff -r1.3 -r1.4 pkgsrc/chat/ejabberd/distinfo (expand / switch to unified diff)

--- pkgsrc/chat/ejabberd/distinfo 2008/04/24 08:04:13 1.3
+++ pkgsrc/chat/ejabberd/distinfo 2008/11/12 13:13:59 1.4
@@ -1,10 +1,14 @@ @@ -1,10 +1,14 @@
1$NetBSD: distinfo,v 1.3 2008/04/24 08:04:13 martti Exp $ 1$NetBSD: distinfo,v 1.4 2008/11/12 13:13:59 martti Exp $
2 2
3SHA1 (ejabberd-2.0.0.tar.gz) = d70257c1e75f59b7284d52c038431664cfd53e08 3SHA1 (ejabberd-2.0.2.tar.gz) = 7c82082b941277fe18aac25ca9b2016f25dc8472
4RMD160 (ejabberd-2.0.0.tar.gz) = 9e7bb30825f2d480d75516136fcc62a49d871255 4RMD160 (ejabberd-2.0.2.tar.gz) = b24c1c2d6ce8c56fd26f28a98b89d99890dbad72
5Size (ejabberd-2.0.0.tar.gz) = 1387404 bytes 5Size (ejabberd-2.0.2.tar.gz) = 1040817 bytes
6SHA1 (patch-aa) = 32f4609471f189284baac2ae51522558be080e19 6SHA1 (patch-aa) = 5b0c2994aad402cf13cc9531465513aad69de1e0
7SHA1 (patch-ab) = a083116beb37cd19a011993e009b57a0a4b202bf 7SHA1 (patch-ab) = a083116beb37cd19a011993e009b57a0a4b202bf
8SHA1 (patch-ac) = 23a7528ac5f3c9f1e7e89062e43482b8bf103e0e 8SHA1 (patch-ac) = 32387347e9581500cbdbdec971b0825c4043d1f1
9SHA1 (patch-ad) = ece5a64b4beacd967bdb24d42cf105cd3bb1b7b6 9SHA1 (patch-ad) = a6504e8454878c97e434040a2f9136174b994c0d
10SHA1 (patch-ae) = 32b4a66b4ca4b329abae632f0b7a4e62509237c6 10SHA1 (patch-ae) = c1c615a1d2e28d05d069f2bafa30179437922536
 11SHA1 (patch-af) = 908ebaaea76de53cc22a53289d3b93189767d40c
 12SHA1 (patch-ag) = 4cb80b3c530ddb561693a82b55254b322cb41a97
 13SHA1 (patch-ah) = 29b4440454a138908fe2c6937c65658e4cd689ba
 14SHA1 (patch-ai) = 4b51670e283e7facd3142601d8560821b7829505

cvs diff -r1.2 -r1.3 pkgsrc/chat/ejabberd/patches/patch-aa (expand / switch to unified diff)

--- pkgsrc/chat/ejabberd/patches/patch-aa 2008/04/24 08:04:13 1.2
+++ pkgsrc/chat/ejabberd/patches/patch-aa 2008/11/12 13:13:59 1.3
@@ -1,23 +1,26 @@ @@ -1,23 +1,26 @@
1$NetBSD: patch-aa,v 1.2 2008/04/24 08:04:13 martti Exp $ 1$NetBSD: patch-aa,v 1.3 2008/11/12 13:13:59 martti Exp $
2 2
3Modified for pkgsrc 3Modified for pkgsrc
4 4
5--- src/Makefile.in.orig 2008-01-16 12:33:27.000000000 +0200 5--- src/Makefile.in.orig 2008-08-27 12:37:52.000000000 +0300
6+++ src/Makefile.in 2008-02-11 13:38:21.000000000 +0200 6+++ src/Makefile.in
7@@ -50,13 +50,13 @@ 7@@ -58,15 +58,15 @@ BEAMS = $(SOURCES:.erl=.beam)
8  8
9 DESTDIR = 9 DESTDIR =
10  10
11-EJABBERDDIR = $(DESTDIR)@prefix@/var/lib/ejabberd 11-EJABBERDDIR = $(DESTDIR)@localstatedir@/lib/ejabberd
12+EJABBERDDIR = $(DESTDIR)@prefix@/lib/erlang/lib/@DISTNAME@ 12+EJABBERDDIR = $(DESTDIR)@prefix@/lib/erlang/lib/@DISTNAME@
13 BEAMDIR = $(EJABBERDDIR)/ebin 13 BEAMDIR = $(EJABBERDDIR)/ebin
 14-SPOOLDIR = $(EJABBERDDIR)/db
 15+SPOOLDIR = @EJABBERD_VARDIR@/spool/ejabberd/db/$NODE
14 PRIVDIR = $(EJABBERDDIR)/priv 16 PRIVDIR = $(EJABBERDDIR)/priv
15 SODIR = $(PRIVDIR)/lib 17 SODIR = $(PRIVDIR)/lib
 18 PBINDIR = $(PRIVDIR)/bin
16 MSGSDIR = $(PRIVDIR)/msgs 19 MSGSDIR = $(PRIVDIR)/msgs
17-LOGDIR = $(DESTDIR)@prefix@/var/log/ejabberd 20-LOGDIR = $(DESTDIR)@localstatedir@/log/ejabberd
18-ETCDIR = $(DESTDIR)@prefix@/etc/ejabberd 21-ETCDIR = $(DESTDIR)@sysconfdir@/ejabberd
19+LOGDIR = $(DESTDIR)/@JABBERD_LOGDIR@ 22+LOGDIR = $(DESTDIR)/@JABBERD_LOGDIR@
20+ETCDIR = $(DESTDIR)@prefix@/share/examples/ejabberd 23+ETCDIR = $(DESTDIR)@prefix@/share/examples/ejabberd
21 SBINDIR = $(DESTDIR)@prefix@/sbin 24 SBINDIR = $(DESTDIR)@sbindir@
22  25
23 ifeq ($(shell uname),Darwin) 26 ifeq ($(shell uname),Darwin)

cvs diff -r1.2 -r1.3 pkgsrc/chat/ejabberd/patches/patch-ae (expand / switch to unified diff)

--- pkgsrc/chat/ejabberd/patches/patch-ae 2008/04/22 11:31:05 1.2
+++ pkgsrc/chat/ejabberd/patches/patch-ae 2008/11/12 13:13:59 1.3
@@ -1,37 +1,38 @@ @@ -1,37 +1,38 @@
1$NetBSD: patch-ae,v 1.2 2008/04/22 11:31:05 martti Exp $ 1$NetBSD: patch-ae,v 1.3 2008/11/12 13:13:59 martti Exp $
2 2
3Keep things tidy (nothing under /usr/pkg/var) 3Modified for pkgsrc
4 4
5--- src/ejabberdctl.template.orig 2008-02-22 16:42:12.000000000 +0200 5--- src/ejabberdctl.template.orig 2008-08-27 12:37:52.000000000 +0300
6+++ src/ejabberdctl.template 2008-02-22 17:45:01.000000000 +0200 6+++ src/ejabberdctl.template
7@@ -13,8 +13,8 @@ 7@@ -14,8 +14,8 @@ ERLANG_NODE=$NODE@$HOST
8 ERLANG_NODE=$NODE@$HOST 8 ERL=@erl@
9 ROOTDIR=@rootdir@ 9 ROOTDIR=@rootdir@
10 EJABBERD_CONFIG_PATH=$ROOTDIR/etc/ejabberd/ejabberd.cfg 10 EJABBERD_CONFIG_PATH=$ROOTDIR/etc/ejabberd/ejabberd.cfg
11-LOGS_DIR=$ROOTDIR/var/log/ejabberd/ 11-LOGS_DIR=$ROOTDIR/var/log/ejabberd/
12-EJABBERD_DB=$ROOTDIR/var/lib/ejabberd/db/$NODE 12-EJABBERD_DB=$ROOTDIR/var/lib/ejabberd/db/$NODE
13+LOGS_DIR=@EJABBERD_LOGDIR@ 13+LOGS_DIR=@EJABBERD_LOGDIR@
14+EJABBERD_DB=@EJABBERD_VARDIR@/spool/ejabberd/db/$NODE 14+EJABBERD_DB=@EJABBERD_VARDIR@/spool/ejabberd/db/$NODE
15  15
16 # read custom configuration 16 # read custom configuration
17 CONFIG=$ROOTDIR/etc/ejabberd/ejabberdctl.cfg 17 CONFIG=$ROOTDIR/etc/ejabberd/ejabberdctl.cfg
18@@ -42,15 +42,15 @@ 18@@ -43,16 +43,16 @@ NAME=-name
19 ERLANG_OPTS="+K $POLL -smp $SMP +P $ERL_PROCESSES" 19 ERLANG_OPTS="+K $POLL -smp $SMP +P $ERL_PROCESSES"
20  20
21 # define additional environment variables 21 # define additional environment variables
22-EJABBERD_EBIN=$ROOTDIR/var/lib/ejabberd/ebin 22-EJABBERD_EBIN=$ROOTDIR/var/lib/ejabberd/ebin
23-EJABBERD_MSGS_PATH=$ROOTDIR/var/lib/ejabberd/priv/msgs 23-EJABBERD_MSGS_PATH=$ROOTDIR/var/lib/ejabberd/priv/msgs
24-EJABBERD_SO_PATH=$ROOTDIR/var/lib/ejabberd/priv/lib 24-EJABBERD_SO_PATH=$ROOTDIR/var/lib/ejabberd/priv/lib
25+EJABBERD_EBIN=$ROOTDIR/lib/erlang/lib/@DISTNAME@/ebin 25+EJABBERD_EBIN=$ROOTDIR/lib/erlang/lib/@DISTNAME@/ebin
26+EJABBERD_MSGS_PATH=$ROOTDIR/lib/erlang/lib/@DISTNAME@/priv/msgs 26+EJABBERD_MSGS_PATH=$ROOTDIR/lib/erlang/lib/@DISTNAME@/priv/msgs
27+EJABBERD_SO_PATH=$ROOTDIR/lib/erlang/lib/@DISTNAME@/priv/lib 27+EJABBERD_SO_PATH=$ROOTDIR/lib/erlang/lib/@DISTNAME@/priv/lib
 28 EJABBERD_BIN_PATH=$ROOTDIR/var/lib/ejabberd/priv/bin
28 EJABBERD_LOG_PATH=$LOGS_DIR/ejabberd.log 29 EJABBERD_LOG_PATH=$LOGS_DIR/ejabberd.log
29 SASL_LOG_PATH=$LOGS_DIR/sasl.log 30 SASL_LOG_PATH=$LOGS_DIR/sasl.log
30 DATETIME=`date "+%Y%m%d-%H%M%S"` 31 DATETIME=`date "+%Y%m%d-%H%M%S"`
31 ERL_CRASH_DUMP=$LOGS_DIR/erl_crash_$DATETIME.dump 32 ERL_CRASH_DUMP=$LOGS_DIR/erl_crash_$DATETIME.dump
32 ERL_INETRC=$ROOTDIR/etc/ejabberd/inetrc 33 ERL_INETRC=$ROOTDIR/etc/ejabberd/inetrc
33-HOME=$ROOTDIR/var/lib/ejabberd 34-HOME=$ROOTDIR/var/lib/ejabberd
34+HOME=@EJABBERD_VARDIR@/spool/ejabberd/db/$NODE 35+HOME=@EJABBERD_VARDIR@/spool/ejabberd/db/$NODE
35  36
36 # export global variables 37 # export global variables
37 export EJABBERD_CONFIG_PATH 38 export EJABBERD_CONFIG_PATH

cvs diff -r1.1.1.1 -r1.2 pkgsrc/chat/ejabberd/patches/Attic/patch-ac (expand / switch to unified diff)

--- pkgsrc/chat/ejabberd/patches/Attic/patch-ac 2008/03/10 08:58:32 1.1.1.1
+++ pkgsrc/chat/ejabberd/patches/Attic/patch-ac 2008/11/12 13:13:59 1.2
@@ -1,51 +1,272 @@ @@ -1,51 +1,272 @@
1$NetBSD: patch-ac,v 1.1.1.1 2008/03/10 08:58:32 martti Exp $ 1$NetBSD: patch-ac,v 1.2 2008/11/12 13:13:59 martti Exp $
2 2
3Patch from Fabrice Colliot: support for multiple listeners on same port 3Modified to use IPv6/v4 patch (https://support.process-one.net/browse/EJAB-389)
4number (eg IPv4 and IPv6 simultaneously). 
5 4
6--- src/ejabberd.cfg.example.orig 2008-01-16 12:33:27.000000000 +0200 5--- doc/guide.tex.orig 2008-08-27 12:37:52.000000000 +0300
7+++ src/ejabberd.cfg.example 2008-02-14 15:25:12.000000000 +0200 6+++ doc/guide.tex
8@@ -106,7 +106,7 @@ 7@@ -713,34 +713,80 @@ The option \option{listen} defines for w
9 {listen, 8 will listen and what services will be run on them. Each element of the list is a
10 [ 9 tuple with the following elements:
 10 \begin{itemize}
 11-\item Port number.
 12-\item Module that serves this port.
 13-\item Options to this module.
 14+\item Port number. Optionally also the IP address.
 15+\item Listening module that serves this port.
 16+\item Options for the TCP socket and for the listening module.
 17 \end{itemize}
 18
 19+With the basic syntax the ports will listen on all IPv4 network addresses:
 20+\begin{verbatim}
 21+{listen, [
 22+ {<port-number>, <module>, [<options>]},
 23+ {<port-number>, <module>, [<options>]},
 24+ ...
 25+ {<port-number>, <module>, [<options>]}
 26+ ]}.
 27+\end{verbatim}
 28+
 29+It is possible to specify the IP address for a port using the full syntax:
 30+\begin{verbatim}
 31+ {{<port-number>, <ip-address>}, <module>, [<options>]}
 32+\end{verbatim}
 33+
 34+
 35+\makesubsubsection{listened-port}{Port Number and IP Address}
 36+
 37+The port number defines which port to listen for incoming connections.
 38+It can be a Jabber/XMPP standard port
 39+(see section \ref{firewall}) or any other valid port number.
 40+
 41+The IP address can be represented with a string
 42+or an Erlang tuple with decimal or hexadecimal numbers.
 43+The socket will listen only in that network interface.
 44+It is possible to specify a generic address,
 45+so \ejabberd{} will listen in all addresses.
 46+Depending in the type of the IP address, IPv4 or IPv6 will be used.
 47+
 48+Some example values for IP address:
 49+\begin{itemize}
 50+\item \verb|"0.0.0.0"| to listen in all IPv4 network interfaces. This is the default value when no IP is specified.
 51+\item \verb|"::"| to listen in all IPv6 network interfaces
 52+\item \verb|"10.11.12.13"| is the IPv4 address \verb|10.11.12.13|
 53+\item \verb|"::FFFF:127.0.0.1"| is the IPv6 address \verb|::FFFF:127.0.0.1/128|
 54+\item \verb|{10, 11, 12, 13}| is the IPv4 address \verb|10.11.12.13|
 55+\item \verb|{0, 0, 0, 0, 0, 65535, 32512, 1}| is the IPv6 address \verb|::FFFF:127.0.0.1/128|
 56+\item \verb|{16#fdca, 16#8ab6, 16#a243, 16#75ef, 0, 0, 0, 1}| is the IPv6 address \verb|FDCA:8AB6:A243:75EF::1/128|
 57+\end{itemize}
 58+
 59+
 60+\makesubsubsection{listened-module}{Listening Module}
 61+
 62 \ind{modules!ejabberd\_c2s}\ind{modules!ejabberd\_s2s\_in}\ind{modules!ejabberd\_service}\ind{modules!ejabberd\_http}\ind{protocols!XEP-0114: Jabber Component Protocol}
 63 The available modules, their purpose and the options allowed by each one are:
 64 \begin{description}
 65 \titem{\texttt{ejabberd\_c2s}}
 66 Handles c2s connections.\\
 67- Options: \texttt{access}, \texttt{certfile}, \texttt{inet6},
 68- \texttt{ip}, \texttt{max\_stanza\_size}, \texttt{shaper},
 69+ Options: \texttt{access}, \texttt{certfile},
 70+ \texttt{max\_stanza\_size}, \texttt{shaper},
 71 \texttt{starttls}, \texttt{starttls\_required}, \texttt{tls},
 72 \texttt{zlib}
 73 \titem{\texttt{ejabberd\_s2s\_in}}
 74 Handles incoming s2s connections.\\
 75- Options: \texttt{inet6}, \texttt{ip}, \texttt{max\_stanza\_size}
 76+ Options: \texttt{max\_stanza\_size}
 77 \titem{\texttt{ejabberd\_service}}
 78 Interacts with \footahref{http://www.ejabberd.im/tutorials-transports}{external components}
 79 (as defined in the Jabber Component Protocol (\xepref{0114}).\\
 80- Options: \texttt{access}, \texttt{hosts}, \texttt{inet6},
 81- \texttt{ip}, \texttt{shaper}, \texttt{service\_check\_from}
 82+ Options: \texttt{access}, \texttt{hosts},
 83+ \texttt{shaper}, \texttt{service\_check\_from}
 84 \titem{\texttt{ejabberd\_http}}
 85 Handles incoming HTTP connections.\\
 86 Options: \texttt{certfile}, \texttt{http\_bind}, \texttt{http\_poll},
 87- \texttt{inet6}, \texttt{ip}, \texttt{request\_handlers}, \texttt{tls}, \texttt{web\_admin}\\
 88+ \texttt{request\_handlers}, \texttt{tls}, \texttt{web\_admin}\\
 89 \end{description}
11  90
12- {5222, ejabberd_c2s, [ 91+
13+ {1, 5222, ejabberd_c2s, [ 92+\makesubsubsection{listened-options}{Options}
 93+
 94 This is a detailed description of each option allowed by the listening modules:
 95 \begin{description}
 96 \titem{\{access, <access rule>\}} \ind{options!access}This option defines
 97@@ -785,13 +831,7 @@ This is a detailed description of each o
 98 is also needed in the \Jabber{} client. Remark also that HTTP Polling can be
 99 interesting to host a web-based \Jabber{} client such as
 100 \footahref{http://jwchat.sourceforge.net/}{JWChat}.
 101- \titem{inet6} \ind{options!inet6}\ind{IPv6}Set up the socket for IPv6 instead of IPv4.
 102- Note: this option is not required for S2S outgoing connections,
 103- because when ejabberd attempts to establish a S2S outgoing connection
 104- it first tries IPv4, and if that fails it attempts with IPv6.
 105- \titem{\{ip, IPAddress\}} \ind{options!ip}This option specifies which network
 106- interface to listen for. For example \verb|{ip, {192, 168, 1, 1}}|.
 107- \titem{\{max\_stanza\_size, Size\}}
 108+ \titem{\{max\_stanza\_size, Size\}}
 109 \ind{options!max\_stanza\_size}This option specifies an
 110 approximate maximum size in bytes of XML stanzas. Approximate,
 111 because it is calculated with the precision of one block of readed
 112@@ -838,7 +878,7 @@ This is a detailed description of each o
 113 option will not affect connections (there will be no stream compression).
 114 \end{description}
14  115
15 %% 116-There are some additional global options:
16 %% If TLS is compiled and you installed a SSL 117+There are some additional global options that can be specified in the ejabberd configuration file (outside \term{listen}):
17@@ -123,14 +123,14 @@ 118 \begin{description}
18 %% 119 \titem{\{s2s\_use\_starttls, true|false\}}
19 %% To enable the old SSL connection method in port 5223: 120 \ind{options!s2s\_use\_starttls}\ind{STARTTLS}This option defines whether to
20 %% 121@@ -859,6 +899,8 @@ There are some additional global options
21- %%{5223, ejabberd_c2s, [ 122 Specified in seconds. The default value is 300 seconds (5 minutes).
22+ %%{2, 5223, ejabberd_c2s, [ 123 \end{description}
23 %% {access, c2s}, 
24 %% {shaper, c2s_shaper}, 
25 %% {certfile, "/path/to/ssl.pem"}, tls, 
26 %% {max_stanza_size, 65536} 
27 %% ]}, 
28  124
 125+\makesubsubsection{listened-examples}{Examples}
 126+
 127 For example, the following simple configuration defines:
 128 \begin{itemize}
 129 \item There are three domains. The default certificate file is \term{server.pem}.
 130@@ -866,17 +908,17 @@ However, the c2s and s2s connections to
 131 \item Port 5222 listens for c2s connections with STARTTLS,
 132 and also allows plain connections for old clients.
 133 \item Port 5223 listens for c2s connections with the old SSL.
 134-\item Port 5269 listens for s2s connections with STARTTLS.
 135+\item Port 5269 listens for s2s connections with STARTTLS. The socket is set for IPv6 instead of IPv4.
 136 \item Port 5280 listens for HTTP requests, and serves the HTTP Poll service.
 137 \item Port 5281 listens for HTTP requests, and serves the Web Admin using HTTPS as explained in
 138- section~\ref{webadmin}.
 139+ section~\ref{webadmin}. The socket only listens connections to the IP address 127.0.0.1.
 140 \end{itemize}
 141 \begin{verbatim}
 142 {hosts, ["example.com", "example.org", "example.net"]}.
 143 {listen,
 144 [
 145 {5222, ejabberd_c2s, [
 146- {access, c2s},
 147+ {access, c2s},
 148 {shaper, c2s_shaper},
 149 starttls, {certfile, "/etc/ejabberd/server.pem"},
 150 {max_stanza_size, 65536}
 151@@ -887,17 +929,17 @@ However, the c2s and s2s connections to
 152 tls, {certfile, "/etc/ejabberd/server.pem"},
 153 {max_stanza_size, 65536}
 154 ]},
29- {5269, ejabberd_s2s_in, [ 155- {5269, ejabberd_s2s_in, [
30+ {3, 5269, ejabberd_s2s_in, [ 156- {shaper, s2s_shaper},
31 {shaper, s2s_shaper}, 157- {max_stanza_size, 131072}
32 {max_stanza_size, 131072} 158- ]},
33 ]}, 159+ {{5269, "::"}, ejabberd_s2s_in, [
34@@ -138,7 +138,7 @@ 160+ {shaper, s2s_shaper},
35 %% 161+ {max_stanza_size, 131072}
36 %% ejabberd_service: Interact with external components (transports...) 162+ ]},
37 %% 163 {5280, ejabberd_http, [
38- %%{8888, ejabberd_service, [ 164 http_poll
39+ %%{4, 8888, ejabberd_service, [ 165 ]},
40 %% {access, all},  166- {5281, ejabberd_http, [
41 %% {shaper_rule, fast}, 167- web_admin,
42 %% {ip, {127, 0, 0, 1}}, 168- tls, {certfile, "/etc/ejabberd/server.pem"},
43@@ -147,7 +147,7 @@ 169- ]}
44 %% } 170+ {{5281, "127.0.0.1"}, ejabberd_http, [
45 %% ]}, 171+ web_admin,
46  172+ tls, {certfile, "/etc/ejabberd/server.pem"},
47- {5280, ejabberd_http, [ 173+ ]}
48+ {5, 5280, ejabberd_http, [ 174 ]
49 http_poll,  175 }.
50 web_admin 176 {s2s_use_starttls, true}.
51 ]} 177@@ -907,21 +949,23 @@ However, the c2s and s2s connections to
 178
 179 In this example, the following configuration defines that:
 180 \begin{itemize}
 181-\item c2s connections are listened for on port 5222 and 5223 (SSL) and denied
 182+\item c2s connections are listened for on port 5222 (all IPv4 addresses) and
 183+ on port 5223 (SSL, IP 192.168.0.1 and fdca:8ab6:a243:75ef::1) and denied
 184 for the user called `\term{bad}'.
 185-\item s2s connections are listened for on port 5269 with STARTTLS for secured
 186- traffic enabled.
 187+\item s2s connections are listened for on port 5269 (all IPv4 addresses)
 188+ with STARTTLS for secured traffic enabled.
 189 Incoming and outgoing connections of remote Jabber servers are denied,
 190 only two servers can connect: "jabber.example.org" and "example.com".
 191-\item Port 5280 is serving the Web Admin and the HTTP Polling service. Note
 192+\item Port 5280 is serving the Web Admin and the HTTP Polling service
 193+ in all the IPv4 addresses. Note
 194 that it is also possible to serve them on different ports. The second
 195 example in section~\ref{webadmin} shows how exactly this can be done.
 196 \item All users except for the administrators have a traffic of limit
 197 1,000\,Bytes/second
 198 \item \ind{transports!AIM}The
 199 \footahref{http://www.ejabberd.im/pyaimt}{AIM transport}
 200- \jid{aim.example.org} is connected to port 5233 with password
 201- `\term{aimsecret}'.
 202+ \jid{aim.example.org} is connected to port 5233 on localhost IP addresses
 203+ (127.0.0.1 and ::1) with password `\term{aimsecret}'.
 204 \item \ind{transports!ICQ}The ICQ transport JIT (\jid{icq.example.org} and
 205 \jid{sms.example.org}) is connected to port 5234 with password
 206 `\term{jitsecret}'.
 207@@ -949,13 +993,32 @@ In this example, the following configura
 208 {access, c2s_shaper, [{none, admin},
 209 {normal, all}]}.
 210 {listen,
 211- [{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper}]},
 212- {5223, ejabberd_c2s, [{access, c2s},
 213- ssl, {certfile, "/path/to/ssl.pem"}]},
 214- {5269, ejabberd_s2s_in, []},
 215- {5280, ejabberd_http, [http_poll, web_admin]},
 216- {5233, ejabberd_service, [{hosts, ["aim.example.org"],
 217- [{password, "aimsecret"}]}]},
 218+ [{5222, ejabberd_c2s, [
 219+ {access, c2s},
 220+ {shaper, c2s_shaper}
 221+ ]},
 222+ {{5223, {192, 168, 0, 1}}, ejabberd_c2s, [
 223+ {access, c2s},
 224+ ssl, {certfile, "/path/to/ssl.pem"}
 225+ ]},
 226+ {{5223, {16#fdca, 16#8ab6, 16#a243, 16#75ef, 0, 0, 0, 1}},
 227+ ejabberd_c2s, [
 228+ {access, c2s},
 229+ ssl, {certfile, "/path/to/ssl.pem"}
 230+ ]},
 231+ {5269, ejabberd_s2s_in, []},
 232+ {{5280, {0, 0, 0, 0}}, ejabberd_http, [
 233+ http_poll,
 234+ web_admin
 235+ ]},
 236+ {{5233, {127, 0, 0, 1}}, ejabberd_service, [
 237+ {hosts, ["aim.example.org"],
 238+ [{password, "aimsecret"}]}
 239+ ]},
 240+ {{5233, "::1"}, ejabberd_service, [
 241+ {hosts, ["aim.example.org"],
 242+ [{password, "aimsecret"}]}
 243+ ]},
 244 {5234, ejabberd_service, [{hosts, ["icq.example.org", "sms.example.org"],
 245 [{password, "jitsecret"}]}]},
 246 {5235, ejabberd_service, [{hosts, ["msn.example.org"],
 247@@ -3672,7 +3735,7 @@ Examples:
 248 \item For security reasons, you can serve the Web Admin on a secured
 249 connection, on a port differing from the HTTP Polling interface, and bind it
 250 to the internal LAN IP. The Web Admin will be accessible by pointing your
 251- web browser to \verb|https://192.168.1.1:5280/admin/|:
 252+ web browser to \verb|https://192.168.1.1:5282/admin/|:
 253 \begin{verbatim}
 254
 255 {hosts, ["example.org"]}.
 256@@ -3680,9 +3743,13 @@ Examples:
 257 {listen,
 258 [
 259 ...
 260- {5270, ejabberd_http, [http_poll]},
 261- {5280, ejabberd_http, [web_admin, {ip, {192, 168, 1, 1}},
 262- tls, {certfile, "/usr/local/etc/server.pem"}]},
 263+ {5280, ejabberd_http, [
 264+ http_poll
 265+ ]},
 266+ {{5282, "192.168.1.1"}, ejabberd_http, [
 267+ web_admin,
 268+ tls, {certfile, "/usr/local/etc/server.pem"}
 269+ ]},
 270 ...
 271 ]}.
 272 \end{verbatim}

cvs diff -r1.1.1.1 -r1.2 pkgsrc/chat/ejabberd/patches/Attic/patch-ad (expand / switch to unified diff)

--- pkgsrc/chat/ejabberd/patches/Attic/patch-ad 2008/03/10 08:58:32 1.1.1.1
+++ pkgsrc/chat/ejabberd/patches/Attic/patch-ad 2008/11/12 13:13:59 1.2
@@ -1,140 +1,93 @@ @@ -1,140 +1,93 @@
1$NetBSD: patch-ad,v 1.1.1.1 2008/03/10 08:58:32 martti Exp $ 1$NetBSD: patch-ad,v 1.2 2008/11/12 13:13:59 martti Exp $
2 2
3Patch from Fabrice Colliot: support for multiple listeners on same port 3Modified to use IPv6/v4 patch (https://support.process-one.net/browse/EJAB-389)
4number (eg IPv4 and IPv6 simultaneously). 
5 4
6--- src/ejabberd_listener.erl.orig 2008-01-16 12:33:27.000000000 +0200 5--- src/ejabberd.cfg.example.orig 2008-11-12 15:15:04.000000000 +0200
7+++ src/ejabberd_listener.erl 2008-02-14 15:25:12.000000000 +0200 6+++ src/ejabberd.cfg.example
8@@ -27,12 +27,12 @@ 7@@ -107,10 +107,9 @@
9 -module(ejabberd_listener). 8 [
10 -author('alexey@process-one.net'). 9
11  10 {5222, ejabberd_c2s, [
12--export([start_link/0, init/1, start/3, 11-
13- init/3, 12 %%
14- init_ssl/4, 13 %% If TLS is compiled and you installed a SSL
15- start_listener/3, 14- %% certificate, put the correct path to the
16+-export([start_link/0, init/1, start/4, 15+ %% certificate, put the correct path to the
17+ init/4, 16 %% file and uncomment this line:
18+ init_ssl/5, 17 %%
19+ start_listener/4, 18 %%{certfile, "/path/to/ssl.pem"}, starttls,
20 stop_listener/1, 19@@ -123,12 +122,12 @@
21- add_listener/3, 20 %%
22+ add_listener/4, 21 %% To enable the old SSL connection method in port 5223:
23 delete_listener/1 22 %%
24 ]). 23- %%{5223, ejabberd_c2s, [
25  24- %% {access, c2s},
26@@ -49,9 +49,9 @@ 25- %% {shaper, c2s_shaper},
27 Ls -> 26- %% {certfile, "/path/to/ssl.pem"}, tls,
28 {ok, {{one_for_one, 10, 1}, 27- %% {max_stanza_size, 65536}
29 lists:map( 28- %% ]},
30- fun({Port, Module, Opts}) -> 29+ {5223, ejabberd_c2s, [
31- {Port, 30+ {access, c2s},
32- {?MODULE, start, [Port, Module, Opts]}, 31+ {shaper, c2s_shaper},
33+ fun({ListenerID, Port, Module, Opts}) -> 32+ {certfile, "/path/to/ssl.pem"}, tls,
34+ {ListenerID, 33+ {max_stanza_size, 65536}
35+ {?MODULE, start, [ListenerID, Port, Module, Opts]}, 34+ ]},
36 transient, 35
37 brutal_kill, 36 {5269, ejabberd_s2s_in, [
38 worker, 37 {shaper, s2s_shaper},
39@@ -60,7 +60,7 @@ 38@@ -138,14 +137,14 @@
40 end. 39 %%
41  40 %% ejabberd_service: Interact with external components (transports...)
42  41 %%
43-start(Port, Module, Opts) -> 42- %%{8888, ejabberd_service, [
44+start(ListenerID, Port, Module, Opts) -> 43- %% {access, all},
45 SSLError = "There is a problem with your ejabberd configuration file: the option 'ssl' for listening sockets is no longer available. To get SSL encryption use the option 'tls'.", 44- %% {shaper_rule, fast},
46 case lists:keysearch(ssl, 1, Opts) of 45- %% {ip, {127, 0, 0, 1}},
47 {value, {ssl, _SSLOpts}} -> 46- %% {hosts, ["icq.example.org", "sms.example.org"],
48@@ -77,11 +77,11 @@ 47- %% [{password, "secret"}]
49 {error, SSLError}; 48- %% }
50 false -> 49- %% ]},
51 {ok, proc_lib:spawn_link(?MODULE, init, 50+ %%{{8888, "127.0.0.1"},
52- [Port, Module, Opts])} 51+ %% ejabberd_service, [
53+ [ListenerID, Port, Module, Opts])} 52+ %% {access, all},
54 end 53+ %% {shaper_rule, fast},
55 end. 54+ %% {hosts, ["icq.example.org", "sms.example.org"],
56  55+ %% [{password, "secret"}]
57-init(Port, Module, Opts) -> 56+ %% }
58+init(ListenerID, Port, Module, Opts) -> 57+ %% ]},
59 SockOpts = lists:filter(fun({ip, _}) -> true; 58
60 (inet6) -> true; 59 {5280, ejabberd_http, [
61 (inet) -> true; 60 http_poll,
62@@ -100,7 +100,7 @@ 61@@ -224,17 +223,26 @@
63 accept(ListenSocket, Module, Opts); 62 %% List of LDAP servers:
64 {error, Reason} -> 63 %%{ldap_servers, ["localhost"]}.
65 ?ERROR_MSG("Failed to open socket for ~p: ~p", 64 %%
66- [{Port, Module, Opts}, Reason]), 65-%% LDAP attribute that holds user ID:
67+ [{ListenerID, Port, Module, Opts}, Reason]), 66-%%{ldap_uids, [{"mail", "%u@mail.example.org"}]}.
68 error 67+%% Encryption of connection to LDAP servers:
69 end. 68+%%{ldap_encrypt, tls}.
70  69 %%
71@@ -128,7 +128,7 @@ 70-%% Search base of LDAP directory:
72 end. 71-%%{ldap_base, "dc=example,dc=com"}.
73  72+%% Port connect to LDAP server:
74  73+%%{ldap_port, 636}.
75-init_ssl(Port, Module, Opts, SSLOpts) -> 74 %%
76+init_ssl(ListenerID, Port, Module, Opts, SSLOpts) -> 75 %% LDAP manager:
77 SockOpts = lists:filter(fun({ip, _}) -> true; 76-%%{ldap_rootdn, "dc=example,dc=com"}.
78 (inet6) -> true; 77+%%{ldap_rootdn, "dc=example,dc=com"}.
79 (inet) -> true; 78 %%
80@@ -151,7 +151,7 @@ 79 %% Password to LDAP manager:
81 accept_ssl(ListenSocket, Module, Opts); 80-%%{ldap_password, "******"}.
82 {error, Reason} -> 81+%%{ldap_password, "******"}.
83 ?ERROR_MSG("Failed to open socket for ~p: ~p", 82+%%
84- [{Port, Module, Opts}, Reason]), 83+%% Search base of LDAP directory:
85+ [{ListenerID, Port, Module, Opts}, Reason]), 84+%%{ldap_base, "dc=example,dc=com"}.
86 error 85+%%
87 end. 86+%% LDAP attribute that holds user ID:
88  87+%%{ldap_uids, [{"mail", "%u@mail.example.org"}]}.
89@@ -178,8 +178,8 @@ 88+%%
90 end. 89+%% LDAP filter:
91  90+%%{ldap_filter, "(objectClass=shadowAccount)"}.
92  
93-start_listener(Port, Module, Opts) -> 
94- ChildSpec = {Port, 
95+start_listener(ListenerID, Port, Module, Opts) -> 
96+ ChildSpec = {ListenerID, 
97 {?MODULE, start, [Port, Module, Opts]}, 
98 transient, 
99 brutal_kill, 
100@@ -187,30 +187,30 @@ 
101 [?MODULE]}, 
102 supervisor:start_child(ejabberd_listeners, ChildSpec). 
103  
104-stop_listener(Port) -> 
105- supervisor:terminate_child(ejabberd_listeners, Port), 
106- supervisor:delete_child(ejabberd_listeners, Port). 
107+stop_listener(ListenerID) -> 
108+ supervisor:terminate_child(ejabberd_listeners, ListenerID), 
109+ supervisor:delete_child(ejabberd_listeners, ListenerID). 
110  
111-add_listener(Port, Module, Opts) -> 
112+add_listener(ListenerID, Port, Module, Opts) -> 
113 Ports = case ejabberd_config:get_local_option(listen) of 
114 undefined -> 
115 []; 
116 Ls -> 
117 Ls 
118 end, 
119- Ports1 = lists:keydelete(Port, 1, Ports), 
120- Ports2 = [{Port, Module, Opts} | Ports1], 
121+ Ports1 = lists:keydelete(ListenerID, 1, Ports), 
122+ Ports2 = [{ListenerID, Port, Module, Opts} | Ports1], 
123 ejabberd_config:add_local_option(listen, Ports2), 
124- start_listener(Port, Module, Opts). 
125+ start_listener(ListenerID, Port, Module, Opts). 
126  
127-delete_listener(Port) -> 
128+delete_listener(ListenerID) -> 
129 Ports = case ejabberd_config:get_local_option(listen) of 
130 undefined -> 
131 []; 
132 Ls -> 
133 Ls 
134 end, 
135- Ports1 = lists:keydelete(Port, 1, Ports), 
136+ Ports1 = lists:keydelete(ListenerID, 1, Ports), 
137 ejabberd_config:add_local_option(listen, Ports1), 
138- stop_listener(Port). 
139+ stop_listener(ListenerID). 
140  91
 92 %%
 93 %% Anonymous login support:

File Added: pkgsrc/chat/ejabberd/patches/Attic/patch-af
$NetBSD: patch-af,v 1.1 2008/11/12 13:13:59 martti Exp $

Modified to use IPv6/v4 patch (https://support.process-one.net/browse/EJAB-389)

--- src/ejabberd_config.erl.orig	2008-08-27 12:37:52.000000000 +0300
+++ src/ejabberd_config.erl
@@ -140,8 +140,16 @@ process_term(Term, State) ->
 	{host_config, Host, Terms} ->
 	    lists:foldl(fun(T, S) -> process_host_term(T, Host, S) end,
 			State, Terms);
-	{listen, Val} ->
-	    add_option(listen, Val, State);
+	{listen, Listeners} ->
+	    Listeners2 =
+		lists:map(
+		  fun({PortIP, Module, Opts}) ->
+			  {Port, IPT, _, _, OptsClean} =
+			      ejabberd_listener:parse_listener_portip(PortIP, Opts),
+			  {{Port, IPT}, Module, OptsClean}
+		  end,
+		  Listeners),
+	    add_option(listen, Listeners2, State);
 	{language, Val} ->
 	    add_option(language, Val, State);
 	{outgoing_s2s_port, Port} ->

File Added: pkgsrc/chat/ejabberd/patches/Attic/patch-ag
$NetBSD: patch-ag,v 1.1 2008/11/12 13:13:59 martti Exp $

Modified to use IPv6/v4 patch (https://support.process-one.net/browse/EJAB-389)

--- src/ejabberd_listener.erl.orig	2008-08-27 12:37:52.000000000 +0300
+++ src/ejabberd_listener.erl
@@ -32,6 +32,7 @@
 	 init_ssl/4,
 	 start_listener/3,
 	 stop_listener/1,
+	 parse_listener_portip/2,
 	 add_listener/3,
 	 delete_listener/1
 	]).
@@ -47,8 +48,7 @@ init(_) ->
 	undefined ->
 	    ignore;
 	Ls ->
-	    {ok, {{one_for_one, 10, 1},
-		  lists:map(
+	    Ls2 = lists:map(
 		    fun({Port, Module, Opts}) ->
 			    {Port,
 			     {?MODULE, start, [Port, Module, Opts]},
@@ -56,7 +56,20 @@ init(_) ->
 			     brutal_kill,
 			     worker,
 			     [?MODULE]}
-		    end, Ls)}}
+		    end, Ls),
+	    report_duplicated_portips(Ls),
+	    {ok, {{one_for_one, 10, 1}, Ls2}}
+    end.
+
+report_duplicated_portips(L) ->
+    LKeys = [Port || {Port, _, _} <- L],
+    LNoDupsKeys = proplists:get_keys(L),
+    case LKeys -- LNoDupsKeys of
+	[] -> ok;
+	Dups ->
+	    ?CRITICAL_MSG("In the ejabberd configuration there are duplicated "
+			  "Port number + IP address:~n  ~p",
+			  [Dups])
     end.
 
 
@@ -81,13 +94,16 @@ start(Port, Module, Opts) ->
 	    end
     end.
 
-init(Port, Module, Opts) ->
+init(PortIP, Module, Opts1) ->
+    {Port, IPT, IPS, IPV, OptsClean} = parse_listener_portip(PortIP, Opts1),
+    %% The first inet|inet6 and the last {ip, _} work,
+    %% so overriding those in Opts
+    Opts = [IPV | OptsClean] ++ [{ip, IPT}],
     SockOpts = lists:filter(fun({ip, _}) -> true;
 			       (inet6) -> true;
 			       (inet) -> true;
 			       (_) -> false
 			    end, Opts),
-
     Res = gen_tcp:listen(Port, [binary,
 				{packet, 0}, 
 				{active, false},
@@ -99,11 +115,77 @@ init(Port, Module, Opts) ->
 	{ok, ListenSocket} ->
 	    accept(ListenSocket, Module, Opts);
 	{error, Reason} ->
-	    ?ERROR_MSG("Failed to open socket for ~p: ~p",
-		       [{Port, Module, Opts}, Reason]),
-	    error
+	    ReasonT = case Reason of
+			  eaddrnotavail -> "IP address not available: " ++ IPS;
+			  _ -> atom_to_list(Reason)
+		      end,
+	    ?ERROR_MSG("Failed to open socket:~n  ~p~nReason: ~s",
+		       [{Port, Module, SockOpts}, ReasonT]),
+	    {error, ReasonT}
+    end.
+
+%% @spec (PortIP, Opts) -> {Port, IPT, IPS, IPV, OptsClean}
+%% where
+%%      PortIP = Port | {Port, IPT | IPS}
+%%      Port = integer()
+%%      IPT = tuple()
+%%      IPS = string()
+%%      IPV = inet | inet6
+%%      Opts = [IPV | {ip, IPT} | atom() | tuple()]
+%%      OptsClean = [atom() | tuple()]
+%% @doc Parse any kind of ejabberd listener specification.
+%% The parsed options are returned in several formats.
+%% OptsClean does not include inet/inet6 or ip options.
+%% Opts can include the options inet6 and {ip, Tuple},
+%% but they are only used when no IP address was specified in the PortIP.
+%% The IP version (either IPv4 or IPv6) is inferred from the IP address type,
+%% so the option inet/inet6 is only used when no IP is specified at all.
+parse_listener_portip(PortIP, Opts) ->
+    {IPOpt, Opts2} = strip_ip_option(Opts),
+    {IPVOpt, OptsClean} = case lists:member(inet6, Opts2) of
+			      true -> {inet6, Opts2 -- [inet6]};
+			      false -> {inet, Opts2}
+			  end,
+    {Port, IPT, IPS} = case PortIP of
+			   P when is_integer(P) ->
+			       T = get_ip_tuple(IPOpt, IPVOpt),
+			       S = inet_parse:ntoa(T),
+			       {P, T, S};
+			   {P, T} when is_integer(P) and is_tuple(T) ->
+			       S = inet_parse:ntoa(T),
+			       {P, T, S};
+			   {P, S} when is_integer(P) and is_list(S) ->
+			       [S | _] = string:tokens(S, "/"),
+			       {ok, T} = inet_parse:address(S),
+			       {P, T, S}
+		       end,
+    IPV = case size(IPT) of
+	      4 -> inet;
+	      8 -> inet6
+	  end,
+    {Port, IPT, IPS, IPV, OptsClean}.
+
+strip_ip_option(Opts) ->
+    {IPL, OptsNoIP} = lists:partition(
+			fun({ip, _}) -> true;
+			   (_) -> false
+			end,
+			Opts),
+    case IPL of
+	%% Only the first ip option is considered
+	[{ip, T1} | _] when is_tuple(T1) ->
+	    {T1, OptsNoIP};
+	[] ->
+	    {no_ip_option, OptsNoIP}
     end.
 
+get_ip_tuple(no_ip_option, inet) ->
+    {0, 0, 0, 0};
+get_ip_tuple(no_ip_option, inet6) ->
+    {0, 0, 0, 0, 0, 0, 0, 0};
+get_ip_tuple(IPOpt, _IPVOpt) ->
+    IPOpt.
+
 accept(ListenSocket, Module, Opts) ->
     case gen_tcp:accept(ListenSocket) of
 	{ok, Socket} ->
@@ -178,6 +260,7 @@ accept_ssl(ListenSocket, Module, Opts) -
     end.
 
 
+%% @spec (Port, Module, Opts) -> {ok, Pid} | {error, Error}
 start_listener(Port, Module, Opts) ->
     ChildSpec = {Port,
 		 {?MODULE, start, [Port, Module, Opts]},
@@ -191,26 +274,49 @@ stop_listener(Port) ->
     supervisor:terminate_child(ejabberd_listeners, Port),
     supervisor:delete_child(ejabberd_listeners, Port).
 
-add_listener(Port, Module, Opts) ->
-    Ports = case ejabberd_config:get_local_option(listen) of
-		undefined ->
-		    [];
-		Ls ->
-		    Ls
-	    end,
-    Ports1 = lists:keydelete(Port, 1, Ports),
-    Ports2 = [{Port, Module, Opts} | Ports1],
-    ejabberd_config:add_local_option(listen, Ports2),
-    start_listener(Port, Module, Opts).
+%% @spec (PortIP, Module, Opts) -> {ok, Pid} | {error, Error}
+%% where
+%%      PortIP = {Port, IPT | IPS}
+%%      Port = integer()
+%%      IPT = tuple()
+%%      IPS = string()
+%%      IPV = inet | inet6
+%%      Module = atom()
+%%      Opts = [IPV | {ip, IPT} | atom() | tuple()]
+%% @doc Add a listener and store in config if success
+add_listener(PortIP, Module, Opts) ->
+    case start_listener(PortIP, Module, Opts) of
+	{ok, _Pid} ->
+	    Ports = case ejabberd_config:get_local_option(listen) of
+			undefined ->
+			    [];
+			Ls ->
+			    Ls
+		    end,
+	    Ports1 = lists:keydelete(PortIP, 1, Ports),
+	    Ports2 = [{PortIP, Module, Opts} | Ports1],
+	    ejabberd_config:add_local_option(listen, Ports2),
+		ok;
+	{error, {already_started, _Pid}} ->
+	    {error, {already_started, PortIP}};
+	{error, Error} ->
+	    {error, Error}
+    end.
 
-delete_listener(Port) ->
+%% @spec (PortIP) -> ok
+%% where
+%%      PortIP = {Port, IPT | IPS}
+%%      Port = integer()
+%%      IPT = tuple()
+%%      IPS = string()
+delete_listener(PortIP) ->
     Ports = case ejabberd_config:get_local_option(listen) of
 		undefined ->
 		    [];
 		Ls ->
 		    Ls
 	    end,
-    Ports1 = lists:keydelete(Port, 1, Ports),
+    Ports1 = lists:keydelete(PortIP, 1, Ports),
     ejabberd_config:add_local_option(listen, Ports1),
-    stop_listener(Port).
+    stop_listener(PortIP).
 

File Added: pkgsrc/chat/ejabberd/patches/Attic/patch-ah
$NetBSD: patch-ah,v 1.1 2008/11/12 13:13:59 martti Exp $

Modified to use IPv6/v4 patch (https://support.process-one.net/browse/EJAB-389)

--- src/mod_proxy65/mod_proxy65_service.erl.orig	2008-08-27 12:37:52.000000000 +0300
+++ src/mod_proxy65/mod_proxy65_service.erl
@@ -52,6 +52,7 @@
 	  name,
 	  stream_addr,
 	  port,
+	  ip,
 	  acl
 	 }).
 
@@ -69,14 +70,14 @@ start_link(Host, Opts) ->
     gen_server:start_link({local, Proc}, ?MODULE, [Host, Opts], []).
 
 init([Host, Opts]) ->
-    {IP, State} = parse_options(Host, Opts),
-    NewOpts = [Host, {ip, IP} | Opts],
-    ejabberd_listener:add_listener(State#state.port, mod_proxy65_stream, NewOpts),
+    State = parse_options(Host, Opts),
+    NewOpts = [Host | Opts],
+    ejabberd_listener:add_listener({State#state.port, State#state.ip}, mod_proxy65_stream, NewOpts),
     ejabberd_router:register_route(State#state.myhost),
     {ok, State}.
 
-terminate(_Reason, #state{myhost=MyHost, port=Port}) ->
-    catch ejabberd_listener:delete_listener(Port),
+terminate(_Reason, #state{myhost=MyHost, port=Port, ip=IP}) ->
+    catch ejabberd_listener:delete_listener({Port, IP}),
     ejabberd_router:unregister_route(MyHost),
     ok.
 
@@ -203,12 +204,13 @@ parse_options(ServerHost, Opts) ->
 	     end,
     StrIP = inet_parse:ntoa(IP),
     StreamAddr = [{"jid", MyHost}, {"host", StrIP}, {"port", integer_to_list(Port)}],
-    {IP, #state{myhost      = MyHost,
+    #state{myhost      = MyHost,
 		serverhost  = ServerHost,
 		name        = Name,
 		port        = Port,
+		ip          = IP,
 		stream_addr = StreamAddr, 
-		acl         = ACL}}.
+		acl         = ACL}.
 
 %% Return the IP of the proxy host, or if not found, the ip of the xmpp domain
 get_proxy_or_domainip(ServerHost, MyHost) ->

File Added: pkgsrc/chat/ejabberd/patches/Attic/patch-ai
$NetBSD: patch-ai,v 1.1 2008/11/12 13:13:59 martti Exp $

Modified to use IPv6/v4 patch (https://support.process-one.net/browse/EJAB-389)

--- src/web/ejabberd_web_admin.erl.orig	2008-08-27 12:37:52.000000000 +0300
+++ src/web/ejabberd_web_admin.erl
@@ -1806,15 +1806,21 @@ get_node(global, Node, ["ports"], Query,
 		  ok;
 	      {'EXIT', _Reason} ->
 		  error;
+	      {is_added, ok} ->
+		  ok;
+	      {is_added, {error, Reason}} ->
+		  {error, io_lib:format("~p", [Reason])};
 	      _ ->
 		  nothing
 	  end,
+    %% TODO: This sorting does not work when [{{Port, IP}, Module, Opts}]
     NewPorts = lists:sort(
 		 rpc:call(Node, ejabberd_config, get_local_option, [listen])),
     [?XC("h1", ?T("Listened Ports at ") ++ atom_to_list(Node))] ++
 	case Res of
 	    ok -> [?CT("Submitted"), ?P];
 	    error -> [?CT("Bad format"), ?P];
+	    {error, ReasonT} -> [?CT("Problem: "), ?C(ReasonT), ?P];
 	    nothing -> []
 	end ++
 	[?XAE("form", [{"action", ""}, {"method", "post"}],
@@ -2052,58 +2058,76 @@ node_ports_to_xhtml(Ports, Lang) ->
 	 [?XE("thead",
 	      [?XE("tr",
 		   [?XCT("td", "Port"),
+		    ?XCT("td", "IP"),
 		    ?XCT("td", "Module"),
 		    ?XCT("td", "Options")
 		   ])]),
 	  ?XE("tbody",
 	      lists:map(
-		fun({Port, Module, Opts} = _E) ->
-			SPort = integer_to_list(Port),
+		fun({PortIP, Module, Opts} = _E) ->
+			{_Port, SPort, _TIP, SIP, SSPort, OptsClean} =
+			    get_port_data(PortIP, Opts),
 			SModule = atom_to_list(Module),
 			%%ID = term_to_id(E),
 			?XE("tr",
-			    [?XC("td", SPort),
-			     ?XE("td", [?INPUT("text", "module" ++ SPort,
-					       SModule)]),
-			     ?XE("td", [?INPUTS("text", "opts" ++ SPort,
-						term_to_string(Opts), "40")]),
-			     ?XE("td", [?INPUTT("submit", "add" ++ SPort,
+			    [?XAE("td", [{"size", "6"}], [?C(SPort)]),
+			     ?XAE("td", [{"size", "15"}], [?C(SIP)]),
+			     ?XE("td", [?INPUTS("text", "module" ++ SSPort,
+						SModule, "15")]),
+			     ?XE("td", [?INPUTS("text", "opts" ++ SSPort,
+						term_to_string(OptsClean), "40")]),
+			     ?XE("td", [?INPUTT("submit", "add" ++ SSPort,
 						"Update")]),
-			     ?XE("td", [?INPUTT("submit", "delete" ++ SPort,
+			     ?XE("td", [?INPUTT("submit", "delete" ++ SSPort,
 						"Delete")])
 			    ]
 			   )
 		end, Ports) ++
 	      [?XE("tr",
 		   [?XE("td", [?INPUTS("text", "portnew", "", "6")]),
-		    ?XE("td", [?INPUT("text", "modulenew", "")]),
-		    ?XE("td", [?INPUTS("text", "optsnew", "", "40")]),
+		    ?XE("td", [?INPUTS("text", "ipnew", "0.0.0.0", "15")]),
+		    ?XE("td", [?INPUTS("text", "modulenew", "", "17")]),
+		    ?XE("td", [?INPUTS("text", "optsnew", "[]", "40")]),
 		    ?XAE("td", [{"colspan", "2"}],
 			 [?INPUTT("submit", "addnew", "Add New")])
 		   ]
 		  )]
 	     )]).
 
+get_port_data(PortIP, Opts) ->
+    {Port, IPT, IPS, _IPV, OptsClean} = ejabberd_listener:parse_listener_portip(PortIP, Opts),
+    SPort = io_lib:format("~p", [Port]),
+
+    SSPort = lists:flatten(
+	       lists:map(
+		 fun(N) -> io_lib:format("~.16b", [N]) end,
+		 binary_to_list(crypto:md5(SPort++IPS)))),
+    {Port, SPort, IPT, IPS, SSPort, OptsClean}.
 
 node_ports_parse_query(Node, Ports, Query) ->
     lists:foreach(
-      fun({Port, _Module1, _Opts1}) ->
-	      SPort = integer_to_list(Port),
-	      case lists:keysearch("add" ++ SPort, 1, Query) of
+      fun({PortIP, _Module1, Opts1}) ->
+	      {Port, _SPort, TIP, _SIP, SSPort, _OptsClean} =
+		  get_port_data(PortIP, Opts1),
+	      case lists:keysearch("add" ++ SSPort, 1, Query) of
 		  {value, _} ->
+		      PortIP2 = {Port, TIP},
 		      {{value, {_, SModule}}, {value, {_, SOpts}}} =
-			  {lists:keysearch("module" ++ SPort, 1, Query),
-			   lists:keysearch("opts" ++ SPort, 1, Query)},
+			  {lists:keysearch("module" ++ SSPort, 1, Query),
+			   lists:keysearch("opts" ++ SSPort, 1, Query)},
 		      Module = list_to_atom(SModule),
 		      {ok, Tokens, _} = erl_scan:string(SOpts ++ "."),
 		      {ok, Opts} = erl_parse:parse_term(Tokens),
-		      rpc:call(Node, ejabberd_listener, delete_listener, [Port]),
-		      rpc:call(Node, ejabberd_listener, add_listener, [Port, Module, Opts]),
-		      throw(submitted);
+		      rpc:call(Node, ejabberd_listener, delete_listener,
+			       [PortIP2]),
+		      R=rpc:call(Node, ejabberd_listener, add_listener,
+				 [PortIP2, Module, Opts]),
+		      throw({is_added, R});
 		  _ ->
-		      case lists:keysearch("delete" ++ SPort, 1, Query) of
+		      case lists:keysearch("delete" ++ SSPort, 1, Query) of
 			  {value, _} ->
-			      rpc:call(Node, ejabberd_listener, delete_listener, [Port]),
+			      rpc:call(Node, ejabberd_listener, delete_listener,
+				       [PortIP]),
 			      throw(submitted);
 			  _ ->
 			      ok
@@ -2113,17 +2137,28 @@ node_ports_parse_query(Node, Ports, Quer
     case lists:keysearch("addnew", 1, Query) of
 	{value, _} ->
 	    {{value, {_, SPort}},
+	     {value, {_, STIP}}, %% It is a string that may represent a tuple
 	     {value, {_, SModule}},
 	     {value, {_, SOpts}}} =
 		{lists:keysearch("portnew", 1, Query),
+		 lists:keysearch("ipnew", 1, Query),
 		 lists:keysearch("modulenew", 1, Query),
 		 lists:keysearch("optsnew", 1, Query)},
-	    Port = list_to_integer(SPort),
+	    {ok, Toks, _} = erl_scan:string(SPort ++ "."),
+	    {ok, Port2} = erl_parse:parse_term(Toks),
+	    {ok, ToksIP, _} = erl_scan:string(STIP ++ "."),
+	    STIP2 = case erl_parse:parse_term(ToksIP) of
+			{ok, IPTParsed} -> IPTParsed;
+			{error, _} -> STIP
+		    end,
 	    Module = list_to_atom(SModule),
 	    {ok, Tokens, _} = erl_scan:string(SOpts ++ "."),
 	    {ok, Opts} = erl_parse:parse_term(Tokens),
-	    rpc:call(Node, ejabberd_listener, add_listener, [Port, Module, Opts]),
-	    throw(submitted);
+	    {Port2, _SPort, IP2, _SIP, _SSPort, OptsClean} =
+		get_port_data({Port2, STIP2}, Opts),
+	    R=rpc:call(Node, ejabberd_listener, add_listener,
+		       [{Port2, IP2}, Module, OptsClean]),
+	    throw({is_added, R});
 	_ ->
 	    ok
     end.