Add ejabberd 0.7, free and Open Source distributed fault-tolerant Jabber

server.

PR:		ports/69339
Submitted by:	Alexander Timoshenko <gonzo@univ.kiev.ua>
This commit is contained in:
Maxim Sobolev 2004-08-19 10:11:13 +00:00
parent e92bfe6193
commit cfef370297
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=116657
25 changed files with 1059 additions and 0 deletions

57
net-im/ejabberd/Makefile Normal file
View file

@ -0,0 +1,57 @@
# New ports collection makefile for: ejabberd
# Date created: 03 July 2004
# Whom: Alexander Timoshenko <gonzo@univ.kiev.ua>
#
# $FreeBSD$
#
PORTNAME= ejabberd
PORTVERSION= 0.7
CATEGORIES= net
MASTER_SITES= http://www.jabber.ru/files/ejabberd/
MAINTAINER= gonzo@univ.kiev.ua
COMMENT= Free and Open Source distributed fault-tolerant Jabber server
BUILD_DEPENDS= erlc:${PORTSDIR}/lang/erlang
RUN_DEPENDS= erl:${PORTSDIR}/lang/erlang
PLIST_SUB= VERSION="${PORTVERSION}"
WRKSRC= ${WRKDIR}/${DISTNAME}/src
HAS_CONFIGURE= yes
USE_GMAKE= yes
USE_REINPLACE= yes
# MAN1= yaws.1
# MAN5= yaws.conf.5 yaws_api.5
APPDIR= ${PREFIX}/lib/erlang/lib/ejabberd-${PORTVERSION}
.include <bsd.port.pre.mk>
post-patch:
@${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \
${WRKSRC}/ejabberd ${WRKSRC}/ejabberdctl ${WRKSRC}/ejabberd.sh
@${FIND} ${WRKSRC} -name \*.orig -or -name \*.bak | ${XARGS} ${RM}
do-install:
@${MKDIR} ${APPDIR}/ebin
@${INSTALL_DATA} ${WRKSRC}/*.beam ${APPDIR}/ebin
@${RM} -f ${BEAMDIR}/configure.beam
@${INSTALL_DATA} ${WRKSRC}/*.app ${APPDIR}/ebin
@${MKDIR} ${APPDIR}/priv/lib
@${INSTALL_DATA} ${WRKSRC}/*.so ${APPDIR}/priv/lib
@${MKDIR} ${APPDIR}/priv/msgs
@${INSTALL_DATA} ${WRKSRC}/msgs/*.msg ${APPDIR}/priv/msgs
@${INSTALL_SCRIPT} ${WRKSRC}/ejabberd ${PREFIX}/bin
@${INSTALL_SCRIPT} ${WRKSRC}/ejabberdctl ${PREFIX}/bin
@${INSTALL_SCRIPT} ${WRKSRC}/ejabberd.sh ${PREFIX}/etc/rc.d
@${INSTALL_DATA} ${FILESDIR}/ejabberd.cfg.sample ${PREFIX}/etc/
@${MKDIR} ${DOCSDIR}
@${INSTALL_DATA} ${WRKSRC}/../doc/* ${DOCSDIR}
post-install:
@PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
.include <bsd.port.post.mk>

2
net-im/ejabberd/distinfo Normal file
View file

@ -0,0 +1,2 @@
MD5 (ejabberd-0.7.tar.gz) = dfec9573263de8729213993f015cfac9
SIZE (ejabberd-0.7.tar.gz) = 378466

View file

@ -0,0 +1,176 @@
% Default Debian ejabberd.cfg
%override_acls.
% Users that have admin access. Add line like one of the following after you
% will be successfully registered on server to get admin access:
%{acl, admin, {user, "aleksey"}}.
%{acl, admin, {user, "ermine"}}.
% Blocked users:
%{acl, blocked, {user, "test"}}.
% Local users:
{acl, local, {user_regexp, ""}}.
% Another examples of ACLs:
%{acl, jabberorg, {server, "jabber.org"}}.
%{acl, aleksey, {user, "aleksey", "jabber.ru"}}.
%{acl, test, {user_regexp, "^test"}}.
%{acl, test, {user_glob, "test*"}}.
% Only admins can use configuration interface:
{access, configure, [{allow, admin}]}.
% Every username can be registered via in-band registration:
{access, register, [{allow, all}]}.
% None username can be registered via in-band registration:
%{access, register, [{deny, all}]}.
% After successful registration user will get message with following subject
% and body:
{welcome_message,
{"Welcome!",
"Welcome to Debian Jabber Service. "
"For information about Jabber visit http://jabber.org"}}.
% Replace them with 'none' if you don't want to send such message:
%{welcome_message, none}.
% List of people who will get notifications about registered users
%{registration_watchers, ["admin1@localhost",
% "admin2@localhost"]}.
% Only admins can send announcement messages:
{access, announce, [{allow, admin}]}.
% Only non-blocked users can use c2s connections:
{access, c2s, [{deny, blocked},
{allow, all}]}.
% Set shaper with name "normal" to limit traffic speed to 1000B/s
{shaper, normal, {maxrate, 1000}}.
% Set shaper with name "fast" to limit traffic speed to 50000B/s
{shaper, fast, {maxrate, 50000}}.
% For all users except admins used "normal" shaper
{access, c2s_shaper, [{none, admin},
{normal, all}]}.
% For all S2S connections used "fast" shaper
{access, s2s_shaper, [{fast, all}]}.
% Admins of this server are also admins of MUC service:
{access, muc_admin, [{allow, admin}]}.
% All users are allowed to use MUC service:
{access, muc, [{allow, all}]}.
% This rule allows access only for local users:
{access, local, [{allow, local}]}.
% Authentification method. If you want to use internal user base, then use
% this line:
{auth_method, internal}.
% For LDAP uthentification use these lines instead of above one:
%{auth_method, ldap}.
%{ldap_servers, ["localhost"]}. % List of LDAP servers
%{ldap_uidattr, "uid"}. % LDAP attribute that holds user ID
%{ldap_base, "dc=example,dc=com"}. % Base of LDAP directory
% Host name: (replace for your hostname)
{host, "localhost"}.
% Default language for server messages
{language, "en"}.
% Listened ports:
{listen,
% Ordinary client-2-server service
[{5222, ejabberd_c2s, [{access, c2s},
{shaper, c2s_shaper}]},
% SSL-enabled client-2-server service, uncomment these lines to
% enable ssl
% {5223, ejabberd_c2s, [{access, c2s},
% ssl,
% {certfile, "/etc/ssl/certs/ejabberd.pem"}]},
% Server-2-server service
{5269, ejabberd_s2s_in, [{shaper, s2s_shaper}]},
% External MUC jabber-muc (but internal mod_muc is better :))
% {5554, ejabberd_service, [{ip, {127, 0, 0, 1}},
% {access, all},
% {host, "muc.localhost", [{password, "secret"}]}]},
% Jabber ICQ Transport
% {5555, ejabberd_service, [{ip, {127, 0, 0, 1}},
% {access, all},
% {hosts, ["icq.localhost", "sms.localhost"], [{password, "secret"}]}]},
% AIM Transport
% {5556, ejabberd_service, [{ip, {127, 0, 0, 1}},
% {access, all},
% {host, "aim.localhost", [{password, "secret"}]}]},
% MSN Transport
% {5557, ejabberd_service, [{ip, {127, 0, 0, 1}},
% {access, all},
% {host, "msn.localhost", [{password, "secret"}]}]},
% Yahoo! Transport
% {5558, ejabberd_service, [{ip, {127, 0, 0, 1}},
% {access, all},
% {host, "yahoo.localhost", [{password, "secret"}]}]},
% External JUD (internal is more powerful,
% but doesn't allow to register users from other servers)
% {5559, ejabberd_service, [{ip, {127, 0, 0, 1}},
% {access, all},
% {host, "jud.localhost", [{password, "secret"}]}]},
% HTTP service (You may choose options HTTP-polling and Web-administering)
% When commenting out, be careful with commas
{5280, ejabberd_http, [http_poll, web_admin]}
]}.
% If SRV lookup fails, then port 5269 is used to communicate with remote server
{outgoing_s2s_port, 5269}.
% Used modules:
{modules,
[
{mod_register, [{access, register}]},
{mod_roster, []},
{mod_privacy, []},
{mod_configure, []},
{mod_configure2, []},
{mod_disco, [{extra_domains, ["users.jabber.org"]}]},
{mod_stats, []},
{mod_vcard, []},
{mod_offline, []},
{mod_echo, []},
{mod_private, []},
{mod_irc, []},
% Default options for mod_muc:
% host: "conference." ++ ?MYNAME
% access: all
% access_create: all
% access_admin: none (only room creator has owner privileges)
{mod_muc, [{access, muc},
{access_create, muc},
{access_admin, muc_admin}]},
{mod_pubsub, []},
{mod_time, []},
{mod_last, []},
{mod_version, []}
]}.

View file

@ -0,0 +1,11 @@
--- configure.orig Sat Jul 3 14:58:07 2004
+++ configure Sat Jul 3 15:01:49 2004
@@ -2180,7 +2180,7 @@
fi
- if test "z$ERLC" == "z" || test "z$ERL" == "z"; then
+ if test -z "$ERLC" || test -z "$ERL"; then
{ { echo "$as_me:$LINENO: error: erlang not found" >&5
echo "$as_me: error: erlang not found" >&2;}
{ (exit 1); exit 1; }; }

View file

@ -0,0 +1,34 @@
--- ejabberd.orig Thu Jan 1 03:00:00 1970
+++ ejabberd Sat Jul 3 15:52:35 2004
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+[ -r /var/run/ejabberd/.erlang.cookie ] && HOME=/var/run/ejabberd
+
+CONFIG=%%PREFIX%%/etc/ejabberd.cfg
+LOG=/var/log/ejabberd/ejabberd.log
+SASL_LOG=/var/log/ejabberd/sasl.log
+SPOOL=/var/spool/ejabberd
+
+ARGS=
+while [ $# -ne 0 ];
+do
+ PARAM=$1
+ shift
+ case $PARAM in
+ --) break ;;
+ --config) CONFIG=$1 ; shift ;;
+ --log) LOG=$1 ; shift ;;
+ --sasl-log) SASL_LOG=$1 ; shift ;;
+ --spool) SPOOL=$1 ; shift ;;
+ *) ARGS="$ARGS $PARAM"
+ esac
+done
+
+exec erl -sname ejabberd \
+ -s ejabberd -detached \
+ -ejabberd config \"$CONFIG\" log_path \"$LOG\" \
+ -sasl sasl_error_logger \{file,\"$SASL_LOG\"\} \
+ -mnesia dir \"$SPOOL\" \
+ $ARGS "$@"
+

View file

@ -0,0 +1,45 @@
--- ejabberd.sh Thu Jan 1 03:00:00 1970
+++ ejabberd.sh Sat Jul 3 16:49:51 2004
@@ -0,0 +1,42 @@
+#! /bin/sh
+#
+# ejabberd Start/stop ejabberd server
+#
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
+EJABBERD=%%PREFIX%%/bin/ejabberd
+EJABBERDCTL=%%PREFIX%%/bin/ejabberdctl
+EJABBERDUSER=ejabberd
+NAME=ejabberd
+DESC=ejabberd
+
+test -f $EJABBERD || exit 0
+test -f $EJABBERDCTL || exit 0
+
+set -e
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: "
+ su ejabberd -c "$EJABBERD -heart -noshell -detached"
+ echo "$NAME."
+ ;;
+ stop)
+ echo -n "Stopping $DESC: "
+ su ejabberd -c "$EJABBERDCTL stop"
+ echo "$NAME."
+ ;;
+ restart|force-reload)
+ echo -n "Restarting $DESC: "
+ su ejabberd -c "$EJABBERDCTL restart"
+ echo "$NAME."
+ ;;
+ *)
+ N=/etc/init.d/$NAME
+ echo "Usage: $N {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0

View file

@ -0,0 +1,9 @@
--- ejabberdctl.orig Thu Jan 1 03:00:00 1970
+++ ejabberdctl Sat Jul 3 15:53:38 2004
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+[ -r /var/run/ejabberd/.erlang.cookie ] && HOME=/var/run/ejabberd
+
+exec erl -noinput -sname ejabberdctl -s ejabberd_ctl -extra ejabberd@`hostname -s` "$@"
+

View file

@ -0,0 +1,20 @@
--- mod_last.erl.orig
+++ mod_last.erl
@@ -102,7 +102,16 @@
sub_el = [{xmlelement, "query",
[{"xmlns", ?NS_LAST},
{"seconds", integer_to_list(Sec)}],
- [{xmlcdata, Status}]}]}
+ [{xmlcdata, Status}]}]};
+ [{last_activity, _, TimeStamp}] ->
+ {MegaSecs, Secs, _MicroSecs} = now(),
+ TimeStamp2 = MegaSecs * 1000000 + Secs,
+ Sec = TimeStamp2 - TimeStamp,
+ IQ#iq{type = result,
+ sub_el = [{xmlelement, "query",
+ [{"xmlns", ?NS_LAST},
+ {"seconds", integer_to_list(Sec)}],
+ []}]}
end.

View file

@ -0,0 +1,22 @@
#!/bin/sh
if [ "$2" != "POST-DEINSTALL" ]; then
exit 0
fi
USER=ejabberd
if pw usershow "${USER}" 2>/dev/null 1>&2; then
echo "To delete ejabberd user permanently, use 'pw userdel ${USER}'"
fi
if pw groupshow "${USER}" 2>/dev/null 1>&2; then
echo "To delete ejabberd group permanently, use 'pw groupdel ${USER}'"
fi
rm -Rf /var/run/ejabberd
echo "If you wish to delete ejabberd data and log files, remove"
echo "'/var/spool/ejabberd' and '/var/log/ejabberd' directories."
exit 0

21
net-im/ejabberd/pkg-descr Normal file
View file

@ -0,0 +1,21 @@
ejabberd is a Free and Open Source distributed fault-tolerant Jabber server.
It writen mostly in Erlang.
The main features of ejabberd is:
- Works on most of popular platforms: *nix
(tested on Linux, FreeBSD and NetBSD)
- Distributed
- Fault-tolerance:
- Built-in Multi-User Chat service
- Built-in IRC transport
- Built-in Publish-Subscribe service
- Built-in Jabber Users Directory service based on users vCards
- SSL support
- Ability to interface with external components (JIT, MSN-t, Yahoo-t, etc)
- Migration from jabberd14 is possible
- Mostly XMPP-compliant
- Support for JEP-0030 (Service Discovery).
- Support for JEP-0039 (Statistics Gathering).
- Support for xml:lang attribute in many XML elements
WWW: http://ejabberd.jabberstudio.org/

View file

@ -0,0 +1,40 @@
#!/bin/sh
if [ "$2" != "POST-INSTALL" ]; then
exit 0
fi
USER=ejabberd
GROUP=${USER}
UID=522
GID=${UID}
if ! pw groupshow "${GROUP}" 2>/dev/null 1>&2; then
if pw groupadd ${GROUP} -g ${GID}; then
echo "Added group \"${GROUP}\"."
else
echo "Adding group \"${GROUP}\" failed..."
exit 1
fi
fi
if ! pw usershow "${USER}" 2>/dev/null 1>&2; then
if pw useradd ${USER} -u ${UID} -g ${GROUP} -h - \
-s "/bin/sh" -d "/var/run/ejabberd" \
-c "ejabberd pseudo user"; \
then
echo "Added user \"${USER}\"."
else
echo "Adding user \"${USER}\" failed..."
exit 1
fi
fi
mkdir -m 750 /var/log/ejabberd /var/spool/ejabberd /var/run/ejabberd 2>/dev/null
cat > /var/run/ejabberd/.inetrc << __EOF__
{lookup,["file","native"]}.
{host,{127,0,0,1}, ["localhost","hostalias"]}.
__EOF__
chown -R ejabberd:ejabberd /var/log/ejabberd /var/spool/ejabberd /var/run/ejabberd
exit 0

92
net-im/ejabberd/pkg-plist Normal file
View file

@ -0,0 +1,92 @@
bin/ejabberd
bin/ejabberdctl
etc/ejabberd.cfg.sample
etc/rc.d/ejabberd.sh
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ELDAPv3.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/acl.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/configure.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/cyrsasl.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/cyrsasl_digest.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/cyrsasl_plain.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_app.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_auth.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_c2s.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_config.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_ctl.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_http.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_http_poll.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_listener.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_local.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_logger_h.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/eldap.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_receiver.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_router.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_s2s.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_s2s_in.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_s2s_out.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_service.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_sm.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_sup.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_tmp_sup.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_web.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_web_admin.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/gen_iq_handler.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/gen_mod.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/iconv.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/idna.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/jd2ejd.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/jlib.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_configure.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_configure2.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_disco.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_echo.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_irc.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_irc_connection.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_last.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_muc.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_muc_room.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_offline.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_privacy.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_private.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_pubsub.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_register.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_roster.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_stats.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_time.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_vcard.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_version.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/randoms.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/sha.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/shaper.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/stringprep.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/translate.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/xml.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/xml_stream.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd.app
lib/erlang/lib/ejabberd-%%VERSION%%/priv/lib/expat_erl.so
lib/erlang/lib/ejabberd-%%VERSION%%/priv/lib/iconv_erl.so
lib/erlang/lib/ejabberd-%%VERSION%%/priv/lib/stringprep_drv.so
lib/erlang/lib/ejabberd-%%VERSION%%/priv/msgs/es.msg
lib/erlang/lib/ejabberd-%%VERSION%%/priv/msgs/fr.msg
lib/erlang/lib/ejabberd-%%VERSION%%/priv/msgs/nl.msg
lib/erlang/lib/ejabberd-%%VERSION%%/priv/msgs/ru.msg
%%DOCSDIR%%/confacls.png
%%DOCSDIR%%/confhostname.png
%%DOCSDIR%%/dev.html
%%DOCSDIR%%/dev.tex
%%DOCSDIR%%/disco.png
%%DOCSDIR%%/discoallusers.png
%%DOCSDIR%%/discorunnodes.png
%%DOCSDIR%%/discorus.png
%%DOCSDIR%%/guide.html
%%DOCSDIR%%/guide.tex
%%DOCSDIR%%/logo.png
%%DOCSDIR%%/webadmmain.png
%%DOCSDIR%%/webadmmainru.png
%%PORTDOCS%%@dirrm %%DOCSDIR%%
@dirrm lib/erlang/lib/ejabberd-%%VERSION%%/priv/lib
@dirrm lib/erlang/lib/ejabberd-%%VERSION%%/priv/msgs
@dirrm lib/erlang/lib/ejabberd-%%VERSION%%/priv
@dirrm lib/erlang/lib/ejabberd-%%VERSION%%/ebin
@dirrm lib/erlang/lib/ejabberd-%%VERSION%%

View file

@ -106,6 +106,7 @@
SUBDIR += edonkey-gui-gtk
SUBDIR += edonkey-gui-gtk-urlslave
SUBDIR += edonkey-gui-java
SUBDIR += ejabberd
SUBDIR += entitymib
SUBDIR += erlang_xmlrpc
SUBDIR += etherboot

57
net/ejabberd/Makefile Normal file
View file

@ -0,0 +1,57 @@
# New ports collection makefile for: ejabberd
# Date created: 03 July 2004
# Whom: Alexander Timoshenko <gonzo@univ.kiev.ua>
#
# $FreeBSD$
#
PORTNAME= ejabberd
PORTVERSION= 0.7
CATEGORIES= net
MASTER_SITES= http://www.jabber.ru/files/ejabberd/
MAINTAINER= gonzo@univ.kiev.ua
COMMENT= Free and Open Source distributed fault-tolerant Jabber server
BUILD_DEPENDS= erlc:${PORTSDIR}/lang/erlang
RUN_DEPENDS= erl:${PORTSDIR}/lang/erlang
PLIST_SUB= VERSION="${PORTVERSION}"
WRKSRC= ${WRKDIR}/${DISTNAME}/src
HAS_CONFIGURE= yes
USE_GMAKE= yes
USE_REINPLACE= yes
# MAN1= yaws.1
# MAN5= yaws.conf.5 yaws_api.5
APPDIR= ${PREFIX}/lib/erlang/lib/ejabberd-${PORTVERSION}
.include <bsd.port.pre.mk>
post-patch:
@${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \
${WRKSRC}/ejabberd ${WRKSRC}/ejabberdctl ${WRKSRC}/ejabberd.sh
@${FIND} ${WRKSRC} -name \*.orig -or -name \*.bak | ${XARGS} ${RM}
do-install:
@${MKDIR} ${APPDIR}/ebin
@${INSTALL_DATA} ${WRKSRC}/*.beam ${APPDIR}/ebin
@${RM} -f ${BEAMDIR}/configure.beam
@${INSTALL_DATA} ${WRKSRC}/*.app ${APPDIR}/ebin
@${MKDIR} ${APPDIR}/priv/lib
@${INSTALL_DATA} ${WRKSRC}/*.so ${APPDIR}/priv/lib
@${MKDIR} ${APPDIR}/priv/msgs
@${INSTALL_DATA} ${WRKSRC}/msgs/*.msg ${APPDIR}/priv/msgs
@${INSTALL_SCRIPT} ${WRKSRC}/ejabberd ${PREFIX}/bin
@${INSTALL_SCRIPT} ${WRKSRC}/ejabberdctl ${PREFIX}/bin
@${INSTALL_SCRIPT} ${WRKSRC}/ejabberd.sh ${PREFIX}/etc/rc.d
@${INSTALL_DATA} ${FILESDIR}/ejabberd.cfg.sample ${PREFIX}/etc/
@${MKDIR} ${DOCSDIR}
@${INSTALL_DATA} ${WRKSRC}/../doc/* ${DOCSDIR}
post-install:
@PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
.include <bsd.port.post.mk>

2
net/ejabberd/distinfo Normal file
View file

@ -0,0 +1,2 @@
MD5 (ejabberd-0.7.tar.gz) = dfec9573263de8729213993f015cfac9
SIZE (ejabberd-0.7.tar.gz) = 378466

View file

@ -0,0 +1,176 @@
% Default Debian ejabberd.cfg
%override_acls.
% Users that have admin access. Add line like one of the following after you
% will be successfully registered on server to get admin access:
%{acl, admin, {user, "aleksey"}}.
%{acl, admin, {user, "ermine"}}.
% Blocked users:
%{acl, blocked, {user, "test"}}.
% Local users:
{acl, local, {user_regexp, ""}}.
% Another examples of ACLs:
%{acl, jabberorg, {server, "jabber.org"}}.
%{acl, aleksey, {user, "aleksey", "jabber.ru"}}.
%{acl, test, {user_regexp, "^test"}}.
%{acl, test, {user_glob, "test*"}}.
% Only admins can use configuration interface:
{access, configure, [{allow, admin}]}.
% Every username can be registered via in-band registration:
{access, register, [{allow, all}]}.
% None username can be registered via in-band registration:
%{access, register, [{deny, all}]}.
% After successful registration user will get message with following subject
% and body:
{welcome_message,
{"Welcome!",
"Welcome to Debian Jabber Service. "
"For information about Jabber visit http://jabber.org"}}.
% Replace them with 'none' if you don't want to send such message:
%{welcome_message, none}.
% List of people who will get notifications about registered users
%{registration_watchers, ["admin1@localhost",
% "admin2@localhost"]}.
% Only admins can send announcement messages:
{access, announce, [{allow, admin}]}.
% Only non-blocked users can use c2s connections:
{access, c2s, [{deny, blocked},
{allow, all}]}.
% Set shaper with name "normal" to limit traffic speed to 1000B/s
{shaper, normal, {maxrate, 1000}}.
% Set shaper with name "fast" to limit traffic speed to 50000B/s
{shaper, fast, {maxrate, 50000}}.
% For all users except admins used "normal" shaper
{access, c2s_shaper, [{none, admin},
{normal, all}]}.
% For all S2S connections used "fast" shaper
{access, s2s_shaper, [{fast, all}]}.
% Admins of this server are also admins of MUC service:
{access, muc_admin, [{allow, admin}]}.
% All users are allowed to use MUC service:
{access, muc, [{allow, all}]}.
% This rule allows access only for local users:
{access, local, [{allow, local}]}.
% Authentification method. If you want to use internal user base, then use
% this line:
{auth_method, internal}.
% For LDAP uthentification use these lines instead of above one:
%{auth_method, ldap}.
%{ldap_servers, ["localhost"]}. % List of LDAP servers
%{ldap_uidattr, "uid"}. % LDAP attribute that holds user ID
%{ldap_base, "dc=example,dc=com"}. % Base of LDAP directory
% Host name: (replace for your hostname)
{host, "localhost"}.
% Default language for server messages
{language, "en"}.
% Listened ports:
{listen,
% Ordinary client-2-server service
[{5222, ejabberd_c2s, [{access, c2s},
{shaper, c2s_shaper}]},
% SSL-enabled client-2-server service, uncomment these lines to
% enable ssl
% {5223, ejabberd_c2s, [{access, c2s},
% ssl,
% {certfile, "/etc/ssl/certs/ejabberd.pem"}]},
% Server-2-server service
{5269, ejabberd_s2s_in, [{shaper, s2s_shaper}]},
% External MUC jabber-muc (but internal mod_muc is better :))
% {5554, ejabberd_service, [{ip, {127, 0, 0, 1}},
% {access, all},
% {host, "muc.localhost", [{password, "secret"}]}]},
% Jabber ICQ Transport
% {5555, ejabberd_service, [{ip, {127, 0, 0, 1}},
% {access, all},
% {hosts, ["icq.localhost", "sms.localhost"], [{password, "secret"}]}]},
% AIM Transport
% {5556, ejabberd_service, [{ip, {127, 0, 0, 1}},
% {access, all},
% {host, "aim.localhost", [{password, "secret"}]}]},
% MSN Transport
% {5557, ejabberd_service, [{ip, {127, 0, 0, 1}},
% {access, all},
% {host, "msn.localhost", [{password, "secret"}]}]},
% Yahoo! Transport
% {5558, ejabberd_service, [{ip, {127, 0, 0, 1}},
% {access, all},
% {host, "yahoo.localhost", [{password, "secret"}]}]},
% External JUD (internal is more powerful,
% but doesn't allow to register users from other servers)
% {5559, ejabberd_service, [{ip, {127, 0, 0, 1}},
% {access, all},
% {host, "jud.localhost", [{password, "secret"}]}]},
% HTTP service (You may choose options HTTP-polling and Web-administering)
% When commenting out, be careful with commas
{5280, ejabberd_http, [http_poll, web_admin]}
]}.
% If SRV lookup fails, then port 5269 is used to communicate with remote server
{outgoing_s2s_port, 5269}.
% Used modules:
{modules,
[
{mod_register, [{access, register}]},
{mod_roster, []},
{mod_privacy, []},
{mod_configure, []},
{mod_configure2, []},
{mod_disco, [{extra_domains, ["users.jabber.org"]}]},
{mod_stats, []},
{mod_vcard, []},
{mod_offline, []},
{mod_echo, []},
{mod_private, []},
{mod_irc, []},
% Default options for mod_muc:
% host: "conference." ++ ?MYNAME
% access: all
% access_create: all
% access_admin: none (only room creator has owner privileges)
{mod_muc, [{access, muc},
{access_create, muc},
{access_admin, muc_admin}]},
{mod_pubsub, []},
{mod_time, []},
{mod_last, []},
{mod_version, []}
]}.

View file

@ -0,0 +1,11 @@
--- configure.orig Sat Jul 3 14:58:07 2004
+++ configure Sat Jul 3 15:01:49 2004
@@ -2180,7 +2180,7 @@
fi
- if test "z$ERLC" == "z" || test "z$ERL" == "z"; then
+ if test -z "$ERLC" || test -z "$ERL"; then
{ { echo "$as_me:$LINENO: error: erlang not found" >&5
echo "$as_me: error: erlang not found" >&2;}
{ (exit 1); exit 1; }; }

View file

@ -0,0 +1,34 @@
--- ejabberd.orig Thu Jan 1 03:00:00 1970
+++ ejabberd Sat Jul 3 15:52:35 2004
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+[ -r /var/run/ejabberd/.erlang.cookie ] && HOME=/var/run/ejabberd
+
+CONFIG=%%PREFIX%%/etc/ejabberd.cfg
+LOG=/var/log/ejabberd/ejabberd.log
+SASL_LOG=/var/log/ejabberd/sasl.log
+SPOOL=/var/spool/ejabberd
+
+ARGS=
+while [ $# -ne 0 ];
+do
+ PARAM=$1
+ shift
+ case $PARAM in
+ --) break ;;
+ --config) CONFIG=$1 ; shift ;;
+ --log) LOG=$1 ; shift ;;
+ --sasl-log) SASL_LOG=$1 ; shift ;;
+ --spool) SPOOL=$1 ; shift ;;
+ *) ARGS="$ARGS $PARAM"
+ esac
+done
+
+exec erl -sname ejabberd \
+ -s ejabberd -detached \
+ -ejabberd config \"$CONFIG\" log_path \"$LOG\" \
+ -sasl sasl_error_logger \{file,\"$SASL_LOG\"\} \
+ -mnesia dir \"$SPOOL\" \
+ $ARGS "$@"
+

View file

@ -0,0 +1,45 @@
--- ejabberd.sh Thu Jan 1 03:00:00 1970
+++ ejabberd.sh Sat Jul 3 16:49:51 2004
@@ -0,0 +1,42 @@
+#! /bin/sh
+#
+# ejabberd Start/stop ejabberd server
+#
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
+EJABBERD=%%PREFIX%%/bin/ejabberd
+EJABBERDCTL=%%PREFIX%%/bin/ejabberdctl
+EJABBERDUSER=ejabberd
+NAME=ejabberd
+DESC=ejabberd
+
+test -f $EJABBERD || exit 0
+test -f $EJABBERDCTL || exit 0
+
+set -e
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: "
+ su ejabberd -c "$EJABBERD -heart -noshell -detached"
+ echo "$NAME."
+ ;;
+ stop)
+ echo -n "Stopping $DESC: "
+ su ejabberd -c "$EJABBERDCTL stop"
+ echo "$NAME."
+ ;;
+ restart|force-reload)
+ echo -n "Restarting $DESC: "
+ su ejabberd -c "$EJABBERDCTL restart"
+ echo "$NAME."
+ ;;
+ *)
+ N=/etc/init.d/$NAME
+ echo "Usage: $N {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0

View file

@ -0,0 +1,9 @@
--- ejabberdctl.orig Thu Jan 1 03:00:00 1970
+++ ejabberdctl Sat Jul 3 15:53:38 2004
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+[ -r /var/run/ejabberd/.erlang.cookie ] && HOME=/var/run/ejabberd
+
+exec erl -noinput -sname ejabberdctl -s ejabberd_ctl -extra ejabberd@`hostname -s` "$@"
+

View file

@ -0,0 +1,20 @@
--- mod_last.erl.orig
+++ mod_last.erl
@@ -102,7 +102,16 @@
sub_el = [{xmlelement, "query",
[{"xmlns", ?NS_LAST},
{"seconds", integer_to_list(Sec)}],
- [{xmlcdata, Status}]}]}
+ [{xmlcdata, Status}]}]};
+ [{last_activity, _, TimeStamp}] ->
+ {MegaSecs, Secs, _MicroSecs} = now(),
+ TimeStamp2 = MegaSecs * 1000000 + Secs,
+ Sec = TimeStamp2 - TimeStamp,
+ IQ#iq{type = result,
+ sub_el = [{xmlelement, "query",
+ [{"xmlns", ?NS_LAST},
+ {"seconds", integer_to_list(Sec)}],
+ []}]}
end.

View file

@ -0,0 +1,22 @@
#!/bin/sh
if [ "$2" != "POST-DEINSTALL" ]; then
exit 0
fi
USER=ejabberd
if pw usershow "${USER}" 2>/dev/null 1>&2; then
echo "To delete ejabberd user permanently, use 'pw userdel ${USER}'"
fi
if pw groupshow "${USER}" 2>/dev/null 1>&2; then
echo "To delete ejabberd group permanently, use 'pw groupdel ${USER}'"
fi
rm -Rf /var/run/ejabberd
echo "If you wish to delete ejabberd data and log files, remove"
echo "'/var/spool/ejabberd' and '/var/log/ejabberd' directories."
exit 0

21
net/ejabberd/pkg-descr Normal file
View file

@ -0,0 +1,21 @@
ejabberd is a Free and Open Source distributed fault-tolerant Jabber server.
It writen mostly in Erlang.
The main features of ejabberd is:
- Works on most of popular platforms: *nix
(tested on Linux, FreeBSD and NetBSD)
- Distributed
- Fault-tolerance:
- Built-in Multi-User Chat service
- Built-in IRC transport
- Built-in Publish-Subscribe service
- Built-in Jabber Users Directory service based on users vCards
- SSL support
- Ability to interface with external components (JIT, MSN-t, Yahoo-t, etc)
- Migration from jabberd14 is possible
- Mostly XMPP-compliant
- Support for JEP-0030 (Service Discovery).
- Support for JEP-0039 (Statistics Gathering).
- Support for xml:lang attribute in many XML elements
WWW: http://ejabberd.jabberstudio.org/

40
net/ejabberd/pkg-install Normal file
View file

@ -0,0 +1,40 @@
#!/bin/sh
if [ "$2" != "POST-INSTALL" ]; then
exit 0
fi
USER=ejabberd
GROUP=${USER}
UID=522
GID=${UID}
if ! pw groupshow "${GROUP}" 2>/dev/null 1>&2; then
if pw groupadd ${GROUP} -g ${GID}; then
echo "Added group \"${GROUP}\"."
else
echo "Adding group \"${GROUP}\" failed..."
exit 1
fi
fi
if ! pw usershow "${USER}" 2>/dev/null 1>&2; then
if pw useradd ${USER} -u ${UID} -g ${GROUP} -h - \
-s "/bin/sh" -d "/var/run/ejabberd" \
-c "ejabberd pseudo user"; \
then
echo "Added user \"${USER}\"."
else
echo "Adding user \"${USER}\" failed..."
exit 1
fi
fi
mkdir -m 750 /var/log/ejabberd /var/spool/ejabberd /var/run/ejabberd 2>/dev/null
cat > /var/run/ejabberd/.inetrc << __EOF__
{lookup,["file","native"]}.
{host,{127,0,0,1}, ["localhost","hostalias"]}.
__EOF__
chown -R ejabberd:ejabberd /var/log/ejabberd /var/spool/ejabberd /var/run/ejabberd
exit 0

92
net/ejabberd/pkg-plist Normal file
View file

@ -0,0 +1,92 @@
bin/ejabberd
bin/ejabberdctl
etc/ejabberd.cfg.sample
etc/rc.d/ejabberd.sh
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ELDAPv3.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/acl.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/configure.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/cyrsasl.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/cyrsasl_digest.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/cyrsasl_plain.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_app.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_auth.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_c2s.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_config.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_ctl.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_http.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_http_poll.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_listener.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_local.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_logger_h.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/eldap.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_receiver.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_router.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_s2s.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_s2s_in.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_s2s_out.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_service.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_sm.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_sup.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_tmp_sup.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_web.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd_web_admin.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/gen_iq_handler.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/gen_mod.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/iconv.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/idna.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/jd2ejd.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/jlib.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_configure.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_configure2.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_disco.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_echo.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_irc.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_irc_connection.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_last.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_muc.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_muc_room.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_offline.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_privacy.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_private.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_pubsub.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_register.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_roster.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_stats.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_time.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_vcard.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/mod_version.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/randoms.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/sha.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/shaper.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/stringprep.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/translate.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/xml.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/xml_stream.beam
lib/erlang/lib/ejabberd-%%VERSION%%/ebin/ejabberd.app
lib/erlang/lib/ejabberd-%%VERSION%%/priv/lib/expat_erl.so
lib/erlang/lib/ejabberd-%%VERSION%%/priv/lib/iconv_erl.so
lib/erlang/lib/ejabberd-%%VERSION%%/priv/lib/stringprep_drv.so
lib/erlang/lib/ejabberd-%%VERSION%%/priv/msgs/es.msg
lib/erlang/lib/ejabberd-%%VERSION%%/priv/msgs/fr.msg
lib/erlang/lib/ejabberd-%%VERSION%%/priv/msgs/nl.msg
lib/erlang/lib/ejabberd-%%VERSION%%/priv/msgs/ru.msg
%%DOCSDIR%%/confacls.png
%%DOCSDIR%%/confhostname.png
%%DOCSDIR%%/dev.html
%%DOCSDIR%%/dev.tex
%%DOCSDIR%%/disco.png
%%DOCSDIR%%/discoallusers.png
%%DOCSDIR%%/discorunnodes.png
%%DOCSDIR%%/discorus.png
%%DOCSDIR%%/guide.html
%%DOCSDIR%%/guide.tex
%%DOCSDIR%%/logo.png
%%DOCSDIR%%/webadmmain.png
%%DOCSDIR%%/webadmmainru.png
%%PORTDOCS%%@dirrm %%DOCSDIR%%
@dirrm lib/erlang/lib/ejabberd-%%VERSION%%/priv/lib
@dirrm lib/erlang/lib/ejabberd-%%VERSION%%/priv/msgs
@dirrm lib/erlang/lib/ejabberd-%%VERSION%%/priv
@dirrm lib/erlang/lib/ejabberd-%%VERSION%%/ebin
@dirrm lib/erlang/lib/ejabberd-%%VERSION%%