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
--- 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 | |
4 | You will need to customize the following files to configure ejabberd for | | 4 | You will need to customize the following files to configure ejabberd for |
5 | local use: | | 5 | local use: |
6 | | | 6 | |
7 | ${PKG_SYSCONFDIR}/ejabberd.cfg | | 7 | ${PKG_SYSCONFDIR}/ejabberd.cfg |
8 | | | 8 | |
9 | Note: this package includes an unofficial patch to support multiples listeners | | | |
10 | on the same port number, which enables IPv4 and IPv6 concurrently. | | | |
11 | | | | |
12 | =========================================================================== | | 9 | =========================================================================== |
--- 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 |
5 | lib/erlang/lib/${DISTNAME}/ebin/ELDAPv3.beam | | 5 | lib/erlang/lib/${PKGNAME}/ebin/ELDAPv3.beam |
6 | lib/erlang/lib/${DISTNAME}/ebin/XmppAddr.beam | | 6 | lib/erlang/lib/${PKGNAME}/ebin/XmppAddr.beam |
7 | lib/erlang/lib/${DISTNAME}/ebin/acl.beam | | 7 | lib/erlang/lib/${PKGNAME}/ebin/acl.beam |
8 | lib/erlang/lib/${DISTNAME}/ebin/adhoc.beam | | 8 | lib/erlang/lib/${PKGNAME}/ebin/adhoc.beam |
9 | lib/erlang/lib/${DISTNAME}/ebin/cyrsasl.beam | | 9 | lib/erlang/lib/${PKGNAME}/ebin/cyrsasl.beam |
10 | lib/erlang/lib/${DISTNAME}/ebin/cyrsasl_anonymous.beam | | 10 | lib/erlang/lib/${PKGNAME}/ebin/cyrsasl_anonymous.beam |
11 | lib/erlang/lib/${DISTNAME}/ebin/cyrsasl_digest.beam | | 11 | lib/erlang/lib/${PKGNAME}/ebin/cyrsasl_digest.beam |
12 | lib/erlang/lib/${DISTNAME}/ebin/cyrsasl_plain.beam | | 12 | lib/erlang/lib/${PKGNAME}/ebin/cyrsasl_plain.beam |
13 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd.app | | 13 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd.app |
14 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd.beam | | 14 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd.beam |
15 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_admin.beam | | 15 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_admin.beam |
16 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_app.beam | | 16 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_app.beam |
17 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_auth.beam | | 17 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_auth.beam |
18 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_auth_anonymous.beam | | 18 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_auth_anonymous.beam |
19 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_auth_external.beam | | 19 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_auth_external.beam |
20 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_auth_internal.beam | | 20 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_auth_internal.beam |
21 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_auth_ldap.beam | | 21 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_auth_ldap.beam |
22 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_auth_odbc.beam | | 22 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_auth_odbc.beam |
23 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_auth_pam.beam | | 23 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_auth_pam.beam |
24 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_c2s.beam | | 24 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_c2s.beam |
25 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_c2s_config.beam | | 25 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_c2s_config.beam |
26 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_config.beam | | 26 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_check.beam |
27 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_ctl.beam | | 27 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_config.beam |
28 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_frontend_socket.beam | | 28 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_ctl.beam |
29 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_hooks.beam | | 29 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_frontend_socket.beam |
30 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_http.beam | | 30 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_hooks.beam |
31 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_http_bind.beam | | 31 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_http.beam |
32 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_http_poll.beam | | 32 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_http_bind.beam |
33 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_listener.beam | | 33 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_http_poll.beam |
34 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_local.beam | | 34 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_listener.beam |
35 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_logger_h.beam | | 35 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_local.beam |
36 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_loglevel.beam | | 36 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_logger_h.beam |
37 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_node_groups.beam | | 37 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_loglevel.beam |
38 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_odbc.beam | | 38 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_node_groups.beam |
39 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_odbc_sup.beam | | 39 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_odbc.beam |
40 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_rdbms.beam | | 40 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_odbc_sup.beam |
41 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_receiver.beam | | 41 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_rdbms.beam |
42 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_router.beam | | 42 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_receiver.beam |
43 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_s2s.beam | | 43 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_router.beam |
44 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_s2s_in.beam | | 44 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_s2s.beam |
45 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_s2s_out.beam | | 45 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_s2s_in.beam |
46 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_service.beam | | 46 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_s2s_out.beam |
47 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_sm.beam | | 47 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_service.beam |
48 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_socket.beam | | 48 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_sm.beam |
49 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_sup.beam | | 49 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_socket.beam |
50 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_system_monitor.beam | | 50 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_sup.beam |
51 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_tmp_sup.beam | | 51 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_system_monitor.beam |
52 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_update.beam | | 52 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_tmp_sup.beam |
53 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_web.beam | | 53 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_update.beam |
54 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_web_admin.beam | | 54 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_web.beam |
55 | lib/erlang/lib/${DISTNAME}/ebin/ejabberd_zlib.beam | | 55 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_web_admin.beam |
56 | lib/erlang/lib/${DISTNAME}/ebin/ejd2odbc.beam | | 56 | lib/erlang/lib/${PKGNAME}/ebin/ejabberd_zlib.beam |
57 | lib/erlang/lib/${DISTNAME}/ebin/eldap.beam | | 57 | lib/erlang/lib/${PKGNAME}/ebin/ejd2odbc.beam |
58 | lib/erlang/lib/${DISTNAME}/ebin/eldap_filter.beam | | 58 | lib/erlang/lib/${PKGNAME}/ebin/eldap.beam |
59 | lib/erlang/lib/${DISTNAME}/ebin/eldap_pool.beam | | 59 | lib/erlang/lib/${PKGNAME}/ebin/eldap_filter.beam |
60 | lib/erlang/lib/${DISTNAME}/ebin/eldap_utils.beam | | 60 | lib/erlang/lib/${PKGNAME}/ebin/eldap_pool.beam |
61 | lib/erlang/lib/${DISTNAME}/ebin/extauth.beam | | 61 | lib/erlang/lib/${PKGNAME}/ebin/eldap_utils.beam |
62 | lib/erlang/lib/${DISTNAME}/ebin/gen_iq_handler.beam | | 62 | lib/erlang/lib/${PKGNAME}/ebin/extauth.beam |
63 | lib/erlang/lib/${DISTNAME}/ebin/gen_mod.beam | | 63 | lib/erlang/lib/${PKGNAME}/ebin/gen_iq_handler.beam |
64 | lib/erlang/lib/${DISTNAME}/ebin/gen_pubsub_node.beam | | 64 | lib/erlang/lib/${PKGNAME}/ebin/gen_mod.beam |
65 | lib/erlang/lib/${DISTNAME}/ebin/gen_pubsub_nodetree.beam | | 65 | lib/erlang/lib/${PKGNAME}/ebin/gen_pubsub_node.beam |
66 | lib/erlang/lib/${DISTNAME}/ebin/iconv.beam | | 66 | lib/erlang/lib/${PKGNAME}/ebin/gen_pubsub_nodetree.beam |
67 | lib/erlang/lib/${DISTNAME}/ebin/idna.beam | | 67 | lib/erlang/lib/${PKGNAME}/ebin/iconv.beam |
68 | lib/erlang/lib/${DISTNAME}/ebin/jd2ejd.beam | | 68 | lib/erlang/lib/${PKGNAME}/ebin/idna.beam |
69 | lib/erlang/lib/${DISTNAME}/ebin/jlib.beam | | 69 | lib/erlang/lib/${PKGNAME}/ebin/jd2ejd.beam |
70 | lib/erlang/lib/${DISTNAME}/ebin/mod_adhoc.beam | | 70 | lib/erlang/lib/${PKGNAME}/ebin/jlib.beam |
71 | lib/erlang/lib/${DISTNAME}/ebin/mod_announce.beam | | 71 | lib/erlang/lib/${PKGNAME}/ebin/mod_adhoc.beam |
72 | lib/erlang/lib/${DISTNAME}/ebin/mod_caps.beam | | 72 | lib/erlang/lib/${PKGNAME}/ebin/mod_announce.beam |
73 | lib/erlang/lib/${DISTNAME}/ebin/mod_configure.beam | | 73 | lib/erlang/lib/${PKGNAME}/ebin/mod_caps.beam |
74 | lib/erlang/lib/${DISTNAME}/ebin/mod_configure2.beam | | 74 | lib/erlang/lib/${PKGNAME}/ebin/mod_configure.beam |
75 | lib/erlang/lib/${DISTNAME}/ebin/mod_disco.beam | | 75 | lib/erlang/lib/${PKGNAME}/ebin/mod_configure2.beam |
76 | lib/erlang/lib/${DISTNAME}/ebin/mod_echo.beam | | 76 | lib/erlang/lib/${PKGNAME}/ebin/mod_disco.beam |
77 | lib/erlang/lib/${DISTNAME}/ebin/mod_http_bind.beam | | 77 | lib/erlang/lib/${PKGNAME}/ebin/mod_echo.beam |
78 | lib/erlang/lib/${DISTNAME}/ebin/mod_http_fileserver.beam | | 78 | lib/erlang/lib/${PKGNAME}/ebin/mod_http_bind.beam |
79 | lib/erlang/lib/${DISTNAME}/ebin/mod_irc.beam | | 79 | lib/erlang/lib/${PKGNAME}/ebin/mod_http_fileserver.beam |
80 | lib/erlang/lib/${DISTNAME}/ebin/mod_irc_connection.beam | | 80 | lib/erlang/lib/${PKGNAME}/ebin/mod_ip_blacklist.beam |
81 | lib/erlang/lib/${DISTNAME}/ebin/mod_last.beam | | 81 | lib/erlang/lib/${PKGNAME}/ebin/mod_irc.beam |
82 | lib/erlang/lib/${DISTNAME}/ebin/mod_last_odbc.beam | | 82 | lib/erlang/lib/${PKGNAME}/ebin/mod_irc_connection.beam |
83 | lib/erlang/lib/${DISTNAME}/ebin/mod_muc.beam | | 83 | lib/erlang/lib/${PKGNAME}/ebin/mod_last.beam |
84 | lib/erlang/lib/${DISTNAME}/ebin/mod_muc_log.beam | | 84 | lib/erlang/lib/${PKGNAME}/ebin/mod_last_odbc.beam |
85 | lib/erlang/lib/${DISTNAME}/ebin/mod_muc_room.beam | | 85 | lib/erlang/lib/${PKGNAME}/ebin/mod_muc.beam |
86 | lib/erlang/lib/${DISTNAME}/ebin/mod_offline.beam | | 86 | lib/erlang/lib/${PKGNAME}/ebin/mod_muc_log.beam |
87 | lib/erlang/lib/${DISTNAME}/ebin/mod_offline_odbc.beam | | 87 | lib/erlang/lib/${PKGNAME}/ebin/mod_muc_room.beam |
88 | lib/erlang/lib/${DISTNAME}/ebin/mod_privacy.beam | | 88 | lib/erlang/lib/${PKGNAME}/ebin/mod_offline.beam |
89 | lib/erlang/lib/${DISTNAME}/ebin/mod_privacy_odbc.beam | | 89 | lib/erlang/lib/${PKGNAME}/ebin/mod_offline_odbc.beam |
90 | lib/erlang/lib/${DISTNAME}/ebin/mod_private.beam | | 90 | lib/erlang/lib/${PKGNAME}/ebin/mod_privacy.beam |
91 | lib/erlang/lib/${DISTNAME}/ebin/mod_private_odbc.beam | | 91 | lib/erlang/lib/${PKGNAME}/ebin/mod_privacy_odbc.beam |
92 | lib/erlang/lib/${DISTNAME}/ebin/mod_proxy65.beam | | 92 | lib/erlang/lib/${PKGNAME}/ebin/mod_private.beam |
93 | lib/erlang/lib/${DISTNAME}/ebin/mod_proxy65_lib.beam | | 93 | lib/erlang/lib/${PKGNAME}/ebin/mod_private_odbc.beam |
94 | lib/erlang/lib/${DISTNAME}/ebin/mod_proxy65_service.beam | | 94 | lib/erlang/lib/${PKGNAME}/ebin/mod_proxy65.beam |
95 | lib/erlang/lib/${DISTNAME}/ebin/mod_proxy65_sm.beam | | 95 | lib/erlang/lib/${PKGNAME}/ebin/mod_proxy65_lib.beam |
96 | lib/erlang/lib/${DISTNAME}/ebin/mod_proxy65_stream.beam | | 96 | lib/erlang/lib/${PKGNAME}/ebin/mod_proxy65_service.beam |
97 | lib/erlang/lib/${DISTNAME}/ebin/mod_pubsub.beam | | 97 | lib/erlang/lib/${PKGNAME}/ebin/mod_proxy65_sm.beam |
98 | lib/erlang/lib/${DISTNAME}/ebin/mod_register.beam | | 98 | lib/erlang/lib/${PKGNAME}/ebin/mod_proxy65_stream.beam |
99 | lib/erlang/lib/${DISTNAME}/ebin/mod_roster.beam | | 99 | lib/erlang/lib/${PKGNAME}/ebin/mod_pubsub.beam |
100 | lib/erlang/lib/${DISTNAME}/ebin/mod_roster_odbc.beam | | 100 | lib/erlang/lib/${PKGNAME}/ebin/mod_register.beam |
101 | lib/erlang/lib/${DISTNAME}/ebin/mod_service_log.beam | | 101 | lib/erlang/lib/${PKGNAME}/ebin/mod_roster.beam |
102 | lib/erlang/lib/${DISTNAME}/ebin/mod_shared_roster.beam | | 102 | lib/erlang/lib/${PKGNAME}/ebin/mod_roster_odbc.beam |
103 | lib/erlang/lib/${DISTNAME}/ebin/mod_stats.beam | | 103 | lib/erlang/lib/${PKGNAME}/ebin/mod_service_log.beam |
104 | lib/erlang/lib/${DISTNAME}/ebin/mod_time.beam | | 104 | lib/erlang/lib/${PKGNAME}/ebin/mod_shared_roster.beam |
105 | lib/erlang/lib/${DISTNAME}/ebin/mod_vcard.beam | | 105 | lib/erlang/lib/${PKGNAME}/ebin/mod_stats.beam |
106 | lib/erlang/lib/${DISTNAME}/ebin/mod_vcard_ldap.beam | | 106 | lib/erlang/lib/${PKGNAME}/ebin/mod_time.beam |
107 | lib/erlang/lib/${DISTNAME}/ebin/mod_vcard_odbc.beam | | 107 | lib/erlang/lib/${PKGNAME}/ebin/mod_vcard.beam |
108 | lib/erlang/lib/${DISTNAME}/ebin/mod_version.beam | | 108 | lib/erlang/lib/${PKGNAME}/ebin/mod_vcard_ldap.beam |
109 | lib/erlang/lib/${DISTNAME}/ebin/node_buddy.beam | | 109 | lib/erlang/lib/${PKGNAME}/ebin/mod_vcard_odbc.beam |
110 | lib/erlang/lib/${DISTNAME}/ebin/node_club.beam | | 110 | lib/erlang/lib/${PKGNAME}/ebin/mod_version.beam |
111 | lib/erlang/lib/${DISTNAME}/ebin/node_default.beam | | 111 | lib/erlang/lib/${PKGNAME}/ebin/node_buddy.beam |
112 | lib/erlang/lib/${DISTNAME}/ebin/node_dispatch.beam | | 112 | lib/erlang/lib/${PKGNAME}/ebin/node_club.beam |
113 | lib/erlang/lib/${DISTNAME}/ebin/node_pep.beam | | 113 | lib/erlang/lib/${PKGNAME}/ebin/node_default.beam |
114 | lib/erlang/lib/${DISTNAME}/ebin/node_private.beam | | 114 | lib/erlang/lib/${PKGNAME}/ebin/node_dispatch.beam |
115 | lib/erlang/lib/${DISTNAME}/ebin/node_public.beam | | 115 | lib/erlang/lib/${PKGNAME}/ebin/node_pep.beam |
116 | lib/erlang/lib/${DISTNAME}/ebin/nodetree_default.beam | | 116 | lib/erlang/lib/${PKGNAME}/ebin/node_private.beam |
117 | lib/erlang/lib/${DISTNAME}/ebin/nodetree_virtual.beam | | 117 | lib/erlang/lib/${PKGNAME}/ebin/node_public.beam |
118 | lib/erlang/lib/${DISTNAME}/ebin/odbc_queries.beam | | 118 | lib/erlang/lib/${PKGNAME}/ebin/nodetree_default.beam |
119 | lib/erlang/lib/${DISTNAME}/ebin/p1_fsm.beam | | 119 | lib/erlang/lib/${PKGNAME}/ebin/nodetree_virtual.beam |
120 | lib/erlang/lib/${DISTNAME}/ebin/p1_mnesia.beam | | 120 | lib/erlang/lib/${PKGNAME}/ebin/odbc_queries.beam |
121 | lib/erlang/lib/${DISTNAME}/ebin/ram_file_io_server.beam | | 121 | lib/erlang/lib/${PKGNAME}/ebin/p1_fsm.beam |
122 | lib/erlang/lib/${DISTNAME}/ebin/randoms.beam | | 122 | lib/erlang/lib/${PKGNAME}/ebin/p1_mnesia.beam |
123 | lib/erlang/lib/${DISTNAME}/ebin/sha.beam | | 123 | lib/erlang/lib/${PKGNAME}/ebin/ram_file_io_server.beam |
124 | lib/erlang/lib/${DISTNAME}/ebin/shaper.beam | | 124 | lib/erlang/lib/${PKGNAME}/ebin/randoms.beam |
125 | lib/erlang/lib/${DISTNAME}/ebin/stringprep.beam | | 125 | lib/erlang/lib/${PKGNAME}/ebin/sha.beam |
126 | lib/erlang/lib/${DISTNAME}/ebin/stringprep_sup.beam | | 126 | lib/erlang/lib/${PKGNAME}/ebin/shaper.beam |
127 | lib/erlang/lib/${DISTNAME}/ebin/tls.beam | | 127 | lib/erlang/lib/${PKGNAME}/ebin/stringprep.beam |
128 | lib/erlang/lib/${DISTNAME}/ebin/translate.beam | | 128 | lib/erlang/lib/${PKGNAME}/ebin/stringprep_sup.beam |
129 | lib/erlang/lib/${DISTNAME}/ebin/xml.beam | | 129 | lib/erlang/lib/${PKGNAME}/ebin/tls.beam |
130 | lib/erlang/lib/${DISTNAME}/ebin/xml_stream.beam | | 130 | lib/erlang/lib/${PKGNAME}/ebin/translate.beam |
131 | lib/erlang/lib/${DISTNAME}/priv/lib/ejabberd_zlib_drv.so | | 131 | lib/erlang/lib/${PKGNAME}/ebin/treap.beam |
132 | lib/erlang/lib/${DISTNAME}/priv/lib/expat_erl.so | | 132 | lib/erlang/lib/${PKGNAME}/ebin/xml.beam |
133 | lib/erlang/lib/${DISTNAME}/priv/lib/iconv_erl.so | | 133 | lib/erlang/lib/${PKGNAME}/ebin/xml_stream.beam |
134 | lib/erlang/lib/${DISTNAME}/priv/lib/stringprep_drv.so | | 134 | lib/erlang/lib/${PKGNAME}/priv/lib/ejabberd_zlib_drv.so |
135 | lib/erlang/lib/${DISTNAME}/priv/lib/tls_drv.so | | 135 | lib/erlang/lib/${PKGNAME}/priv/lib/expat_erl.so |
136 | lib/erlang/lib/${DISTNAME}/priv/msgs/ca.msg | | 136 | lib/erlang/lib/${PKGNAME}/priv/lib/iconv_erl.so |
137 | lib/erlang/lib/${DISTNAME}/priv/msgs/cs.msg | | 137 | lib/erlang/lib/${PKGNAME}/priv/lib/stringprep_drv.so |
138 | lib/erlang/lib/${DISTNAME}/priv/msgs/de.msg | | 138 | lib/erlang/lib/${PKGNAME}/priv/lib/tls_drv.so |
139 | lib/erlang/lib/${DISTNAME}/priv/msgs/eo.msg | | 139 | lib/erlang/lib/${PKGNAME}/priv/msgs/ca.msg |
140 | lib/erlang/lib/${DISTNAME}/priv/msgs/es.msg | | 140 | lib/erlang/lib/${PKGNAME}/priv/msgs/cs.msg |
141 | lib/erlang/lib/${DISTNAME}/priv/msgs/fr.msg | | 141 | lib/erlang/lib/${PKGNAME}/priv/msgs/de.msg |
142 | lib/erlang/lib/${DISTNAME}/priv/msgs/gl.msg | | 142 | lib/erlang/lib/${PKGNAME}/priv/msgs/eo.msg |
143 | lib/erlang/lib/${DISTNAME}/priv/msgs/it.msg | | 143 | lib/erlang/lib/${PKGNAME}/priv/msgs/es.msg |
144 | lib/erlang/lib/${DISTNAME}/priv/msgs/ja.msg | | 144 | lib/erlang/lib/${PKGNAME}/priv/msgs/fr.msg |
145 | lib/erlang/lib/${DISTNAME}/priv/msgs/nl.msg | | 145 | lib/erlang/lib/${PKGNAME}/priv/msgs/gl.msg |
146 | lib/erlang/lib/${DISTNAME}/priv/msgs/no.msg | | 146 | lib/erlang/lib/${PKGNAME}/priv/msgs/it.msg |
147 | lib/erlang/lib/${DISTNAME}/priv/msgs/pl.msg | | 147 | lib/erlang/lib/${PKGNAME}/priv/msgs/ja.msg |
148 | lib/erlang/lib/${DISTNAME}/priv/msgs/pt-br.msg | | 148 | lib/erlang/lib/${PKGNAME}/priv/msgs/nl.msg |
149 | lib/erlang/lib/${DISTNAME}/priv/msgs/pt.msg | | 149 | lib/erlang/lib/${PKGNAME}/priv/msgs/no.msg |
150 | lib/erlang/lib/${DISTNAME}/priv/msgs/ru.msg | | 150 | lib/erlang/lib/${PKGNAME}/priv/msgs/pl.msg |
151 | lib/erlang/lib/${DISTNAME}/priv/msgs/sk.msg | | 151 | lib/erlang/lib/${PKGNAME}/priv/msgs/pt-br.msg |
152 | lib/erlang/lib/${DISTNAME}/priv/msgs/sv.msg | | 152 | lib/erlang/lib/${PKGNAME}/priv/msgs/pt.msg |
153 | lib/erlang/lib/${DISTNAME}/priv/msgs/th.msg | | 153 | lib/erlang/lib/${PKGNAME}/priv/msgs/ru.msg |
154 | lib/erlang/lib/${DISTNAME}/priv/msgs/tr.msg | | 154 | lib/erlang/lib/${PKGNAME}/priv/msgs/sk.msg |
155 | lib/erlang/lib/${DISTNAME}/priv/msgs/uk.msg | | 155 | lib/erlang/lib/${PKGNAME}/priv/msgs/sv.msg |
156 | lib/erlang/lib/${DISTNAME}/priv/msgs/vi.msg | | 156 | lib/erlang/lib/${PKGNAME}/priv/msgs/th.msg |
157 | lib/erlang/lib/${DISTNAME}/priv/msgs/wa.msg | | 157 | lib/erlang/lib/${PKGNAME}/priv/msgs/tr.msg |
158 | lib/erlang/lib/${DISTNAME}/priv/msgs/zh.msg | | 158 | lib/erlang/lib/${PKGNAME}/priv/msgs/uk.msg |
| | | 159 | lib/erlang/lib/${PKGNAME}/priv/msgs/vi.msg |
| | | 160 | lib/erlang/lib/${PKGNAME}/priv/msgs/wa.msg |
| | | 161 | lib/erlang/lib/${PKGNAME}/priv/msgs/zh.msg |
159 | sbin/ejabberdctl | | 162 | sbin/ejabberdctl |
160 | share/doc/${DISTNAME}/Makefile | | 163 | share/doc/${PKGNAME}/Makefile |
161 | share/doc/${DISTNAME}/COPYING | | 164 | share/doc/${PKGNAME}/COPYING |
162 | share/doc/${DISTNAME}/dev.html | | 165 | share/doc/${PKGNAME}/dev.html |
163 | share/doc/${DISTNAME}/dev.tex | | 166 | share/doc/${PKGNAME}/dev.tex |
164 | share/doc/${DISTNAME}/disco.png | | 167 | share/doc/${PKGNAME}/discorus.png |
165 | share/doc/${DISTNAME}/discorus.png | | 168 | share/doc/${PKGNAME}/features.html |
166 | share/doc/${DISTNAME}/features.html | | 169 | share/doc/${PKGNAME}/features.tex |
167 | share/doc/${DISTNAME}/features.tex | | 170 | share/doc/${PKGNAME}/flow.dot |
168 | share/doc/${DISTNAME}/flow.dot | | 171 | share/doc/${PKGNAME}/guide.html |
169 | share/doc/${DISTNAME}/guide.html | | 172 | share/doc/${PKGNAME}/guide.tex |
170 | share/doc/${DISTNAME}/guide.tex | | 173 | share/doc/${PKGNAME}/guide.tex.orig |
171 | share/doc/${DISTNAME}/guide.pdf | | 174 | share/doc/${PKGNAME}/introduction.tex |
172 | share/doc/${DISTNAME}/introduction.tex | | 175 | share/doc/${PKGNAME}/logo.png |
173 | share/doc/${DISTNAME}/logo.png | | 176 | share/doc/${PKGNAME}/mod_http_bind.tex |
174 | share/doc/${DISTNAME}/mod_http_bind.tex | | 177 | share/doc/${PKGNAME}/mod_http_fileserver.tex |
175 | share/doc/${DISTNAME}/mod_http_fileserver.tex | | 178 | share/doc/${PKGNAME}/release_notes_0.9.1.txt |
176 | share/doc/${DISTNAME}/release_notes_0.9.1.txt | | 179 | share/doc/${PKGNAME}/release_notes_0.9.8.txt |
177 | share/doc/${DISTNAME}/release_notes_0.9.8.txt | | 180 | share/doc/${PKGNAME}/release_notes_0.9.txt |
178 | share/doc/${DISTNAME}/release_notes_0.9.txt | | 181 | share/doc/${PKGNAME}/release_notes_1.0.0.txt |
179 | share/doc/${DISTNAME}/release_notes_1.0.0.txt | | 182 | share/doc/${PKGNAME}/release_notes_1.1.0.txt |
180 | share/doc/${DISTNAME}/release_notes_1.1.0.txt | | 183 | share/doc/${PKGNAME}/release_notes_1.1.1.txt |
181 | share/doc/${DISTNAME}/release_notes_1.1.1.txt | | 184 | share/doc/${PKGNAME}/release_notes_1.1.2.txt |
182 | share/doc/${DISTNAME}/release_notes_1.1.2.txt | | 185 | share/doc/${PKGNAME}/release_notes_1.1.3.txt |
183 | share/doc/${DISTNAME}/release_notes_1.1.3.txt | | 186 | share/doc/${PKGNAME}/release_notes_1.1.4.txt |
184 | share/doc/${DISTNAME}/release_notes_1.1.4.txt | | 187 | share/doc/${PKGNAME}/release_notes_2.0.0.txt |
185 | share/doc/${DISTNAME}/release_notes_2.0.0.txt | | 188 | share/doc/${PKGNAME}/release_notes_2.0.1.txt |
186 | share/doc/${DISTNAME}/version.tex | | 189 | share/doc/${PKGNAME}/version.tex |
187 | share/doc/${DISTNAME}/webadmmain.png | | 190 | share/doc/${PKGNAME}/webadmmain.png |
188 | share/doc/${DISTNAME}/webadmmainru.png | | 191 | share/doc/${PKGNAME}/webadmmainru.png |
189 | share/doc/${DISTNAME}/yozhikheader.png | | 192 | share/doc/${PKGNAME}/yozhikheader.png |
190 | share/doc/${DISTNAME}/api/Makefile | | 193 | share/doc/${PKGNAME}/api/Makefile |
191 | share/doc/${DISTNAME}/api/process-one.css | | 194 | share/doc/${PKGNAME}/api/process-one.css |
192 | share/doc/${DISTNAME}/api/overview.edoc | | 195 | share/doc/${PKGNAME}/api/overview.edoc |
| | | 196 | share/doc/${PKGNAME}/release_notes_${PKGVERSION}.txt |
| | | 197 | share/examples/ejabberd/ejabberd.cfg |
| | | 198 | share/examples/ejabberd/ejabberdctl.cfg |
| | | 199 | share/examples/ejabberd/inetrc |
193 | share/examples/rc.d/ejabberd | | 200 | share/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} |
--- 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 | |
3 | DISTNAME= ejabberd-2.0.0 | | 3 | DISTNAME= ejabberd-2.0.2 |
4 | PKGREVISION= 2 | | 4 | #PKGREVISION= 1 |
5 | CATEGORIES= chat | | 5 | CATEGORIES= chat |
6 | MASTER_SITES= http://www.process-one.net/downloads/ejabberd/2.0.0/ | | 6 | MASTER_SITES= http://www.process-one.net/downloads/ejabberd/2.0.2/ |
7 | | | 7 | |
8 | MAINTAINER= martti@NetBSD.org | | 8 | MAINTAINER= martti@NetBSD.org |
9 | HOMEPAGE= http://www.ejabberd.im/ | | 9 | HOMEPAGE= http://www.ejabberd.im/ |
10 | COMMENT= Free and Open Source distributed fault-tolerant Jabber server | | 10 | COMMENT= Free and Open Source distributed fault-tolerant Jabber server |
11 | | | 11 | |
12 | CONFLICTS+= jabberd-[0-9]* | | 12 | CONFLICTS+= jabberd-[0-9]* |
13 | | | 13 | |
14 | GNU_CONFIGURE= yes | | 14 | GNU_CONFIGURE= yes |
15 | USE_TOOLS+= gmake | | 15 | USE_TOOLS+= gmake |
16 | | | 16 | |
| | | 17 | WRKSRC= ${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 |
19 | CONFIGURE_ARGS+= --enable-odbc | | 20 | CONFIGURE_ARGS+= --enable-odbc |
20 | CONFIGURE_ARGS+= --enable-mod_irc | | 21 | CONFIGURE_ARGS+= --enable-mod_irc |
21 | CONFIGURE_ARGS+= --enable-mod_muc | | 22 | CONFIGURE_ARGS+= --enable-mod_muc |
22 | CONFIGURE_ARGS+= --enable-eldap | | 23 | CONFIGURE_ARGS+= --enable-eldap |
23 | CONFIGURE_ARGS+= --enable-web | | 24 | CONFIGURE_ARGS+= --enable-web |
24 | CONFIGURE_ARGS+= --enable-tls | | 25 | CONFIGURE_ARGS+= --enable-tls |
25 | CONFIGURE_ARGS+= --enable-odbc | | 26 | CONFIGURE_ARGS+= --enable-odbc |
26 | CONFIGURE_ARGS+= --enable-ejabberd_zlib | | 27 | CONFIGURE_ARGS+= --enable-ejabberd_zlib |
27 | CONFIGURE_ARGS+= --with-openssl=${BUILDLINK_PREFIX.openssl} | | 28 | CONFIGURE_ARGS+= --with-openssl=${BUILDLINK_PREFIX.openssl} |
28 | CONFIGURE_ARGS+= --with-zlib=${BUILDLINK_PREFIX.zlib} | | 29 | CONFIGURE_ARGS+= --with-zlib=${BUILDLINK_PREFIX.zlib} |
29 | CONFIGURE_ARGS+= --with-expat=${BUILDLINK_PREFIX.expat} | | 30 | CONFIGURE_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 |
65 | OWN_DIRS_PERMS+= ${EJABBERD_LOGDIR} ${EJABBERD_USER} ${EJABBERD_GROUP} 0770 | | 66 | OWN_DIRS_PERMS+= ${EJABBERD_LOGDIR} ${EJABBERD_USER} ${EJABBERD_GROUP} 0770 |
66 | OWN_DIRS_PERMS+= ${EJABBERD_DB} ${EJABBERD_USER} ${EJABBERD_GROUP} 0770 | | 67 | OWN_DIRS_PERMS+= ${EJABBERD_DB} ${EJABBERD_USER} ${EJABBERD_GROUP} 0770 |
67 | | | 68 | |
68 | FILES_SUBST+= JABBERD_USER=${EJABBERD_USER} | | 69 | FILES_SUBST+= JABBERD_USER=${EJABBERD_USER} |
69 | FILES_SUBST+= JABBERD_LOGDIR=${EJABBERD_LOGDIR} | | 70 | FILES_SUBST+= JABBERD_LOGDIR=${EJABBERD_LOGDIR} |
70 | | | 71 | |
71 | PLIST_SUBST+= EJABBERD_EXDIR=${EJABBERD_EXDIR} | | 72 | PLIST_SUBST+= EJABBERD_EXDIR=${EJABBERD_EXDIR} |
72 | | | 73 | |
73 | PKG_GROUPS+= ${EJABBERD_GROUP} | | 74 | PKG_GROUPS+= ${EJABBERD_GROUP} |
74 | PKG_USERS+= ${EJABBERD_USER}:${EJABBERD_GROUP} | | 75 | PKG_USERS+= ${EJABBERD_USER}:${EJABBERD_GROUP} |
75 | | | 76 | |
76 | EGDIR= ${PREFIX}/${EJABBERD_EXDIR} | | 77 | EGDIR= ${PREFIX}/${EJABBERD_EXDIR} |
77 | | | 78 | |
78 | INSTALLATION_DIRS+= ${PREFIX}/share/doc/${DISTNAME} | | 79 | INSTALLATION_DIRS+= ${PREFIX}/share/doc/${PKGNAME_NOREV} |
79 | INSTALLATION_DIRS+= ${PREFIX}/share/doc/${DISTNAME}/api | | 80 | INSTALLATION_DIRS+= ${PREFIX}/share/doc/${PKGNAME_NOREV}/api |
80 | INSTALLATION_DIRS+= ${EGDIR} | | 81 | INSTALLATION_DIRS+= ${EGDIR} |
81 | | | 82 | |
82 | CONF_FILES= ${EGDIR}/ejabberd.cfg ${PKG_SYSCONFDIR}/ejabberd.cfg | | 83 | CONF_FILES= ${EGDIR}/ejabberd.cfg ${PKG_SYSCONFDIR}/ejabberd.cfg |
83 | CONF_FILES+= ${EGDIR}/ejabberdctl.cfg ${PKG_SYSCONFDIR}/ejabberdctl.cfg | | 84 | CONF_FILES+= ${EGDIR}/ejabberdctl.cfg ${PKG_SYSCONFDIR}/ejabberdctl.cfg |
84 | CONF_FILES+= ${EGDIR}/inetrc ${PKG_SYSCONFDIR}/inetrc | | 85 | CONF_FILES+= ${EGDIR}/inetrc ${PKG_SYSCONFDIR}/inetrc |
85 | | | 86 | |
86 | post-install: | | 87 | post-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 | |
92 | SUBST_CLASSES+= paths | | 93 | SUBST_CLASSES+= paths |
93 | SUBST_MESSAGE.paths= Localizing paths | | 94 | SUBST_MESSAGE.paths= Localizing paths |
94 | SUBST_STAGE.paths= pre-configure | | 95 | SUBST_STAGE.paths= pre-configure |
95 | SUBST_FILES.paths= src/Makefile.in | | 96 | SUBST_FILES.paths= src/Makefile.in |
96 | SUBST_FILES.paths+= src/ejabberdctl.template | | 97 | SUBST_FILES.paths+= src/ejabberdctl.template |
97 | SUBST_SED.paths+= -e 's,@PKG_SYSCONFDIR@,${PKG_SYSCONFDIR},g' | | 98 | SUBST_SED.paths+= -e 's,@PKG_SYSCONFDIR@,${PKG_SYSCONFDIR},g' |
98 | SUBST_SED.paths+= -e 's,@JABBERD_LOGDIR@,${EJABBERD_LOGDIR},g' | | 99 | SUBST_SED.paths+= -e 's,@JABBERD_LOGDIR@,${EJABBERD_LOGDIR},g' |
99 | SUBST_SED.paths+= -e 's,@EJABBERD_LOGDIR@,${EJABBERD_LOGDIR},g' | | 100 | SUBST_SED.paths+= -e 's,@EJABBERD_LOGDIR@,${EJABBERD_LOGDIR},g' |
100 | SUBST_SED.paths+= -e 's,@EJABBERD_DB@,${EJABBERD_DB},g' | | 101 | SUBST_SED.paths+= -e 's,@EJABBERD_DB@,${EJABBERD_DB},g' |
101 | SUBST_SED.paths+= -e 's,@DISTNAME@,${DISTNAME},g' | | 102 | SUBST_SED.paths+= -e 's,@DISTNAME@,${DISTNAME},g' |
102 | SUBST_SED.paths+= -e 's,@EJABBERD_VARDIR@,${VARBASE},g' | | 103 | SUBST_SED.paths+= -e 's,@EJABBERD_VARDIR@,${VARBASE},g' |
103 | | | 104 | |
--- 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 | |
3 | SHA1 (ejabberd-2.0.0.tar.gz) = d70257c1e75f59b7284d52c038431664cfd53e08 | | 3 | SHA1 (ejabberd-2.0.2.tar.gz) = 7c82082b941277fe18aac25ca9b2016f25dc8472 |
4 | RMD160 (ejabberd-2.0.0.tar.gz) = 9e7bb30825f2d480d75516136fcc62a49d871255 | | 4 | RMD160 (ejabberd-2.0.2.tar.gz) = b24c1c2d6ce8c56fd26f28a98b89d99890dbad72 |
5 | Size (ejabberd-2.0.0.tar.gz) = 1387404 bytes | | 5 | Size (ejabberd-2.0.2.tar.gz) = 1040817 bytes |
6 | SHA1 (patch-aa) = 32f4609471f189284baac2ae51522558be080e19 | | 6 | SHA1 (patch-aa) = 5b0c2994aad402cf13cc9531465513aad69de1e0 |
7 | SHA1 (patch-ab) = a083116beb37cd19a011993e009b57a0a4b202bf | | 7 | SHA1 (patch-ab) = a083116beb37cd19a011993e009b57a0a4b202bf |
8 | SHA1 (patch-ac) = 23a7528ac5f3c9f1e7e89062e43482b8bf103e0e | | 8 | SHA1 (patch-ac) = 32387347e9581500cbdbdec971b0825c4043d1f1 |
9 | SHA1 (patch-ad) = ece5a64b4beacd967bdb24d42cf105cd3bb1b7b6 | | 9 | SHA1 (patch-ad) = a6504e8454878c97e434040a2f9136174b994c0d |
10 | SHA1 (patch-ae) = 32b4a66b4ca4b329abae632f0b7a4e62509237c6 | | 10 | SHA1 (patch-ae) = c1c615a1d2e28d05d069f2bafa30179437922536 |
| | | 11 | SHA1 (patch-af) = 908ebaaea76de53cc22a53289d3b93189767d40c |
| | | 12 | SHA1 (patch-ag) = 4cb80b3c530ddb561693a82b55254b322cb41a97 |
| | | 13 | SHA1 (patch-ah) = 29b4440454a138908fe2c6937c65658e4cd689ba |
| | | 14 | SHA1 (patch-ai) = 4b51670e283e7facd3142601d8560821b7829505 |
--- 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 | |
3 | Modified for pkgsrc | | 3 | Modified 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) |
--- 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 | |
3 | Keep things tidy (nothing under /usr/pkg/var) | | 3 | Modified 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 |
--- 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 | |
3 | Patch from Fabrice Colliot: support for multiple listeners on same port | | 3 | Modified to use IPv6/v4 patch (https://support.process-one.net/browse/EJAB-389) |
4 | number (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} |
--- 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 | |
3 | Patch from Fabrice Colliot: support for multiple listeners on same port | | 3 | Modified to use IPv6/v4 patch (https://support.process-one.net/browse/EJAB-389) |
4 | number (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: |
$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} ->
$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).
$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) ->
$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.