saving uncommitted changes in /etc prior to emerge run
This commit is contained in:
		
							parent
							
								
									3e93f989ef
								
							
						
					
					
						commit
						d060b25073
					
				@ -1,8 +0,0 @@
 | 
			
		||||
# Bitlbee options (see /usr/sbin/bitlbee -h)
 | 
			
		||||
BITLBEE_OPTS="-F"
 | 
			
		||||
 | 
			
		||||
# By default, the bitlbee init script will attempt to stop
 | 
			
		||||
# all bitlbee-owned processes, including per-client forks.
 | 
			
		||||
# Setting this to "no" tells the init script to only
 | 
			
		||||
# stop the main bitlbee process.
 | 
			
		||||
BITLBEE_STOP_ALL="yes"
 | 
			
		||||
@ -1,74 +0,0 @@
 | 
			
		||||
# Copyright 1999-2015 Gentoo Foundation
 | 
			
		||||
# Distributed under the terms of the GNU General Public License v2
 | 
			
		||||
# $Id$
 | 
			
		||||
#
 | 
			
		||||
# To populate all changes in this file you need to regenerate your
 | 
			
		||||
# grub configuration file afterwards:
 | 
			
		||||
#     'grub2-mkconfig -o /boot/grub/grub.cfg'
 | 
			
		||||
#
 | 
			
		||||
# See the grub info page for documentation on possible variables and
 | 
			
		||||
# their associated values.
 | 
			
		||||
 | 
			
		||||
GRUB_DISTRIBUTOR="Gentoo"
 | 
			
		||||
 | 
			
		||||
# Default menu entry
 | 
			
		||||
#GRUB_DEFAULT=0
 | 
			
		||||
 | 
			
		||||
# Boot the default entry this many seconds after the menu is displayed
 | 
			
		||||
#GRUB_TIMEOUT=5
 | 
			
		||||
#GRUB_TIMEOUT_STYLE=menu
 | 
			
		||||
 | 
			
		||||
# Append parameters to the linux kernel command line
 | 
			
		||||
#GRUB_CMDLINE_LINUX=""
 | 
			
		||||
#
 | 
			
		||||
# Examples:
 | 
			
		||||
#
 | 
			
		||||
# Boot with network interface renaming disabled
 | 
			
		||||
# GRUB_CMDLINE_LINUX="net.ifnames=0"
 | 
			
		||||
#
 | 
			
		||||
# Boot with systemd instead of sysvinit (openrc)
 | 
			
		||||
# GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd"
 | 
			
		||||
 | 
			
		||||
# Append parameters to the linux kernel command line for non-recovery entries
 | 
			
		||||
#GRUB_CMDLINE_LINUX_DEFAULT=""
 | 
			
		||||
 | 
			
		||||
# Uncomment to disable graphical terminal (grub-pc only)
 | 
			
		||||
#GRUB_TERMINAL=console
 | 
			
		||||
 | 
			
		||||
# The resolution used on graphical terminal.
 | 
			
		||||
# Note that you can use only modes which your graphic card supports via VBE.
 | 
			
		||||
# You can see them in real GRUB with the command `vbeinfo'.
 | 
			
		||||
#GRUB_GFXMODE=640x480
 | 
			
		||||
 | 
			
		||||
# Set to 'text' to force the Linux kernel to boot in normal text
 | 
			
		||||
# mode, 'keep' to preserve the graphics mode set using
 | 
			
		||||
# 'GRUB_GFXMODE', 'WIDTHxHEIGHT'['xDEPTH'] to set a particular
 | 
			
		||||
# graphics mode, or a sequence of these separated by commas or
 | 
			
		||||
# semicolons to try several modes in sequence.
 | 
			
		||||
#GRUB_GFXPAYLOAD_LINUX=
 | 
			
		||||
 | 
			
		||||
# Path to theme spec txt file.
 | 
			
		||||
# The starfield is by default provided with use truetype.
 | 
			
		||||
# NOTE: when enabling custom theme, ensure you have required font/etc.
 | 
			
		||||
#GRUB_THEME="/boot/grub/themes/starfield/theme.txt"
 | 
			
		||||
 | 
			
		||||
# Background image used on graphical terminal.
 | 
			
		||||
# Can be in various bitmap formats.
 | 
			
		||||
#GRUB_BACKGROUND="/boot/grub/mybackground.png"
 | 
			
		||||
 | 
			
		||||
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to kernel
 | 
			
		||||
#GRUB_DISABLE_LINUX_UUID=true
 | 
			
		||||
 | 
			
		||||
# Uncomment to disable generation of recovery mode menu entries
 | 
			
		||||
#GRUB_DISABLE_RECOVERY=true
 | 
			
		||||
 | 
			
		||||
# Uncomment to disable generation of the submenu and put all choices on
 | 
			
		||||
# the top-level menu.
 | 
			
		||||
# Besides the visual affect of no sub menu, this makes navigation of the
 | 
			
		||||
# menu easier for a user who can't see the screen.
 | 
			
		||||
#GRUB_DISABLE_SUBMENU=y
 | 
			
		||||
 | 
			
		||||
# Uncomment to play a tone when the main menu is displayed.
 | 
			
		||||
# This is useful, for example, to allow users who can't see the screen
 | 
			
		||||
# to know when they can make a choice on the menu.
 | 
			
		||||
#GRUB_INIT_TUNE="60 800 1"
 | 
			
		||||
@ -1,31 +0,0 @@
 | 
			
		||||
#!/sbin/runscript
 | 
			
		||||
# Copyright 1999-2014 Gentoo Foundation
 | 
			
		||||
# Distributed under the terms of the GNU General Public License, v2 or
 | 
			
		||||
# later
 | 
			
		||||
# $Id$
 | 
			
		||||
 | 
			
		||||
DAEMON=/usr/sbin/bitlbee
 | 
			
		||||
PIDFILE=/var/run/bitlbee/bitlbee.pid
 | 
			
		||||
 | 
			
		||||
depend() {
 | 
			
		||||
	need logger net
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start () {
 | 
			
		||||
	ebegin "Starting bitlbee"
 | 
			
		||||
	checkpath -d -m 0755 -o bitlbee:bitlbee $(dirname ${PIDFILE})
 | 
			
		||||
	start-stop-daemon --start --quiet \
 | 
			
		||||
		-u bitlbee:bitlbee --exec ${DAEMON} --pidfile ${PIDFILE} \
 | 
			
		||||
		-- -P ${PIDFILE} ${BITLBEE_OPTS}
 | 
			
		||||
	eend $?
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
stop() {
 | 
			
		||||
	ebegin "Stopping bitlbee"
 | 
			
		||||
	local pidfile=
 | 
			
		||||
	yesno ${BITLBEE_STOP_ALL:-YES} ||
 | 
			
		||||
		pidfile="--pidfile ${PIDFILE}"
 | 
			
		||||
	start-stop-daemon --stop --quiet ${pidfile} -u bitlbee:bitlbee
 | 
			
		||||
	eend $?
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,25 +0,0 @@
 | 
			
		||||
#!/sbin/runscript
 | 
			
		||||
# Copyright 1999-2014 Gentoo Foundation
 | 
			
		||||
# Distributed under the terms of the GNU General Public License v2
 | 
			
		||||
# $Id$
 | 
			
		||||
 | 
			
		||||
pidfile="/var/run/nvidia-persistenced/nvidia-persistenced.pid"
 | 
			
		||||
 | 
			
		||||
start() {
 | 
			
		||||
	if ! [ "${NVPD_USER}x" = x ]; then
 | 
			
		||||
		ebegin "Starting nvidia-persistenced for ${NVPD_USER}"
 | 
			
		||||
		NVPD_USER_ARG="--user ${NVPD_USER}"
 | 
			
		||||
	else
 | 
			
		||||
		ebegin "Starting nvidia-persistenced"
 | 
			
		||||
	fi
 | 
			
		||||
	start-stop-daemon --start --quiet --pidfile ${pidfile} \
 | 
			
		||||
		--background --exec /opt/bin/nvidia-persistenced \
 | 
			
		||||
		-- ${NVPD_USER_ARG} ${ARGS}
 | 
			
		||||
	eend $?	
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
stop() {
 | 
			
		||||
	ebegin "Stopping nvidia-persistenced"
 | 
			
		||||
	start-stop-daemon --stop --quiet --pidfile ${pidfile}
 | 
			
		||||
	eend $?
 | 
			
		||||
}
 | 
			
		||||
@ -1,25 +0,0 @@
 | 
			
		||||
#!/sbin/runscript
 | 
			
		||||
# Copyright 1999-2013 Gentoo Foundation
 | 
			
		||||
# Distributed under the terms of the GNU General Public License v2
 | 
			
		||||
# $Id$
 | 
			
		||||
 | 
			
		||||
pidfile="/run/nvidia-smi.pid"
 | 
			
		||||
 | 
			
		||||
depend() {
 | 
			
		||||
    after modules
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start() {
 | 
			
		||||
	ebegin "Starting NVIDIA System Management Interface"
 | 
			
		||||
	rm -f ${pidfile}
 | 
			
		||||
	start-stop-daemon --start --quiet --pidfile ${pidfile} \
 | 
			
		||||
		--make-pidfile --background --exec /opt/bin/nvidia-smi -- \
 | 
			
		||||
		-q -l 300
 | 
			
		||||
	eend $?
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
stop() {
 | 
			
		||||
	ebegin "Stopping NVIDIA System Management Interface"
 | 
			
		||||
	start-stop-daemon --stop --quiet --pidfile ${pidfile}
 | 
			
		||||
	eend $?
 | 
			
		||||
}
 | 
			
		||||
@ -1,84 +0,0 @@
 | 
			
		||||
#!/sbin/runscript
 | 
			
		||||
# Copyright 1999-2014 Gentoo Foundation
 | 
			
		||||
# Distributed under the terms of the GNU General Public License v2
 | 
			
		||||
# $Id$
 | 
			
		||||
 | 
			
		||||
PIDFILE=/var/run/tor/tor.pid
 | 
			
		||||
CONFFILE=/etc/tor/torrc
 | 
			
		||||
GRACEFUL_TIMEOUT=${GRACEFUL_TIMEOUT:-60}
 | 
			
		||||
 | 
			
		||||
# See bug #523552, and https://trac.torproject.org/projects/tor/ticket/5525
 | 
			
		||||
# Graceful = wait 30 secs or so until all connections are properly closed.
 | 
			
		||||
extra_commands="checkconfig"
 | 
			
		||||
extra_started_commands="graceful gracefulstop reload"
 | 
			
		||||
description="Anonymizing overlay network for TCP"
 | 
			
		||||
description_checkconfig="Check for valid config file."
 | 
			
		||||
description_reload="Reload the configuration."
 | 
			
		||||
description_graceful="Gracefully restart."
 | 
			
		||||
description_gracefulstop="Gracefully stop."
 | 
			
		||||
 | 
			
		||||
depend() {
 | 
			
		||||
        need net
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
checkconfig() {
 | 
			
		||||
        # first check that it exists
 | 
			
		||||
        if [ ! -f ${CONFFILE} ] ; then
 | 
			
		||||
                eerror "You need to setup ${CONFFILE} first"
 | 
			
		||||
                eerror "Example is in ${CONFFILE}.sample"
 | 
			
		||||
                return 1
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	# now verify whether the configuration is valid
 | 
			
		||||
	/usr/bin/tor --verify-config -f ${CONFFILE} > /dev/null 2>&1
 | 
			
		||||
	if [ $? -eq 0 ] ; then
 | 
			
		||||
		einfo "Tor configuration (${CONFFILE}) is valid."
 | 
			
		||||
		return 0
 | 
			
		||||
	else
 | 
			
		||||
		eerror "Tor configuration (${CONFFILE}) not valid."
 | 
			
		||||
		/usr/bin/tor --verify-config -f ${CONFFILE}
 | 
			
		||||
		return 1
 | 
			
		||||
	fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start() {
 | 
			
		||||
	checkconfig || return 1
 | 
			
		||||
	checkpath -d -m 0755 -o tor:tor /var/run/tor
 | 
			
		||||
        ebegin "Starting Tor"
 | 
			
		||||
        HOME=/var/lib/tor
 | 
			
		||||
	start-stop-daemon --start --pidfile "${PIDFILE}" --quiet --exec /usr/bin/tor  -- -f "${CONFFILE}" --runasdaemon 1 --PidFile "${PIDFILE}" > /dev/null 2>&1
 | 
			
		||||
        eend $?
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
stop() {
 | 
			
		||||
        ebegin "Stopping Tor"
 | 
			
		||||
	start-stop-daemon --stop --pidfile "${PIDFILE}" --exec /usr/bin/tor -- --PidFile "${PIDFILE}"
 | 
			
		||||
        eend $?
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
graceful() {
 | 
			
		||||
	gracefulstop
 | 
			
		||||
	start
 | 
			
		||||
	eend $?
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
gracefulstop() {
 | 
			
		||||
	local rc=0
 | 
			
		||||
        ebegin "Gracefully stopping Tor"
 | 
			
		||||
	ebegin "This can take up to ${GRACEFUL_TIMEOUT} seconds"
 | 
			
		||||
	start-stop-daemon -P --stop --signal INT -R ${GRACEFUL_TIMEOUT} --pidfile "${PIDFILE}" --exec /usr/bin/tor -- --PidFile "${PIDFILE}"
 | 
			
		||||
	rc=$?
 | 
			
		||||
	eend "done"
 | 
			
		||||
	eend $rc
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
reload() {
 | 
			
		||||
	if [ ! -f ${PIDFILE} ]; then
 | 
			
		||||
		eerror "${SVCNAME} isn't running"
 | 
			
		||||
		return 1
 | 
			
		||||
	fi
 | 
			
		||||
	checkconfig || return 1
 | 
			
		||||
	ebegin "Reloading Tor configuration"
 | 
			
		||||
	start-stop-daemon --signal HUP --pidfile ${PIDFILE}
 | 
			
		||||
	eend $?
 | 
			
		||||
}
 | 
			
		||||
@ -1,28 +0,0 @@
 | 
			
		||||
#!/sbin/runscript
 | 
			
		||||
# Copyright 1999-2013 Gentoo Foundation
 | 
			
		||||
# Distributed under the terms of the GNU General Public License, v2 or
 | 
			
		||||
# later
 | 
			
		||||
# $Header: /var/cvsroot/gentoo-x86/net-im/bitlbee/files/bitlbee.initd,v 1.4 2013/01/08 14:25:21 cedk Exp $
 | 
			
		||||
 | 
			
		||||
DAEMON=/usr/sbin/bitlbee
 | 
			
		||||
PIDFILE=/var/run/bitlbee/bitlbee.pid
 | 
			
		||||
 | 
			
		||||
depend() {
 | 
			
		||||
	need logger net
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start () {
 | 
			
		||||
	ebegin "Starting bitlbee"
 | 
			
		||||
	checkpath -d -m 0755 -o bitlbee:bitlbee `dirname ${PIDFILE}`
 | 
			
		||||
	start-stop-daemon --start --quiet \
 | 
			
		||||
		-u bitlbee:bitlbee  --exec ${DAEMON} -- -P ${PIDFILE} \
 | 
			
		||||
		${BITLBEE_OPTS}
 | 
			
		||||
	eend $?
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
stop() {
 | 
			
		||||
	ebegin "Stopping bitlbee"
 | 
			
		||||
	start-stop-daemon --stop --quiet --pidfile ${PIDFILE}
 | 
			
		||||
	eend $?
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
#!/sbin/runscript
 | 
			
		||||
# Copyright 1999-2014 Gentoo Foundation
 | 
			
		||||
# Distributed under the terms of the GNU General Public License v2
 | 
			
		||||
# $Header: /var/cvsroot/gentoo-x86/x11-drivers/nvidia-drivers/files/nvidia-persistenced.init,v 1.2 2014/09/19 22:09:28 jer Exp $
 | 
			
		||||
# $Id$
 | 
			
		||||
 | 
			
		||||
pidfile="/var/run/nvidia-persistenced/nvidia-persistenced.pid"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
#!/sbin/runscript
 | 
			
		||||
# Copyright 1999-2013 Gentoo Foundation
 | 
			
		||||
# Distributed under the terms of the GNU General Public License v2
 | 
			
		||||
# $Header: /var/cvsroot/gentoo-x86/x11-drivers/nvidia-drivers/files/nvidia-smi.init,v 1.2 2013/05/09 16:32:00 jer Exp $
 | 
			
		||||
# $Id$
 | 
			
		||||
 | 
			
		||||
pidfile="/run/nvidia-smi.pid"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
#!/sbin/runscript
 | 
			
		||||
# Copyright 1999-2014 Gentoo Foundation
 | 
			
		||||
# Distributed under the terms of the GNU General Public License v2
 | 
			
		||||
# $Header: /var/cvsroot/gentoo-x86/net-misc/tor/files/tor.initd-r7,v 1.2 2014/12/23 17:26:49 blueness Exp $
 | 
			
		||||
# $Id$
 | 
			
		||||
 | 
			
		||||
PIDFILE=/var/run/tor/tor.pid
 | 
			
		||||
CONFFILE=/etc/tor/torrc
 | 
			
		||||
 | 
			
		||||
@ -1,705 +0,0 @@
 | 
			
		||||
<!-- c2s configuration -->
 | 
			
		||||
<c2s>
 | 
			
		||||
  <!-- Our ID on the network (default: c2s) -->
 | 
			
		||||
  <id>c2s</id>
 | 
			
		||||
 | 
			
		||||
  <!-- The process ID file. Comment this out if you don't need to know
 | 
			
		||||
       the process ID from outside the process (eg for control scripts) -->
 | 
			
		||||
  <pidfile>/var/run/jabber/${id}.pid</pidfile>
 | 
			
		||||
 | 
			
		||||
  <!-- Router connection configuration -->
 | 
			
		||||
  <router>
 | 
			
		||||
    <!-- IP/port the router is waiting for connections on -->
 | 
			
		||||
    <ip>127.0.0.1</ip>            <!-- default: 127.0.0.1 -->
 | 
			
		||||
    <port>5347</port>             <!-- default: 5347 -->
 | 
			
		||||
 | 
			
		||||
    <!-- Username/password to authenticate as -->
 | 
			
		||||
    <user>jabberd</user>          <!-- default: jabberd -->
 | 
			
		||||
    <pass>secret</pass>           <!-- default: secret -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key to use when
 | 
			
		||||
         setting up an encrypted channel with the router. From
 | 
			
		||||
         SSL_CTX_use_certificate_chain_file(3): "The certificates must be
 | 
			
		||||
         in PEM format and must be sorted starting with the subject's
 | 
			
		||||
         certificate (actual client or server certificate), followed
 | 
			
		||||
         by intermediate CA certificates if applicable, and ending
 | 
			
		||||
         at the highest level (root) CA" (the latter one being optional).
 | 
			
		||||
         If this is commented out, or the file can't be read, no attempt
 | 
			
		||||
         will be made to establish an encrypted channel with the router. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Router connection retry -->
 | 
			
		||||
    <retry>
 | 
			
		||||
      <!-- If the connection to the router can't be established at
 | 
			
		||||
           startup, we should try again this many times before exiting.
 | 
			
		||||
           Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <init>3</init>
 | 
			
		||||
 | 
			
		||||
      <!-- If we lost the connection to the router during normal
 | 
			
		||||
           operation (ie we've successfully connected to the router in
 | 
			
		||||
           the past), we should try to reconnect this many times before
 | 
			
		||||
           exiting. Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <lost>3</lost>
 | 
			
		||||
 | 
			
		||||
      <!-- Sleep for this many seconds before trying attempting a
 | 
			
		||||
           reconnect. [default: 2] -->
 | 
			
		||||
      <sleep>2</sleep>
 | 
			
		||||
    </retry>
 | 
			
		||||
  </router>
 | 
			
		||||
 | 
			
		||||
  <!-- Log configuration - type is "syslog", "file" or "stdout" -->
 | 
			
		||||
  <log type='syslog'>
 | 
			
		||||
    <!-- If logging to syslog, this is the log ident -->
 | 
			
		||||
    <ident>jabberd/c2s</ident>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to syslog, this is the log facility
 | 
			
		||||
         (local0 - local7)                        [default: local3] -->
 | 
			
		||||
    <facility>local3</facility>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to file, this is the filename of the logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <file>/var/log/jabber/c2s.log</file>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Filename of the debug logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <debug>/var/log/jabber/debug-${id}.log</debug>
 | 
			
		||||
    -->
 | 
			
		||||
  </log>
 | 
			
		||||
 | 
			
		||||
  <!-- Local network configuration -->
 | 
			
		||||
  <local>
 | 
			
		||||
    <!-- Who we identify ourselves as. This should correspond to the
 | 
			
		||||
         ID (host) that the session manager thinks it is. You can
 | 
			
		||||
         specify more than one to support virtual hosts, as long as you
 | 
			
		||||
         have additional session manager instances on the network to
 | 
			
		||||
         handle those hosts.
 | 
			
		||||
 | 
			
		||||
         You may leave the content of the <id/> empty to setup default
 | 
			
		||||
         virtual host setup, that will be used for all present but not
 | 
			
		||||
         configured otherwise SM domains.
 | 
			
		||||
 | 
			
		||||
         realm
 | 
			
		||||
         attribute specifies the auth/reg or SASL authentication realm
 | 
			
		||||
         for the host. If the attribute is not specified, the realm will
 | 
			
		||||
         be selected by the SASL mechanism, or will be the same as the ID
 | 
			
		||||
         itself. Be aware that users are assigned to a realm, not a host,
 | 
			
		||||
         so two hosts in the same realm will have the same users. If no
 | 
			
		||||
         realm is specified, it will be set to be the same as the ID.
 | 
			
		||||
         If empty "" realm is specified, the PAM backend wil authenticate
 | 
			
		||||
         using plain usernames, not JIDs.
 | 
			
		||||
 | 
			
		||||
         pemfile
 | 
			
		||||
         attribute specifies the file containing a SSL certificate and
 | 
			
		||||
         private key for client connections. If this is non existant,
 | 
			
		||||
         clients will not be offered the STARTTLS stream extension
 | 
			
		||||
         From SSL_CTX_use_certificate_chain_file(3):
 | 
			
		||||
         "The certificates must be in PEM format and must be sorted
 | 
			
		||||
         starting with the subject's certificate (actual client or server
 | 
			
		||||
         certificate), followed by intermediate CA certificates if
 | 
			
		||||
         applicable, and ending at the highest level (root) CA"
 | 
			
		||||
         (the latter one being optional).
 | 
			
		||||
 | 
			
		||||
         verify-mode
 | 
			
		||||
         SSL verify mode - see SSL_CTX_set_verify(3), mode parameter.
 | 
			
		||||
         Sum of the following options:
 | 
			
		||||
         SSL_VERIFY_NONE                 0x00
 | 
			
		||||
		 SSL_VERIFY_PEER                 0x01
 | 
			
		||||
		 SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02
 | 
			
		||||
		 SSL_VERIFY_CLIENT_ONCE          0x04
 | 
			
		||||
		 Use 7 to require all clients to present _valid_ certificates.
 | 
			
		||||
 | 
			
		||||
     
 | 
			
		||||
         cachain
 | 
			
		||||
         SSL CA chain. Used to verify client certificates. 
 | 
			
		||||
         CA names published to client upon connection.
 | 
			
		||||
          
 | 
			
		||||
         require-starttls
 | 
			
		||||
         If this attribute is set to any value, clients must do STARTTLS
 | 
			
		||||
         before they can authenticate. Until the stream is encrypted,
 | 
			
		||||
         all packets will be dropped.
 | 
			
		||||
 | 
			
		||||
         register-enable
 | 
			
		||||
         Remove this attribute to disable account registrations.
 | 
			
		||||
 | 
			
		||||
         instructions
 | 
			
		||||
         Human-readable instructions to be returned to client when
 | 
			
		||||
         registration is requested.
 | 
			
		||||
 | 
			
		||||
         register-oob
 | 
			
		||||
         URL to be attached as an alternative, out-of-band registration
 | 
			
		||||
         method. Usually web-based http:// URL.
 | 
			
		||||
 | 
			
		||||
         password-change
 | 
			
		||||
         Password change only. When registration is disabled, it may
 | 
			
		||||
         still be useful to allow clients to change their password. If
 | 
			
		||||
         you want this, add this attribute with any value, when you need
 | 
			
		||||
         registration disabled.
 | 
			
		||||
          -->
 | 
			
		||||
    <id register-enable='mu'>localhost.localdomain</id>
 | 
			
		||||
    <!-- or
 | 
			
		||||
    <id realm='company.int'
 | 
			
		||||
        pemfile='/etc/jabber/server.pem'
 | 
			
		||||
        verify-mode='7'
 | 
			
		||||
        cachain='/etc/jabber/client_ca_certs.pem'
 | 
			
		||||
        require-starttls='mu'
 | 
			
		||||
        register-enable='mu'
 | 
			
		||||
        instructions='Enter a username and password to register with this server.'
 | 
			
		||||
        register-oob='http://example.org/register'
 | 
			
		||||
        password-change='mu'
 | 
			
		||||
    >example.net</id> -->
 | 
			
		||||
    <!-- or the default host
 | 
			
		||||
    <id password-change='mu' /> -->
 | 
			
		||||
 | 
			
		||||
    <!-- IP address to bind to (default: 0.0.0.0) -->
 | 
			
		||||
    <ip>0.0.0.0</ip>
 | 
			
		||||
 | 
			
		||||
    <!-- Port to bind to, or 0 to disable unencrypted access to the
 | 
			
		||||
         server (default: 5222) -->
 | 
			
		||||
    <port>5222</port>
 | 
			
		||||
 | 
			
		||||
    <!-- Older versions of jabberd support encrypted client connections
 | 
			
		||||
         via an additional listening socket on port 5223. If you want
 | 
			
		||||
         this (required to allow pre-STARTTLS clients to do SSL),
 | 
			
		||||
         uncomment this -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <ssl-port>5223</ssl-port>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key for client
 | 
			
		||||
         connections. From SSL_CTX_use_certificate_chain_file(3):
 | 
			
		||||
         "The certificates must be in PEM format and must be sorted
 | 
			
		||||
         starting with the subject's certificate (actual client or server
 | 
			
		||||
         certificate), followed by intermediate CA certificates if
 | 
			
		||||
         applicable, and ending at the highest level (root) CA"
 | 
			
		||||
         (the latter one being optional).
 | 
			
		||||
 | 
			
		||||
         Note: This certificate is ONLY used for old style SSL
 | 
			
		||||
         connections on port 5223 (pre-STARTTLS).  If you want to
 | 
			
		||||
         use STARTTLS over the standard XMPP port 5222 then you
 | 
			
		||||
         MUST specify the pemfile in the 'id' tag above. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- SSL verify mode - see SSL_CTX_set_verify(3), mode parameter -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <verify-mode>7</verify-mode>
 | 
			
		||||
    -->
 | 
			
		||||
    
 | 
			
		||||
    <!-- SSL CA chain. Used to verify client certificates. CA names published to client upon connection -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <cachain>/etc/jabber/client_ca_certs.pem</cachain>  
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Forward incoming HTTP clients to a real HTTP server -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <httpforward>http://www.jabber.org/</httpforward>
 | 
			
		||||
    -->
 | 
			
		||||
  </local>
 | 
			
		||||
 | 
			
		||||
  <!-- Input/output settings -->
 | 
			
		||||
  <io>
 | 
			
		||||
    <!-- Maximum number of file descriptors. This value sets an upper
 | 
			
		||||
         limit on the number of users who may be logged in to this
 | 
			
		||||
         server at a given time. Each user consumers one file
 | 
			
		||||
         descriptor.
 | 
			
		||||
 | 
			
		||||
         Note that the number of possible connections will be slightly
 | 
			
		||||
         less than this, because c2s itself can use up five on its own,
 | 
			
		||||
         and auth/reg modules may need a few also. If the supply of
 | 
			
		||||
         file descriptors is exhausted, new incoming connections will
 | 
			
		||||
         be denied.
 | 
			
		||||
 | 
			
		||||
         Also note that this value only affects how many file descriptors
 | 
			
		||||
         jabberd is able to handle internally. You may also need to
 | 
			
		||||
         tell your operating system to allow jabberd to use more file
 | 
			
		||||
         descriptors. On Linux this can be done using ulimit -n or by
 | 
			
		||||
         changing the value of /proc/sys/fd/file-max.
 | 
			
		||||
 | 
			
		||||
         (default: 1024) -->
 | 
			
		||||
    <max_fds>1024</max_fds>
 | 
			
		||||
 | 
			
		||||
    <!-- Rate limiting -->
 | 
			
		||||
    <limits>
 | 
			
		||||
      <!-- Maximum bytes per second - if more than X bytes are sent in Y
 | 
			
		||||
           seconds, connection is throttled for Z seconds. The format
 | 
			
		||||
           is:
 | 
			
		||||
 | 
			
		||||
             <bytes seconds='Y' throttle='Z'>X</bytes>
 | 
			
		||||
 | 
			
		||||
           Default Y is 1, default Z is 5. set X to 0 to disable. -->
 | 
			
		||||
      <bytes>0</bytes>
 | 
			
		||||
 | 
			
		||||
      <!-- Maximum number of stanzas per second - if more than X stanzas
 | 
			
		||||
           are sent in Y seconds, connection is throttled for Z seconds.
 | 
			
		||||
           The format is:
 | 
			
		||||
 | 
			
		||||
             <stanzas seconds='Y' throttle='Z'>X</stanzas>
 | 
			
		||||
 | 
			
		||||
           Default Y 1, default Z is 5. Set X to 0 to disable -->
 | 
			
		||||
      <stanzas>1000</stanzas>
 | 
			
		||||
 | 
			
		||||
      <!-- Maximum connects per second - if more than X connects are
 | 
			
		||||
           attempted from a single IP in Y seconds, that IP is throttled
 | 
			
		||||
           for Z seconds. The format is:
 | 
			
		||||
 | 
			
		||||
             <connects seconds='Y' throttle='Z'>X</connects>
 | 
			
		||||
 | 
			
		||||
           Default Y is 5, default Z is 5. set X to 0 to disable. -->
 | 
			
		||||
      <connects>0</connects>
 | 
			
		||||
 | 
			
		||||
      <!-- Maximum stanza size - if more than given number of bytes
 | 
			
		||||
           are read in one incoming stanza, the stream is closed
 | 
			
		||||
           with policy-violation error.
 | 
			
		||||
 | 
			
		||||
           Set to 0 to disable.
 | 
			
		||||
           Values less than 16384 might not work. -->
 | 
			
		||||
      <stanzasize>65535</stanzasize>
 | 
			
		||||
    </limits>
 | 
			
		||||
 | 
			
		||||
    <!-- Enable XEP-0138: Stream Compression -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <compression/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- IP-based access controls. If a connection IP matches an allow
 | 
			
		||||
         rule, the connection will be accepted. If a connecting IP
 | 
			
		||||
         matches a deny rule, the connection will be refused. If the
 | 
			
		||||
         connecting IP does not match any rules, or it matches both an
 | 
			
		||||
         allow and a deny rule, the contents of the <order/> option
 | 
			
		||||
         determines what happens. -->
 | 
			
		||||
    <access>
 | 
			
		||||
      <!-- Rule check order (default: allow,deny)
 | 
			
		||||
 | 
			
		||||
           allow,deny - Check allow rules, then check deny rules.
 | 
			
		||||
                        Allow by default.
 | 
			
		||||
           deny,allow - Check deny rules, then check allow rules.
 | 
			
		||||
                        Deny by default. -->
 | 
			
		||||
      <order>allow,deny</order>
 | 
			
		||||
 | 
			
		||||
      <!-- Allow a network. If the mask isn't specified, it defaults to
 | 
			
		||||
           255.255.255.255 (ie allow onle the specified IP) -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <allow ip='127.0.0.0' mask='255.0.0.0'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Allow a single host -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <allow ip='12.34.56.78'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Deny a network or a host -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <deny ip='127.0.0.1' mask='255.0.0.0'/>
 | 
			
		||||
      <deny ip='87.65.43.21'/>
 | 
			
		||||
      -->
 | 
			
		||||
    </access>
 | 
			
		||||
 | 
			
		||||
    <!-- Timed checks -->
 | 
			
		||||
    <check>
 | 
			
		||||
      <!-- Interval between checks.
 | 
			
		||||
 | 
			
		||||
           Open client connections will be checked every n seconds, and
 | 
			
		||||
           the following checks applied.
 | 
			
		||||
 | 
			
		||||
           0 disables all checks.                       (default: 0) -->
 | 
			
		||||
      <interval>0</interval>
 | 
			
		||||
 | 
			
		||||
      <!-- Idle connection checks.
 | 
			
		||||
 | 
			
		||||
           Connections that have not sent data for longer than this many
 | 
			
		||||
           seconds will be dropped.
 | 
			
		||||
 | 
			
		||||
           0 disables idle timeouts.                    (default: 0) -->
 | 
			
		||||
      <idle>0</idle>
 | 
			
		||||
 | 
			
		||||
      <!-- Keepalives.
 | 
			
		||||
 | 
			
		||||
           Connections that have not sent data for longer than this many
 | 
			
		||||
           seconds will have a single whitespace character sent to them.
 | 
			
		||||
           This will force the TCP connection to be closed if they have
 | 
			
		||||
           disconnected without us knowing about it.
 | 
			
		||||
 | 
			
		||||
           0 disables keepalives.                       (default: 0) -->
 | 
			
		||||
      <keepalive>0</keepalive>
 | 
			
		||||
 | 
			
		||||
    </check>
 | 
			
		||||
 | 
			
		||||
  </io>
 | 
			
		||||
 | 
			
		||||
  <!-- Statistics -->
 | 
			
		||||
  <stats>
 | 
			
		||||
    <!-- file containing count of packets that went through -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <packet>/var/spool/jabber/stats/c2s.packets</packet>
 | 
			
		||||
    -->
 | 
			
		||||
  </stats>
 | 
			
		||||
 | 
			
		||||
  <!-- PBX integration -->
 | 
			
		||||
  <pbx>
 | 
			
		||||
    <!-- Commands named pipe path. Allows creating "fake" sessions
 | 
			
		||||
         with given resource and status -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pipe>/var/run/jabber/pbx</pipe>
 | 
			
		||||
    -->
 | 
			
		||||
    <!-- Available commands:
 | 
			
		||||
          START jid/resource [[priority ]status] [description]
 | 
			
		||||
          STOP jid/resource [description]
 | 
			
		||||
          where priority is integer between -128 and +127
 | 
			
		||||
          and status is one of: CHAT, ONLINE, DND, AWAY, XA
 | 
			
		||||
    -->
 | 
			
		||||
  </pbx>
 | 
			
		||||
 | 
			
		||||
  <!-- see-other-host error stream redirection support
 | 
			
		||||
       This will redirect connections to specified domains to other host:port
 | 
			
		||||
       Usefull when migrating service and DNS change did not propagate yet.
 | 
			
		||||
       Note that to_address should be RFC 3986 compliant. -->
 | 
			
		||||
  <stream_redirect>
 | 
			
		||||
    <!--
 | 
			
		||||
    <redirect requested_domain="some.domain" to_address="other.hostname" to_port="5269" />
 | 
			
		||||
    <redirect requested_domain="other.domain" to_address="other.host" to_port="1234" />
 | 
			
		||||
    -->
 | 
			
		||||
  </stream_redirect>
 | 
			
		||||
 | 
			
		||||
  <!-- Authentication/registration database configuration -->
 | 
			
		||||
  <authreg>
 | 
			
		||||
    <!-- Dynamic authreg modules path -->
 | 
			
		||||
    <path>/usr/lib64/jabberd</path>
 | 
			
		||||
 | 
			
		||||
    <!-- Backend module to use -->
 | 
			
		||||
    <module>db</module>
 | 
			
		||||
 | 
			
		||||
    <!-- Available authentication mechanisms -->
 | 
			
		||||
    <mechanisms>
 | 
			
		||||
 | 
			
		||||
      <!-- These are the traditional Jabber authentication mechanisms.
 | 
			
		||||
           Comment out any that you don't want to be offered to clients.
 | 
			
		||||
           Note that if the auth/reg module does not support one of
 | 
			
		||||
           these mechanisms, then it will not be offered regardless of
 | 
			
		||||
           whether or not it is enabled here. -->
 | 
			
		||||
      <traditional>
 | 
			
		||||
        <plain/>
 | 
			
		||||
        <digest/>
 | 
			
		||||
      </traditional>
 | 
			
		||||
 | 
			
		||||
      <!-- SASL authentication mechanisms. Comment out any that you
 | 
			
		||||
           don't want to be offered to clients. Again, if the auth/reg
 | 
			
		||||
           module does not support one of these mechanisms, then it will
 | 
			
		||||
           not be offered. -->
 | 
			
		||||
      <sasl>
 | 
			
		||||
        <plain/>
 | 
			
		||||
        <digest-md5/>
 | 
			
		||||
        <!--
 | 
			
		||||
        <anonymous/>
 | 
			
		||||
        <gssapi/>
 | 
			
		||||
        -->
 | 
			
		||||
      </sasl>
 | 
			
		||||
 | 
			
		||||
    </mechanisms>
 | 
			
		||||
 | 
			
		||||
    <!-- Additional mechanisms that are also available when the
 | 
			
		||||
         connection is encrypted. Ie. when START-TLS had been
 | 
			
		||||
         negotiated, or user connected on SSL-wrapped port. -->
 | 
			
		||||
    <ssl-mechanisms>
 | 
			
		||||
 | 
			
		||||
      <!-- it's advisable that you disable plain in the above
 | 
			
		||||
           <mechanisms/> section -->
 | 
			
		||||
      <traditional>
 | 
			
		||||
        <plain/>
 | 
			
		||||
      </traditional>
 | 
			
		||||
 | 
			
		||||
      <sasl>
 | 
			
		||||
        <plain/>
 | 
			
		||||
        <external/>
 | 
			
		||||
      </sasl>
 | 
			
		||||
 | 
			
		||||
    </ssl-mechanisms>
 | 
			
		||||
 | 
			
		||||
    <!-- SQLite driver configuration -->
 | 
			
		||||
    <sqlite>
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>/var/spool/jabber/db/sqlite.db</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Transacation support. If this is commented out, transactions
 | 
			
		||||
           will be disabled. This might make database accesses faster,
 | 
			
		||||
           but data may be lost if jabberd crashes. -->
 | 
			
		||||
      <transactions/>
 | 
			
		||||
 | 
			
		||||
      <!-- SQLite busy-timeout in milliseconds. -->
 | 
			
		||||
      <busy-timeout>2000</busy-timeout>
 | 
			
		||||
 | 
			
		||||
      <!-- Passwords in DB may be stored in plain or hashed format -->
 | 
			
		||||
      <!-- NOTE: If you are using hashed passwords, the only auth
 | 
			
		||||
                 method that will work is PLAIN.
 | 
			
		||||
                 Make sure that you disabled others in 'mechanisms'
 | 
			
		||||
                 sections of the config file. -->
 | 
			
		||||
      <password_type>
 | 
			
		||||
        <!-- only one may be enabled here -->
 | 
			
		||||
        <plaintext/>
 | 
			
		||||
        <!-- use crypt(3)ed passwords
 | 
			
		||||
        <crypt/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- use A1HASH passwords
 | 
			
		||||
             This stores the MD5 digest of user:realm:password in the database
 | 
			
		||||
        <a1hash/>
 | 
			
		||||
        -->
 | 
			
		||||
      </password_type>
 | 
			
		||||
    </sqlite>
 | 
			
		||||
 | 
			
		||||
    <!-- MySQL module configuration -->
 | 
			
		||||
    <mysql>
 | 
			
		||||
      <!-- Database server host and port -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>3306</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
 | 
			
		||||
      <!-- Passwords in DB may be stored in plain or hashed format -->
 | 
			
		||||
      <!-- NOTE: If you are using hashed passwords, the only auth
 | 
			
		||||
                 method that will work is PLAIN.
 | 
			
		||||
                 Make sure that you disabled others in 'mechanisms'
 | 
			
		||||
                 sections of the config file. -->
 | 
			
		||||
      <password_type>
 | 
			
		||||
        <!-- only one may be enabled here -->
 | 
			
		||||
        <plaintext/>
 | 
			
		||||
        <!-- use crypt(3)ed passwords
 | 
			
		||||
        <crypt/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- use A1HASH passwords
 | 
			
		||||
		     This stores the MD5 digest of user:realm:password in the database
 | 
			
		||||
        <a1hash/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- use bcrypt passwords
 | 
			
		||||
         NOTE: cost has to be higher than 3 and lower than 32
 | 
			
		||||
        <bcrypt cost='10'/>
 | 
			
		||||
        -->
 | 
			
		||||
      </password_type>
 | 
			
		||||
    </mysql>
 | 
			
		||||
 | 
			
		||||
    <!-- PostgreSQL module configuration -->
 | 
			
		||||
    <pgsql>
 | 
			
		||||
      <!-- PostgreSQL connection info.
 | 
			
		||||
           For the rest of the options see
 | 
			
		||||
           http://www.postgresql.org/docs/8.0/interactive/libpq.html -->
 | 
			
		||||
      <conninfo>dbname=jabberd2 user=jabberd2 password=secret</conninfo>
 | 
			
		||||
 | 
			
		||||
      <!-- Alternatively you may set connection settings separately.
 | 
			
		||||
           These are used only in absence of 'conninfo' -->
 | 
			
		||||
 | 
			
		||||
      <!-- Database server host and port -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>5432</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database schema -->
 | 
			
		||||
      <schema>public</schema>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
 | 
			
		||||
      <!-- Passwords in DB may be stored in plain or hashed format -->
 | 
			
		||||
      <!-- NOTE: If you are using hashed passwords, the only auth
 | 
			
		||||
                 method that will work is PLAIN.
 | 
			
		||||
                 Make sure that you disabled others in 'mechanisms'
 | 
			
		||||
                 sections of the config file. -->
 | 
			
		||||
      <password_type>
 | 
			
		||||
        <!-- only one may be enabled here -->
 | 
			
		||||
        <plaintext/>
 | 
			
		||||
        <!-- use crypt(3)ed passwords
 | 
			
		||||
        <crypt/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- use A1HASH passwords
 | 
			
		||||
		     This stores the MD5 digest of user:realm:password in the database
 | 
			
		||||
        <a1hash/>
 | 
			
		||||
        -->
 | 
			
		||||
      </password_type>
 | 
			
		||||
    </pgsql>
 | 
			
		||||
 | 
			
		||||
    <!-- Oracle driver configuration -->
 | 
			
		||||
    <oracle>
 | 
			
		||||
      <!-- Database server host and port. -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>1521</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
    </oracle>
 | 
			
		||||
 | 
			
		||||
    <!-- Berkeley DB module configuration -->
 | 
			
		||||
    <db>
 | 
			
		||||
      <!-- Directory to store database files under -->
 | 
			
		||||
      <path>/var/spool/jabber/db</path>
 | 
			
		||||
 | 
			
		||||
      <!-- Synchronize the database to disk after each write. If you
 | 
			
		||||
           disable this, database accesses may be faster, but data may
 | 
			
		||||
           be lost if jabberd crashes. -->
 | 
			
		||||
      <sync/>
 | 
			
		||||
    </db>
 | 
			
		||||
 | 
			
		||||
    <!-- LDAPFULL module configuration -->
 | 
			
		||||
    <ldapfull>
 | 
			
		||||
      <!-- LDAP server host and port (default: 389) -->
 | 
			
		||||
      <uri>ldap://localhost/ ldaps://ldap.example.com/</uri>
 | 
			
		||||
      
 | 
			
		||||
      <!-- DN to bind as for searches. If unspecified, the searches
 | 
			
		||||
           will be done anonymously. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <binddn>cn=Directory Manager</binddn>
 | 
			
		||||
      <bindpw>secret</bindpw>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Type of LDAP server. Currently "ad" for active directory and "ldap"
 | 
			
		||||
           for other ldap servers. If not specified, then it is ldap. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <type>ad</type>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- LDAP attribute that holds the user ID (default: uid) -->
 | 
			
		||||
      <uidattr>uid</uidattr>
 | 
			
		||||
      <objectclass>posixAccount</objectclass>
 | 
			
		||||
      <!-- LDAP attribute that holds the cleartext or hashed password
 | 
			
		||||
           (not needed when pwscheme is set to 'bind') -->
 | 
			
		||||
      <pwattr>userPassword</pwattr>
 | 
			
		||||
      <!-- if you use included jabberd.schema use this:
 | 
			
		||||
      <uidattr>jid</uidattr>
 | 
			
		||||
      <objectclass>jabberUser</objectclass>
 | 
			
		||||
      <pwattr>jabberPassword</pwattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Attribute that holds jabber account status. Must be TRUE for AD,
 | 
			
		||||
           and 1 for other LDAP server.
 | 
			
		||||
           If not specified, then it will not be used. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <validattr>valid</validattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Group that users must be members of
 | 
			
		||||
           If this is set, only user that are members of the specified LDAP
 | 
			
		||||
           group can log in. The group must be specified with its full
 | 
			
		||||
           distinguished name -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <group_dn>cn=jabberdusers,ou=servicegroups,dc=example,dc=com</group_dn>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <fulluid/>
 | 
			
		||||
      <!-- If pwscheme is not defined, then passwords are stored in clear
 | 
			
		||||
           text and digest authentication may be done.
 | 
			
		||||
           If passwords are hashed, then you cannot use digest authentication
 | 
			
		||||
           and should use plain text authentication.
 | 
			
		||||
           Any of sha, ssha, crypt, bind and clear may be specified.
 | 
			
		||||
           'sha' specifies that the attribute in pwattr holds a base-64
 | 
			
		||||
           encoded SHA-1 hashed password beginning with the string {SHA}.
 | 
			
		||||
           'ssha' specifies that the attribute in pwattr holds a base-64
 | 
			
		||||
           SHA-1 hashed password appended with 32 bits of salt and beginning
 | 
			
		||||
           with the string {SSHA}.
 | 
			
		||||
           'crypt' specifies that the attribute in pwattr holds a UNIX-style
 | 
			
		||||
           crypt(3) hashed password.
 | 
			
		||||
           'bind' specifies that the password is not stored in an attribute
 | 
			
		||||
           but is authenticated directly by the LDAP server by binding
 | 
			
		||||
           using the user's DN. This should be compatible with the
 | 
			
		||||
           widest variety of LDAP servers.
 | 
			
		||||
      -->
 | 
			
		||||
      <!-- <pwscheme>bind</pwscheme> -->
 | 
			
		||||
 | 
			
		||||
      <!-- base DN of the tree. You should specify a DN for each
 | 
			
		||||
           authentication realm declared in the <local/> section above,
 | 
			
		||||
           by using the realm attribute. -->
 | 
			
		||||
      <basedn realm='company'>o=Company.com</basedn>
 | 
			
		||||
      <basedn>o=Example Corp.</basedn>
 | 
			
		||||
    </ldapfull>
 | 
			
		||||
 | 
			
		||||
    <!-- LDAP module configuration -->
 | 
			
		||||
    <!-- Remember that you need to use PLAIN auth with LDAP backend -->
 | 
			
		||||
    <ldap>
 | 
			
		||||
      <!-- LDAP server host and port (default: 389) -->
 | 
			
		||||
      <host>ldap.example.com</host>
 | 
			
		||||
      <port>389</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Use LDAP v3 if possible. If disabled, v2 will be used.
 | 
			
		||||
           Encryption options are only available if v3 is enabled. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <v3/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Encryption. If enabled, this will create an encrypted channel
 | 
			
		||||
           to the LDAP server using the LDAP STARTTLS mechanism. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <starttls/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Encryption. If enabled, this will create an encrypted channel
 | 
			
		||||
           to the server using the old-style "ldaps://" mechanism. It is
 | 
			
		||||
           recommended that you use <starttls/> instead of this. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <ssl/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- DN to bind as for searches. If unspecified, the searches
 | 
			
		||||
           will be done anonymously. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <binddn>cn=Directory Manager</binddn>
 | 
			
		||||
      <bindpw>secret</bindpw>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- LDAP attribute that holds the user ID (default: uid) -->
 | 
			
		||||
      <uidattr>uid</uidattr>
 | 
			
		||||
 | 
			
		||||
      <!-- Enable the append-realm element if you want to append
 | 
			
		||||
           realm value (usernam@realm) to the uidattr value
 | 
			
		||||
      <append-realm/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Alternatively to <uidattr/> and <append-realm/> you may
 | 
			
		||||
           specify full LDAP search <query/> that will be used to
 | 
			
		||||
           get user objects from directory.
 | 
			
		||||
 | 
			
		||||
           The following replacements take place:
 | 
			
		||||
           %u  is replaced by user login name
 | 
			
		||||
           %r  is replaced by user login realm
 | 
			
		||||
 | 
			
		||||
           When <query/> is specified, <uidattr/> and <append-realm/>
 | 
			
		||||
           are unused and take no effect. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <query>(&(mail=%u@%r)(objectClass=inetOrgPerson))</query>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- base DN of the tree. You should specify a DN for each
 | 
			
		||||
           authentication realm declared in the <local/> section above,
 | 
			
		||||
           by using the realm attribute. -->
 | 
			
		||||
      <basedn realm='company'>o=Company.com</basedn>
 | 
			
		||||
      <basedn>o=Example Corp.</basedn>
 | 
			
		||||
    </ldap>
 | 
			
		||||
    <!-- if you want to configure more than one LDAP server
 | 
			
		||||
         create ldap1, ldap2 etc. sections
 | 
			
		||||
    <ldap1>
 | 
			
		||||
 | 
			
		||||
    </ldap1>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Pipe module configuration -->
 | 
			
		||||
    <pipe>
 | 
			
		||||
      <!-- Program to execute -->
 | 
			
		||||
      <exec>/usr/bin/pipe-auth.pl</exec>
 | 
			
		||||
    </pipe>
 | 
			
		||||
 | 
			
		||||
  </authreg>
 | 
			
		||||
 | 
			
		||||
</c2s>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
@ -1,705 +0,0 @@
 | 
			
		||||
<!-- c2s configuration -->
 | 
			
		||||
<c2s>
 | 
			
		||||
  <!-- Our ID on the network (default: c2s) -->
 | 
			
		||||
  <id>c2s</id>
 | 
			
		||||
 | 
			
		||||
  <!-- The process ID file. Comment this out if you don't need to know
 | 
			
		||||
       the process ID from outside the process (eg for control scripts) -->
 | 
			
		||||
  <pidfile>/var/run/jabber/${id}.pid</pidfile>
 | 
			
		||||
 | 
			
		||||
  <!-- Router connection configuration -->
 | 
			
		||||
  <router>
 | 
			
		||||
    <!-- IP/port the router is waiting for connections on -->
 | 
			
		||||
    <ip>127.0.0.1</ip>            <!-- default: 127.0.0.1 -->
 | 
			
		||||
    <port>5347</port>             <!-- default: 5347 -->
 | 
			
		||||
 | 
			
		||||
    <!-- Username/password to authenticate as -->
 | 
			
		||||
    <user>jabberd</user>          <!-- default: jabberd -->
 | 
			
		||||
    <pass>secret</pass>           <!-- default: secret -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key to use when
 | 
			
		||||
         setting up an encrypted channel with the router. From
 | 
			
		||||
         SSL_CTX_use_certificate_chain_file(3): "The certificates must be
 | 
			
		||||
         in PEM format and must be sorted starting with the subject's
 | 
			
		||||
         certificate (actual client or server certificate), followed
 | 
			
		||||
         by intermediate CA certificates if applicable, and ending
 | 
			
		||||
         at the highest level (root) CA" (the latter one being optional).
 | 
			
		||||
         If this is commented out, or the file can't be read, no attempt
 | 
			
		||||
         will be made to establish an encrypted channel with the router. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Router connection retry -->
 | 
			
		||||
    <retry>
 | 
			
		||||
      <!-- If the connection to the router can't be established at
 | 
			
		||||
           startup, we should try again this many times before exiting.
 | 
			
		||||
           Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <init>3</init>
 | 
			
		||||
 | 
			
		||||
      <!-- If we lost the connection to the router during normal
 | 
			
		||||
           operation (ie we've successfully connected to the router in
 | 
			
		||||
           the past), we should try to reconnect this many times before
 | 
			
		||||
           exiting. Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <lost>3</lost>
 | 
			
		||||
 | 
			
		||||
      <!-- Sleep for this many seconds before trying attempting a
 | 
			
		||||
           reconnect. [default: 2] -->
 | 
			
		||||
      <sleep>2</sleep>
 | 
			
		||||
    </retry>
 | 
			
		||||
  </router>
 | 
			
		||||
 | 
			
		||||
  <!-- Log configuration - type is "syslog", "file" or "stdout" -->
 | 
			
		||||
  <log type='syslog'>
 | 
			
		||||
    <!-- If logging to syslog, this is the log ident -->
 | 
			
		||||
    <ident>jabberd/c2s</ident>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to syslog, this is the log facility
 | 
			
		||||
         (local0 - local7)                        [default: local3] -->
 | 
			
		||||
    <facility>local3</facility>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to file, this is the filename of the logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <file>/var/log/jabber/c2s.log</file>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Filename of the debug logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <debug>/var/log/jabber/debug-${id}.log</debug>
 | 
			
		||||
    -->
 | 
			
		||||
  </log>
 | 
			
		||||
 | 
			
		||||
  <!-- Local network configuration -->
 | 
			
		||||
  <local>
 | 
			
		||||
    <!-- Who we identify ourselves as. This should correspond to the
 | 
			
		||||
         ID (host) that the session manager thinks it is. You can
 | 
			
		||||
         specify more than one to support virtual hosts, as long as you
 | 
			
		||||
         have additional session manager instances on the network to
 | 
			
		||||
         handle those hosts.
 | 
			
		||||
 | 
			
		||||
         You may leave the content of the <id/> empty to setup default
 | 
			
		||||
         virtual host setup, that will be used for all present but not
 | 
			
		||||
         configured otherwise SM domains.
 | 
			
		||||
 | 
			
		||||
         realm
 | 
			
		||||
         attribute specifies the auth/reg or SASL authentication realm
 | 
			
		||||
         for the host. If the attribute is not specified, the realm will
 | 
			
		||||
         be selected by the SASL mechanism, or will be the same as the ID
 | 
			
		||||
         itself. Be aware that users are assigned to a realm, not a host,
 | 
			
		||||
         so two hosts in the same realm will have the same users. If no
 | 
			
		||||
         realm is specified, it will be set to be the same as the ID.
 | 
			
		||||
         If empty "" realm is specified, the PAM backend wil authenticate
 | 
			
		||||
         using plain usernames, not JIDs.
 | 
			
		||||
 | 
			
		||||
         pemfile
 | 
			
		||||
         attribute specifies the file containing a SSL certificate and
 | 
			
		||||
         private key for client connections. If this is non existant,
 | 
			
		||||
         clients will not be offered the STARTTLS stream extension
 | 
			
		||||
         From SSL_CTX_use_certificate_chain_file(3):
 | 
			
		||||
         "The certificates must be in PEM format and must be sorted
 | 
			
		||||
         starting with the subject's certificate (actual client or server
 | 
			
		||||
         certificate), followed by intermediate CA certificates if
 | 
			
		||||
         applicable, and ending at the highest level (root) CA"
 | 
			
		||||
         (the latter one being optional).
 | 
			
		||||
 | 
			
		||||
         verify-mode
 | 
			
		||||
         SSL verify mode - see SSL_CTX_set_verify(3), mode parameter.
 | 
			
		||||
         Sum of the following options:
 | 
			
		||||
         SSL_VERIFY_NONE                 0x00
 | 
			
		||||
		 SSL_VERIFY_PEER                 0x01
 | 
			
		||||
		 SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02
 | 
			
		||||
		 SSL_VERIFY_CLIENT_ONCE          0x04
 | 
			
		||||
		 Use 7 to require all clients to present _valid_ certificates.
 | 
			
		||||
 | 
			
		||||
     
 | 
			
		||||
         cachain
 | 
			
		||||
         SSL CA chain. Used to verify client certificates. 
 | 
			
		||||
         CA names published to client upon connection.
 | 
			
		||||
          
 | 
			
		||||
         require-starttls
 | 
			
		||||
         If this attribute is set to any value, clients must do STARTTLS
 | 
			
		||||
         before they can authenticate. Until the stream is encrypted,
 | 
			
		||||
         all packets will be dropped.
 | 
			
		||||
 | 
			
		||||
         register-enable
 | 
			
		||||
         Remove this attribute to disable account registrations.
 | 
			
		||||
 | 
			
		||||
         instructions
 | 
			
		||||
         Human-readable instructions to be returned to client when
 | 
			
		||||
         registration is requested.
 | 
			
		||||
 | 
			
		||||
         register-oob
 | 
			
		||||
         URL to be attached as an alternative, out-of-band registration
 | 
			
		||||
         method. Usually web-based http:// URL.
 | 
			
		||||
 | 
			
		||||
         password-change
 | 
			
		||||
         Password change only. When registration is disabled, it may
 | 
			
		||||
         still be useful to allow clients to change their password. If
 | 
			
		||||
         you want this, add this attribute with any value, when you need
 | 
			
		||||
         registration disabled.
 | 
			
		||||
          -->
 | 
			
		||||
    <id register-enable='mu'>localhost.localdomain</id>
 | 
			
		||||
    <!-- or
 | 
			
		||||
    <id realm='company.int'
 | 
			
		||||
        pemfile='/etc/jabber/server.pem'
 | 
			
		||||
        verify-mode='7'
 | 
			
		||||
        cachain='/etc/jabber/client_ca_certs.pem'
 | 
			
		||||
        require-starttls='mu'
 | 
			
		||||
        register-enable='mu'
 | 
			
		||||
        instructions='Enter a username and password to register with this server.'
 | 
			
		||||
        register-oob='http://example.org/register'
 | 
			
		||||
        password-change='mu'
 | 
			
		||||
    >example.net</id> -->
 | 
			
		||||
    <!-- or the default host
 | 
			
		||||
    <id password-change='mu' /> -->
 | 
			
		||||
 | 
			
		||||
    <!-- IP address to bind to (default: 0.0.0.0) -->
 | 
			
		||||
    <ip>0.0.0.0</ip>
 | 
			
		||||
 | 
			
		||||
    <!-- Port to bind to, or 0 to disable unencrypted access to the
 | 
			
		||||
         server (default: 5222) -->
 | 
			
		||||
    <port>5222</port>
 | 
			
		||||
 | 
			
		||||
    <!-- Older versions of jabberd support encrypted client connections
 | 
			
		||||
         via an additional listening socket on port 5223. If you want
 | 
			
		||||
         this (required to allow pre-STARTTLS clients to do SSL),
 | 
			
		||||
         uncomment this -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <ssl-port>5223</ssl-port>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key for client
 | 
			
		||||
         connections. From SSL_CTX_use_certificate_chain_file(3):
 | 
			
		||||
         "The certificates must be in PEM format and must be sorted
 | 
			
		||||
         starting with the subject's certificate (actual client or server
 | 
			
		||||
         certificate), followed by intermediate CA certificates if
 | 
			
		||||
         applicable, and ending at the highest level (root) CA"
 | 
			
		||||
         (the latter one being optional).
 | 
			
		||||
 | 
			
		||||
         Note: This certificate is ONLY used for old style SSL
 | 
			
		||||
         connections on port 5223 (pre-STARTTLS).  If you want to
 | 
			
		||||
         use STARTTLS over the standard XMPP port 5222 then you
 | 
			
		||||
         MUST specify the pemfile in the 'id' tag above. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- SSL verify mode - see SSL_CTX_set_verify(3), mode parameter -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <verify-mode>7</verify-mode>
 | 
			
		||||
    -->
 | 
			
		||||
    
 | 
			
		||||
    <!-- SSL CA chain. Used to verify client certificates. CA names published to client upon connection -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <cachain>/etc/jabber/client_ca_certs.pem</cachain>  
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Forward incoming HTTP clients to a real HTTP server -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <httpforward>http://www.jabber.org/</httpforward>
 | 
			
		||||
    -->
 | 
			
		||||
  </local>
 | 
			
		||||
 | 
			
		||||
  <!-- Input/output settings -->
 | 
			
		||||
  <io>
 | 
			
		||||
    <!-- Maximum number of file descriptors. This value sets an upper
 | 
			
		||||
         limit on the number of users who may be logged in to this
 | 
			
		||||
         server at a given time. Each user consumers one file
 | 
			
		||||
         descriptor.
 | 
			
		||||
 | 
			
		||||
         Note that the number of possible connections will be slightly
 | 
			
		||||
         less than this, because c2s itself can use up five on its own,
 | 
			
		||||
         and auth/reg modules may need a few also. If the supply of
 | 
			
		||||
         file descriptors is exhausted, new incoming connections will
 | 
			
		||||
         be denied.
 | 
			
		||||
 | 
			
		||||
         Also note that this value only affects how many file descriptors
 | 
			
		||||
         jabberd is able to handle internally. You may also need to
 | 
			
		||||
         tell your operating system to allow jabberd to use more file
 | 
			
		||||
         descriptors. On Linux this can be done using ulimit -n or by
 | 
			
		||||
         changing the value of /proc/sys/fd/file-max.
 | 
			
		||||
 | 
			
		||||
         (default: 1024) -->
 | 
			
		||||
    <max_fds>1024</max_fds>
 | 
			
		||||
 | 
			
		||||
    <!-- Rate limiting -->
 | 
			
		||||
    <limits>
 | 
			
		||||
      <!-- Maximum bytes per second - if more than X bytes are sent in Y
 | 
			
		||||
           seconds, connection is throttled for Z seconds. The format
 | 
			
		||||
           is:
 | 
			
		||||
 | 
			
		||||
             <bytes seconds='Y' throttle='Z'>X</bytes>
 | 
			
		||||
 | 
			
		||||
           Default Y is 1, default Z is 5. set X to 0 to disable. -->
 | 
			
		||||
      <bytes>0</bytes>
 | 
			
		||||
 | 
			
		||||
      <!-- Maximum number of stanzas per second - if more than X stanzas
 | 
			
		||||
           are sent in Y seconds, connection is throttled for Z seconds.
 | 
			
		||||
           The format is:
 | 
			
		||||
 | 
			
		||||
             <stanzas seconds='Y' throttle='Z'>X</stanzas>
 | 
			
		||||
 | 
			
		||||
           Default Y 1, default Z is 5. Set X to 0 to disable -->
 | 
			
		||||
      <stanzas>1000</stanzas>
 | 
			
		||||
 | 
			
		||||
      <!-- Maximum connects per second - if more than X connects are
 | 
			
		||||
           attempted from a single IP in Y seconds, that IP is throttled
 | 
			
		||||
           for Z seconds. The format is:
 | 
			
		||||
 | 
			
		||||
             <connects seconds='Y' throttle='Z'>X</connects>
 | 
			
		||||
 | 
			
		||||
           Default Y is 5, default Z is 5. set X to 0 to disable. -->
 | 
			
		||||
      <connects>0</connects>
 | 
			
		||||
 | 
			
		||||
      <!-- Maximum stanza size - if more than given number of bytes
 | 
			
		||||
           are read in one incoming stanza, the stream is closed
 | 
			
		||||
           with policy-violation error.
 | 
			
		||||
 | 
			
		||||
           Set to 0 to disable.
 | 
			
		||||
           Values less than 16384 might not work. -->
 | 
			
		||||
      <stanzasize>65535</stanzasize>
 | 
			
		||||
    </limits>
 | 
			
		||||
 | 
			
		||||
    <!-- Enable XEP-0138: Stream Compression -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <compression/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- IP-based access controls. If a connection IP matches an allow
 | 
			
		||||
         rule, the connection will be accepted. If a connecting IP
 | 
			
		||||
         matches a deny rule, the connection will be refused. If the
 | 
			
		||||
         connecting IP does not match any rules, or it matches both an
 | 
			
		||||
         allow and a deny rule, the contents of the <order/> option
 | 
			
		||||
         determines what happens. -->
 | 
			
		||||
    <access>
 | 
			
		||||
      <!-- Rule check order (default: allow,deny)
 | 
			
		||||
 | 
			
		||||
           allow,deny - Check allow rules, then check deny rules.
 | 
			
		||||
                        Allow by default.
 | 
			
		||||
           deny,allow - Check deny rules, then check allow rules.
 | 
			
		||||
                        Deny by default. -->
 | 
			
		||||
      <order>allow,deny</order>
 | 
			
		||||
 | 
			
		||||
      <!-- Allow a network. If the mask isn't specified, it defaults to
 | 
			
		||||
           255.255.255.255 (ie allow onle the specified IP) -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <allow ip='127.0.0.0' mask='255.0.0.0'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Allow a single host -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <allow ip='12.34.56.78'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Deny a network or a host -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <deny ip='127.0.0.1' mask='255.0.0.0'/>
 | 
			
		||||
      <deny ip='87.65.43.21'/>
 | 
			
		||||
      -->
 | 
			
		||||
    </access>
 | 
			
		||||
 | 
			
		||||
    <!-- Timed checks -->
 | 
			
		||||
    <check>
 | 
			
		||||
      <!-- Interval between checks.
 | 
			
		||||
 | 
			
		||||
           Open client connections will be checked every n seconds, and
 | 
			
		||||
           the following checks applied.
 | 
			
		||||
 | 
			
		||||
           0 disables all checks.                       (default: 0) -->
 | 
			
		||||
      <interval>0</interval>
 | 
			
		||||
 | 
			
		||||
      <!-- Idle connection checks.
 | 
			
		||||
 | 
			
		||||
           Connections that have not sent data for longer than this many
 | 
			
		||||
           seconds will be dropped.
 | 
			
		||||
 | 
			
		||||
           0 disables idle timeouts.                    (default: 0) -->
 | 
			
		||||
      <idle>0</idle>
 | 
			
		||||
 | 
			
		||||
      <!-- Keepalives.
 | 
			
		||||
 | 
			
		||||
           Connections that have not sent data for longer than this many
 | 
			
		||||
           seconds will have a single whitespace character sent to them.
 | 
			
		||||
           This will force the TCP connection to be closed if they have
 | 
			
		||||
           disconnected without us knowing about it.
 | 
			
		||||
 | 
			
		||||
           0 disables keepalives.                       (default: 0) -->
 | 
			
		||||
      <keepalive>0</keepalive>
 | 
			
		||||
 | 
			
		||||
    </check>
 | 
			
		||||
 | 
			
		||||
  </io>
 | 
			
		||||
 | 
			
		||||
  <!-- Statistics -->
 | 
			
		||||
  <stats>
 | 
			
		||||
    <!-- file containing count of packets that went through -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <packet>/var/spool/jabber/stats/c2s.packets</packet>
 | 
			
		||||
    -->
 | 
			
		||||
  </stats>
 | 
			
		||||
 | 
			
		||||
  <!-- PBX integration -->
 | 
			
		||||
  <pbx>
 | 
			
		||||
    <!-- Commands named pipe path. Allows creating "fake" sessions
 | 
			
		||||
         with given resource and status -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pipe>/var/run/jabber/pbx</pipe>
 | 
			
		||||
    -->
 | 
			
		||||
    <!-- Available commands:
 | 
			
		||||
          START jid/resource [[priority ]status] [description]
 | 
			
		||||
          STOP jid/resource [description]
 | 
			
		||||
          where priority is integer between -128 and +127
 | 
			
		||||
          and status is one of: CHAT, ONLINE, DND, AWAY, XA
 | 
			
		||||
    -->
 | 
			
		||||
  </pbx>
 | 
			
		||||
 | 
			
		||||
  <!-- see-other-host error stream redirection support
 | 
			
		||||
       This will redirect connections to specified domains to other host:port
 | 
			
		||||
       Usefull when migrating service and DNS change did not propagate yet.
 | 
			
		||||
       Note that to_address should be RFC 3986 compliant. -->
 | 
			
		||||
  <stream_redirect>
 | 
			
		||||
    <!--
 | 
			
		||||
    <redirect requested_domain="some.domain" to_address="other.hostname" to_port="5269" />
 | 
			
		||||
    <redirect requested_domain="other.domain" to_address="other.host" to_port="1234" />
 | 
			
		||||
    -->
 | 
			
		||||
  </stream_redirect>
 | 
			
		||||
 | 
			
		||||
  <!-- Authentication/registration database configuration -->
 | 
			
		||||
  <authreg>
 | 
			
		||||
    <!-- Dynamic authreg modules path -->
 | 
			
		||||
    <path>/usr/lib64/jabberd</path>
 | 
			
		||||
 | 
			
		||||
    <!-- Backend module to use -->
 | 
			
		||||
    <module>db</module>
 | 
			
		||||
 | 
			
		||||
    <!-- Available authentication mechanisms -->
 | 
			
		||||
    <mechanisms>
 | 
			
		||||
 | 
			
		||||
      <!-- These are the traditional Jabber authentication mechanisms.
 | 
			
		||||
           Comment out any that you don't want to be offered to clients.
 | 
			
		||||
           Note that if the auth/reg module does not support one of
 | 
			
		||||
           these mechanisms, then it will not be offered regardless of
 | 
			
		||||
           whether or not it is enabled here. -->
 | 
			
		||||
      <traditional>
 | 
			
		||||
        <plain/>
 | 
			
		||||
        <digest/>
 | 
			
		||||
      </traditional>
 | 
			
		||||
 | 
			
		||||
      <!-- SASL authentication mechanisms. Comment out any that you
 | 
			
		||||
           don't want to be offered to clients. Again, if the auth/reg
 | 
			
		||||
           module does not support one of these mechanisms, then it will
 | 
			
		||||
           not be offered. -->
 | 
			
		||||
      <sasl>
 | 
			
		||||
        <plain/>
 | 
			
		||||
        <digest-md5/>
 | 
			
		||||
        <!--
 | 
			
		||||
        <anonymous/>
 | 
			
		||||
        <gssapi/>
 | 
			
		||||
        -->
 | 
			
		||||
      </sasl>
 | 
			
		||||
 | 
			
		||||
    </mechanisms>
 | 
			
		||||
 | 
			
		||||
    <!-- Additional mechanisms that are also available when the
 | 
			
		||||
         connection is encrypted. Ie. when START-TLS had been
 | 
			
		||||
         negotiated, or user connected on SSL-wrapped port. -->
 | 
			
		||||
    <ssl-mechanisms>
 | 
			
		||||
 | 
			
		||||
      <!-- it's advisable that you disable plain in the above
 | 
			
		||||
           <mechanisms/> section -->
 | 
			
		||||
      <traditional>
 | 
			
		||||
        <plain/>
 | 
			
		||||
      </traditional>
 | 
			
		||||
 | 
			
		||||
      <sasl>
 | 
			
		||||
        <plain/>
 | 
			
		||||
        <external/>
 | 
			
		||||
      </sasl>
 | 
			
		||||
 | 
			
		||||
    </ssl-mechanisms>
 | 
			
		||||
 | 
			
		||||
    <!-- SQLite driver configuration -->
 | 
			
		||||
    <sqlite>
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>/var/spool/jabber/db/sqlite.db</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Transacation support. If this is commented out, transactions
 | 
			
		||||
           will be disabled. This might make database accesses faster,
 | 
			
		||||
           but data may be lost if jabberd crashes. -->
 | 
			
		||||
      <transactions/>
 | 
			
		||||
 | 
			
		||||
      <!-- SQLite busy-timeout in milliseconds. -->
 | 
			
		||||
      <busy-timeout>2000</busy-timeout>
 | 
			
		||||
 | 
			
		||||
      <!-- Passwords in DB may be stored in plain or hashed format -->
 | 
			
		||||
      <!-- NOTE: If you are using hashed passwords, the only auth
 | 
			
		||||
                 method that will work is PLAIN.
 | 
			
		||||
                 Make sure that you disabled others in 'mechanisms'
 | 
			
		||||
                 sections of the config file. -->
 | 
			
		||||
      <password_type>
 | 
			
		||||
        <!-- only one may be enabled here -->
 | 
			
		||||
        <plaintext/>
 | 
			
		||||
        <!-- use crypt(3)ed passwords
 | 
			
		||||
        <crypt/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- use A1HASH passwords
 | 
			
		||||
             This stores the MD5 digest of user:realm:password in the database
 | 
			
		||||
        <a1hash/>
 | 
			
		||||
        -->
 | 
			
		||||
      </password_type>
 | 
			
		||||
    </sqlite>
 | 
			
		||||
 | 
			
		||||
    <!-- MySQL module configuration -->
 | 
			
		||||
    <mysql>
 | 
			
		||||
      <!-- Database server host and port -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>3306</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
 | 
			
		||||
      <!-- Passwords in DB may be stored in plain or hashed format -->
 | 
			
		||||
      <!-- NOTE: If you are using hashed passwords, the only auth
 | 
			
		||||
                 method that will work is PLAIN.
 | 
			
		||||
                 Make sure that you disabled others in 'mechanisms'
 | 
			
		||||
                 sections of the config file. -->
 | 
			
		||||
      <password_type>
 | 
			
		||||
        <!-- only one may be enabled here -->
 | 
			
		||||
        <plaintext/>
 | 
			
		||||
        <!-- use crypt(3)ed passwords
 | 
			
		||||
        <crypt/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- use A1HASH passwords
 | 
			
		||||
		     This stores the MD5 digest of user:realm:password in the database
 | 
			
		||||
        <a1hash/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- use bcrypt passwords
 | 
			
		||||
         NOTE: cost has to be higher than 3 and lower than 32
 | 
			
		||||
        <bcrypt cost='10'/>
 | 
			
		||||
        -->
 | 
			
		||||
      </password_type>
 | 
			
		||||
    </mysql>
 | 
			
		||||
 | 
			
		||||
    <!-- PostgreSQL module configuration -->
 | 
			
		||||
    <pgsql>
 | 
			
		||||
      <!-- PostgreSQL connection info.
 | 
			
		||||
           For the rest of the options see
 | 
			
		||||
           http://www.postgresql.org/docs/8.0/interactive/libpq.html -->
 | 
			
		||||
      <conninfo>dbname=jabberd2 user=jabberd2 password=secret</conninfo>
 | 
			
		||||
 | 
			
		||||
      <!-- Alternatively you may set connection settings separately.
 | 
			
		||||
           These are used only in absence of 'conninfo' -->
 | 
			
		||||
 | 
			
		||||
      <!-- Database server host and port -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>5432</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database schema -->
 | 
			
		||||
      <schema>public</schema>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
 | 
			
		||||
      <!-- Passwords in DB may be stored in plain or hashed format -->
 | 
			
		||||
      <!-- NOTE: If you are using hashed passwords, the only auth
 | 
			
		||||
                 method that will work is PLAIN.
 | 
			
		||||
                 Make sure that you disabled others in 'mechanisms'
 | 
			
		||||
                 sections of the config file. -->
 | 
			
		||||
      <password_type>
 | 
			
		||||
        <!-- only one may be enabled here -->
 | 
			
		||||
        <plaintext/>
 | 
			
		||||
        <!-- use crypt(3)ed passwords
 | 
			
		||||
        <crypt/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- use A1HASH passwords
 | 
			
		||||
		     This stores the MD5 digest of user:realm:password in the database
 | 
			
		||||
        <a1hash/>
 | 
			
		||||
        -->
 | 
			
		||||
      </password_type>
 | 
			
		||||
    </pgsql>
 | 
			
		||||
 | 
			
		||||
    <!-- Oracle driver configuration -->
 | 
			
		||||
    <oracle>
 | 
			
		||||
      <!-- Database server host and port. -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>1521</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
    </oracle>
 | 
			
		||||
 | 
			
		||||
    <!-- Berkeley DB module configuration -->
 | 
			
		||||
    <db>
 | 
			
		||||
      <!-- Directory to store database files under -->
 | 
			
		||||
      <path>/var/spool/jabber/db</path>
 | 
			
		||||
 | 
			
		||||
      <!-- Synchronize the database to disk after each write. If you
 | 
			
		||||
           disable this, database accesses may be faster, but data may
 | 
			
		||||
           be lost if jabberd crashes. -->
 | 
			
		||||
      <sync/>
 | 
			
		||||
    </db>
 | 
			
		||||
 | 
			
		||||
    <!-- LDAPFULL module configuration -->
 | 
			
		||||
    <ldapfull>
 | 
			
		||||
      <!-- LDAP server host and port (default: 389) -->
 | 
			
		||||
      <uri>ldap://localhost/ ldaps://ldap.example.com/</uri>
 | 
			
		||||
      
 | 
			
		||||
      <!-- DN to bind as for searches. If unspecified, the searches
 | 
			
		||||
           will be done anonymously. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <binddn>cn=Directory Manager</binddn>
 | 
			
		||||
      <bindpw>secret</bindpw>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Type of LDAP server. Currently "ad" for active directory and "ldap"
 | 
			
		||||
           for other ldap servers. If not specified, then it is ldap. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <type>ad</type>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- LDAP attribute that holds the user ID (default: uid) -->
 | 
			
		||||
      <uidattr>uid</uidattr>
 | 
			
		||||
      <objectclass>posixAccount</objectclass>
 | 
			
		||||
      <!-- LDAP attribute that holds the cleartext or hashed password
 | 
			
		||||
           (not needed when pwscheme is set to 'bind') -->
 | 
			
		||||
      <pwattr>userPassword</pwattr>
 | 
			
		||||
      <!-- if you use included jabberd.schema use this:
 | 
			
		||||
      <uidattr>jid</uidattr>
 | 
			
		||||
      <objectclass>jabberUser</objectclass>
 | 
			
		||||
      <pwattr>jabberPassword</pwattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Attribute that holds jabber account status. Must be TRUE for AD,
 | 
			
		||||
           and 1 for other LDAP server.
 | 
			
		||||
           If not specified, then it will not be used. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <validattr>valid</validattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Group that users must be members of
 | 
			
		||||
           If this is set, only user that are members of the specified LDAP
 | 
			
		||||
           group can log in. The group must be specified with its full
 | 
			
		||||
           distinguished name -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <group_dn>cn=jabberdusers,ou=servicegroups,dc=example,dc=com</group_dn>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <fulluid/>
 | 
			
		||||
      <!-- If pwscheme is not defined, then passwords are stored in clear
 | 
			
		||||
           text and digest authentication may be done.
 | 
			
		||||
           If passwords are hashed, then you cannot use digest authentication
 | 
			
		||||
           and should use plain text authentication.
 | 
			
		||||
           Any of sha, ssha, crypt, bind and clear may be specified.
 | 
			
		||||
           'sha' specifies that the attribute in pwattr holds a base-64
 | 
			
		||||
           encoded SHA-1 hashed password beginning with the string {SHA}.
 | 
			
		||||
           'ssha' specifies that the attribute in pwattr holds a base-64
 | 
			
		||||
           SHA-1 hashed password appended with 32 bits of salt and beginning
 | 
			
		||||
           with the string {SSHA}.
 | 
			
		||||
           'crypt' specifies that the attribute in pwattr holds a UNIX-style
 | 
			
		||||
           crypt(3) hashed password.
 | 
			
		||||
           'bind' specifies that the password is not stored in an attribute
 | 
			
		||||
           but is authenticated directly by the LDAP server by binding
 | 
			
		||||
           using the user's DN. This should be compatible with the
 | 
			
		||||
           widest variety of LDAP servers.
 | 
			
		||||
      -->
 | 
			
		||||
      <!-- <pwscheme>bind</pwscheme> -->
 | 
			
		||||
 | 
			
		||||
      <!-- base DN of the tree. You should specify a DN for each
 | 
			
		||||
           authentication realm declared in the <local/> section above,
 | 
			
		||||
           by using the realm attribute. -->
 | 
			
		||||
      <basedn realm='company'>o=Company.com</basedn>
 | 
			
		||||
      <basedn>o=Example Corp.</basedn>
 | 
			
		||||
    </ldapfull>
 | 
			
		||||
 | 
			
		||||
    <!-- LDAP module configuration -->
 | 
			
		||||
    <!-- Remember that you need to use PLAIN auth with LDAP backend -->
 | 
			
		||||
    <ldap>
 | 
			
		||||
      <!-- LDAP server host and port (default: 389) -->
 | 
			
		||||
      <host>ldap.example.com</host>
 | 
			
		||||
      <port>389</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Use LDAP v3 if possible. If disabled, v2 will be used.
 | 
			
		||||
           Encryption options are only available if v3 is enabled. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <v3/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Encryption. If enabled, this will create an encrypted channel
 | 
			
		||||
           to the LDAP server using the LDAP STARTTLS mechanism. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <starttls/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Encryption. If enabled, this will create an encrypted channel
 | 
			
		||||
           to the server using the old-style "ldaps://" mechanism. It is
 | 
			
		||||
           recommended that you use <starttls/> instead of this. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <ssl/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- DN to bind as for searches. If unspecified, the searches
 | 
			
		||||
           will be done anonymously. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <binddn>cn=Directory Manager</binddn>
 | 
			
		||||
      <bindpw>secret</bindpw>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- LDAP attribute that holds the user ID (default: uid) -->
 | 
			
		||||
      <uidattr>uid</uidattr>
 | 
			
		||||
 | 
			
		||||
      <!-- Enable the append-realm element if you want to append
 | 
			
		||||
           realm value (usernam@realm) to the uidattr value
 | 
			
		||||
      <append-realm/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Alternatively to <uidattr/> and <append-realm/> you may
 | 
			
		||||
           specify full LDAP search <query/> that will be used to
 | 
			
		||||
           get user objects from directory.
 | 
			
		||||
 | 
			
		||||
           The following replacements take place:
 | 
			
		||||
           %u  is replaced by user login name
 | 
			
		||||
           %r  is replaced by user login realm
 | 
			
		||||
 | 
			
		||||
           When <query/> is specified, <uidattr/> and <append-realm/>
 | 
			
		||||
           are unused and take no effect. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <query>(&(mail=%u@%r)(objectClass=inetOrgPerson))</query>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- base DN of the tree. You should specify a DN for each
 | 
			
		||||
           authentication realm declared in the <local/> section above,
 | 
			
		||||
           by using the realm attribute. -->
 | 
			
		||||
      <basedn realm='company'>o=Company.com</basedn>
 | 
			
		||||
      <basedn>o=Example Corp.</basedn>
 | 
			
		||||
    </ldap>
 | 
			
		||||
    <!-- if you want to configure more than one LDAP server
 | 
			
		||||
         create ldap1, ldap2 etc. sections
 | 
			
		||||
    <ldap1>
 | 
			
		||||
 | 
			
		||||
    </ldap1>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Pipe module configuration -->
 | 
			
		||||
    <pipe>
 | 
			
		||||
      <!-- Program to execute -->
 | 
			
		||||
      <exec>/usr/bin/pipe-auth.pl</exec>
 | 
			
		||||
    </pipe>
 | 
			
		||||
 | 
			
		||||
  </authreg>
 | 
			
		||||
 | 
			
		||||
</c2s>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
@ -1,215 +0,0 @@
 | 
			
		||||
<!-- Router configuration -->
 | 
			
		||||
<router>
 | 
			
		||||
  <!-- ID of the router on the network (default: router) -->
 | 
			
		||||
  <id>router</id>
 | 
			
		||||
 | 
			
		||||
  <!-- The process ID file. Comment this out if you don't need to know
 | 
			
		||||
       the process ID from outside the process (eg for control scripts) -->
 | 
			
		||||
  <pidfile>/var/run/jabber/${id}.pid</pidfile>
 | 
			
		||||
 | 
			
		||||
  <!-- Log configuration - type is "syslog", "file" or "stdout" -->
 | 
			
		||||
  <log type='syslog'>
 | 
			
		||||
    <!-- If logging to syslog, this is the log ident -->
 | 
			
		||||
    <ident>jabberd/router</ident>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to syslog, this is the log facility
 | 
			
		||||
         (local0 - local7)                        [default: local3] -->
 | 
			
		||||
    <facility>local3</facility>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to file, this is the filename of the logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <file>/var/log/jabber/router.log</file>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Filename of the debug logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <debug>/var/log/jabber/debug-${id}.log</debug>
 | 
			
		||||
    -->
 | 
			
		||||
  </log>
 | 
			
		||||
 | 
			
		||||
  <!-- Local network configuration -->
 | 
			
		||||
  <local>
 | 
			
		||||
    <!-- IP address to bind to (default: 0.0.0.0) -->
 | 
			
		||||
    <ip>0.0.0.0</ip>
 | 
			
		||||
 | 
			
		||||
    <!-- Port to bind to (default: 5347) -->
 | 
			
		||||
    <port>5347</port>
 | 
			
		||||
 | 
			
		||||
    <!-- File containing the user table. This is where the router gets
 | 
			
		||||
         its component and secret information from for component
 | 
			
		||||
         authentication.-->
 | 
			
		||||
    <users>/etc/jabber/router-users.xml</users>
 | 
			
		||||
 | 
			
		||||
    <!-- Shared secret used to identify XEP-0114 components (that is,
 | 
			
		||||
         "jabber:component:accept" components that authenticate using
 | 
			
		||||
         the Jabber Component Protocol's "handshake", for example
 | 
			
		||||
         mu-conference). If this is commented out, support for XEP-0114
 | 
			
		||||
         components will be disabled. -->
 | 
			
		||||
    <secret>secret</secret>
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key for client
 | 
			
		||||
         connections. From SSL_CTX_use_certificate_chain_file(3):
 | 
			
		||||
         "The certificates must be in PEM format and must be sorted
 | 
			
		||||
         starting with the subject's certificate (actual client or
 | 
			
		||||
         server certificate), followed by intermediate CA certificates
 | 
			
		||||
         if applicable, and ending at the highest level (root) CA"
 | 
			
		||||
         (the latter one being optional).
 | 
			
		||||
         If this is commented out, connecting components will not be able
 | 
			
		||||
         to request an SSL-encrypted channel. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
  </local>
 | 
			
		||||
 | 
			
		||||
  <!-- Timed checks -->
 | 
			
		||||
  <check>
 | 
			
		||||
    <!-- Interval between checks.
 | 
			
		||||
 | 
			
		||||
         Checks will be run every n seconds.
 | 
			
		||||
 | 
			
		||||
         0 disables all checks.                       (default: 60) -->
 | 
			
		||||
    <interval>60</interval>
 | 
			
		||||
 | 
			
		||||
    <!-- Keepalives.
 | 
			
		||||
         Connections that have not been used for longer than
 | 
			
		||||
         this many seconds will have a single whitespace character sent
 | 
			
		||||
         to them. This will force the TCP connection to be closed if
 | 
			
		||||
         they have disconnected without us knowing about it.
 | 
			
		||||
         0 disables keepalives.                       (default: 0) -->
 | 
			
		||||
     <keepalive>0</keepalive>
 | 
			
		||||
 | 
			
		||||
  </check>
 | 
			
		||||
 | 
			
		||||
  <!-- input/output settings -->
 | 
			
		||||
  <io>
 | 
			
		||||
    <!-- Maximum number of file descriptors. Note that the number of
 | 
			
		||||
         possible connections will be slightly less than this, because
 | 
			
		||||
         the router itself can use up four on its own. If the supply of
 | 
			
		||||
         file descriptors is exhausted, new incoming connections will be
 | 
			
		||||
         denied.
 | 
			
		||||
 | 
			
		||||
         These file descriptors are really only used when a component
 | 
			
		||||
         connects to the router. So unless you have a lot of components
 | 
			
		||||
         for some reason then you probably don't need to change this
 | 
			
		||||
         value.
 | 
			
		||||
 | 
			
		||||
         (default: 1024) -->
 | 
			
		||||
    <max_fds>1024</max_fds>
 | 
			
		||||
 | 
			
		||||
    <!-- Rate limiting -->
 | 
			
		||||
    <limits>
 | 
			
		||||
      <!-- Maximum bytes per second - if more than X bytes are sent in Y
 | 
			
		||||
           seconds, connection is throttled for Z seconds. The format
 | 
			
		||||
           is:
 | 
			
		||||
 | 
			
		||||
             <bytes seconds='Y' throttle='Z'>X</bytes>
 | 
			
		||||
 | 
			
		||||
           Default Y is 1, default Z is 5. set X to 0 to disable. -->
 | 
			
		||||
      <bytes>0</bytes>
 | 
			
		||||
 | 
			
		||||
      <!-- Maximum connects per second - if more than X connects are
 | 
			
		||||
           attempted from a single IP in Y seconds, that IP is throttled
 | 
			
		||||
           for Z seconds. The format is:
 | 
			
		||||
 | 
			
		||||
             <connects seconds='Y' throttle='Z'>X</connects>
 | 
			
		||||
 | 
			
		||||
           Default Y is 5, default Z is 5. set X to 0 to disable. -->
 | 
			
		||||
      <connects>0</connects>
 | 
			
		||||
    </limits>
 | 
			
		||||
 | 
			
		||||
    <!-- IP-based access controls. If a connection IP matches an allow
 | 
			
		||||
         rule, the connection will be accepted. If a connecting IP
 | 
			
		||||
         matches a deny rule, the connection will be refused. If the
 | 
			
		||||
         connecting IP does not match any rules, or it matches both an
 | 
			
		||||
         allow and a deny rule, the contents of the <order/> option
 | 
			
		||||
         determines what happens. -->
 | 
			
		||||
    <access>
 | 
			
		||||
      <!-- Rule check order (default: allow,deny)
 | 
			
		||||
 | 
			
		||||
           allow,deny - Check allow rules, then check deny rules.
 | 
			
		||||
                        Allow by default.
 | 
			
		||||
           deny,allow - Check deny rules, then check allow rules.
 | 
			
		||||
                        Deny by default. -->
 | 
			
		||||
      <order>allow,deny</order>
 | 
			
		||||
 | 
			
		||||
      <!-- Allow a network. If the mask isn't specified, it defaults to
 | 
			
		||||
           255.255.255.255 (ie allow onle the specified IP) -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <allow ip='127.0.0.0' mask='255.0.0.0'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Allow a single host -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <allow ip='12.34.56.78'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Deny a network or a host -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <deny ip='127.0.0.1' mask='255.0.0.0'/>
 | 
			
		||||
      <deny ip='87.65.43.21'/>
 | 
			
		||||
      -->
 | 
			
		||||
    </access>
 | 
			
		||||
  </io>
 | 
			
		||||
 | 
			
		||||
  <!-- Name aliases.
 | 
			
		||||
 | 
			
		||||
       Packets destined for the domain specified in the "name" attribute
 | 
			
		||||
       will be routed to the component that has currently bound the name
 | 
			
		||||
       in the "target" attribute (assuming it is online).
 | 
			
		||||
 | 
			
		||||
       This is usually only required for some kinds of legacy
 | 
			
		||||
       components (particularly jabberd 1.4 "uplink" components) -->
 | 
			
		||||
  <aliases>
 | 
			
		||||
    <!-- Example for a MUC component running from a jabberd 1.4 uplink -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <alias name='conference.domain.com' target='muclinker'/>
 | 
			
		||||
    -->
 | 
			
		||||
  </aliases>
 | 
			
		||||
 | 
			
		||||
  <!-- Access control information -->
 | 
			
		||||
  <aci>
 | 
			
		||||
    <!-- The usernames listed here will get access to all restricted
 | 
			
		||||
         functions, regardless of restrictions further down -->
 | 
			
		||||
    <acl type='all'>
 | 
			
		||||
      <user>jabberd</user>
 | 
			
		||||
    </acl>
 | 
			
		||||
 | 
			
		||||
    <!-- These users can bind names other than their username -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='bind'>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- These users can bind a name as a default route -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='default-route'>
 | 
			
		||||
      <user>s2s</user>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- These users can elect to receive all packets that pass through the router -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='log'>
 | 
			
		||||
      <user>msglog</user>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing packet filter rules.
 | 
			
		||||
         May be used for fine grained packet routing control. -->
 | 
			
		||||
    <filter>/etc/jabber/router-filter.xml</filter>
 | 
			
		||||
 | 
			
		||||
  </aci>
 | 
			
		||||
 | 
			
		||||
  <!-- Simple message logging to flat file
 | 
			
		||||
       Remove <enabled/> tag to disable logging -->
 | 
			
		||||
  <!--
 | 
			
		||||
  <message_logging>
 | 
			
		||||
    <enabled/>
 | 
			
		||||
    <file>filename</file>
 | 
			
		||||
  </message_logging>
 | 
			
		||||
  -->
 | 
			
		||||
 | 
			
		||||
</router>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
@ -1,215 +0,0 @@
 | 
			
		||||
<!-- Router configuration -->
 | 
			
		||||
<router>
 | 
			
		||||
  <!-- ID of the router on the network (default: router) -->
 | 
			
		||||
  <id>router</id>
 | 
			
		||||
 | 
			
		||||
  <!-- The process ID file. Comment this out if you don't need to know
 | 
			
		||||
       the process ID from outside the process (eg for control scripts) -->
 | 
			
		||||
  <pidfile>/var/run/jabber/${id}.pid</pidfile>
 | 
			
		||||
 | 
			
		||||
  <!-- Log configuration - type is "syslog", "file" or "stdout" -->
 | 
			
		||||
  <log type='syslog'>
 | 
			
		||||
    <!-- If logging to syslog, this is the log ident -->
 | 
			
		||||
    <ident>jabberd/router</ident>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to syslog, this is the log facility
 | 
			
		||||
         (local0 - local7)                        [default: local3] -->
 | 
			
		||||
    <facility>local3</facility>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to file, this is the filename of the logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <file>/var/log/jabber/router.log</file>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Filename of the debug logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <debug>/var/log/jabber/debug-${id}.log</debug>
 | 
			
		||||
    -->
 | 
			
		||||
  </log>
 | 
			
		||||
 | 
			
		||||
  <!-- Local network configuration -->
 | 
			
		||||
  <local>
 | 
			
		||||
    <!-- IP address to bind to (default: 0.0.0.0) -->
 | 
			
		||||
    <ip>0.0.0.0</ip>
 | 
			
		||||
 | 
			
		||||
    <!-- Port to bind to (default: 5347) -->
 | 
			
		||||
    <port>5347</port>
 | 
			
		||||
 | 
			
		||||
    <!-- File containing the user table. This is where the router gets
 | 
			
		||||
         its component and secret information from for component
 | 
			
		||||
         authentication.-->
 | 
			
		||||
    <users>/etc/jabber/router-users.xml</users>
 | 
			
		||||
 | 
			
		||||
    <!-- Shared secret used to identify XEP-0114 components (that is,
 | 
			
		||||
         "jabber:component:accept" components that authenticate using
 | 
			
		||||
         the Jabber Component Protocol's "handshake", for example
 | 
			
		||||
         mu-conference). If this is commented out, support for XEP-0114
 | 
			
		||||
         components will be disabled. -->
 | 
			
		||||
    <secret>secret</secret>
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key for client
 | 
			
		||||
         connections. From SSL_CTX_use_certificate_chain_file(3):
 | 
			
		||||
         "The certificates must be in PEM format and must be sorted
 | 
			
		||||
         starting with the subject's certificate (actual client or
 | 
			
		||||
         server certificate), followed by intermediate CA certificates
 | 
			
		||||
         if applicable, and ending at the highest level (root) CA"
 | 
			
		||||
         (the latter one being optional).
 | 
			
		||||
         If this is commented out, connecting components will not be able
 | 
			
		||||
         to request an SSL-encrypted channel. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
  </local>
 | 
			
		||||
 | 
			
		||||
  <!-- Timed checks -->
 | 
			
		||||
  <check>
 | 
			
		||||
    <!-- Interval between checks.
 | 
			
		||||
 | 
			
		||||
         Checks will be run every n seconds.
 | 
			
		||||
 | 
			
		||||
         0 disables all checks.                       (default: 60) -->
 | 
			
		||||
    <interval>60</interval>
 | 
			
		||||
 | 
			
		||||
    <!-- Keepalives.
 | 
			
		||||
         Connections that have not been used for longer than
 | 
			
		||||
         this many seconds will have a single whitespace character sent
 | 
			
		||||
         to them. This will force the TCP connection to be closed if
 | 
			
		||||
         they have disconnected without us knowing about it.
 | 
			
		||||
         0 disables keepalives.                       (default: 0) -->
 | 
			
		||||
     <keepalive>0</keepalive>
 | 
			
		||||
 | 
			
		||||
  </check>
 | 
			
		||||
 | 
			
		||||
  <!-- input/output settings -->
 | 
			
		||||
  <io>
 | 
			
		||||
    <!-- Maximum number of file descriptors. Note that the number of
 | 
			
		||||
         possible connections will be slightly less than this, because
 | 
			
		||||
         the router itself can use up four on its own. If the supply of
 | 
			
		||||
         file descriptors is exhausted, new incoming connections will be
 | 
			
		||||
         denied.
 | 
			
		||||
 | 
			
		||||
         These file descriptors are really only used when a component
 | 
			
		||||
         connects to the router. So unless you have a lot of components
 | 
			
		||||
         for some reason then you probably don't need to change this
 | 
			
		||||
         value.
 | 
			
		||||
 | 
			
		||||
         (default: 1024) -->
 | 
			
		||||
    <max_fds>1024</max_fds>
 | 
			
		||||
 | 
			
		||||
    <!-- Rate limiting -->
 | 
			
		||||
    <limits>
 | 
			
		||||
      <!-- Maximum bytes per second - if more than X bytes are sent in Y
 | 
			
		||||
           seconds, connection is throttled for Z seconds. The format
 | 
			
		||||
           is:
 | 
			
		||||
 | 
			
		||||
             <bytes seconds='Y' throttle='Z'>X</bytes>
 | 
			
		||||
 | 
			
		||||
           Default Y is 1, default Z is 5. set X to 0 to disable. -->
 | 
			
		||||
      <bytes>0</bytes>
 | 
			
		||||
 | 
			
		||||
      <!-- Maximum connects per second - if more than X connects are
 | 
			
		||||
           attempted from a single IP in Y seconds, that IP is throttled
 | 
			
		||||
           for Z seconds. The format is:
 | 
			
		||||
 | 
			
		||||
             <connects seconds='Y' throttle='Z'>X</connects>
 | 
			
		||||
 | 
			
		||||
           Default Y is 5, default Z is 5. set X to 0 to disable. -->
 | 
			
		||||
      <connects>0</connects>
 | 
			
		||||
    </limits>
 | 
			
		||||
 | 
			
		||||
    <!-- IP-based access controls. If a connection IP matches an allow
 | 
			
		||||
         rule, the connection will be accepted. If a connecting IP
 | 
			
		||||
         matches a deny rule, the connection will be refused. If the
 | 
			
		||||
         connecting IP does not match any rules, or it matches both an
 | 
			
		||||
         allow and a deny rule, the contents of the <order/> option
 | 
			
		||||
         determines what happens. -->
 | 
			
		||||
    <access>
 | 
			
		||||
      <!-- Rule check order (default: allow,deny)
 | 
			
		||||
 | 
			
		||||
           allow,deny - Check allow rules, then check deny rules.
 | 
			
		||||
                        Allow by default.
 | 
			
		||||
           deny,allow - Check deny rules, then check allow rules.
 | 
			
		||||
                        Deny by default. -->
 | 
			
		||||
      <order>allow,deny</order>
 | 
			
		||||
 | 
			
		||||
      <!-- Allow a network. If the mask isn't specified, it defaults to
 | 
			
		||||
           255.255.255.255 (ie allow onle the specified IP) -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <allow ip='127.0.0.0' mask='255.0.0.0'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Allow a single host -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <allow ip='12.34.56.78'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Deny a network or a host -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <deny ip='127.0.0.1' mask='255.0.0.0'/>
 | 
			
		||||
      <deny ip='87.65.43.21'/>
 | 
			
		||||
      -->
 | 
			
		||||
    </access>
 | 
			
		||||
  </io>
 | 
			
		||||
 | 
			
		||||
  <!-- Name aliases.
 | 
			
		||||
 | 
			
		||||
       Packets destined for the domain specified in the "name" attribute
 | 
			
		||||
       will be routed to the component that has currently bound the name
 | 
			
		||||
       in the "target" attribute (assuming it is online).
 | 
			
		||||
 | 
			
		||||
       This is usually only required for some kinds of legacy
 | 
			
		||||
       components (particularly jabberd 1.4 "uplink" components) -->
 | 
			
		||||
  <aliases>
 | 
			
		||||
    <!-- Example for a MUC component running from a jabberd 1.4 uplink -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <alias name='conference.domain.com' target='muclinker'/>
 | 
			
		||||
    -->
 | 
			
		||||
  </aliases>
 | 
			
		||||
 | 
			
		||||
  <!-- Access control information -->
 | 
			
		||||
  <aci>
 | 
			
		||||
    <!-- The usernames listed here will get access to all restricted
 | 
			
		||||
         functions, regardless of restrictions further down -->
 | 
			
		||||
    <acl type='all'>
 | 
			
		||||
      <user>jabberd</user>
 | 
			
		||||
    </acl>
 | 
			
		||||
 | 
			
		||||
    <!-- These users can bind names other than their username -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='bind'>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- These users can bind a name as a default route -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='default-route'>
 | 
			
		||||
      <user>s2s</user>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- These users can elect to receive all packets that pass through the router -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='log'>
 | 
			
		||||
      <user>msglog</user>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing packet filter rules.
 | 
			
		||||
         May be used for fine grained packet routing control. -->
 | 
			
		||||
    <filter>/etc/jabber/router-filter.xml</filter>
 | 
			
		||||
 | 
			
		||||
  </aci>
 | 
			
		||||
 | 
			
		||||
  <!-- Simple message logging to flat file
 | 
			
		||||
       Remove <enabled/> tag to disable logging -->
 | 
			
		||||
  <!--
 | 
			
		||||
  <message_logging>
 | 
			
		||||
    <enabled/>
 | 
			
		||||
    <file>filename</file>
 | 
			
		||||
  </message_logging>
 | 
			
		||||
  -->
 | 
			
		||||
 | 
			
		||||
</router>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
@ -1,323 +0,0 @@
 | 
			
		||||
<!-- s2s configuration -->
 | 
			
		||||
<s2s>
 | 
			
		||||
  <!-- Our ID on the network (default: s2s) -->
 | 
			
		||||
  <id>s2s</id>
 | 
			
		||||
 | 
			
		||||
  <!-- The process ID file. Comment this out if you don't need to know
 | 
			
		||||
       the process ID from outside the process (eg for control scripts) -->
 | 
			
		||||
  <pidfile>/var/run/jabber/${id}.pid</pidfile>
 | 
			
		||||
 | 
			
		||||
  <!-- Router connection configuration -->
 | 
			
		||||
  <router>
 | 
			
		||||
    <!-- IP/port the router is waiting for connections on -->
 | 
			
		||||
    <ip>127.0.0.1</ip>            <!-- default: 127.0.0.1 -->
 | 
			
		||||
    <port>5347</port>             <!-- default: 5347 -->
 | 
			
		||||
 | 
			
		||||
    <!-- Username/password to authenticate as -->
 | 
			
		||||
    <user>jabberd</user>          <!-- default: jabberd -->
 | 
			
		||||
    <pass>secret</pass>           <!-- default: secret -->
 | 
			
		||||
 | 
			
		||||
    <!-- The router will only allow one component to be the default
 | 
			
		||||
         route (ie the component that receives packets destined for
 | 
			
		||||
         unknown hosts). If you want to run more than one s2s instance,
 | 
			
		||||
         you need to uncomment this so that s2s does not try to become
 | 
			
		||||
         the default route. Note that all outgoing s2s communication
 | 
			
		||||
         will go to the component that is the default route. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <non-default/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key to use when
 | 
			
		||||
         setting up an encrypted channel with the router. From
 | 
			
		||||
         SSL_CTX_use_certificate_chain_file(3): "The certificates must be
 | 
			
		||||
         in PEM format and must be sorted starting with the subject's
 | 
			
		||||
         certificate (actual client or server certificate), followed
 | 
			
		||||
         by intermediate CA certificates if applicable, and ending
 | 
			
		||||
         at the highest level (root) CA" (the latter one being optional).
 | 
			
		||||
         If this is commented out, or the file can't be read, no attempt
 | 
			
		||||
         will be made to establish an encrypted channel with the router. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Router connection retry -->
 | 
			
		||||
    <retry>
 | 
			
		||||
      <!-- If the connection to the router can't be established at
 | 
			
		||||
           startup, we should try again this many times before exiting.
 | 
			
		||||
           Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <init>3</init>
 | 
			
		||||
 | 
			
		||||
      <!-- If we lost the connection to the router during normal
 | 
			
		||||
           operation (ie we've successfully connected to the router in
 | 
			
		||||
           the past), we should try to reconnect this many times before
 | 
			
		||||
           exiting. Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <lost>3</lost>
 | 
			
		||||
 | 
			
		||||
      <!-- Sleep for this many seconds before trying attempting a
 | 
			
		||||
           reconnect. [default: 2] -->
 | 
			
		||||
      <sleep>2</sleep>
 | 
			
		||||
    </retry>
 | 
			
		||||
  </router>
 | 
			
		||||
 | 
			
		||||
  <!-- Log configuration - type is "syslog", "file" or "stdout" -->
 | 
			
		||||
  <log type='syslog'>
 | 
			
		||||
    <!-- If logging to syslog, this is the log ident -->
 | 
			
		||||
    <ident>jabberd/s2s</ident>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to syslog, this is the log facility
 | 
			
		||||
         (local0 - local7)                        [default: local3] -->
 | 
			
		||||
    <facility>local3</facility>
 | 
			
		||||
 | 
			
		||||
    <!-- if logging to file, this is the filename of the logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <file>/var/log/jabber/s2s.log</file>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Filename of the debug logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <debug>/var/log/jabber/debug-${id}.log</debug>
 | 
			
		||||
    -->
 | 
			
		||||
  </log>
 | 
			
		||||
 | 
			
		||||
  <!-- Local network configuration -->
 | 
			
		||||
  <local>
 | 
			
		||||
    <!-- IP and port to listen for incoming s2s connections on
 | 
			
		||||
                                           (default: 0.0.0.0, 5269) -->
 | 
			
		||||
    <ip>0.0.0.0</ip>
 | 
			
		||||
    <port>5269</port>
 | 
			
		||||
 | 
			
		||||
    <!-- Multihomed machines (with more than one interface and IP address)
 | 
			
		||||
         need to specify outgoing S2S connections interface/address.
 | 
			
		||||
         If not set, the <ip> section address above is used. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <origins>
 | 
			
		||||
      <ip>1.2.3.4</ip>
 | 
			
		||||
      <ip>fe80::202:b3ff:fe1e:8329</ip>
 | 
			
		||||
    </origins>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Secret used to generate dialback keys. If you have more than
 | 
			
		||||
         one s2s instance configured, make sure that this is the same on
 | 
			
		||||
         all of them. If this is commented out, a random one will be
 | 
			
		||||
         generated. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <secret>secret</secret>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key to use when setting
 | 
			
		||||
         up encrypted s2s connections with other servers (STARTTLS + Dialback).
 | 
			
		||||
         From SSL_CTX_use_certificate_chain_file(3): "The certificates must be
 | 
			
		||||
         in PEM format and must be sorted starting with the subject's
 | 
			
		||||
         certificate (actual client or server certificate), followed
 | 
			
		||||
         by intermediate CA certificates if applicable, and ending
 | 
			
		||||
         at the highest level (root) CA" (the latter one being optional).
 | 
			
		||||
         If this is commented out, or the file can't be read, no attempt will be
 | 
			
		||||
         made to establish encrypted connections with other servers. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- SSL verify mode - see SSL_CTX_set_verify(3), mode parameter -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <verify-mode>7</verify-mode>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an optional SSL certificate chain file for SSL
 | 
			
		||||
         connections. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <cachain>/etc/jabber/cachain.pem</cachain>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
  </local>
 | 
			
		||||
 | 
			
		||||
  <!-- input/output settings -->
 | 
			
		||||
  <io>
 | 
			
		||||
    <!-- Maximum number of file descriptors. Note that the number of
 | 
			
		||||
         possible connections will be slightly less than this, because
 | 
			
		||||
         s2s itself can use some on its own. If the supply of file
 | 
			
		||||
         descriptors is exhausted, new incoming connections will be
 | 
			
		||||
         denied.
 | 
			
		||||
 | 
			
		||||
         These connections are mainly consumed when we make a
 | 
			
		||||
         connection to an external jabber server, or an external jabber
 | 
			
		||||
         server connects to us. If you don't have a lot of users then
 | 
			
		||||
         there's probably no need for s2s to establish connections to
 | 
			
		||||
         external jabber servers and the default value here is probably
 | 
			
		||||
         fine. On the other hand, if you have lots of users with lots
 | 
			
		||||
         of remote buddies in their buddylist then s2s will need to have
 | 
			
		||||
         lots of open connections with other jabber servers and you may
 | 
			
		||||
         need to increase this value.
 | 
			
		||||
 | 
			
		||||
         Note that this value only affects how many file descriptors
 | 
			
		||||
         jabberd is able to handle internally. You may also need to
 | 
			
		||||
         tell your operating system to allow jabberd to use more file
 | 
			
		||||
         descriptors. On Linux this can be done using ulimit -n or by
 | 
			
		||||
         changing the value of /proc/sys/fd/file-max.
 | 
			
		||||
 | 
			
		||||
         (default: 1024) -->
 | 
			
		||||
    <max_fds>1024</max_fds>
 | 
			
		||||
 | 
			
		||||
    <!-- Rate limiting -->
 | 
			
		||||
    <limits>
 | 
			
		||||
      <!-- Maximum stanza size - if more than given number of bytes
 | 
			
		||||
           are read in one incoming stanza, the stream is closed
 | 
			
		||||
	   with policy-violation error.
 | 
			
		||||
 | 
			
		||||
           Set to 0 to disable.
 | 
			
		||||
           Values less than 16384 might not work. -->
 | 
			
		||||
      <stanzasize>65535</stanzasize>
 | 
			
		||||
    </limits>
 | 
			
		||||
 | 
			
		||||
    <!-- Enable XEP-0138: Stream Compression -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <compression/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
  </io>
 | 
			
		||||
 | 
			
		||||
  <!-- Timed checks -->
 | 
			
		||||
  <check>
 | 
			
		||||
    <!-- Interval between checks.
 | 
			
		||||
 | 
			
		||||
         Checks will be run every n seconds.
 | 
			
		||||
 | 
			
		||||
         0 disables all checks except DNS expiry.     (default: 60) -->
 | 
			
		||||
    <interval>60</interval>
 | 
			
		||||
 | 
			
		||||
    <!-- Queue expiry and connection timeout.
 | 
			
		||||
 | 
			
		||||
         While a connection is being established and dialback is in
 | 
			
		||||
         progress, packets are queued. If a valid connection has not
 | 
			
		||||
         been established within this many seconds, the connection
 | 
			
		||||
         process will be aborted and the queued packets will be
 | 
			
		||||
         bounced. Timeout checks are made for three phases of
 | 
			
		||||
         setting up a route authenticated through dialback:
 | 
			
		||||
         1. Connection establishment to exchange of stream headers
 | 
			
		||||
         2. Initiating dialback (incoming connections)
 | 
			
		||||
         3. Completing dialback (incoming and outgoing)
 | 
			
		||||
 | 
			
		||||
         If stage 1 connection establishment fails and there are
 | 
			
		||||
         alternative hosts for this route that have not failed 
 | 
			
		||||
         recently, they will be tried too before finally giving up.
 | 
			
		||||
 | 
			
		||||
         0 disables queue expiry.                     (default: 60) -->
 | 
			
		||||
    <queue>60</queue>
 | 
			
		||||
 | 
			
		||||
    <!-- Queue retry timeout.
 | 
			
		||||
 | 
			
		||||
         If the queue is older than this timeout, the connection
 | 
			
		||||
         will not be retried even if there are alternative hosts
 | 
			
		||||
         that have not failed recently.
 | 
			
		||||
 | 
			
		||||
         0 disables retry expiry.                    (default: 300) -->
 | 
			
		||||
    <retry>300</retry>
 | 
			
		||||
 | 
			
		||||
    <!-- Idle connection checks.
 | 
			
		||||
 | 
			
		||||
         Connections that have not sent data for longer than this many
 | 
			
		||||
         seconds will be dropped.
 | 
			
		||||
 | 
			
		||||
         0 disables idle timeouts.                 (default: 86400) -->
 | 
			
		||||
    <idle>86400</idle>
 | 
			
		||||
 | 
			
		||||
    <!-- Keepalives.
 | 
			
		||||
 | 
			
		||||
         Outgoing connections that have not been used for longer than
 | 
			
		||||
         this many seconds will have a single whitespace character sent
 | 
			
		||||
         to them. This will force the TCP connection to be closed if
 | 
			
		||||
         they have disconnected without us knowing about it.
 | 
			
		||||
 | 
			
		||||
         0 disables keepalives.                       (default: 0) -->
 | 
			
		||||
    <keepalive>0</keepalive>
 | 
			
		||||
 | 
			
		||||
    <!-- Interval between DNS result/bad host expiry.
 | 
			
		||||
 | 
			
		||||
         0 disables expiry checks.                 (default: 300) -->
 | 
			
		||||
    <dnscache>300</dnscache>
 | 
			
		||||
  </check>
 | 
			
		||||
 | 
			
		||||
  <!-- Statistics -->
 | 
			
		||||
  <stats>
 | 
			
		||||
    <!-- file containing count of packets that went through -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <packet>/var/spool/jabber/stats/s2s.packets</packet>
 | 
			
		||||
    -->
 | 
			
		||||
  </stats>
 | 
			
		||||
 | 
			
		||||
  <lookup>
 | 
			
		||||
     <!-- SRV TCP services will be resolved in the following order. The first
 | 
			
		||||
          one that returns something will be used (ie dereferenced via an
 | 
			
		||||
          A/AAAA lookup). If no SRV records are found, resolver will
 | 
			
		||||
          fallback to a straight A/AAAA lookup. -->
 | 
			
		||||
 | 
			
		||||
    <!-- xmpp-server is mandated by the XMPP spec -->
 | 
			
		||||
    <srv>xmpp-server</srv>
 | 
			
		||||
 | 
			
		||||
    <!-- traditionally, jabber has been used -->
 | 
			
		||||
    <srv>jabber</srv>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    <!-- If this is enabled, the resolver will look up AAAA records as well
 | 
			
		||||
         as A records. This is needed if you want s2s to use IPv6.
 | 
			
		||||
         Connection attempts will be made to all IPv6 hosts before trying
 | 
			
		||||
         IPv4 (see bad host timeout below). -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <resolve-ipv6/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Minimum time that DNS lookup results are cached (overrides max below). -->
 | 
			
		||||
    <min-ttl>30</min-ttl>
 | 
			
		||||
 | 
			
		||||
    <!-- Maximum time that DNS lookup results are cached. -->
 | 
			
		||||
    <max-ttl>86400</max-ttl>
 | 
			
		||||
 | 
			
		||||
    <!-- Time /etc/hosts lookup results are cached for (default: 86400). -->
 | 
			
		||||
    <etc-hosts-ttl>86400</etc-hosts-ttl>
 | 
			
		||||
 | 
			
		||||
    <!-- Minimum time to wait before using hosts that we have failed to
 | 
			
		||||
         establish a connection to (unless there are no alternatives).
 | 
			
		||||
         Do not set this too low - it is required to detect permanent
 | 
			
		||||
         problems like broken IPv6 connectivity in order to attempt IPv4.
 | 
			
		||||
 | 
			
		||||
         0 disables bad host caching.               (default: 3600) -->
 | 
			
		||||
    <bad-host-timeout>3600</bad-host-timeout>
 | 
			
		||||
 | 
			
		||||
    <!-- Disable the DNS cache (negative caching will still be done).
 | 
			
		||||
         This is likely to negatively impact performance while saving
 | 
			
		||||
         a small amount of memory since multiple DNS requests must
 | 
			
		||||
         then be made for every re-connection. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <no-cache/>
 | 
			
		||||
    -->
 | 
			
		||||
  </lookup>
 | 
			
		||||
 | 
			
		||||
  <!-- If this is enabled, domains which share the same host will re-use
 | 
			
		||||
       existing outgoing connections. This is a potential security risk
 | 
			
		||||
       as the SSL connection from the first domain will be re-used too. -->
 | 
			
		||||
  <out-conn-reuse/>
 | 
			
		||||
 | 
			
		||||
  <security>
 | 
			
		||||
    <!-- Require TLS secured S2S connections -->
 | 
			
		||||
    <!--
 | 
			
		||||
      <require_tls/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        Domain whitelisting
 | 
			
		||||
    -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <enable_whitelist/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Domain whitelisting
 | 
			
		||||
         When defined, only whitelisted domains are allowed to connect -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <whitelist_domain>domain1.tld</whitelist_domain>
 | 
			
		||||
    <whitelist_domain>domain2.tld</whitelist_domain>
 | 
			
		||||
    <whitelist_domain>other.tld</whitelist_domain>
 | 
			
		||||
    -->
 | 
			
		||||
  </security>
 | 
			
		||||
</s2s>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
@ -1,323 +0,0 @@
 | 
			
		||||
<!-- s2s configuration -->
 | 
			
		||||
<s2s>
 | 
			
		||||
  <!-- Our ID on the network (default: s2s) -->
 | 
			
		||||
  <id>s2s</id>
 | 
			
		||||
 | 
			
		||||
  <!-- The process ID file. Comment this out if you don't need to know
 | 
			
		||||
       the process ID from outside the process (eg for control scripts) -->
 | 
			
		||||
  <pidfile>/var/run/jabber/${id}.pid</pidfile>
 | 
			
		||||
 | 
			
		||||
  <!-- Router connection configuration -->
 | 
			
		||||
  <router>
 | 
			
		||||
    <!-- IP/port the router is waiting for connections on -->
 | 
			
		||||
    <ip>127.0.0.1</ip>            <!-- default: 127.0.0.1 -->
 | 
			
		||||
    <port>5347</port>             <!-- default: 5347 -->
 | 
			
		||||
 | 
			
		||||
    <!-- Username/password to authenticate as -->
 | 
			
		||||
    <user>jabberd</user>          <!-- default: jabberd -->
 | 
			
		||||
    <pass>secret</pass>           <!-- default: secret -->
 | 
			
		||||
 | 
			
		||||
    <!-- The router will only allow one component to be the default
 | 
			
		||||
         route (ie the component that receives packets destined for
 | 
			
		||||
         unknown hosts). If you want to run more than one s2s instance,
 | 
			
		||||
         you need to uncomment this so that s2s does not try to become
 | 
			
		||||
         the default route. Note that all outgoing s2s communication
 | 
			
		||||
         will go to the component that is the default route. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <non-default/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key to use when
 | 
			
		||||
         setting up an encrypted channel with the router. From
 | 
			
		||||
         SSL_CTX_use_certificate_chain_file(3): "The certificates must be
 | 
			
		||||
         in PEM format and must be sorted starting with the subject's
 | 
			
		||||
         certificate (actual client or server certificate), followed
 | 
			
		||||
         by intermediate CA certificates if applicable, and ending
 | 
			
		||||
         at the highest level (root) CA" (the latter one being optional).
 | 
			
		||||
         If this is commented out, or the file can't be read, no attempt
 | 
			
		||||
         will be made to establish an encrypted channel with the router. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Router connection retry -->
 | 
			
		||||
    <retry>
 | 
			
		||||
      <!-- If the connection to the router can't be established at
 | 
			
		||||
           startup, we should try again this many times before exiting.
 | 
			
		||||
           Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <init>3</init>
 | 
			
		||||
 | 
			
		||||
      <!-- If we lost the connection to the router during normal
 | 
			
		||||
           operation (ie we've successfully connected to the router in
 | 
			
		||||
           the past), we should try to reconnect this many times before
 | 
			
		||||
           exiting. Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <lost>3</lost>
 | 
			
		||||
 | 
			
		||||
      <!-- Sleep for this many seconds before trying attempting a
 | 
			
		||||
           reconnect. [default: 2] -->
 | 
			
		||||
      <sleep>2</sleep>
 | 
			
		||||
    </retry>
 | 
			
		||||
  </router>
 | 
			
		||||
 | 
			
		||||
  <!-- Log configuration - type is "syslog", "file" or "stdout" -->
 | 
			
		||||
  <log type='syslog'>
 | 
			
		||||
    <!-- If logging to syslog, this is the log ident -->
 | 
			
		||||
    <ident>jabberd/s2s</ident>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to syslog, this is the log facility
 | 
			
		||||
         (local0 - local7)                        [default: local3] -->
 | 
			
		||||
    <facility>local3</facility>
 | 
			
		||||
 | 
			
		||||
    <!-- if logging to file, this is the filename of the logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <file>/var/log/jabber/s2s.log</file>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Filename of the debug logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <debug>/var/log/jabber/debug-${id}.log</debug>
 | 
			
		||||
    -->
 | 
			
		||||
  </log>
 | 
			
		||||
 | 
			
		||||
  <!-- Local network configuration -->
 | 
			
		||||
  <local>
 | 
			
		||||
    <!-- IP and port to listen for incoming s2s connections on
 | 
			
		||||
                                           (default: 0.0.0.0, 5269) -->
 | 
			
		||||
    <ip>0.0.0.0</ip>
 | 
			
		||||
    <port>5269</port>
 | 
			
		||||
 | 
			
		||||
    <!-- Multihomed machines (with more than one interface and IP address)
 | 
			
		||||
         need to specify outgoing S2S connections interface/address.
 | 
			
		||||
         If not set, the <ip> section address above is used. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <origins>
 | 
			
		||||
      <ip>1.2.3.4</ip>
 | 
			
		||||
      <ip>fe80::202:b3ff:fe1e:8329</ip>
 | 
			
		||||
    </origins>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Secret used to generate dialback keys. If you have more than
 | 
			
		||||
         one s2s instance configured, make sure that this is the same on
 | 
			
		||||
         all of them. If this is commented out, a random one will be
 | 
			
		||||
         generated. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <secret>secret</secret>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key to use when setting
 | 
			
		||||
         up encrypted s2s connections with other servers (STARTTLS + Dialback).
 | 
			
		||||
         From SSL_CTX_use_certificate_chain_file(3): "The certificates must be
 | 
			
		||||
         in PEM format and must be sorted starting with the subject's
 | 
			
		||||
         certificate (actual client or server certificate), followed
 | 
			
		||||
         by intermediate CA certificates if applicable, and ending
 | 
			
		||||
         at the highest level (root) CA" (the latter one being optional).
 | 
			
		||||
         If this is commented out, or the file can't be read, no attempt will be
 | 
			
		||||
         made to establish encrypted connections with other servers. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- SSL verify mode - see SSL_CTX_set_verify(3), mode parameter -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <verify-mode>7</verify-mode>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an optional SSL certificate chain file for SSL
 | 
			
		||||
         connections. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <cachain>/etc/jabber/cachain.pem</cachain>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
  </local>
 | 
			
		||||
 | 
			
		||||
  <!-- input/output settings -->
 | 
			
		||||
  <io>
 | 
			
		||||
    <!-- Maximum number of file descriptors. Note that the number of
 | 
			
		||||
         possible connections will be slightly less than this, because
 | 
			
		||||
         s2s itself can use some on its own. If the supply of file
 | 
			
		||||
         descriptors is exhausted, new incoming connections will be
 | 
			
		||||
         denied.
 | 
			
		||||
 | 
			
		||||
         These connections are mainly consumed when we make a
 | 
			
		||||
         connection to an external jabber server, or an external jabber
 | 
			
		||||
         server connects to us. If you don't have a lot of users then
 | 
			
		||||
         there's probably no need for s2s to establish connections to
 | 
			
		||||
         external jabber servers and the default value here is probably
 | 
			
		||||
         fine. On the other hand, if you have lots of users with lots
 | 
			
		||||
         of remote buddies in their buddylist then s2s will need to have
 | 
			
		||||
         lots of open connections with other jabber servers and you may
 | 
			
		||||
         need to increase this value.
 | 
			
		||||
 | 
			
		||||
         Note that this value only affects how many file descriptors
 | 
			
		||||
         jabberd is able to handle internally. You may also need to
 | 
			
		||||
         tell your operating system to allow jabberd to use more file
 | 
			
		||||
         descriptors. On Linux this can be done using ulimit -n or by
 | 
			
		||||
         changing the value of /proc/sys/fd/file-max.
 | 
			
		||||
 | 
			
		||||
         (default: 1024) -->
 | 
			
		||||
    <max_fds>1024</max_fds>
 | 
			
		||||
 | 
			
		||||
    <!-- Rate limiting -->
 | 
			
		||||
    <limits>
 | 
			
		||||
      <!-- Maximum stanza size - if more than given number of bytes
 | 
			
		||||
           are read in one incoming stanza, the stream is closed
 | 
			
		||||
	   with policy-violation error.
 | 
			
		||||
 | 
			
		||||
           Set to 0 to disable.
 | 
			
		||||
           Values less than 16384 might not work. -->
 | 
			
		||||
      <stanzasize>65535</stanzasize>
 | 
			
		||||
    </limits>
 | 
			
		||||
 | 
			
		||||
    <!-- Enable XEP-0138: Stream Compression -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <compression/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
  </io>
 | 
			
		||||
 | 
			
		||||
  <!-- Timed checks -->
 | 
			
		||||
  <check>
 | 
			
		||||
    <!-- Interval between checks.
 | 
			
		||||
 | 
			
		||||
         Checks will be run every n seconds.
 | 
			
		||||
 | 
			
		||||
         0 disables all checks except DNS expiry.     (default: 60) -->
 | 
			
		||||
    <interval>60</interval>
 | 
			
		||||
 | 
			
		||||
    <!-- Queue expiry and connection timeout.
 | 
			
		||||
 | 
			
		||||
         While a connection is being established and dialback is in
 | 
			
		||||
         progress, packets are queued. If a valid connection has not
 | 
			
		||||
         been established within this many seconds, the connection
 | 
			
		||||
         process will be aborted and the queued packets will be
 | 
			
		||||
         bounced. Timeout checks are made for three phases of
 | 
			
		||||
         setting up a route authenticated through dialback:
 | 
			
		||||
         1. Connection establishment to exchange of stream headers
 | 
			
		||||
         2. Initiating dialback (incoming connections)
 | 
			
		||||
         3. Completing dialback (incoming and outgoing)
 | 
			
		||||
 | 
			
		||||
         If stage 1 connection establishment fails and there are
 | 
			
		||||
         alternative hosts for this route that have not failed 
 | 
			
		||||
         recently, they will be tried too before finally giving up.
 | 
			
		||||
 | 
			
		||||
         0 disables queue expiry.                     (default: 60) -->
 | 
			
		||||
    <queue>60</queue>
 | 
			
		||||
 | 
			
		||||
    <!-- Queue retry timeout.
 | 
			
		||||
 | 
			
		||||
         If the queue is older than this timeout, the connection
 | 
			
		||||
         will not be retried even if there are alternative hosts
 | 
			
		||||
         that have not failed recently.
 | 
			
		||||
 | 
			
		||||
         0 disables retry expiry.                    (default: 300) -->
 | 
			
		||||
    <retry>300</retry>
 | 
			
		||||
 | 
			
		||||
    <!-- Idle connection checks.
 | 
			
		||||
 | 
			
		||||
         Connections that have not sent data for longer than this many
 | 
			
		||||
         seconds will be dropped.
 | 
			
		||||
 | 
			
		||||
         0 disables idle timeouts.                 (default: 86400) -->
 | 
			
		||||
    <idle>86400</idle>
 | 
			
		||||
 | 
			
		||||
    <!-- Keepalives.
 | 
			
		||||
 | 
			
		||||
         Outgoing connections that have not been used for longer than
 | 
			
		||||
         this many seconds will have a single whitespace character sent
 | 
			
		||||
         to them. This will force the TCP connection to be closed if
 | 
			
		||||
         they have disconnected without us knowing about it.
 | 
			
		||||
 | 
			
		||||
         0 disables keepalives.                       (default: 0) -->
 | 
			
		||||
    <keepalive>0</keepalive>
 | 
			
		||||
 | 
			
		||||
    <!-- Interval between DNS result/bad host expiry.
 | 
			
		||||
 | 
			
		||||
         0 disables expiry checks.                 (default: 300) -->
 | 
			
		||||
    <dnscache>300</dnscache>
 | 
			
		||||
  </check>
 | 
			
		||||
 | 
			
		||||
  <!-- Statistics -->
 | 
			
		||||
  <stats>
 | 
			
		||||
    <!-- file containing count of packets that went through -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <packet>/var/spool/jabber/stats/s2s.packets</packet>
 | 
			
		||||
    -->
 | 
			
		||||
  </stats>
 | 
			
		||||
 | 
			
		||||
  <lookup>
 | 
			
		||||
     <!-- SRV TCP services will be resolved in the following order. The first
 | 
			
		||||
          one that returns something will be used (ie dereferenced via an
 | 
			
		||||
          A/AAAA lookup). If no SRV records are found, resolver will
 | 
			
		||||
          fallback to a straight A/AAAA lookup. -->
 | 
			
		||||
 | 
			
		||||
    <!-- xmpp-server is mandated by the XMPP spec -->
 | 
			
		||||
    <srv>xmpp-server</srv>
 | 
			
		||||
 | 
			
		||||
    <!-- traditionally, jabber has been used -->
 | 
			
		||||
    <srv>jabber</srv>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    <!-- If this is enabled, the resolver will look up AAAA records as well
 | 
			
		||||
         as A records. This is needed if you want s2s to use IPv6.
 | 
			
		||||
         Connection attempts will be made to all IPv6 hosts before trying
 | 
			
		||||
         IPv4 (see bad host timeout below). -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <resolve-ipv6/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Minimum time that DNS lookup results are cached (overrides max below). -->
 | 
			
		||||
    <min-ttl>30</min-ttl>
 | 
			
		||||
 | 
			
		||||
    <!-- Maximum time that DNS lookup results are cached. -->
 | 
			
		||||
    <max-ttl>86400</max-ttl>
 | 
			
		||||
 | 
			
		||||
    <!-- Time /etc/hosts lookup results are cached for (default: 86400). -->
 | 
			
		||||
    <etc-hosts-ttl>86400</etc-hosts-ttl>
 | 
			
		||||
 | 
			
		||||
    <!-- Minimum time to wait before using hosts that we have failed to
 | 
			
		||||
         establish a connection to (unless there are no alternatives).
 | 
			
		||||
         Do not set this too low - it is required to detect permanent
 | 
			
		||||
         problems like broken IPv6 connectivity in order to attempt IPv4.
 | 
			
		||||
 | 
			
		||||
         0 disables bad host caching.               (default: 3600) -->
 | 
			
		||||
    <bad-host-timeout>3600</bad-host-timeout>
 | 
			
		||||
 | 
			
		||||
    <!-- Disable the DNS cache (negative caching will still be done).
 | 
			
		||||
         This is likely to negatively impact performance while saving
 | 
			
		||||
         a small amount of memory since multiple DNS requests must
 | 
			
		||||
         then be made for every re-connection. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <no-cache/>
 | 
			
		||||
    -->
 | 
			
		||||
  </lookup>
 | 
			
		||||
 | 
			
		||||
  <!-- If this is enabled, domains which share the same host will re-use
 | 
			
		||||
       existing outgoing connections. This is a potential security risk
 | 
			
		||||
       as the SSL connection from the first domain will be re-used too. -->
 | 
			
		||||
  <out-conn-reuse/>
 | 
			
		||||
 | 
			
		||||
  <security>
 | 
			
		||||
    <!-- Require TLS secured S2S connections -->
 | 
			
		||||
    <!--
 | 
			
		||||
      <require_tls/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        Domain whitelisting
 | 
			
		||||
    -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <enable_whitelist/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Domain whitelisting
 | 
			
		||||
         When defined, only whitelisted domains are allowed to connect -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <whitelist_domain>domain1.tld</whitelist_domain>
 | 
			
		||||
    <whitelist_domain>domain2.tld</whitelist_domain>
 | 
			
		||||
    <whitelist_domain>other.tld</whitelist_domain>
 | 
			
		||||
    -->
 | 
			
		||||
  </security>
 | 
			
		||||
</s2s>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
@ -1,811 +0,0 @@
 | 
			
		||||
<!-- Session manager configuration -->
 | 
			
		||||
<sm>
 | 
			
		||||
  <!-- Our ID on the network (default: sm) -->
 | 
			
		||||
  <id>sm</id>
 | 
			
		||||
 | 
			
		||||
  <!-- The process ID file. Comment this out if you don't need to know
 | 
			
		||||
       the process ID from outside the process (eg for control scripts) -->
 | 
			
		||||
  <pidfile>/var/run/jabber/${id}.pid</pidfile>
 | 
			
		||||
 | 
			
		||||
  <!-- Router connection configuration -->
 | 
			
		||||
  <router>
 | 
			
		||||
    <!-- IP/port the router is waiting for connections on -->
 | 
			
		||||
    <ip>127.0.0.1</ip>            <!-- default: 127.0.0.1 -->
 | 
			
		||||
    <port>5347</port>             <!-- default: 5347 -->
 | 
			
		||||
 | 
			
		||||
    <!-- Username/password to authenticate as -->
 | 
			
		||||
    <user>jabberd</user>          <!-- default: jabberd -->
 | 
			
		||||
    <pass>secret</pass>           <!-- default: secret -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key to use when
 | 
			
		||||
         setting up an encrypted channel with the router. From
 | 
			
		||||
         SSL_CTX_use_certificate_chain_file(3): "The certificates must be
 | 
			
		||||
         in PEM format and must be sorted starting with the subject's
 | 
			
		||||
         certificate (actual client or server certificate), followed
 | 
			
		||||
         by intermediate CA certificates if applicable, and ending
 | 
			
		||||
         at the highest level (root) CA" (the latter one being optional).
 | 
			
		||||
         If this is commented out, or the file can't be read, no attempt
 | 
			
		||||
         will be made to establish an encrypted channel with the router. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Router connection retry -->
 | 
			
		||||
    <retry>
 | 
			
		||||
      <!-- If the connection to the router can't be established at
 | 
			
		||||
           startup, we should try again this many times before exiting.
 | 
			
		||||
           Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <init>3</init>
 | 
			
		||||
 | 
			
		||||
      <!-- If we lost the connection to the router during normal
 | 
			
		||||
           operation (ie we've successfully connected to the router in
 | 
			
		||||
           the past), we should try to reconnect this many times before
 | 
			
		||||
           exiting. Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <lost>3</lost>
 | 
			
		||||
 | 
			
		||||
      <!-- Sleep for this many seconds before trying attempting a
 | 
			
		||||
           reconnect. [default: 2] -->
 | 
			
		||||
      <sleep>2</sleep>
 | 
			
		||||
    </retry>
 | 
			
		||||
  </router>
 | 
			
		||||
 | 
			
		||||
  <!-- Log configuration - type is "syslog", "file" or "stdout" -->
 | 
			
		||||
  <log type='syslog'>
 | 
			
		||||
    <!-- If logging to syslog, this is the log ident -->
 | 
			
		||||
    <ident>jabberd/sm</ident>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to syslog, this is the log facility
 | 
			
		||||
         (local0 - local7)                        [default: local3] -->
 | 
			
		||||
    <facility>local3</facility>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to file, this is the filename of the logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <file>/var/log/jabber/sm.log</file>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Filename of the debug logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <debug>/var/log/jabber/debug-${id}.log</debug>
 | 
			
		||||
    -->
 | 
			
		||||
  </log>
 | 
			
		||||
 | 
			
		||||
  <!-- Local network configuration -->
 | 
			
		||||
  <local>
 | 
			
		||||
    <!-- Who we identify ourselves as.
 | 
			
		||||
         Users will have this as the domain part of their JID.
 | 
			
		||||
         If you want your server to be accessible from other
 | 
			
		||||
         Jabber servers, this IDs must be FQDN resolvable by DNSes.
 | 
			
		||||
         If not set, the SM id is used. -->
 | 
			
		||||
    <id>localhost.localdomain</id>
 | 
			
		||||
    <!--
 | 
			
		||||
    <id>vhost1.localdomain</id>
 | 
			
		||||
    <id>vhost2.localdomain</id>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
  </local>
 | 
			
		||||
 | 
			
		||||
  <!-- Storage database configuration -->
 | 
			
		||||
  <storage>
 | 
			
		||||
    <!-- Dynamic storage modules path -->
 | 
			
		||||
    <path>/usr/lib64/jabberd</path>
 | 
			
		||||
 | 
			
		||||
    <!-- By default, we use the SQLite driver for all storage -->
 | 
			
		||||
    <driver>db</driver>
 | 
			
		||||
 | 
			
		||||
    <!-- Its also possible to explicitly list alternate drivers for
 | 
			
		||||
         specific data types. -->
 | 
			
		||||
 | 
			
		||||
    <!-- Store vcards in a ldapvcard database instead -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <driver type='vcard'>ldapvcard</driver>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Only ldapvcard driver implements published-roster: -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <driver type='published-roster'>ldapvcard</driver>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Use ldapvcard driver for published-roster-groups.
 | 
			
		||||
         See description in section sm/user/template/mapped-groups.
 | 
			
		||||
         Used by mod_published_roster.
 | 
			
		||||
         See ldapvcard section for options.
 | 
			
		||||
         When resolving group id to group name, it searches for
 | 
			
		||||
         groupsobjectclass objects at groupsdn base using group id
 | 
			
		||||
         (in groupsidattr) as key and returns the first value of 
 | 
			
		||||
         groupattr of first found entry.
 | 
			
		||||
         E.g.. in general case, if group id is "some-dep", and groupsdn
 | 
			
		||||
         is o=org, and class is jabberGroup, it searches for
 | 
			
		||||
         (&(objectClass=jabberGroup)(cn=some-dep)) and returns value of
 | 
			
		||||
         jabberPublishedItem attribute, which may contain textual description.
 | 
			
		||||
         -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <driver type='published-roster-groups'>ldapvcard</driver>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Rate limiting -->
 | 
			
		||||
    <limits>
 | 
			
		||||
      <!-- Maximum queries per second - if more than X queries are sent in Y
 | 
			
		||||
           seconds, connection is throttled for Z seconds. The format
 | 
			
		||||
           is:
 | 
			
		||||
 | 
			
		||||
             <queries seconds='Y' throttle='Z'>X</bytes>
 | 
			
		||||
 | 
			
		||||
           Default Y is 5, default Z is 60. set X to 0 to disable. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <queries>3</queries>
 | 
			
		||||
      -->
 | 
			
		||||
    </limits>
 | 
			
		||||
 | 
			
		||||
    <!-- SQLite driver configuration -->
 | 
			
		||||
    <sqlite>
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>/var/spool/jabber/db/sqlite.db</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Transaction support. If this is commented out, transactions
 | 
			
		||||
           will be disabled. This might make database accesses faster,
 | 
			
		||||
           but data may be lost if jabberd crashes. -->
 | 
			
		||||
      <transactions/>
 | 
			
		||||
 | 
			
		||||
      <!-- SQLite busy-timeout in milliseconds. -->
 | 
			
		||||
      <busy-timeout>2000</busy-timeout>
 | 
			
		||||
    </sqlite>
 | 
			
		||||
 | 
			
		||||
    <!-- MySQL driver configuration -->
 | 
			
		||||
    <mysql>
 | 
			
		||||
      <!-- Database server host and port -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>3306</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
 | 
			
		||||
      <!-- Transaction support. If this is commented out, transactions
 | 
			
		||||
           will be disabled. This might make database accesses faster,
 | 
			
		||||
           but data may be lost if jabberd crashes.
 | 
			
		||||
 | 
			
		||||
           This will need to be disabled if you are using a MySQL
 | 
			
		||||
           earlier than v3.23.xx, as transaction support did not appear
 | 
			
		||||
           until this version. -->
 | 
			
		||||
      <transactions/>
 | 
			
		||||
    </mysql>
 | 
			
		||||
 | 
			
		||||
    <!-- PostgreSQL driver configuration -->
 | 
			
		||||
    <pgsql>
 | 
			
		||||
      <!-- PostgreSQL connection info.
 | 
			
		||||
           For the rest of the options see
 | 
			
		||||
           http://www.postgresql.org/docs/8.0/interactive/libpq.html -->
 | 
			
		||||
      <conninfo>dbname=jabberd2 user=jabberd2 password=secret</conninfo>
 | 
			
		||||
 | 
			
		||||
      <!-- Alternatively you may set connection settings separately.
 | 
			
		||||
           These are used only in absence of 'conninfo' -->
 | 
			
		||||
 | 
			
		||||
      <!-- Database server host and port -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>5432</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database schema -->
 | 
			
		||||
      <schema>public</schema>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
 | 
			
		||||
      <!-- Transaction support. If this is commented out, transactions
 | 
			
		||||
           will be disabled. This might make database accesses faster,
 | 
			
		||||
           but data may be lost if jabberd crashes. -->
 | 
			
		||||
      <transactions/>
 | 
			
		||||
    </pgsql>
 | 
			
		||||
 | 
			
		||||
    <!-- Berkeley DB driver configuration.  This does not support roster
 | 
			
		||||
         maxitems or offline userquota (because the mod_roster
 | 
			
		||||
         implementation does not implement the 'count' callback). -->
 | 
			
		||||
    <db>
 | 
			
		||||
      <!-- Directory to store database files under -->
 | 
			
		||||
      <path>/var/spool/jabber/db</path>
 | 
			
		||||
 | 
			
		||||
      <!-- Synchronize the database to disk after each write. If you
 | 
			
		||||
           disable this, database accesses may be faster, but data may
 | 
			
		||||
           be lost if jabberd crashes. -->
 | 
			
		||||
      <sync/>
 | 
			
		||||
    </db>
 | 
			
		||||
 | 
			
		||||
    <!-- Oracle driver configuration -->
 | 
			
		||||
    <oracle>
 | 
			
		||||
      <!-- Database server host and port. -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>1521</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
    </oracle>
 | 
			
		||||
 | 
			
		||||
    <!-- Filesystem driver configuration -->
 | 
			
		||||
    <fs>
 | 
			
		||||
      <!-- Directory to store database files under. -->
 | 
			
		||||
      <path>/var/spool/jabber/fs</path>
 | 
			
		||||
    </fs>
 | 
			
		||||
 | 
			
		||||
    <!-- LDAPVCARD driver configuration -->
 | 
			
		||||
    <ldapvcard>
 | 
			
		||||
      <!-- LDAP server host and port (default: 389) -->
 | 
			
		||||
      <uri>ldap://localhost/ ldaps://ldap.example.com/</uri>
 | 
			
		||||
      
 | 
			
		||||
      <!-- DN to bind as for searches. If unspecified, the searches
 | 
			
		||||
           will be done anonymously. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <binddn>cn=Directory Manager</binddn>
 | 
			
		||||
      <bindpw>secret</bindpw>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- see authreg.ldapfull in c2s.xml for description. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <type>ad</type>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- LDAP attribute that holds the user ID (default: uid) -->
 | 
			
		||||
      <uidattr>uid</uidattr>
 | 
			
		||||
      <objectclass>posixAccount</objectclass>
 | 
			
		||||
      <pwattr>userPassword</pwattr>
 | 
			
		||||
      <!-- if you use included jabberd.schema use this:
 | 
			
		||||
      <uidattr>jid</uidattr>
 | 
			
		||||
      <objectclass>jabberUser</objectclass>
 | 
			
		||||
      <pwattr>jabberPassword</pwattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Realm to append to uidattr. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <realm>example.org</realm>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- see authreg.ldapfull in c2s.xml for description. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <validattr>valid</validattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- base DN of the tree. You should specify a DN for each
 | 
			
		||||
           authentication realm declared in the <local/> section above,
 | 
			
		||||
           by using the realm attribute. -->
 | 
			
		||||
      <basedn>o=Example Corp.</basedn>
 | 
			
		||||
 | 
			
		||||
      <!-- attribute that holds published group name or id,
 | 
			
		||||
           jabberPublishedGroup if not set -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <groupattr>jabberPublishedGroup</groupattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- this option is helpful if your schema does not have designated
 | 
			
		||||
	       attribute that holds jabber group name
 | 
			
		||||
		   you can use any attribute in <groupattr> i.e. 'distinguishedName'
 | 
			
		||||
		   and then extract a part of it using Regular Expression;
 | 
			
		||||
           first matching () group will be used -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <groupattr_regex>OU=([^,]*),</groupattr_regex>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- boolean attribute that tells whether or not to publish this user
 | 
			
		||||
           jabberPublishedItem by default -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <publishedattr>jabberPublishedItem</publishedattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- If value specified, then keep cache of "published-roster"
 | 
			
		||||
           database, which is used for all users. Cache is renewed when kept more seconds than value
 | 
			
		||||
           specified. Setting this value increases perfomance of publishing
 | 
			
		||||
           roster. If not specified, then we don't keep cache. -->
 | 
			
		||||
      <publishedcachettl>60</publishedcachettl>
 | 
			
		||||
 | 
			
		||||
      <mapped-groups>
 | 
			
		||||
        <!-- If turned on, then mapping of group ids to names with
 | 
			
		||||
             LDAP will works. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <map-groups/>
 | 
			
		||||
        -->
 | 
			
		||||
 | 
			
		||||
        <!-- base for searches for group id to group name mappings -->
 | 
			
		||||
        <basedn>ou=jabbergroups, o=Example Corp.</basedn>
 | 
			
		||||
 | 
			
		||||
        <!-- what objectclass to search, jabberGroup by default -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <objectclass>jabberGroup</objectclass>
 | 
			
		||||
        -->
 | 
			
		||||
 | 
			
		||||
        <!-- what attribute to search, cn by default -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <idattr>cn</idattr>
 | 
			
		||||
        -->
 | 
			
		||||
 | 
			
		||||
        <!-- attribute with text group name, description by default -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <nameattr>description</nameattr>
 | 
			
		||||
        -->
 | 
			
		||||
      </mapped-groups>
 | 
			
		||||
    </ldapvcard>
 | 
			
		||||
  </storage>
 | 
			
		||||
 | 
			
		||||
  <!-- Access control information -->
 | 
			
		||||
  <aci>
 | 
			
		||||
    <!-- The JIDs listed here will get access to all restricted
 | 
			
		||||
         functions, regardless of restrictions further down -->
 | 
			
		||||
    <acl type='all'>
 | 
			
		||||
      <jid>admin@localhost.localdomain</jid>
 | 
			
		||||
    </acl>
 | 
			
		||||
 | 
			
		||||
    <!-- These JIDs can send broadcast messages (announce, motd) -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='broadcast'>
 | 
			
		||||
      <jid>nocstaff1@localhost.localdomain</jid>
 | 
			
		||||
      <jid>nocstaff2@localhost.localdomain</jid>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- These JIDs will receive messages addressed to the sm itself
 | 
			
		||||
         (help requestes and such) -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='messages'>
 | 
			
		||||
      <jid>support@localhost.localdomain</jid>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- These JIDs can discover active user/session information -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='disco'>
 | 
			
		||||
      <jid>webstatus@localhost.localdomain</jid>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
  </aci>
 | 
			
		||||
 | 
			
		||||
  <!-- Module chain configuration
 | 
			
		||||
 | 
			
		||||
       Modules listed in a chain are called in the order specified at
 | 
			
		||||
       the appropriate time for that chain (assuming that the module
 | 
			
		||||
       knows how to work with that chain; otherwise it simply ignores
 | 
			
		||||
       it).
 | 
			
		||||
 | 
			
		||||
       Removing a module from these lists will stop the module being
 | 
			
		||||
       called, even if it's compiled into the server.
 | 
			
		||||
 | 
			
		||||
       Serveral modules have a presence in more than one chain. It is
 | 
			
		||||
       possible to remove a module from one chain but not others, but
 | 
			
		||||
       this may cause strange behaviour. Make sure you know what you're
 | 
			
		||||
       doing. -->
 | 
			
		||||
  <modules>
 | 
			
		||||
    <!-- Dynamic sm modules path -->
 | 
			
		||||
    <path>/usr/lib64/jabberd</path>
 | 
			
		||||
 | 
			
		||||
    <!-- sess-start. The modules in this chain are called when a session
 | 
			
		||||
         is first started (usually on request by c2s as part of the
 | 
			
		||||
         authentication process). This is normally used to load
 | 
			
		||||
         per-session data. -->
 | 
			
		||||
    <chain id='sess-start'>
 | 
			
		||||
      <module>status</module>           <!-- record status information -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- sess-end. The modules in this chain are called just before a
 | 
			
		||||
         session is destroyed (after the client has disconnected). -->
 | 
			
		||||
    <chain id='sess-end'>
 | 
			
		||||
      <module>status</module>           <!-- update status information -->
 | 
			
		||||
      <module>iq-last</module>          <!-- update logout time -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- in-sess. The modules in this chain are called when a packet
 | 
			
		||||
         arrives from an active user session. Note that this chain is
 | 
			
		||||
         also responsible for delivering packets to their destinations -
 | 
			
		||||
         this is usually handled by the "deliver" module. -->
 | 
			
		||||
    <chain id='in-sess'>
 | 
			
		||||
      <module>validate</module>         <!-- validate packet type -->
 | 
			
		||||
      <module>status</module>           <!-- update status information -->
 | 
			
		||||
      <module>privacy</module>          <!-- manage privacy lists -->
 | 
			
		||||
      <module>roster</module>           <!-- handle roster get/sets and s10ns -->
 | 
			
		||||
      <module>vacation</module>         <!-- manage vacation settings -->
 | 
			
		||||
      <!-- <module>pep</module>         <!- - personal eventing -->
 | 
			
		||||
      <module>iq-vcard</module>         <!-- store and retrieve the user's vcard -->
 | 
			
		||||
      <module>iq-ping</module>          <!-- return the server ping -->
 | 
			
		||||
      <module>iq-private</module>       <!-- manage the user's private data store -->
 | 
			
		||||
      <module>disco</module>            <!-- respond to agents requests from sessions -->
 | 
			
		||||
      <module>amp</module>              <!-- advanced message processing -->
 | 
			
		||||
      <module>offline</module>          <!-- if we're coming online for the first time, deliver queued messages -->
 | 
			
		||||
      <module>announce</module>         <!-- deliver motd -->
 | 
			
		||||
      <module>presence</module>         <!-- process and distribute presence updates -->
 | 
			
		||||
      <module>deliver</module>          <!-- deliver packets with full jids directly -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- out-sess. The modules in this chain are called just before a
 | 
			
		||||
         packet is delivered to an active user session. -->
 | 
			
		||||
    <chain id='out-sess'>
 | 
			
		||||
      <!-- <module>pep</module>         <!- - personal eventing -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- in-router. The modules in this chain are called when a packet
 | 
			
		||||
         arrives from the router (ie another component or s2s), but
 | 
			
		||||
         before any processing is done. This is a good place to filter
 | 
			
		||||
         incoming packets. -->
 | 
			
		||||
    <chain id='in-router'>
 | 
			
		||||
      <module>session</module>          <!-- perform session actions as required by c2s -->
 | 
			
		||||
      <module>validate</module>         <!-- validate packet type -->
 | 
			
		||||
      <module>presence</module>         <!-- drop incoming presence if user not online -->
 | 
			
		||||
      <module>privacy</module>          <!-- filter incoming packets based on privacy rules -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- out-router. The modules in this chain are called just before a
 | 
			
		||||
         packet is delivered to the router (destined for another
 | 
			
		||||
         component or s2s). This is a good place to filter outgoing
 | 
			
		||||
         packets. -->
 | 
			
		||||
    <chain id='out-router'>
 | 
			
		||||
      <module>privacy</module>          <!-- filter outgoing packets based on privacy rules -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- pkt-sm. The modules in this chain are called when a packet
 | 
			
		||||
         arrives that is addressed to the session manager itself (ie the
 | 
			
		||||
         to JID has no node part). This is normally used to provide
 | 
			
		||||
         session-manager-wide services (like service discovery). -->
 | 
			
		||||
    <chain id='pkt-sm'>
 | 
			
		||||
      <module>iq-last</module>          <!-- return the server uptime -->
 | 
			
		||||
      <module>iq-ping</module>          <!-- return the server ping -->
 | 
			
		||||
      <module>iq-time</module>          <!-- return the current server time -->
 | 
			
		||||
      <module>iq-version</module>       <!-- return the server name and version -->
 | 
			
		||||
      <module>amp</module>              <!-- advanced message processing -->
 | 
			
		||||
      <module>disco</module>            <!-- build the disco list; respond to disco queries -->
 | 
			
		||||
      <module>announce</module>         <!-- send broadcast messages (announce, motd, etc) -->
 | 
			
		||||
      <module>help</module>             <!-- resend sm messages to administrators -->
 | 
			
		||||
      <module>echo</module>             <!-- echo messages sent to /echo -->
 | 
			
		||||
      <module>status</module>           <!-- track status information -->
 | 
			
		||||
      <module>presence</module>         <!-- proces server presence subscriptions -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- pkt-user. The modules in this chain are called when a packet
 | 
			
		||||
         arrives that is address to a specific user. Note that this
 | 
			
		||||
         chain is also responsible for delivering packets to user
 | 
			
		||||
         sessions as appropriate - this is usually handled by the
 | 
			
		||||
         "deliver" module. -->
 | 
			
		||||
    <chain id='pkt-user'>
 | 
			
		||||
      <module>roster</module>           <!-- handle s10n responses -->
 | 
			
		||||
      <module>presence</module>         <!-- process and distribute incoming presence from external entities -->
 | 
			
		||||
      <module>iq-vcard</module>         <!-- grab user vcards -->
 | 
			
		||||
      <module>amp</module>              <!-- advanced message processing -->
 | 
			
		||||
      <module>deliver</module>          <!-- deliver the packet to an active session if we can -->
 | 
			
		||||
      <module>vacation</module>         <!-- send vacation messages -->
 | 
			
		||||
      <module>offline</module>          <!-- save messages and s10ns for later -->
 | 
			
		||||
      <module>iq-last</module>          <!-- return time since last logout -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- pkt-router. The modules in this chain are called when a
 | 
			
		||||
         special-purpose packet arrives from the router (eg domain
 | 
			
		||||
         advertisements). -->
 | 
			
		||||
    <chain id='pkt-router'>
 | 
			
		||||
      <module>session</module>          <!-- take sessions offline if their c2s disappears -->
 | 
			
		||||
      <module>disco</module>            <!-- query new components for service information -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- user-load. The modules in this chain are called to load
 | 
			
		||||
         per-user data. This will happen before a user can be used (ie
 | 
			
		||||
         before a session is created). -->
 | 
			
		||||
    <chain id='user-load'>
 | 
			
		||||
      <module>active</module>           <!-- get active status -->
 | 
			
		||||
      <module>roster</module>           <!-- load the roster and trust list -->
 | 
			
		||||
      <module>roster-publish</module>   <!-- load the published roster -->
 | 
			
		||||
      <module>privacy</module>          <!-- load privacy lists -->
 | 
			
		||||
      <module>vacation</module>         <!-- load vacation settings -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- user-unload. The modules in this chain are called right
 | 
			
		||||
         after last per-user session is destroyed. -->
 | 
			
		||||
    <chain id='user-unload'>
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- user-create. The modules in this chain are called when a user
 | 
			
		||||
         creation request is received (usually from c2s as part of a
 | 
			
		||||
         registration request). This initialises any per-user data. -->
 | 
			
		||||
    <chain id='user-create'>
 | 
			
		||||
      <module>active</module>           <!-- activate new users -->
 | 
			
		||||
      <module>template-roster</module>  <!-- populate roster from template -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- user-delete. The modules in this chain are called when a user
 | 
			
		||||
         deletion request is received (usually from c2s as part of a
 | 
			
		||||
         registration removal request). This deletes all data that may
 | 
			
		||||
         have been previously created for the user during normal
 | 
			
		||||
         operation. -->
 | 
			
		||||
    <chain id='user-delete'>
 | 
			
		||||
      <module>active</module>           <!-- deactivate users -->
 | 
			
		||||
      <module>announce</module>         <!-- delete motd data -->
 | 
			
		||||
      <module>offline</module>          <!-- bounce queued messages -->
 | 
			
		||||
      <module>privacy</module>          <!-- delete privacy lists -->
 | 
			
		||||
      <module>roster</module>           <!-- delete roster -->
 | 
			
		||||
      <module>vacation</module>         <!-- delete vacation settings -->
 | 
			
		||||
      <module>status</module>           <!-- delete status information -->
 | 
			
		||||
      <module>iq-last</module>          <!-- delete last logout time -->
 | 
			
		||||
      <module>iq-private</module>       <!-- delete private data -->
 | 
			
		||||
      <module>iq-vcard</module>         <!-- delete vcard -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- disco-extend. The modules in this chain are called when a disco
 | 
			
		||||
         info request is send to session manager. It implements XEP-0128
 | 
			
		||||
     Service Discovery Extensions mechanizm to add additional
 | 
			
		||||
     information to disco#info reply. -->
 | 
			
		||||
    <chain id='disco-extend'>
 | 
			
		||||
      <module>iq-version</module>       <!-- add XEP-xxxx Software Information -->
 | 
			
		||||
      <module>help</module>             <!-- add XEP-0157 Contact Addresses -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
  </modules>
 | 
			
		||||
 | 
			
		||||
  <!-- Service discovery configuration -->
 | 
			
		||||
  <discovery>
 | 
			
		||||
 | 
			
		||||
    <!-- Service identity. these specify the category, type and name of
 | 
			
		||||
         this service that will be included in discovery information
 | 
			
		||||
         responses. -->
 | 
			
		||||
    <identity>
 | 
			
		||||
      <category>server</category>       <!-- default: server -->
 | 
			
		||||
      <type>im</type>                   <!-- default: im -->
 | 
			
		||||
      <name>Jabber IM server</name>     <!-- default: Jabber IM server -->
 | 
			
		||||
    </identity>
 | 
			
		||||
 | 
			
		||||
    <!-- The discovery module can respond to jabber:iq:agents queries
 | 
			
		||||
         for compatibility with older clients. Comment this out to
 | 
			
		||||
         disable this. -->
 | 
			
		||||
    <agents/>
 | 
			
		||||
 | 
			
		||||
    <!-- Static service list.
 | 
			
		||||
 | 
			
		||||
         The discover module can discover disco-capable services
 | 
			
		||||
         automatically as they come online. Most XEP-0114 components,
 | 
			
		||||
         however, will not support discovery. In order to get them to
 | 
			
		||||
         appear in disco/agents lists returned to the client, they
 | 
			
		||||
         should be listed here.
 | 
			
		||||
 | 
			
		||||
         Note that if a disco-capable service with the same name as one
 | 
			
		||||
         listed below comes online, the information it provides will
 | 
			
		||||
         override the information listed below.
 | 
			
		||||
 | 
			
		||||
         The "category" and "type" attributes, and the list of supported
 | 
			
		||||
         namespaces are only used for agents compatibility. If you have
 | 
			
		||||
         disabled this above, you may omit them. -->
 | 
			
		||||
    <items>
 | 
			
		||||
 | 
			
		||||
      <!-- example entry for a user directory -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <item category='service' type='jud' jid='users.jabber.org' name='Jabber User Directory'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- example entry for a groupchat (conference) service -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <item category='conference' type='public' jid='conference.jabber.org' name='Text conferencing'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
    </items>
 | 
			
		||||
 | 
			
		||||
    <!-- Server information added to server discovery information
 | 
			
		||||
         in http://jabber.org/network/serverinfo jabber:x:data form. (XEP-0157)
 | 
			
		||||
 | 
			
		||||
         May contain many values per item -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <serverinfo>
 | 
			
		||||
      <admin-addresses>
 | 
			
		||||
        <value>mailto:xmpp@localhost.localdomain</value>
 | 
			
		||||
        <value>xmpp:admins@localhost.localdomain</value>
 | 
			
		||||
      </admin-addresses>
 | 
			
		||||
      <abuse-addresses>
 | 
			
		||||
        <value>mailto:abuse@localhost.localdomain</value>
 | 
			
		||||
        <value>xmpp:abuse@localhost.localdomain</value>
 | 
			
		||||
      </abuse-addresses>
 | 
			
		||||
      <feedback-addresses>
 | 
			
		||||
        <value>http://example.org/feedback.php</value>
 | 
			
		||||
      </feedback-addresses>
 | 
			
		||||
      <sales-addresses/>
 | 
			
		||||
      <security-addresses/>
 | 
			
		||||
      <support-addresses/>
 | 
			
		||||
    </serverinfo>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
  </discovery>
 | 
			
		||||
 | 
			
		||||
  <!-- User options -->
 | 
			
		||||
  <user>
 | 
			
		||||
    <!-- By default, users must explicitly created before they can start
 | 
			
		||||
         a session. The creation process is usually triggered by a c2s
 | 
			
		||||
         component in response to a client registering a new user.
 | 
			
		||||
 | 
			
		||||
         Enabling this option will make it so that user creation will be
 | 
			
		||||
         triggered the first time a non-existant user attempts to start
 | 
			
		||||
         a session. This is useful if you already have users in an
 | 
			
		||||
         external authentication database (eg LDAP) and you don't want
 | 
			
		||||
         them to have to register. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <auto-create/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Define maximum size in bytes of fields of vcards.
 | 
			
		||||
         There is a recommendation that the avatar picture SHOULD NOT
 | 
			
		||||
         be larger than 16 KiB. --> 
 | 
			
		||||
    <!--
 | 
			
		||||
    <vcard>
 | 
			
		||||
        <max-field-size>
 | 
			
		||||
            <default>16384</default>
 | 
			
		||||
            <avatar>16384</avatar>
 | 
			
		||||
        </max-field-size>
 | 
			
		||||
    </vcard>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Templates. If defined, the contents of these files will be
 | 
			
		||||
         stored in the users data store when they are created. -->
 | 
			
		||||
    <template>
 | 
			
		||||
      <!-- Uncomment <publish> if you wish to forcibly publish
 | 
			
		||||
           roster template from ldap on each user login -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <publish>
 | 
			
		||||
      -->
 | 
			
		||||
        <!-- Key used for fetching published roster items.
 | 
			
		||||
             Only one might be set at a time.
 | 
			
		||||
             If not set, all items are fetched. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <fetch-key>
 | 
			
		||||
          <domain/>
 | 
			
		||||
          <user/>
 | 
			
		||||
          <fixed>grouping-key</fixed>
 | 
			
		||||
        </fetch-key>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- If <check-remove-domain> given, then published contact is checked
 | 
			
		||||
             against sm user database and if user is unknown to sm, contact
 | 
			
		||||
             will be deleted from user's roster (if it is in roster).
 | 
			
		||||
			 If no domain set (tag empty) all contacts are checked. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <check-remove-domain>jabber.example.com</check-remove-domain>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- Alternatively if <force-create-contacts/> is not commented,
 | 
			
		||||
		     published contact is added to sm user database
 | 
			
		||||
			 and user set known to sm, so it won't auto-unsubscribe
 | 
			
		||||
			 on connection established -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <force-create-contacts/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- Keep cache of "active" database specified number of seconds.
 | 
			
		||||
             This will significantly speed up publishing of roster.
 | 
			
		||||
             If unspecified or 0, no cache is used. -->
 | 
			
		||||
        <active-cache-ttl>60</active-cache-ttl>
 | 
			
		||||
        <!-- If <fix-subscriptions/> is not commented, set "to" and "from" subscriptions of
 | 
			
		||||
             user's contacts to subscriptions of corresponding published
 | 
			
		||||
             contacts. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <fix-subscriptions/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- If <override-names/> is uncommented, then displayed names of
 | 
			
		||||
             contacts in user's roster will be updated accordingly to
 | 
			
		||||
             published roster (if they differ). If commented, then user can
 | 
			
		||||
             rename contacts in roster -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <override-names/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- when mapped-groups is on (<map-groups/> is uncommented), the actual
 | 
			
		||||
             group names for published contacts are read from
 | 
			
		||||
             published-roster-groups storage type, which may be set
 | 
			
		||||
             to ldapvcard driver. The key for searching is published user's
 | 
			
		||||
             group, and returned value is used as group name. So you can assign
 | 
			
		||||
             textual group IDs to users rather then group names.
 | 
			
		||||
             group-cache-ttl keeps cache of mapping from group id to name for
 | 
			
		||||
             specified number of seconds. If unspecified or 0, no cache is used.
 | 
			
		||||
             -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <mapped-groups>
 | 
			
		||||
          <map-groups/>
 | 
			
		||||
          <group-cache-ttl>120</group-cache-ttl>
 | 
			
		||||
        </mapped-groups>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- If <force-groups> is commented out, published roster's contact
 | 
			
		||||
             added to user's roster only when user does not have this contact.
 | 
			
		||||
 | 
			
		||||
             If <force-groups> is uncommented, then these checks are performed
 | 
			
		||||
             against each roster item already in user's roster:
 | 
			
		||||
	       If roster item already present in user's roster in
 | 
			
		||||
	       group of same name, no changes are made with this group (note
 | 
			
		||||
               that contact may be in more than one group).
 | 
			
		||||
	       If <prefix> or <suffix> are given, then contact removed
 | 
			
		||||
	       from any matching groups.
 | 
			
		||||
               After that, contact is added to group from published roster.
 | 
			
		||||
 | 
			
		||||
             In other words, all groups of updated contact, that match prefix
 | 
			
		||||
             or suffix, are replaced with group of published contact.
 | 
			
		||||
             This is done because there is no way to determine that group was
 | 
			
		||||
             published or greated by user. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <force-groups>
 | 
			
		||||
          <prefix>MyOrg.</prefix>
 | 
			
		||||
          <suffix>(MyOrg)</suffix>
 | 
			
		||||
        </force-groups>
 | 
			
		||||
        -->
 | 
			
		||||
      <!--
 | 
			
		||||
      </publish>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- If defined, the contents of these files will be
 | 
			
		||||
           stored in the users data store when they are created. -->
 | 
			
		||||
      <!-- If you defined publish, you should comment-out <roster> -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <roster>/etc/jabber/templates/roster.xml</roster>
 | 
			
		||||
      -->
 | 
			
		||||
    </template>
 | 
			
		||||
  </user>
 | 
			
		||||
 | 
			
		||||
  <!-- Advanced Message Processing module configuration -->
 | 
			
		||||
  <amp>
 | 
			
		||||
    <!-- You can disable some actions -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <disableactions>
 | 
			
		||||
      <drop/>
 | 
			
		||||
      <error/>
 | 
			
		||||
      <alert/>
 | 
			
		||||
      <notify/>
 | 
			
		||||
    </disableactions>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- You can disable some conditions -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <disableconditions>
 | 
			
		||||
      <expireat/>
 | 
			
		||||
      <matchresource/>
 | 
			
		||||
      <deliver/>
 | 
			
		||||
    </disableconditions>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- You need to enable this if your server has offline storage disabled -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <offlinestoragedisabled/>
 | 
			
		||||
    -->
 | 
			
		||||
  </amp>
 | 
			
		||||
 | 
			
		||||
  <!-- Offline module configuration -->
 | 
			
		||||
  <offline>
 | 
			
		||||
    <!-- Do not store messages in offline store -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <dropmessages/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Store headline messages in offline store -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <storeheadlines/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Do not store subscription requests in offline store -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <dropsubscriptions/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Offline storage message quota.
 | 
			
		||||
         Specifies how many messages will be stored in user offline store -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <userquota>500</userquota>
 | 
			
		||||
    -->
 | 
			
		||||
  </offline>
 | 
			
		||||
 | 
			
		||||
  <!-- roster module configuration -->
 | 
			
		||||
  <roster>
 | 
			
		||||
    <!-- maximum items per user roster -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <maxitems>100</maxitems>
 | 
			
		||||
    -->
 | 
			
		||||
  </roster>
 | 
			
		||||
 | 
			
		||||
  <!-- status module configuration -->
 | 
			
		||||
  <status>
 | 
			
		||||
    <!-- presence service resource
 | 
			
		||||
         disabled when commented out -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <resource>webstatus</resource>
 | 
			
		||||
    -->
 | 
			
		||||
  </status>
 | 
			
		||||
 | 
			
		||||
</sm>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
@ -1,811 +0,0 @@
 | 
			
		||||
<!-- Session manager configuration -->
 | 
			
		||||
<sm>
 | 
			
		||||
  <!-- Our ID on the network (default: sm) -->
 | 
			
		||||
  <id>sm</id>
 | 
			
		||||
 | 
			
		||||
  <!-- The process ID file. Comment this out if you don't need to know
 | 
			
		||||
       the process ID from outside the process (eg for control scripts) -->
 | 
			
		||||
  <pidfile>/var/run/jabber/${id}.pid</pidfile>
 | 
			
		||||
 | 
			
		||||
  <!-- Router connection configuration -->
 | 
			
		||||
  <router>
 | 
			
		||||
    <!-- IP/port the router is waiting for connections on -->
 | 
			
		||||
    <ip>127.0.0.1</ip>            <!-- default: 127.0.0.1 -->
 | 
			
		||||
    <port>5347</port>             <!-- default: 5347 -->
 | 
			
		||||
 | 
			
		||||
    <!-- Username/password to authenticate as -->
 | 
			
		||||
    <user>jabberd</user>          <!-- default: jabberd -->
 | 
			
		||||
    <pass>secret</pass>           <!-- default: secret -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key to use when
 | 
			
		||||
         setting up an encrypted channel with the router. From
 | 
			
		||||
         SSL_CTX_use_certificate_chain_file(3): "The certificates must be
 | 
			
		||||
         in PEM format and must be sorted starting with the subject's
 | 
			
		||||
         certificate (actual client or server certificate), followed
 | 
			
		||||
         by intermediate CA certificates if applicable, and ending
 | 
			
		||||
         at the highest level (root) CA" (the latter one being optional).
 | 
			
		||||
         If this is commented out, or the file can't be read, no attempt
 | 
			
		||||
         will be made to establish an encrypted channel with the router. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Router connection retry -->
 | 
			
		||||
    <retry>
 | 
			
		||||
      <!-- If the connection to the router can't be established at
 | 
			
		||||
           startup, we should try again this many times before exiting.
 | 
			
		||||
           Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <init>3</init>
 | 
			
		||||
 | 
			
		||||
      <!-- If we lost the connection to the router during normal
 | 
			
		||||
           operation (ie we've successfully connected to the router in
 | 
			
		||||
           the past), we should try to reconnect this many times before
 | 
			
		||||
           exiting. Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <lost>3</lost>
 | 
			
		||||
 | 
			
		||||
      <!-- Sleep for this many seconds before trying attempting a
 | 
			
		||||
           reconnect. [default: 2] -->
 | 
			
		||||
      <sleep>2</sleep>
 | 
			
		||||
    </retry>
 | 
			
		||||
  </router>
 | 
			
		||||
 | 
			
		||||
  <!-- Log configuration - type is "syslog", "file" or "stdout" -->
 | 
			
		||||
  <log type='syslog'>
 | 
			
		||||
    <!-- If logging to syslog, this is the log ident -->
 | 
			
		||||
    <ident>jabberd/sm</ident>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to syslog, this is the log facility
 | 
			
		||||
         (local0 - local7)                        [default: local3] -->
 | 
			
		||||
    <facility>local3</facility>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to file, this is the filename of the logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <file>/var/log/jabber/sm.log</file>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Filename of the debug logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <debug>/var/log/jabber/debug-${id}.log</debug>
 | 
			
		||||
    -->
 | 
			
		||||
  </log>
 | 
			
		||||
 | 
			
		||||
  <!-- Local network configuration -->
 | 
			
		||||
  <local>
 | 
			
		||||
    <!-- Who we identify ourselves as.
 | 
			
		||||
         Users will have this as the domain part of their JID.
 | 
			
		||||
         If you want your server to be accessible from other
 | 
			
		||||
         Jabber servers, this IDs must be FQDN resolvable by DNSes.
 | 
			
		||||
         If not set, the SM id is used. -->
 | 
			
		||||
    <id>localhost.localdomain</id>
 | 
			
		||||
    <!--
 | 
			
		||||
    <id>vhost1.localdomain</id>
 | 
			
		||||
    <id>vhost2.localdomain</id>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
  </local>
 | 
			
		||||
 | 
			
		||||
  <!-- Storage database configuration -->
 | 
			
		||||
  <storage>
 | 
			
		||||
    <!-- Dynamic storage modules path -->
 | 
			
		||||
    <path>/usr/lib64/jabberd</path>
 | 
			
		||||
 | 
			
		||||
    <!-- By default, we use the SQLite driver for all storage -->
 | 
			
		||||
    <driver>db</driver>
 | 
			
		||||
 | 
			
		||||
    <!-- Its also possible to explicitly list alternate drivers for
 | 
			
		||||
         specific data types. -->
 | 
			
		||||
 | 
			
		||||
    <!-- Store vcards in a ldapvcard database instead -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <driver type='vcard'>ldapvcard</driver>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Only ldapvcard driver implements published-roster: -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <driver type='published-roster'>ldapvcard</driver>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Use ldapvcard driver for published-roster-groups.
 | 
			
		||||
         See description in section sm/user/template/mapped-groups.
 | 
			
		||||
         Used by mod_published_roster.
 | 
			
		||||
         See ldapvcard section for options.
 | 
			
		||||
         When resolving group id to group name, it searches for
 | 
			
		||||
         groupsobjectclass objects at groupsdn base using group id
 | 
			
		||||
         (in groupsidattr) as key and returns the first value of 
 | 
			
		||||
         groupattr of first found entry.
 | 
			
		||||
         E.g.. in general case, if group id is "some-dep", and groupsdn
 | 
			
		||||
         is o=org, and class is jabberGroup, it searches for
 | 
			
		||||
         (&(objectClass=jabberGroup)(cn=some-dep)) and returns value of
 | 
			
		||||
         jabberPublishedItem attribute, which may contain textual description.
 | 
			
		||||
         -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <driver type='published-roster-groups'>ldapvcard</driver>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Rate limiting -->
 | 
			
		||||
    <limits>
 | 
			
		||||
      <!-- Maximum queries per second - if more than X queries are sent in Y
 | 
			
		||||
           seconds, connection is throttled for Z seconds. The format
 | 
			
		||||
           is:
 | 
			
		||||
 | 
			
		||||
             <queries seconds='Y' throttle='Z'>X</bytes>
 | 
			
		||||
 | 
			
		||||
           Default Y is 5, default Z is 60. set X to 0 to disable. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <queries>3</queries>
 | 
			
		||||
      -->
 | 
			
		||||
    </limits>
 | 
			
		||||
 | 
			
		||||
    <!-- SQLite driver configuration -->
 | 
			
		||||
    <sqlite>
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>/var/spool/jabber/db/sqlite.db</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Transaction support. If this is commented out, transactions
 | 
			
		||||
           will be disabled. This might make database accesses faster,
 | 
			
		||||
           but data may be lost if jabberd crashes. -->
 | 
			
		||||
      <transactions/>
 | 
			
		||||
 | 
			
		||||
      <!-- SQLite busy-timeout in milliseconds. -->
 | 
			
		||||
      <busy-timeout>2000</busy-timeout>
 | 
			
		||||
    </sqlite>
 | 
			
		||||
 | 
			
		||||
    <!-- MySQL driver configuration -->
 | 
			
		||||
    <mysql>
 | 
			
		||||
      <!-- Database server host and port -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>3306</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
 | 
			
		||||
      <!-- Transaction support. If this is commented out, transactions
 | 
			
		||||
           will be disabled. This might make database accesses faster,
 | 
			
		||||
           but data may be lost if jabberd crashes.
 | 
			
		||||
 | 
			
		||||
           This will need to be disabled if you are using a MySQL
 | 
			
		||||
           earlier than v3.23.xx, as transaction support did not appear
 | 
			
		||||
           until this version. -->
 | 
			
		||||
      <transactions/>
 | 
			
		||||
    </mysql>
 | 
			
		||||
 | 
			
		||||
    <!-- PostgreSQL driver configuration -->
 | 
			
		||||
    <pgsql>
 | 
			
		||||
      <!-- PostgreSQL connection info.
 | 
			
		||||
           For the rest of the options see
 | 
			
		||||
           http://www.postgresql.org/docs/8.0/interactive/libpq.html -->
 | 
			
		||||
      <conninfo>dbname=jabberd2 user=jabberd2 password=secret</conninfo>
 | 
			
		||||
 | 
			
		||||
      <!-- Alternatively you may set connection settings separately.
 | 
			
		||||
           These are used only in absence of 'conninfo' -->
 | 
			
		||||
 | 
			
		||||
      <!-- Database server host and port -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>5432</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database schema -->
 | 
			
		||||
      <schema>public</schema>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
 | 
			
		||||
      <!-- Transaction support. If this is commented out, transactions
 | 
			
		||||
           will be disabled. This might make database accesses faster,
 | 
			
		||||
           but data may be lost if jabberd crashes. -->
 | 
			
		||||
      <transactions/>
 | 
			
		||||
    </pgsql>
 | 
			
		||||
 | 
			
		||||
    <!-- Berkeley DB driver configuration.  This does not support roster
 | 
			
		||||
         maxitems or offline userquota (because the mod_roster
 | 
			
		||||
         implementation does not implement the 'count' callback). -->
 | 
			
		||||
    <db>
 | 
			
		||||
      <!-- Directory to store database files under -->
 | 
			
		||||
      <path>/var/spool/jabber/db</path>
 | 
			
		||||
 | 
			
		||||
      <!-- Synchronize the database to disk after each write. If you
 | 
			
		||||
           disable this, database accesses may be faster, but data may
 | 
			
		||||
           be lost if jabberd crashes. -->
 | 
			
		||||
      <sync/>
 | 
			
		||||
    </db>
 | 
			
		||||
 | 
			
		||||
    <!-- Oracle driver configuration -->
 | 
			
		||||
    <oracle>
 | 
			
		||||
      <!-- Database server host and port. -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>1521</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
    </oracle>
 | 
			
		||||
 | 
			
		||||
    <!-- Filesystem driver configuration -->
 | 
			
		||||
    <fs>
 | 
			
		||||
      <!-- Directory to store database files under. -->
 | 
			
		||||
      <path>/var/spool/jabber/fs</path>
 | 
			
		||||
    </fs>
 | 
			
		||||
 | 
			
		||||
    <!-- LDAPVCARD driver configuration -->
 | 
			
		||||
    <ldapvcard>
 | 
			
		||||
      <!-- LDAP server host and port (default: 389) -->
 | 
			
		||||
      <uri>ldap://localhost/ ldaps://ldap.example.com/</uri>
 | 
			
		||||
      
 | 
			
		||||
      <!-- DN to bind as for searches. If unspecified, the searches
 | 
			
		||||
           will be done anonymously. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <binddn>cn=Directory Manager</binddn>
 | 
			
		||||
      <bindpw>secret</bindpw>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- see authreg.ldapfull in c2s.xml for description. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <type>ad</type>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- LDAP attribute that holds the user ID (default: uid) -->
 | 
			
		||||
      <uidattr>uid</uidattr>
 | 
			
		||||
      <objectclass>posixAccount</objectclass>
 | 
			
		||||
      <pwattr>userPassword</pwattr>
 | 
			
		||||
      <!-- if you use included jabberd.schema use this:
 | 
			
		||||
      <uidattr>jid</uidattr>
 | 
			
		||||
      <objectclass>jabberUser</objectclass>
 | 
			
		||||
      <pwattr>jabberPassword</pwattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Realm to append to uidattr. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <realm>example.org</realm>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- see authreg.ldapfull in c2s.xml for description. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <validattr>valid</validattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- base DN of the tree. You should specify a DN for each
 | 
			
		||||
           authentication realm declared in the <local/> section above,
 | 
			
		||||
           by using the realm attribute. -->
 | 
			
		||||
      <basedn>o=Example Corp.</basedn>
 | 
			
		||||
 | 
			
		||||
      <!-- attribute that holds published group name or id,
 | 
			
		||||
           jabberPublishedGroup if not set -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <groupattr>jabberPublishedGroup</groupattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- this option is helpful if your schema does not have designated
 | 
			
		||||
	       attribute that holds jabber group name
 | 
			
		||||
		   you can use any attribute in <groupattr> i.e. 'distinguishedName'
 | 
			
		||||
		   and then extract a part of it using Regular Expression;
 | 
			
		||||
           first matching () group will be used -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <groupattr_regex>OU=([^,]*),</groupattr_regex>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- boolean attribute that tells whether or not to publish this user
 | 
			
		||||
           jabberPublishedItem by default -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <publishedattr>jabberPublishedItem</publishedattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- If value specified, then keep cache of "published-roster"
 | 
			
		||||
           database, which is used for all users. Cache is renewed when kept more seconds than value
 | 
			
		||||
           specified. Setting this value increases perfomance of publishing
 | 
			
		||||
           roster. If not specified, then we don't keep cache. -->
 | 
			
		||||
      <publishedcachettl>60</publishedcachettl>
 | 
			
		||||
 | 
			
		||||
      <mapped-groups>
 | 
			
		||||
        <!-- If turned on, then mapping of group ids to names with
 | 
			
		||||
             LDAP will works. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <map-groups/>
 | 
			
		||||
        -->
 | 
			
		||||
 | 
			
		||||
        <!-- base for searches for group id to group name mappings -->
 | 
			
		||||
        <basedn>ou=jabbergroups, o=Example Corp.</basedn>
 | 
			
		||||
 | 
			
		||||
        <!-- what objectclass to search, jabberGroup by default -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <objectclass>jabberGroup</objectclass>
 | 
			
		||||
        -->
 | 
			
		||||
 | 
			
		||||
        <!-- what attribute to search, cn by default -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <idattr>cn</idattr>
 | 
			
		||||
        -->
 | 
			
		||||
 | 
			
		||||
        <!-- attribute with text group name, description by default -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <nameattr>description</nameattr>
 | 
			
		||||
        -->
 | 
			
		||||
      </mapped-groups>
 | 
			
		||||
    </ldapvcard>
 | 
			
		||||
  </storage>
 | 
			
		||||
 | 
			
		||||
  <!-- Access control information -->
 | 
			
		||||
  <aci>
 | 
			
		||||
    <!-- The JIDs listed here will get access to all restricted
 | 
			
		||||
         functions, regardless of restrictions further down -->
 | 
			
		||||
    <acl type='all'>
 | 
			
		||||
      <jid>admin@localhost.localdomain</jid>
 | 
			
		||||
    </acl>
 | 
			
		||||
 | 
			
		||||
    <!-- These JIDs can send broadcast messages (announce, motd) -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='broadcast'>
 | 
			
		||||
      <jid>nocstaff1@localhost.localdomain</jid>
 | 
			
		||||
      <jid>nocstaff2@localhost.localdomain</jid>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- These JIDs will receive messages addressed to the sm itself
 | 
			
		||||
         (help requestes and such) -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='messages'>
 | 
			
		||||
      <jid>support@localhost.localdomain</jid>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- These JIDs can discover active user/session information -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='disco'>
 | 
			
		||||
      <jid>webstatus@localhost.localdomain</jid>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
  </aci>
 | 
			
		||||
 | 
			
		||||
  <!-- Module chain configuration
 | 
			
		||||
 | 
			
		||||
       Modules listed in a chain are called in the order specified at
 | 
			
		||||
       the appropriate time for that chain (assuming that the module
 | 
			
		||||
       knows how to work with that chain; otherwise it simply ignores
 | 
			
		||||
       it).
 | 
			
		||||
 | 
			
		||||
       Removing a module from these lists will stop the module being
 | 
			
		||||
       called, even if it's compiled into the server.
 | 
			
		||||
 | 
			
		||||
       Serveral modules have a presence in more than one chain. It is
 | 
			
		||||
       possible to remove a module from one chain but not others, but
 | 
			
		||||
       this may cause strange behaviour. Make sure you know what you're
 | 
			
		||||
       doing. -->
 | 
			
		||||
  <modules>
 | 
			
		||||
    <!-- Dynamic sm modules path -->
 | 
			
		||||
    <path>/usr/lib64/jabberd</path>
 | 
			
		||||
 | 
			
		||||
    <!-- sess-start. The modules in this chain are called when a session
 | 
			
		||||
         is first started (usually on request by c2s as part of the
 | 
			
		||||
         authentication process). This is normally used to load
 | 
			
		||||
         per-session data. -->
 | 
			
		||||
    <chain id='sess-start'>
 | 
			
		||||
      <module>status</module>           <!-- record status information -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- sess-end. The modules in this chain are called just before a
 | 
			
		||||
         session is destroyed (after the client has disconnected). -->
 | 
			
		||||
    <chain id='sess-end'>
 | 
			
		||||
      <module>status</module>           <!-- update status information -->
 | 
			
		||||
      <module>iq-last</module>          <!-- update logout time -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- in-sess. The modules in this chain are called when a packet
 | 
			
		||||
         arrives from an active user session. Note that this chain is
 | 
			
		||||
         also responsible for delivering packets to their destinations -
 | 
			
		||||
         this is usually handled by the "deliver" module. -->
 | 
			
		||||
    <chain id='in-sess'>
 | 
			
		||||
      <module>validate</module>         <!-- validate packet type -->
 | 
			
		||||
      <module>status</module>           <!-- update status information -->
 | 
			
		||||
      <module>privacy</module>          <!-- manage privacy lists -->
 | 
			
		||||
      <module>roster</module>           <!-- handle roster get/sets and s10ns -->
 | 
			
		||||
      <module>vacation</module>         <!-- manage vacation settings -->
 | 
			
		||||
      <!-- <module>pep</module>         <!- - personal eventing -->
 | 
			
		||||
      <module>iq-vcard</module>         <!-- store and retrieve the user's vcard -->
 | 
			
		||||
      <module>iq-ping</module>          <!-- return the server ping -->
 | 
			
		||||
      <module>iq-private</module>       <!-- manage the user's private data store -->
 | 
			
		||||
      <module>disco</module>            <!-- respond to agents requests from sessions -->
 | 
			
		||||
      <module>amp</module>              <!-- advanced message processing -->
 | 
			
		||||
      <module>offline</module>          <!-- if we're coming online for the first time, deliver queued messages -->
 | 
			
		||||
      <module>announce</module>         <!-- deliver motd -->
 | 
			
		||||
      <module>presence</module>         <!-- process and distribute presence updates -->
 | 
			
		||||
      <module>deliver</module>          <!-- deliver packets with full jids directly -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- out-sess. The modules in this chain are called just before a
 | 
			
		||||
         packet is delivered to an active user session. -->
 | 
			
		||||
    <chain id='out-sess'>
 | 
			
		||||
      <!-- <module>pep</module>         <!- - personal eventing -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- in-router. The modules in this chain are called when a packet
 | 
			
		||||
         arrives from the router (ie another component or s2s), but
 | 
			
		||||
         before any processing is done. This is a good place to filter
 | 
			
		||||
         incoming packets. -->
 | 
			
		||||
    <chain id='in-router'>
 | 
			
		||||
      <module>session</module>          <!-- perform session actions as required by c2s -->
 | 
			
		||||
      <module>validate</module>         <!-- validate packet type -->
 | 
			
		||||
      <module>presence</module>         <!-- drop incoming presence if user not online -->
 | 
			
		||||
      <module>privacy</module>          <!-- filter incoming packets based on privacy rules -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- out-router. The modules in this chain are called just before a
 | 
			
		||||
         packet is delivered to the router (destined for another
 | 
			
		||||
         component or s2s). This is a good place to filter outgoing
 | 
			
		||||
         packets. -->
 | 
			
		||||
    <chain id='out-router'>
 | 
			
		||||
      <module>privacy</module>          <!-- filter outgoing packets based on privacy rules -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- pkt-sm. The modules in this chain are called when a packet
 | 
			
		||||
         arrives that is addressed to the session manager itself (ie the
 | 
			
		||||
         to JID has no node part). This is normally used to provide
 | 
			
		||||
         session-manager-wide services (like service discovery). -->
 | 
			
		||||
    <chain id='pkt-sm'>
 | 
			
		||||
      <module>iq-last</module>          <!-- return the server uptime -->
 | 
			
		||||
      <module>iq-ping</module>          <!-- return the server ping -->
 | 
			
		||||
      <module>iq-time</module>          <!-- return the current server time -->
 | 
			
		||||
      <module>iq-version</module>       <!-- return the server name and version -->
 | 
			
		||||
      <module>amp</module>              <!-- advanced message processing -->
 | 
			
		||||
      <module>disco</module>            <!-- build the disco list; respond to disco queries -->
 | 
			
		||||
      <module>announce</module>         <!-- send broadcast messages (announce, motd, etc) -->
 | 
			
		||||
      <module>help</module>             <!-- resend sm messages to administrators -->
 | 
			
		||||
      <module>echo</module>             <!-- echo messages sent to /echo -->
 | 
			
		||||
      <module>status</module>           <!-- track status information -->
 | 
			
		||||
      <module>presence</module>         <!-- proces server presence subscriptions -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- pkt-user. The modules in this chain are called when a packet
 | 
			
		||||
         arrives that is address to a specific user. Note that this
 | 
			
		||||
         chain is also responsible for delivering packets to user
 | 
			
		||||
         sessions as appropriate - this is usually handled by the
 | 
			
		||||
         "deliver" module. -->
 | 
			
		||||
    <chain id='pkt-user'>
 | 
			
		||||
      <module>roster</module>           <!-- handle s10n responses -->
 | 
			
		||||
      <module>presence</module>         <!-- process and distribute incoming presence from external entities -->
 | 
			
		||||
      <module>iq-vcard</module>         <!-- grab user vcards -->
 | 
			
		||||
      <module>amp</module>              <!-- advanced message processing -->
 | 
			
		||||
      <module>deliver</module>          <!-- deliver the packet to an active session if we can -->
 | 
			
		||||
      <module>vacation</module>         <!-- send vacation messages -->
 | 
			
		||||
      <module>offline</module>          <!-- save messages and s10ns for later -->
 | 
			
		||||
      <module>iq-last</module>          <!-- return time since last logout -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- pkt-router. The modules in this chain are called when a
 | 
			
		||||
         special-purpose packet arrives from the router (eg domain
 | 
			
		||||
         advertisements). -->
 | 
			
		||||
    <chain id='pkt-router'>
 | 
			
		||||
      <module>session</module>          <!-- take sessions offline if their c2s disappears -->
 | 
			
		||||
      <module>disco</module>            <!-- query new components for service information -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- user-load. The modules in this chain are called to load
 | 
			
		||||
         per-user data. This will happen before a user can be used (ie
 | 
			
		||||
         before a session is created). -->
 | 
			
		||||
    <chain id='user-load'>
 | 
			
		||||
      <module>active</module>           <!-- get active status -->
 | 
			
		||||
      <module>roster</module>           <!-- load the roster and trust list -->
 | 
			
		||||
      <module>roster-publish</module>   <!-- load the published roster -->
 | 
			
		||||
      <module>privacy</module>          <!-- load privacy lists -->
 | 
			
		||||
      <module>vacation</module>         <!-- load vacation settings -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- user-unload. The modules in this chain are called right
 | 
			
		||||
         after last per-user session is destroyed. -->
 | 
			
		||||
    <chain id='user-unload'>
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- user-create. The modules in this chain are called when a user
 | 
			
		||||
         creation request is received (usually from c2s as part of a
 | 
			
		||||
         registration request). This initialises any per-user data. -->
 | 
			
		||||
    <chain id='user-create'>
 | 
			
		||||
      <module>active</module>           <!-- activate new users -->
 | 
			
		||||
      <module>template-roster</module>  <!-- populate roster from template -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- user-delete. The modules in this chain are called when a user
 | 
			
		||||
         deletion request is received (usually from c2s as part of a
 | 
			
		||||
         registration removal request). This deletes all data that may
 | 
			
		||||
         have been previously created for the user during normal
 | 
			
		||||
         operation. -->
 | 
			
		||||
    <chain id='user-delete'>
 | 
			
		||||
      <module>active</module>           <!-- deactivate users -->
 | 
			
		||||
      <module>announce</module>         <!-- delete motd data -->
 | 
			
		||||
      <module>offline</module>          <!-- bounce queued messages -->
 | 
			
		||||
      <module>privacy</module>          <!-- delete privacy lists -->
 | 
			
		||||
      <module>roster</module>           <!-- delete roster -->
 | 
			
		||||
      <module>vacation</module>         <!-- delete vacation settings -->
 | 
			
		||||
      <module>status</module>           <!-- delete status information -->
 | 
			
		||||
      <module>iq-last</module>          <!-- delete last logout time -->
 | 
			
		||||
      <module>iq-private</module>       <!-- delete private data -->
 | 
			
		||||
      <module>iq-vcard</module>         <!-- delete vcard -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- disco-extend. The modules in this chain are called when a disco
 | 
			
		||||
         info request is send to session manager. It implements XEP-0128
 | 
			
		||||
     Service Discovery Extensions mechanizm to add additional
 | 
			
		||||
     information to disco#info reply. -->
 | 
			
		||||
    <chain id='disco-extend'>
 | 
			
		||||
      <module>iq-version</module>       <!-- add XEP-xxxx Software Information -->
 | 
			
		||||
      <module>help</module>             <!-- add XEP-0157 Contact Addresses -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
  </modules>
 | 
			
		||||
 | 
			
		||||
  <!-- Service discovery configuration -->
 | 
			
		||||
  <discovery>
 | 
			
		||||
 | 
			
		||||
    <!-- Service identity. these specify the category, type and name of
 | 
			
		||||
         this service that will be included in discovery information
 | 
			
		||||
         responses. -->
 | 
			
		||||
    <identity>
 | 
			
		||||
      <category>server</category>       <!-- default: server -->
 | 
			
		||||
      <type>im</type>                   <!-- default: im -->
 | 
			
		||||
      <name>Jabber IM server</name>     <!-- default: Jabber IM server -->
 | 
			
		||||
    </identity>
 | 
			
		||||
 | 
			
		||||
    <!-- The discovery module can respond to jabber:iq:agents queries
 | 
			
		||||
         for compatibility with older clients. Comment this out to
 | 
			
		||||
         disable this. -->
 | 
			
		||||
    <agents/>
 | 
			
		||||
 | 
			
		||||
    <!-- Static service list.
 | 
			
		||||
 | 
			
		||||
         The discover module can discover disco-capable services
 | 
			
		||||
         automatically as they come online. Most XEP-0114 components,
 | 
			
		||||
         however, will not support discovery. In order to get them to
 | 
			
		||||
         appear in disco/agents lists returned to the client, they
 | 
			
		||||
         should be listed here.
 | 
			
		||||
 | 
			
		||||
         Note that if a disco-capable service with the same name as one
 | 
			
		||||
         listed below comes online, the information it provides will
 | 
			
		||||
         override the information listed below.
 | 
			
		||||
 | 
			
		||||
         The "category" and "type" attributes, and the list of supported
 | 
			
		||||
         namespaces are only used for agents compatibility. If you have
 | 
			
		||||
         disabled this above, you may omit them. -->
 | 
			
		||||
    <items>
 | 
			
		||||
 | 
			
		||||
      <!-- example entry for a user directory -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <item category='service' type='jud' jid='users.jabber.org' name='Jabber User Directory'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- example entry for a groupchat (conference) service -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <item category='conference' type='public' jid='conference.jabber.org' name='Text conferencing'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
    </items>
 | 
			
		||||
 | 
			
		||||
    <!-- Server information added to server discovery information
 | 
			
		||||
         in http://jabber.org/network/serverinfo jabber:x:data form. (XEP-0157)
 | 
			
		||||
 | 
			
		||||
         May contain many values per item -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <serverinfo>
 | 
			
		||||
      <admin-addresses>
 | 
			
		||||
        <value>mailto:xmpp@localhost.localdomain</value>
 | 
			
		||||
        <value>xmpp:admins@localhost.localdomain</value>
 | 
			
		||||
      </admin-addresses>
 | 
			
		||||
      <abuse-addresses>
 | 
			
		||||
        <value>mailto:abuse@localhost.localdomain</value>
 | 
			
		||||
        <value>xmpp:abuse@localhost.localdomain</value>
 | 
			
		||||
      </abuse-addresses>
 | 
			
		||||
      <feedback-addresses>
 | 
			
		||||
        <value>http://example.org/feedback.php</value>
 | 
			
		||||
      </feedback-addresses>
 | 
			
		||||
      <sales-addresses/>
 | 
			
		||||
      <security-addresses/>
 | 
			
		||||
      <support-addresses/>
 | 
			
		||||
    </serverinfo>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
  </discovery>
 | 
			
		||||
 | 
			
		||||
  <!-- User options -->
 | 
			
		||||
  <user>
 | 
			
		||||
    <!-- By default, users must explicitly created before they can start
 | 
			
		||||
         a session. The creation process is usually triggered by a c2s
 | 
			
		||||
         component in response to a client registering a new user.
 | 
			
		||||
 | 
			
		||||
         Enabling this option will make it so that user creation will be
 | 
			
		||||
         triggered the first time a non-existant user attempts to start
 | 
			
		||||
         a session. This is useful if you already have users in an
 | 
			
		||||
         external authentication database (eg LDAP) and you don't want
 | 
			
		||||
         them to have to register. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <auto-create/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Define maximum size in bytes of fields of vcards.
 | 
			
		||||
         There is a recommendation that the avatar picture SHOULD NOT
 | 
			
		||||
         be larger than 16 KiB. --> 
 | 
			
		||||
    <!--
 | 
			
		||||
    <vcard>
 | 
			
		||||
        <max-field-size>
 | 
			
		||||
            <default>16384</default>
 | 
			
		||||
            <avatar>16384</avatar>
 | 
			
		||||
        </max-field-size>
 | 
			
		||||
    </vcard>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Templates. If defined, the contents of these files will be
 | 
			
		||||
         stored in the users data store when they are created. -->
 | 
			
		||||
    <template>
 | 
			
		||||
      <!-- Uncomment <publish> if you wish to forcibly publish
 | 
			
		||||
           roster template from ldap on each user login -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <publish>
 | 
			
		||||
      -->
 | 
			
		||||
        <!-- Key used for fetching published roster items.
 | 
			
		||||
             Only one might be set at a time.
 | 
			
		||||
             If not set, all items are fetched. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <fetch-key>
 | 
			
		||||
          <domain/>
 | 
			
		||||
          <user/>
 | 
			
		||||
          <fixed>grouping-key</fixed>
 | 
			
		||||
        </fetch-key>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- If <check-remove-domain> given, then published contact is checked
 | 
			
		||||
             against sm user database and if user is unknown to sm, contact
 | 
			
		||||
             will be deleted from user's roster (if it is in roster).
 | 
			
		||||
			 If no domain set (tag empty) all contacts are checked. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <check-remove-domain>jabber.example.com</check-remove-domain>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- Alternatively if <force-create-contacts/> is not commented,
 | 
			
		||||
		     published contact is added to sm user database
 | 
			
		||||
			 and user set known to sm, so it won't auto-unsubscribe
 | 
			
		||||
			 on connection established -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <force-create-contacts/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- Keep cache of "active" database specified number of seconds.
 | 
			
		||||
             This will significantly speed up publishing of roster.
 | 
			
		||||
             If unspecified or 0, no cache is used. -->
 | 
			
		||||
        <active-cache-ttl>60</active-cache-ttl>
 | 
			
		||||
        <!-- If <fix-subscriptions/> is not commented, set "to" and "from" subscriptions of
 | 
			
		||||
             user's contacts to subscriptions of corresponding published
 | 
			
		||||
             contacts. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <fix-subscriptions/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- If <override-names/> is uncommented, then displayed names of
 | 
			
		||||
             contacts in user's roster will be updated accordingly to
 | 
			
		||||
             published roster (if they differ). If commented, then user can
 | 
			
		||||
             rename contacts in roster -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <override-names/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- when mapped-groups is on (<map-groups/> is uncommented), the actual
 | 
			
		||||
             group names for published contacts are read from
 | 
			
		||||
             published-roster-groups storage type, which may be set
 | 
			
		||||
             to ldapvcard driver. The key for searching is published user's
 | 
			
		||||
             group, and returned value is used as group name. So you can assign
 | 
			
		||||
             textual group IDs to users rather then group names.
 | 
			
		||||
             group-cache-ttl keeps cache of mapping from group id to name for
 | 
			
		||||
             specified number of seconds. If unspecified or 0, no cache is used.
 | 
			
		||||
             -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <mapped-groups>
 | 
			
		||||
          <map-groups/>
 | 
			
		||||
          <group-cache-ttl>120</group-cache-ttl>
 | 
			
		||||
        </mapped-groups>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- If <force-groups> is commented out, published roster's contact
 | 
			
		||||
             added to user's roster only when user does not have this contact.
 | 
			
		||||
 | 
			
		||||
             If <force-groups> is uncommented, then these checks are performed
 | 
			
		||||
             against each roster item already in user's roster:
 | 
			
		||||
	       If roster item already present in user's roster in
 | 
			
		||||
	       group of same name, no changes are made with this group (note
 | 
			
		||||
               that contact may be in more than one group).
 | 
			
		||||
	       If <prefix> or <suffix> are given, then contact removed
 | 
			
		||||
	       from any matching groups.
 | 
			
		||||
               After that, contact is added to group from published roster.
 | 
			
		||||
 | 
			
		||||
             In other words, all groups of updated contact, that match prefix
 | 
			
		||||
             or suffix, are replaced with group of published contact.
 | 
			
		||||
             This is done because there is no way to determine that group was
 | 
			
		||||
             published or greated by user. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <force-groups>
 | 
			
		||||
          <prefix>MyOrg.</prefix>
 | 
			
		||||
          <suffix>(MyOrg)</suffix>
 | 
			
		||||
        </force-groups>
 | 
			
		||||
        -->
 | 
			
		||||
      <!--
 | 
			
		||||
      </publish>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- If defined, the contents of these files will be
 | 
			
		||||
           stored in the users data store when they are created. -->
 | 
			
		||||
      <!-- If you defined publish, you should comment-out <roster> -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <roster>/etc/jabber/templates/roster.xml</roster>
 | 
			
		||||
      -->
 | 
			
		||||
    </template>
 | 
			
		||||
  </user>
 | 
			
		||||
 | 
			
		||||
  <!-- Advanced Message Processing module configuration -->
 | 
			
		||||
  <amp>
 | 
			
		||||
    <!-- You can disable some actions -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <disableactions>
 | 
			
		||||
      <drop/>
 | 
			
		||||
      <error/>
 | 
			
		||||
      <alert/>
 | 
			
		||||
      <notify/>
 | 
			
		||||
    </disableactions>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- You can disable some conditions -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <disableconditions>
 | 
			
		||||
      <expireat/>
 | 
			
		||||
      <matchresource/>
 | 
			
		||||
      <deliver/>
 | 
			
		||||
    </disableconditions>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- You need to enable this if your server has offline storage disabled -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <offlinestoragedisabled/>
 | 
			
		||||
    -->
 | 
			
		||||
  </amp>
 | 
			
		||||
 | 
			
		||||
  <!-- Offline module configuration -->
 | 
			
		||||
  <offline>
 | 
			
		||||
    <!-- Do not store messages in offline store -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <dropmessages/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Store headline messages in offline store -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <storeheadlines/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Do not store subscription requests in offline store -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <dropsubscriptions/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Offline storage message quota.
 | 
			
		||||
         Specifies how many messages will be stored in user offline store -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <userquota>500</userquota>
 | 
			
		||||
    -->
 | 
			
		||||
  </offline>
 | 
			
		||||
 | 
			
		||||
  <!-- roster module configuration -->
 | 
			
		||||
  <roster>
 | 
			
		||||
    <!-- maximum items per user roster -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <maxitems>100</maxitems>
 | 
			
		||||
    -->
 | 
			
		||||
  </roster>
 | 
			
		||||
 | 
			
		||||
  <!-- status module configuration -->
 | 
			
		||||
  <status>
 | 
			
		||||
    <!-- presence service resource
 | 
			
		||||
         disabled when commented out -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <resource>webstatus</resource>
 | 
			
		||||
    -->
 | 
			
		||||
  </status>
 | 
			
		||||
 | 
			
		||||
</sm>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
							
								
								
									
										701
									
								
								jabber/c2s.xml
									
									
									
									
									
								
							
							
						
						
									
										701
									
								
								jabber/c2s.xml
									
									
									
									
									
								
							@ -1,701 +0,0 @@
 | 
			
		||||
<!-- c2s configuration -->
 | 
			
		||||
<c2s>
 | 
			
		||||
  <!-- Our ID on the network (default: c2s) -->
 | 
			
		||||
  <id>c2s</id>
 | 
			
		||||
 | 
			
		||||
  <!-- The process ID file. Comment this out if you don't need to know
 | 
			
		||||
       the process ID from outside the process (eg for control scripts) -->
 | 
			
		||||
  <pidfile>/var/run/jabber/jabberd2-c2s.pid</pidfile>
 | 
			
		||||
 | 
			
		||||
  <!-- Router connection configuration -->
 | 
			
		||||
  <router>
 | 
			
		||||
    <!-- IP/port the router is waiting for connections on -->
 | 
			
		||||
    <ip>127.0.0.1</ip>            <!-- default: 127.0.0.1 -->
 | 
			
		||||
    <port>5347</port>             <!-- default: 5347 -->
 | 
			
		||||
 | 
			
		||||
    <!-- Username/password to authenticate as -->
 | 
			
		||||
    <user>jabberd</user>          <!-- default: jabberd -->
 | 
			
		||||
    <pass>secret</pass>           <!-- default: secret -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key to use when
 | 
			
		||||
         setting up an encrypted channel with the router. From
 | 
			
		||||
         SSL_CTX_use_certificate_chain_file(3): "The certificates must be
 | 
			
		||||
         in PEM format and must be sorted starting with the subject's
 | 
			
		||||
         certificate (actual client or server certificate), followed
 | 
			
		||||
         by intermediate CA certificates if applicable, and ending
 | 
			
		||||
         at the highest level (root) CA" (the latter one being optional).
 | 
			
		||||
         If this is commented out, or the file can't be read, no attempt
 | 
			
		||||
         will be made to establish an encrypted channel with the router. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Router connection retry -->
 | 
			
		||||
    <retry>
 | 
			
		||||
      <!-- If the connection to the router can't be established at
 | 
			
		||||
           startup, we should try again this many times before exiting.
 | 
			
		||||
           Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <init>3</init>
 | 
			
		||||
 | 
			
		||||
      <!-- If we lost the connection to the router during normal
 | 
			
		||||
           operation (ie we've successfully connected to the router in
 | 
			
		||||
           the past), we should try to reconnect this many times before
 | 
			
		||||
           exiting. Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <lost>3</lost>
 | 
			
		||||
 | 
			
		||||
      <!-- Sleep for this many seconds before trying attempting a
 | 
			
		||||
           reconnect. [default: 2] -->
 | 
			
		||||
      <sleep>2</sleep>
 | 
			
		||||
    </retry>
 | 
			
		||||
  </router>
 | 
			
		||||
 | 
			
		||||
  <!-- Log configuration - type is "syslog", "file" or "stdout" -->
 | 
			
		||||
  <log type='syslog'>
 | 
			
		||||
    <!-- If logging to syslog, this is the log ident -->
 | 
			
		||||
    <ident>jabberd/c2s</ident>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to syslog, this is the log facility
 | 
			
		||||
         (local0 - local7)                        [default: local3] -->
 | 
			
		||||
    <facility>local3</facility>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to file, this is the filename of the logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <file>/var/log/jabber/c2s.log</file>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Filename of the debug logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <debug>/var/log/jabber/debug-${id}.log</debug>
 | 
			
		||||
    -->
 | 
			
		||||
  </log>
 | 
			
		||||
 | 
			
		||||
  <!-- Local network configuration -->
 | 
			
		||||
  <local>
 | 
			
		||||
    <!-- Who we identify ourselves as. This should correspond to the
 | 
			
		||||
         ID (host) that the session manager thinks it is. You can
 | 
			
		||||
         specify more than one to support virtual hosts, as long as you
 | 
			
		||||
         have additional session manager instances on the network to
 | 
			
		||||
         handle those hosts.
 | 
			
		||||
 | 
			
		||||
         You may leave the content of the <id/> empty to setup default
 | 
			
		||||
         virtual host setup, that will be used for all present but not
 | 
			
		||||
         configured otherwise SM domains.
 | 
			
		||||
 | 
			
		||||
         realm
 | 
			
		||||
         attribute specifies the auth/reg or SASL authentication realm
 | 
			
		||||
         for the host. If the attribute is not specified, the realm will
 | 
			
		||||
         be selected by the SASL mechanism, or will be the same as the ID
 | 
			
		||||
         itself. Be aware that users are assigned to a realm, not a host,
 | 
			
		||||
         so two hosts in the same realm will have the same users. If no
 | 
			
		||||
         realm is specified, it will be set to be the same as the ID.
 | 
			
		||||
         If empty "" realm is specified, the PAM backend wil authenticate
 | 
			
		||||
         using plain usernames, not JIDs.
 | 
			
		||||
 | 
			
		||||
         pemfile
 | 
			
		||||
         attribute specifies the file containing a SSL certificate and
 | 
			
		||||
         private key for client connections. If this is non existant,
 | 
			
		||||
         clients will not be offered the STARTTLS stream extension
 | 
			
		||||
         From SSL_CTX_use_certificate_chain_file(3):
 | 
			
		||||
         "The certificates must be in PEM format and must be sorted
 | 
			
		||||
         starting with the subject's certificate (actual client or server
 | 
			
		||||
         certificate), followed by intermediate CA certificates if
 | 
			
		||||
         applicable, and ending at the highest level (root) CA"
 | 
			
		||||
         (the latter one being optional).
 | 
			
		||||
 | 
			
		||||
         verify-mode
 | 
			
		||||
         SSL verify mode - see SSL_CTX_set_verify(3), mode parameter.
 | 
			
		||||
         Sum of the following options:
 | 
			
		||||
         SSL_VERIFY_NONE                 0x00
 | 
			
		||||
		 SSL_VERIFY_PEER                 0x01
 | 
			
		||||
		 SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02
 | 
			
		||||
		 SSL_VERIFY_CLIENT_ONCE          0x04
 | 
			
		||||
		 Use 7 to require all clients to present _valid_ certificates.
 | 
			
		||||
 | 
			
		||||
     
 | 
			
		||||
         cachain
 | 
			
		||||
         SSL CA chain. Used to verify client certificates. 
 | 
			
		||||
         CA names published to client upon connection.
 | 
			
		||||
          
 | 
			
		||||
         require-starttls
 | 
			
		||||
         If this attribute is set to any value, clients must do STARTTLS
 | 
			
		||||
         before they can authenticate. Until the stream is encrypted,
 | 
			
		||||
         all packets will be dropped.
 | 
			
		||||
 | 
			
		||||
         register-enable
 | 
			
		||||
         Remove this attribute to disable account registrations.
 | 
			
		||||
 | 
			
		||||
         instructions
 | 
			
		||||
         Human-readable instructions to be returned to client when
 | 
			
		||||
         registration is requested.
 | 
			
		||||
 | 
			
		||||
         register-oob
 | 
			
		||||
         URL to be attached as an alternative, out-of-band registration
 | 
			
		||||
         method. Usually web-based http:// URL.
 | 
			
		||||
 | 
			
		||||
         password-change
 | 
			
		||||
         Password change only. When registration is disabled, it may
 | 
			
		||||
         still be useful to allow clients to change their password. If
 | 
			
		||||
         you want this, add this attribute with any value, when you need
 | 
			
		||||
         registration disabled.
 | 
			
		||||
          -->
 | 
			
		||||
    <id register-enable='mu'>localhost.localdomain</id>
 | 
			
		||||
    <!-- or
 | 
			
		||||
    <id realm='company.int'
 | 
			
		||||
        pemfile='/etc/jabber/server.pem'
 | 
			
		||||
        verify-mode='7'
 | 
			
		||||
        cachain='/etc/jabber/client_ca_certs.pem'
 | 
			
		||||
        require-starttls='mu'
 | 
			
		||||
        register-enable='mu'
 | 
			
		||||
        instructions='Enter a username and password to register with this server.'
 | 
			
		||||
        register-oob='http://example.org/register'
 | 
			
		||||
        password-change='mu'
 | 
			
		||||
    >example.net</id> -->
 | 
			
		||||
    <!-- or the default host
 | 
			
		||||
    <id password-change='mu' /> -->
 | 
			
		||||
 | 
			
		||||
    <!-- IP address to bind to (default: 0.0.0.0) -->
 | 
			
		||||
    <ip>0.0.0.0</ip>
 | 
			
		||||
 | 
			
		||||
    <!-- Port to bind to, or 0 to disable unencrypted access to the
 | 
			
		||||
         server (default: 5222) -->
 | 
			
		||||
    <port>5222</port>
 | 
			
		||||
 | 
			
		||||
    <!-- Older versions of jabberd support encrypted client connections
 | 
			
		||||
         via an additional listening socket on port 5223. If you want
 | 
			
		||||
         this (required to allow pre-STARTTLS clients to do SSL),
 | 
			
		||||
         uncomment this -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <ssl-port>5223</ssl-port>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key for client
 | 
			
		||||
         connections. From SSL_CTX_use_certificate_chain_file(3):
 | 
			
		||||
         "The certificates must be in PEM format and must be sorted
 | 
			
		||||
         starting with the subject's certificate (actual client or server
 | 
			
		||||
         certificate), followed by intermediate CA certificates if
 | 
			
		||||
         applicable, and ending at the highest level (root) CA"
 | 
			
		||||
         (the latter one being optional).
 | 
			
		||||
 | 
			
		||||
         Note: This certificate is ONLY used for old style SSL
 | 
			
		||||
         connections on port 5223 (pre-STARTTLS).  If you want to
 | 
			
		||||
         use STARTTLS over the standard XMPP port 5222 then you
 | 
			
		||||
         MUST specify the pemfile in the 'id' tag above. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- SSL verify mode - see SSL_CTX_set_verify(3), mode parameter -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <verify-mode>7</verify-mode>
 | 
			
		||||
    -->
 | 
			
		||||
    
 | 
			
		||||
    <!-- SSL CA chain. Used to verify client certificates. CA names published to client upon connection -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <cachain>/etc/jabber/client_ca_certs.pem</cachain>  
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Forward incoming HTTP clients to a real HTTP server -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <httpforward>http://www.jabber.org/</httpforward>
 | 
			
		||||
    -->
 | 
			
		||||
  </local>
 | 
			
		||||
 | 
			
		||||
  <!-- Input/output settings -->
 | 
			
		||||
  <io>
 | 
			
		||||
    <!-- Maximum number of file descriptors. This value sets an upper
 | 
			
		||||
         limit on the number of users who may be logged in to this
 | 
			
		||||
         server at a given time. Each user consumers one file
 | 
			
		||||
         descriptor.
 | 
			
		||||
 | 
			
		||||
         Note that the number of possible connections will be slightly
 | 
			
		||||
         less than this, because c2s itself can use up five on its own,
 | 
			
		||||
         and auth/reg modules may need a few also. If the supply of
 | 
			
		||||
         file descriptors is exhausted, new incoming connections will
 | 
			
		||||
         be denied.
 | 
			
		||||
 | 
			
		||||
         Also note that this value only affects how many file descriptors
 | 
			
		||||
         jabberd is able to handle internally. You may also need to
 | 
			
		||||
         tell your operating system to allow jabberd to use more file
 | 
			
		||||
         descriptors. On Linux this can be done using ulimit -n or by
 | 
			
		||||
         changing the value of /proc/sys/fd/file-max.
 | 
			
		||||
 | 
			
		||||
         (default: 1024) -->
 | 
			
		||||
    <max_fds>1024</max_fds>
 | 
			
		||||
 | 
			
		||||
    <!-- Rate limiting -->
 | 
			
		||||
    <limits>
 | 
			
		||||
      <!-- Maximum bytes per second - if more than X bytes are sent in Y
 | 
			
		||||
           seconds, connection is throttled for Z seconds. The format
 | 
			
		||||
           is:
 | 
			
		||||
 | 
			
		||||
             <bytes seconds='Y' throttle='Z'>X</bytes>
 | 
			
		||||
 | 
			
		||||
           Default Y is 1, default Z is 5. set X to 0 to disable. -->
 | 
			
		||||
      <bytes>0</bytes>
 | 
			
		||||
 | 
			
		||||
      <!-- Maximum number of stanzas per second - if more than X stanzas
 | 
			
		||||
           are sent in Y seconds, connection is throttled for Z seconds.
 | 
			
		||||
           The format is:
 | 
			
		||||
 | 
			
		||||
             <stanzas seconds='Y' throttle='Z'>X</stanzas>
 | 
			
		||||
 | 
			
		||||
           Default Y 1, default Z is 5. Set X to 0 to disable -->
 | 
			
		||||
      <stanzas>1000</stanzas>
 | 
			
		||||
 | 
			
		||||
      <!-- Maximum connects per second - if more than X connects are
 | 
			
		||||
           attempted from a single IP in Y seconds, that IP is throttled
 | 
			
		||||
           for Z seconds. The format is:
 | 
			
		||||
 | 
			
		||||
             <connects seconds='Y' throttle='Z'>X</connects>
 | 
			
		||||
 | 
			
		||||
           Default Y is 5, default Z is 5. set X to 0 to disable. -->
 | 
			
		||||
      <connects>0</connects>
 | 
			
		||||
 | 
			
		||||
      <!-- Maximum stanza size - if more than given number of bytes
 | 
			
		||||
           are read in one incoming stanza, the stream is closed
 | 
			
		||||
           with policy-violation error.
 | 
			
		||||
 | 
			
		||||
           Set to 0 to disable.
 | 
			
		||||
           Values less than 16384 might not work. -->
 | 
			
		||||
      <stanzasize>65535</stanzasize>
 | 
			
		||||
    </limits>
 | 
			
		||||
 | 
			
		||||
    <!-- Enable XEP-0138: Stream Compression -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <compression/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- IP-based access controls. If a connection IP matches an allow
 | 
			
		||||
         rule, the connection will be accepted. If a connecting IP
 | 
			
		||||
         matches a deny rule, the connection will be refused. If the
 | 
			
		||||
         connecting IP does not match any rules, or it matches both an
 | 
			
		||||
         allow and a deny rule, the contents of the <order/> option
 | 
			
		||||
         determines what happens. -->
 | 
			
		||||
    <access>
 | 
			
		||||
      <!-- Rule check order (default: allow,deny)
 | 
			
		||||
 | 
			
		||||
           allow,deny - Check allow rules, then check deny rules.
 | 
			
		||||
                        Allow by default.
 | 
			
		||||
           deny,allow - Check deny rules, then check allow rules.
 | 
			
		||||
                        Deny by default. -->
 | 
			
		||||
      <order>allow,deny</order>
 | 
			
		||||
 | 
			
		||||
      <!-- Allow a network. If the mask isn't specified, it defaults to
 | 
			
		||||
           255.255.255.255 (ie allow onle the specified IP) -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <allow ip='127.0.0.0' mask='255.0.0.0'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Allow a single host -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <allow ip='12.34.56.78'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Deny a network or a host -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <deny ip='127.0.0.1' mask='255.0.0.0'/>
 | 
			
		||||
      <deny ip='87.65.43.21'/>
 | 
			
		||||
      -->
 | 
			
		||||
    </access>
 | 
			
		||||
 | 
			
		||||
    <!-- Timed checks -->
 | 
			
		||||
    <check>
 | 
			
		||||
      <!-- Interval between checks.
 | 
			
		||||
 | 
			
		||||
           Open client connections will be checked every n seconds, and
 | 
			
		||||
           the following checks applied.
 | 
			
		||||
 | 
			
		||||
           0 disables all checks.                       (default: 0) -->
 | 
			
		||||
      <interval>0</interval>
 | 
			
		||||
 | 
			
		||||
      <!-- Idle connection checks.
 | 
			
		||||
 | 
			
		||||
           Connections that have not sent data for longer than this many
 | 
			
		||||
           seconds will be dropped.
 | 
			
		||||
 | 
			
		||||
           0 disables idle timeouts.                    (default: 0) -->
 | 
			
		||||
      <idle>0</idle>
 | 
			
		||||
 | 
			
		||||
      <!-- Keepalives.
 | 
			
		||||
 | 
			
		||||
           Connections that have not sent data for longer than this many
 | 
			
		||||
           seconds will have a single whitespace character sent to them.
 | 
			
		||||
           This will force the TCP connection to be closed if they have
 | 
			
		||||
           disconnected without us knowing about it.
 | 
			
		||||
 | 
			
		||||
           0 disables keepalives.                       (default: 0) -->
 | 
			
		||||
      <keepalive>0</keepalive>
 | 
			
		||||
 | 
			
		||||
    </check>
 | 
			
		||||
 | 
			
		||||
  </io>
 | 
			
		||||
 | 
			
		||||
  <!-- Statistics -->
 | 
			
		||||
  <stats>
 | 
			
		||||
    <!-- file containing count of packets that went through -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <packet>/var/spool/jabber/stats/c2s.packets</packet>
 | 
			
		||||
    -->
 | 
			
		||||
  </stats>
 | 
			
		||||
 | 
			
		||||
  <!-- PBX integration -->
 | 
			
		||||
  <pbx>
 | 
			
		||||
    <!-- Commands named pipe path. Allows creating "fake" sessions
 | 
			
		||||
         with given resource and status -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pipe>/var/run/jabber/pbx</pipe>
 | 
			
		||||
    -->
 | 
			
		||||
    <!-- Available commands:
 | 
			
		||||
          START jid/resource [[priority ]status] [description]
 | 
			
		||||
          STOP jid/resource [description]
 | 
			
		||||
          where priority is integer between -128 and +127
 | 
			
		||||
          and status is one of: CHAT, ONLINE, DND, AWAY, XA
 | 
			
		||||
    -->
 | 
			
		||||
  </pbx>
 | 
			
		||||
 | 
			
		||||
  <!-- see-other-host error stream redirection support
 | 
			
		||||
       This will redirect connections to specified domains to other host:port
 | 
			
		||||
       Usefull when migrating service and DNS change did not propagate yet.
 | 
			
		||||
       Note that to_address should be RFC 3986 compliant. -->
 | 
			
		||||
  <stream_redirect>
 | 
			
		||||
    <!--
 | 
			
		||||
    <redirect requested_domain="some.domain" to_address="other.hostname" to_port="5269" />
 | 
			
		||||
    <redirect requested_domain="other.domain" to_address="other.host" to_port="1234" />
 | 
			
		||||
    -->
 | 
			
		||||
  </stream_redirect>
 | 
			
		||||
 | 
			
		||||
  <!-- Authentication/registration database configuration -->
 | 
			
		||||
  <authreg>
 | 
			
		||||
    <!-- Dynamic authreg modules path -->
 | 
			
		||||
    <path>/usr/lib64/jabberd</path>
 | 
			
		||||
 | 
			
		||||
    <!-- Backend module to use -->
 | 
			
		||||
    <module>db</module>
 | 
			
		||||
 | 
			
		||||
    <!-- Available authentication mechanisms -->
 | 
			
		||||
    <mechanisms>
 | 
			
		||||
 | 
			
		||||
      <!-- These are the traditional Jabber authentication mechanisms.
 | 
			
		||||
           Comment out any that you don't want to be offered to clients.
 | 
			
		||||
           Note that if the auth/reg module does not support one of
 | 
			
		||||
           these mechanisms, then it will not be offered regardless of
 | 
			
		||||
           whether or not it is enabled here. -->
 | 
			
		||||
      <traditional>
 | 
			
		||||
        <plain/>
 | 
			
		||||
        <digest/>
 | 
			
		||||
      </traditional>
 | 
			
		||||
 | 
			
		||||
      <!-- SASL authentication mechanisms. Comment out any that you
 | 
			
		||||
           don't want to be offered to clients. Again, if the auth/reg
 | 
			
		||||
           module does not support one of these mechanisms, then it will
 | 
			
		||||
           not be offered. -->
 | 
			
		||||
      <sasl>
 | 
			
		||||
        <plain/>
 | 
			
		||||
        <digest-md5/>
 | 
			
		||||
        <!--
 | 
			
		||||
        <anonymous/>
 | 
			
		||||
        <gssapi/>
 | 
			
		||||
        -->
 | 
			
		||||
      </sasl>
 | 
			
		||||
 | 
			
		||||
    </mechanisms>
 | 
			
		||||
 | 
			
		||||
    <!-- Additional mechanisms that are also available when the
 | 
			
		||||
         connection is encrypted. Ie. when START-TLS had been
 | 
			
		||||
         negotiated, or user connected on SSL-wrapped port. -->
 | 
			
		||||
    <ssl-mechanisms>
 | 
			
		||||
 | 
			
		||||
      <!-- it's advisable that you disable plain in the above
 | 
			
		||||
           <mechanisms/> section -->
 | 
			
		||||
      <traditional>
 | 
			
		||||
        <plain/>
 | 
			
		||||
      </traditional>
 | 
			
		||||
 | 
			
		||||
      <sasl>
 | 
			
		||||
        <plain/>
 | 
			
		||||
        <external/>
 | 
			
		||||
      </sasl>
 | 
			
		||||
 | 
			
		||||
    </ssl-mechanisms>
 | 
			
		||||
 | 
			
		||||
    <!-- SQLite driver configuration -->
 | 
			
		||||
    <sqlite>
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>/var/spool/jabber/db/sqlite.db</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Transacation support. If this is commented out, transactions
 | 
			
		||||
           will be disabled. This might make database accesses faster,
 | 
			
		||||
           but data may be lost if jabberd crashes. -->
 | 
			
		||||
      <transactions/>
 | 
			
		||||
 | 
			
		||||
      <!-- SQLite busy-timeout in milliseconds. -->
 | 
			
		||||
      <busy-timeout>2000</busy-timeout>
 | 
			
		||||
 | 
			
		||||
      <!-- Passwords in DB may be stored in plain or hashed format -->
 | 
			
		||||
      <!-- NOTE: If you are using hashed passwords, the only auth
 | 
			
		||||
                 method that will work is PLAIN.
 | 
			
		||||
                 Make sure that you disabled others in 'mechanisms'
 | 
			
		||||
                 sections of the config file. -->
 | 
			
		||||
      <password_type>
 | 
			
		||||
        <!-- only one may be enabled here -->
 | 
			
		||||
        <plaintext/>
 | 
			
		||||
        <!-- use crypt(3)ed passwords
 | 
			
		||||
        <crypt/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- use A1HASH passwords
 | 
			
		||||
             This stores the MD5 digest of user:realm:password in the database
 | 
			
		||||
        <a1hash/>
 | 
			
		||||
        -->
 | 
			
		||||
      </password_type>
 | 
			
		||||
    </sqlite>
 | 
			
		||||
 | 
			
		||||
    <!-- MySQL module configuration -->
 | 
			
		||||
    <mysql>
 | 
			
		||||
      <!-- Database server host and port -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>3306</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
 | 
			
		||||
      <!-- Passwords in DB may be stored in plain or hashed format -->
 | 
			
		||||
      <!-- NOTE: If you are using hashed passwords, the only auth
 | 
			
		||||
                 method that will work is PLAIN.
 | 
			
		||||
                 Make sure that you disabled others in 'mechanisms'
 | 
			
		||||
                 sections of the config file. -->
 | 
			
		||||
      <password_type>
 | 
			
		||||
        <!-- only one may be enabled here -->
 | 
			
		||||
        <plaintext/>
 | 
			
		||||
        <!-- use crypt(3)ed passwords
 | 
			
		||||
        <crypt/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- use A1HASH passwords
 | 
			
		||||
		     This stores the MD5 digest of user:realm:password in the database
 | 
			
		||||
        <a1hash/>
 | 
			
		||||
        -->
 | 
			
		||||
      </password_type>
 | 
			
		||||
    </mysql>
 | 
			
		||||
 | 
			
		||||
    <!-- PostgreSQL module configuration -->
 | 
			
		||||
    <pgsql>
 | 
			
		||||
      <!-- PostgreSQL connection info.
 | 
			
		||||
           For the rest of the options see
 | 
			
		||||
           http://www.postgresql.org/docs/8.0/interactive/libpq.html -->
 | 
			
		||||
      <conninfo>dbname=jabberd2 user=jabberd2 password=secret</conninfo>
 | 
			
		||||
 | 
			
		||||
      <!-- Alternatively you may set connection settings separately.
 | 
			
		||||
           These are used only in absence of 'conninfo' -->
 | 
			
		||||
 | 
			
		||||
      <!-- Database server host and port -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>5432</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database schema -->
 | 
			
		||||
      <schema>public</schema>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
 | 
			
		||||
      <!-- Passwords in DB may be stored in plain or hashed format -->
 | 
			
		||||
      <!-- NOTE: If you are using hashed passwords, the only auth
 | 
			
		||||
                 method that will work is PLAIN.
 | 
			
		||||
                 Make sure that you disabled others in 'mechanisms'
 | 
			
		||||
                 sections of the config file. -->
 | 
			
		||||
      <password_type>
 | 
			
		||||
        <!-- only one may be enabled here -->
 | 
			
		||||
        <plaintext/>
 | 
			
		||||
        <!-- use crypt(3)ed passwords
 | 
			
		||||
        <crypt/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- use A1HASH passwords
 | 
			
		||||
		     This stores the MD5 digest of user:realm:password in the database
 | 
			
		||||
        <a1hash/>
 | 
			
		||||
        -->
 | 
			
		||||
      </password_type>
 | 
			
		||||
    </pgsql>
 | 
			
		||||
 | 
			
		||||
    <!-- Oracle driver configuration -->
 | 
			
		||||
    <oracle>
 | 
			
		||||
      <!-- Database server host and port. -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>1521</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
    </oracle>
 | 
			
		||||
 | 
			
		||||
    <!-- Berkeley DB module configuration -->
 | 
			
		||||
    <db>
 | 
			
		||||
      <!-- Directory to store database files under -->
 | 
			
		||||
      <path>/var/spool/jabber/db</path>
 | 
			
		||||
 | 
			
		||||
      <!-- Synchronize the database to disk after each write. If you
 | 
			
		||||
           disable this, database accesses may be faster, but data may
 | 
			
		||||
           be lost if jabberd crashes. -->
 | 
			
		||||
      <sync/>
 | 
			
		||||
    </db>
 | 
			
		||||
 | 
			
		||||
    <!-- LDAPFULL module configuration -->
 | 
			
		||||
    <ldapfull>
 | 
			
		||||
      <!-- LDAP server host and port (default: 389) -->
 | 
			
		||||
      <uri>ldap://localhost/ ldaps://ldap.example.com/</uri>
 | 
			
		||||
      
 | 
			
		||||
      <!-- DN to bind as for searches. If unspecified, the searches
 | 
			
		||||
           will be done anonymously. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <binddn>cn=Directory Manager</binddn>
 | 
			
		||||
      <bindpw>secret</bindpw>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Type of LDAP server. Currently "ad" for active directory and "ldap"
 | 
			
		||||
           for other ldap servers. If not specified, then it is ldap. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <type>ad</type>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- LDAP attribute that holds the user ID (default: uid) -->
 | 
			
		||||
      <uidattr>uid</uidattr>
 | 
			
		||||
      <objectclass>posixAccount</objectclass>
 | 
			
		||||
      <!-- LDAP attribute that holds the cleartext or hashed password
 | 
			
		||||
           (not needed when pwscheme is set to 'bind') -->
 | 
			
		||||
      <pwattr>userPassword</pwattr>
 | 
			
		||||
      <!-- if you use included jabberd.schema use this:
 | 
			
		||||
      <uidattr>jid</uidattr>
 | 
			
		||||
      <objectclass>jabberUser</objectclass>
 | 
			
		||||
      <pwattr>jabberPassword</pwattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Attribute that holds jabber account status. Must be TRUE for AD,
 | 
			
		||||
           and 1 for other LDAP server.
 | 
			
		||||
           If not specified, then it will not be used. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <validattr>valid</validattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Group that users must be members of
 | 
			
		||||
           If this is set, only user that are members of the specified LDAP
 | 
			
		||||
           group can log in. The group must be specified with its full
 | 
			
		||||
           distinguished name -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <group_dn>cn=jabberdusers,ou=servicegroups,dc=example,dc=com</group_dn>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <fulluid/>
 | 
			
		||||
      <!-- If pwscheme is not defined, then passwords are stored in clear
 | 
			
		||||
           text and digest authentication may be done.
 | 
			
		||||
           If passwords are hashed, then you cannot use digest authentication
 | 
			
		||||
           and should use plain text authentication.
 | 
			
		||||
           Any of sha, ssha, crypt, bind and clear may be specified.
 | 
			
		||||
           'sha' specifies that the attribute in pwattr holds a base-64
 | 
			
		||||
           encoded SHA-1 hashed password beginning with the string {SHA}.
 | 
			
		||||
           'ssha' specifies that the attribute in pwattr holds a base-64
 | 
			
		||||
           SHA-1 hashed password appended with 32 bits of salt and beginning
 | 
			
		||||
           with the string {SSHA}.
 | 
			
		||||
           'crypt' specifies that the attribute in pwattr holds a UNIX-style
 | 
			
		||||
           crypt(3) hashed password.
 | 
			
		||||
           'bind' specifies that the password is not stored in an attribute
 | 
			
		||||
           but is authenticated directly by the LDAP server by binding
 | 
			
		||||
           using the user's DN. This should be compatible with the
 | 
			
		||||
           widest variety of LDAP servers.
 | 
			
		||||
      -->
 | 
			
		||||
      <!-- <pwscheme>bind</pwscheme> -->
 | 
			
		||||
 | 
			
		||||
      <!-- base DN of the tree. You should specify a DN for each
 | 
			
		||||
           authentication realm declared in the <local/> section above,
 | 
			
		||||
           by using the realm attribute. -->
 | 
			
		||||
      <basedn realm='company'>o=Company.com</basedn>
 | 
			
		||||
      <basedn>o=Example Corp.</basedn>
 | 
			
		||||
    </ldapfull>
 | 
			
		||||
 | 
			
		||||
    <!-- LDAP module configuration -->
 | 
			
		||||
    <!-- Remember that you need to use PLAIN auth with LDAP backend -->
 | 
			
		||||
    <ldap>
 | 
			
		||||
      <!-- LDAP server host and port (default: 389) -->
 | 
			
		||||
      <host>ldap.example.com</host>
 | 
			
		||||
      <port>389</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Use LDAP v3 if possible. If disabled, v2 will be used.
 | 
			
		||||
           Encryption options are only available if v3 is enabled. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <v3/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Encryption. If enabled, this will create an encrypted channel
 | 
			
		||||
           to the LDAP server using the LDAP STARTTLS mechanism. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <starttls/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Encryption. If enabled, this will create an encrypted channel
 | 
			
		||||
           to the server using the old-style "ldaps://" mechanism. It is
 | 
			
		||||
           recommended that you use <starttls/> instead of this. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <ssl/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- DN to bind as for searches. If unspecified, the searches
 | 
			
		||||
           will be done anonymously. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <binddn>cn=Directory Manager</binddn>
 | 
			
		||||
      <bindpw>secret</bindpw>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- LDAP attribute that holds the user ID (default: uid) -->
 | 
			
		||||
      <uidattr>uid</uidattr>
 | 
			
		||||
 | 
			
		||||
      <!-- Enable the append-realm element if you want to append
 | 
			
		||||
           realm value (usernam@realm) to the uidattr value
 | 
			
		||||
      <append-realm/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Alternatively to <uidattr/> and <append-realm/> you may
 | 
			
		||||
           specify full LDAP search <query/> that will be used to
 | 
			
		||||
           get user objects from directory.
 | 
			
		||||
 | 
			
		||||
           The following replacements take place:
 | 
			
		||||
           %u  is replaced by user login name
 | 
			
		||||
           %r  is replaced by user login realm
 | 
			
		||||
 | 
			
		||||
           When <query/> is specified, <uidattr/> and <append-realm/>
 | 
			
		||||
           are unused and take no effect. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <query>(&(mail=%u@%r)(objectClass=inetOrgPerson))</query>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- base DN of the tree. You should specify a DN for each
 | 
			
		||||
           authentication realm declared in the <local/> section above,
 | 
			
		||||
           by using the realm attribute. -->
 | 
			
		||||
      <basedn realm='company'>o=Company.com</basedn>
 | 
			
		||||
      <basedn>o=Example Corp.</basedn>
 | 
			
		||||
    </ldap>
 | 
			
		||||
    <!-- if you want to configure more than one LDAP server
 | 
			
		||||
         create ldap1, ldap2 etc. sections
 | 
			
		||||
    <ldap1>
 | 
			
		||||
 | 
			
		||||
    </ldap1>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Pipe module configuration -->
 | 
			
		||||
    <pipe>
 | 
			
		||||
      <!-- Program to execute -->
 | 
			
		||||
      <exec>/usr/bin/pipe-auth.pl</exec>
 | 
			
		||||
    </pipe>
 | 
			
		||||
 | 
			
		||||
  </authreg>
 | 
			
		||||
 | 
			
		||||
</c2s>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
@ -1,701 +0,0 @@
 | 
			
		||||
<!-- c2s configuration -->
 | 
			
		||||
<c2s>
 | 
			
		||||
  <!-- Our ID on the network (default: c2s) -->
 | 
			
		||||
  <id>c2s</id>
 | 
			
		||||
 | 
			
		||||
  <!-- The process ID file. Comment this out if you don't need to know
 | 
			
		||||
       the process ID from outside the process (eg for control scripts) -->
 | 
			
		||||
  <pidfile>/var/run/jabber/jabberd2-c2s.pid</pidfile>
 | 
			
		||||
 | 
			
		||||
  <!-- Router connection configuration -->
 | 
			
		||||
  <router>
 | 
			
		||||
    <!-- IP/port the router is waiting for connections on -->
 | 
			
		||||
    <ip>127.0.0.1</ip>            <!-- default: 127.0.0.1 -->
 | 
			
		||||
    <port>5347</port>             <!-- default: 5347 -->
 | 
			
		||||
 | 
			
		||||
    <!-- Username/password to authenticate as -->
 | 
			
		||||
    <user>jabberd</user>          <!-- default: jabberd -->
 | 
			
		||||
    <pass>secret</pass>           <!-- default: secret -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key to use when
 | 
			
		||||
         setting up an encrypted channel with the router. From
 | 
			
		||||
         SSL_CTX_use_certificate_chain_file(3): "The certificates must be
 | 
			
		||||
         in PEM format and must be sorted starting with the subject's
 | 
			
		||||
         certificate (actual client or server certificate), followed
 | 
			
		||||
         by intermediate CA certificates if applicable, and ending
 | 
			
		||||
         at the highest level (root) CA" (the latter one being optional).
 | 
			
		||||
         If this is commented out, or the file can't be read, no attempt
 | 
			
		||||
         will be made to establish an encrypted channel with the router. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Router connection retry -->
 | 
			
		||||
    <retry>
 | 
			
		||||
      <!-- If the connection to the router can't be established at
 | 
			
		||||
           startup, we should try again this many times before exiting.
 | 
			
		||||
           Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <init>3</init>
 | 
			
		||||
 | 
			
		||||
      <!-- If we lost the connection to the router during normal
 | 
			
		||||
           operation (ie we've successfully connected to the router in
 | 
			
		||||
           the past), we should try to reconnect this many times before
 | 
			
		||||
           exiting. Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <lost>3</lost>
 | 
			
		||||
 | 
			
		||||
      <!-- Sleep for this many seconds before trying attempting a
 | 
			
		||||
           reconnect. [default: 2] -->
 | 
			
		||||
      <sleep>2</sleep>
 | 
			
		||||
    </retry>
 | 
			
		||||
  </router>
 | 
			
		||||
 | 
			
		||||
  <!-- Log configuration - type is "syslog", "file" or "stdout" -->
 | 
			
		||||
  <log type='syslog'>
 | 
			
		||||
    <!-- If logging to syslog, this is the log ident -->
 | 
			
		||||
    <ident>jabberd/c2s</ident>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to syslog, this is the log facility
 | 
			
		||||
         (local0 - local7)                        [default: local3] -->
 | 
			
		||||
    <facility>local3</facility>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to file, this is the filename of the logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <file>/var/log/jabber/c2s.log</file>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Filename of the debug logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <debug>/var/log/jabber/debug-${id}.log</debug>
 | 
			
		||||
    -->
 | 
			
		||||
  </log>
 | 
			
		||||
 | 
			
		||||
  <!-- Local network configuration -->
 | 
			
		||||
  <local>
 | 
			
		||||
    <!-- Who we identify ourselves as. This should correspond to the
 | 
			
		||||
         ID (host) that the session manager thinks it is. You can
 | 
			
		||||
         specify more than one to support virtual hosts, as long as you
 | 
			
		||||
         have additional session manager instances on the network to
 | 
			
		||||
         handle those hosts.
 | 
			
		||||
 | 
			
		||||
         You may leave the content of the <id/> empty to setup default
 | 
			
		||||
         virtual host setup, that will be used for all present but not
 | 
			
		||||
         configured otherwise SM domains.
 | 
			
		||||
 | 
			
		||||
         realm
 | 
			
		||||
         attribute specifies the auth/reg or SASL authentication realm
 | 
			
		||||
         for the host. If the attribute is not specified, the realm will
 | 
			
		||||
         be selected by the SASL mechanism, or will be the same as the ID
 | 
			
		||||
         itself. Be aware that users are assigned to a realm, not a host,
 | 
			
		||||
         so two hosts in the same realm will have the same users. If no
 | 
			
		||||
         realm is specified, it will be set to be the same as the ID.
 | 
			
		||||
         If empty "" realm is specified, the PAM backend wil authenticate
 | 
			
		||||
         using plain usernames, not JIDs.
 | 
			
		||||
 | 
			
		||||
         pemfile
 | 
			
		||||
         attribute specifies the file containing a SSL certificate and
 | 
			
		||||
         private key for client connections. If this is non existant,
 | 
			
		||||
         clients will not be offered the STARTTLS stream extension
 | 
			
		||||
         From SSL_CTX_use_certificate_chain_file(3):
 | 
			
		||||
         "The certificates must be in PEM format and must be sorted
 | 
			
		||||
         starting with the subject's certificate (actual client or server
 | 
			
		||||
         certificate), followed by intermediate CA certificates if
 | 
			
		||||
         applicable, and ending at the highest level (root) CA"
 | 
			
		||||
         (the latter one being optional).
 | 
			
		||||
 | 
			
		||||
         verify-mode
 | 
			
		||||
         SSL verify mode - see SSL_CTX_set_verify(3), mode parameter.
 | 
			
		||||
         Sum of the following options:
 | 
			
		||||
         SSL_VERIFY_NONE                 0x00
 | 
			
		||||
		 SSL_VERIFY_PEER                 0x01
 | 
			
		||||
		 SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02
 | 
			
		||||
		 SSL_VERIFY_CLIENT_ONCE          0x04
 | 
			
		||||
		 Use 7 to require all clients to present _valid_ certificates.
 | 
			
		||||
 | 
			
		||||
     
 | 
			
		||||
         cachain
 | 
			
		||||
         SSL CA chain. Used to verify client certificates. 
 | 
			
		||||
         CA names published to client upon connection.
 | 
			
		||||
          
 | 
			
		||||
         require-starttls
 | 
			
		||||
         If this attribute is set to any value, clients must do STARTTLS
 | 
			
		||||
         before they can authenticate. Until the stream is encrypted,
 | 
			
		||||
         all packets will be dropped.
 | 
			
		||||
 | 
			
		||||
         register-enable
 | 
			
		||||
         Remove this attribute to disable account registrations.
 | 
			
		||||
 | 
			
		||||
         instructions
 | 
			
		||||
         Human-readable instructions to be returned to client when
 | 
			
		||||
         registration is requested.
 | 
			
		||||
 | 
			
		||||
         register-oob
 | 
			
		||||
         URL to be attached as an alternative, out-of-band registration
 | 
			
		||||
         method. Usually web-based http:// URL.
 | 
			
		||||
 | 
			
		||||
         password-change
 | 
			
		||||
         Password change only. When registration is disabled, it may
 | 
			
		||||
         still be useful to allow clients to change their password. If
 | 
			
		||||
         you want this, add this attribute with any value, when you need
 | 
			
		||||
         registration disabled.
 | 
			
		||||
          -->
 | 
			
		||||
    <id register-enable='mu'>localhost.localdomain</id>
 | 
			
		||||
    <!-- or
 | 
			
		||||
    <id realm='company.int'
 | 
			
		||||
        pemfile='/etc/jabber/server.pem'
 | 
			
		||||
        verify-mode='7'
 | 
			
		||||
        cachain='/etc/jabber/client_ca_certs.pem'
 | 
			
		||||
        require-starttls='mu'
 | 
			
		||||
        register-enable='mu'
 | 
			
		||||
        instructions='Enter a username and password to register with this server.'
 | 
			
		||||
        register-oob='http://example.org/register'
 | 
			
		||||
        password-change='mu'
 | 
			
		||||
    >example.net</id> -->
 | 
			
		||||
    <!-- or the default host
 | 
			
		||||
    <id password-change='mu' /> -->
 | 
			
		||||
 | 
			
		||||
    <!-- IP address to bind to (default: 0.0.0.0) -->
 | 
			
		||||
    <ip>0.0.0.0</ip>
 | 
			
		||||
 | 
			
		||||
    <!-- Port to bind to, or 0 to disable unencrypted access to the
 | 
			
		||||
         server (default: 5222) -->
 | 
			
		||||
    <port>5222</port>
 | 
			
		||||
 | 
			
		||||
    <!-- Older versions of jabberd support encrypted client connections
 | 
			
		||||
         via an additional listening socket on port 5223. If you want
 | 
			
		||||
         this (required to allow pre-STARTTLS clients to do SSL),
 | 
			
		||||
         uncomment this -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <ssl-port>5223</ssl-port>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key for client
 | 
			
		||||
         connections. From SSL_CTX_use_certificate_chain_file(3):
 | 
			
		||||
         "The certificates must be in PEM format and must be sorted
 | 
			
		||||
         starting with the subject's certificate (actual client or server
 | 
			
		||||
         certificate), followed by intermediate CA certificates if
 | 
			
		||||
         applicable, and ending at the highest level (root) CA"
 | 
			
		||||
         (the latter one being optional).
 | 
			
		||||
 | 
			
		||||
         Note: This certificate is ONLY used for old style SSL
 | 
			
		||||
         connections on port 5223 (pre-STARTTLS).  If you want to
 | 
			
		||||
         use STARTTLS over the standard XMPP port 5222 then you
 | 
			
		||||
         MUST specify the pemfile in the 'id' tag above. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- SSL verify mode - see SSL_CTX_set_verify(3), mode parameter -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <verify-mode>7</verify-mode>
 | 
			
		||||
    -->
 | 
			
		||||
    
 | 
			
		||||
    <!-- SSL CA chain. Used to verify client certificates. CA names published to client upon connection -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <cachain>/etc/jabber/client_ca_certs.pem</cachain>  
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Forward incoming HTTP clients to a real HTTP server -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <httpforward>http://www.jabber.org/</httpforward>
 | 
			
		||||
    -->
 | 
			
		||||
  </local>
 | 
			
		||||
 | 
			
		||||
  <!-- Input/output settings -->
 | 
			
		||||
  <io>
 | 
			
		||||
    <!-- Maximum number of file descriptors. This value sets an upper
 | 
			
		||||
         limit on the number of users who may be logged in to this
 | 
			
		||||
         server at a given time. Each user consumers one file
 | 
			
		||||
         descriptor.
 | 
			
		||||
 | 
			
		||||
         Note that the number of possible connections will be slightly
 | 
			
		||||
         less than this, because c2s itself can use up five on its own,
 | 
			
		||||
         and auth/reg modules may need a few also. If the supply of
 | 
			
		||||
         file descriptors is exhausted, new incoming connections will
 | 
			
		||||
         be denied.
 | 
			
		||||
 | 
			
		||||
         Also note that this value only affects how many file descriptors
 | 
			
		||||
         jabberd is able to handle internally. You may also need to
 | 
			
		||||
         tell your operating system to allow jabberd to use more file
 | 
			
		||||
         descriptors. On Linux this can be done using ulimit -n or by
 | 
			
		||||
         changing the value of /proc/sys/fd/file-max.
 | 
			
		||||
 | 
			
		||||
         (default: 1024) -->
 | 
			
		||||
    <max_fds>1024</max_fds>
 | 
			
		||||
 | 
			
		||||
    <!-- Rate limiting -->
 | 
			
		||||
    <limits>
 | 
			
		||||
      <!-- Maximum bytes per second - if more than X bytes are sent in Y
 | 
			
		||||
           seconds, connection is throttled for Z seconds. The format
 | 
			
		||||
           is:
 | 
			
		||||
 | 
			
		||||
             <bytes seconds='Y' throttle='Z'>X</bytes>
 | 
			
		||||
 | 
			
		||||
           Default Y is 1, default Z is 5. set X to 0 to disable. -->
 | 
			
		||||
      <bytes>0</bytes>
 | 
			
		||||
 | 
			
		||||
      <!-- Maximum number of stanzas per second - if more than X stanzas
 | 
			
		||||
           are sent in Y seconds, connection is throttled for Z seconds.
 | 
			
		||||
           The format is:
 | 
			
		||||
 | 
			
		||||
             <stanzas seconds='Y' throttle='Z'>X</stanzas>
 | 
			
		||||
 | 
			
		||||
           Default Y 1, default Z is 5. Set X to 0 to disable -->
 | 
			
		||||
      <stanzas>1000</stanzas>
 | 
			
		||||
 | 
			
		||||
      <!-- Maximum connects per second - if more than X connects are
 | 
			
		||||
           attempted from a single IP in Y seconds, that IP is throttled
 | 
			
		||||
           for Z seconds. The format is:
 | 
			
		||||
 | 
			
		||||
             <connects seconds='Y' throttle='Z'>X</connects>
 | 
			
		||||
 | 
			
		||||
           Default Y is 5, default Z is 5. set X to 0 to disable. -->
 | 
			
		||||
      <connects>0</connects>
 | 
			
		||||
 | 
			
		||||
      <!-- Maximum stanza size - if more than given number of bytes
 | 
			
		||||
           are read in one incoming stanza, the stream is closed
 | 
			
		||||
           with policy-violation error.
 | 
			
		||||
 | 
			
		||||
           Set to 0 to disable.
 | 
			
		||||
           Values less than 16384 might not work. -->
 | 
			
		||||
      <stanzasize>65535</stanzasize>
 | 
			
		||||
    </limits>
 | 
			
		||||
 | 
			
		||||
    <!-- Enable XEP-0138: Stream Compression -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <compression/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- IP-based access controls. If a connection IP matches an allow
 | 
			
		||||
         rule, the connection will be accepted. If a connecting IP
 | 
			
		||||
         matches a deny rule, the connection will be refused. If the
 | 
			
		||||
         connecting IP does not match any rules, or it matches both an
 | 
			
		||||
         allow and a deny rule, the contents of the <order/> option
 | 
			
		||||
         determines what happens. -->
 | 
			
		||||
    <access>
 | 
			
		||||
      <!-- Rule check order (default: allow,deny)
 | 
			
		||||
 | 
			
		||||
           allow,deny - Check allow rules, then check deny rules.
 | 
			
		||||
                        Allow by default.
 | 
			
		||||
           deny,allow - Check deny rules, then check allow rules.
 | 
			
		||||
                        Deny by default. -->
 | 
			
		||||
      <order>allow,deny</order>
 | 
			
		||||
 | 
			
		||||
      <!-- Allow a network. If the mask isn't specified, it defaults to
 | 
			
		||||
           255.255.255.255 (ie allow onle the specified IP) -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <allow ip='127.0.0.0' mask='255.0.0.0'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Allow a single host -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <allow ip='12.34.56.78'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Deny a network or a host -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <deny ip='127.0.0.1' mask='255.0.0.0'/>
 | 
			
		||||
      <deny ip='87.65.43.21'/>
 | 
			
		||||
      -->
 | 
			
		||||
    </access>
 | 
			
		||||
 | 
			
		||||
    <!-- Timed checks -->
 | 
			
		||||
    <check>
 | 
			
		||||
      <!-- Interval between checks.
 | 
			
		||||
 | 
			
		||||
           Open client connections will be checked every n seconds, and
 | 
			
		||||
           the following checks applied.
 | 
			
		||||
 | 
			
		||||
           0 disables all checks.                       (default: 0) -->
 | 
			
		||||
      <interval>0</interval>
 | 
			
		||||
 | 
			
		||||
      <!-- Idle connection checks.
 | 
			
		||||
 | 
			
		||||
           Connections that have not sent data for longer than this many
 | 
			
		||||
           seconds will be dropped.
 | 
			
		||||
 | 
			
		||||
           0 disables idle timeouts.                    (default: 0) -->
 | 
			
		||||
      <idle>0</idle>
 | 
			
		||||
 | 
			
		||||
      <!-- Keepalives.
 | 
			
		||||
 | 
			
		||||
           Connections that have not sent data for longer than this many
 | 
			
		||||
           seconds will have a single whitespace character sent to them.
 | 
			
		||||
           This will force the TCP connection to be closed if they have
 | 
			
		||||
           disconnected without us knowing about it.
 | 
			
		||||
 | 
			
		||||
           0 disables keepalives.                       (default: 0) -->
 | 
			
		||||
      <keepalive>0</keepalive>
 | 
			
		||||
 | 
			
		||||
    </check>
 | 
			
		||||
 | 
			
		||||
  </io>
 | 
			
		||||
 | 
			
		||||
  <!-- Statistics -->
 | 
			
		||||
  <stats>
 | 
			
		||||
    <!-- file containing count of packets that went through -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <packet>/var/spool/jabber/stats/c2s.packets</packet>
 | 
			
		||||
    -->
 | 
			
		||||
  </stats>
 | 
			
		||||
 | 
			
		||||
  <!-- PBX integration -->
 | 
			
		||||
  <pbx>
 | 
			
		||||
    <!-- Commands named pipe path. Allows creating "fake" sessions
 | 
			
		||||
         with given resource and status -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pipe>/var/run/jabber/pbx</pipe>
 | 
			
		||||
    -->
 | 
			
		||||
    <!-- Available commands:
 | 
			
		||||
          START jid/resource [[priority ]status] [description]
 | 
			
		||||
          STOP jid/resource [description]
 | 
			
		||||
          where priority is integer between -128 and +127
 | 
			
		||||
          and status is one of: CHAT, ONLINE, DND, AWAY, XA
 | 
			
		||||
    -->
 | 
			
		||||
  </pbx>
 | 
			
		||||
 | 
			
		||||
  <!-- see-other-host error stream redirection support
 | 
			
		||||
       This will redirect connections to specified domains to other host:port
 | 
			
		||||
       Usefull when migrating service and DNS change did not propagate yet.
 | 
			
		||||
       Note that to_address should be RFC 3986 compliant. -->
 | 
			
		||||
  <stream_redirect>
 | 
			
		||||
    <!--
 | 
			
		||||
    <redirect requested_domain="some.domain" to_address="other.hostname" to_port="5269" />
 | 
			
		||||
    <redirect requested_domain="other.domain" to_address="other.host" to_port="1234" />
 | 
			
		||||
    -->
 | 
			
		||||
  </stream_redirect>
 | 
			
		||||
 | 
			
		||||
  <!-- Authentication/registration database configuration -->
 | 
			
		||||
  <authreg>
 | 
			
		||||
    <!-- Dynamic authreg modules path -->
 | 
			
		||||
    <path>/usr/lib64/jabberd</path>
 | 
			
		||||
 | 
			
		||||
    <!-- Backend module to use -->
 | 
			
		||||
    <module>db</module>
 | 
			
		||||
 | 
			
		||||
    <!-- Available authentication mechanisms -->
 | 
			
		||||
    <mechanisms>
 | 
			
		||||
 | 
			
		||||
      <!-- These are the traditional Jabber authentication mechanisms.
 | 
			
		||||
           Comment out any that you don't want to be offered to clients.
 | 
			
		||||
           Note that if the auth/reg module does not support one of
 | 
			
		||||
           these mechanisms, then it will not be offered regardless of
 | 
			
		||||
           whether or not it is enabled here. -->
 | 
			
		||||
      <traditional>
 | 
			
		||||
        <plain/>
 | 
			
		||||
        <digest/>
 | 
			
		||||
      </traditional>
 | 
			
		||||
 | 
			
		||||
      <!-- SASL authentication mechanisms. Comment out any that you
 | 
			
		||||
           don't want to be offered to clients. Again, if the auth/reg
 | 
			
		||||
           module does not support one of these mechanisms, then it will
 | 
			
		||||
           not be offered. -->
 | 
			
		||||
      <sasl>
 | 
			
		||||
        <plain/>
 | 
			
		||||
        <digest-md5/>
 | 
			
		||||
        <!--
 | 
			
		||||
        <anonymous/>
 | 
			
		||||
        <gssapi/>
 | 
			
		||||
        -->
 | 
			
		||||
      </sasl>
 | 
			
		||||
 | 
			
		||||
    </mechanisms>
 | 
			
		||||
 | 
			
		||||
    <!-- Additional mechanisms that are also available when the
 | 
			
		||||
         connection is encrypted. Ie. when START-TLS had been
 | 
			
		||||
         negotiated, or user connected on SSL-wrapped port. -->
 | 
			
		||||
    <ssl-mechanisms>
 | 
			
		||||
 | 
			
		||||
      <!-- it's advisable that you disable plain in the above
 | 
			
		||||
           <mechanisms/> section -->
 | 
			
		||||
      <traditional>
 | 
			
		||||
        <plain/>
 | 
			
		||||
      </traditional>
 | 
			
		||||
 | 
			
		||||
      <sasl>
 | 
			
		||||
        <plain/>
 | 
			
		||||
        <external/>
 | 
			
		||||
      </sasl>
 | 
			
		||||
 | 
			
		||||
    </ssl-mechanisms>
 | 
			
		||||
 | 
			
		||||
    <!-- SQLite driver configuration -->
 | 
			
		||||
    <sqlite>
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>/var/spool/jabber/db/sqlite.db</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Transacation support. If this is commented out, transactions
 | 
			
		||||
           will be disabled. This might make database accesses faster,
 | 
			
		||||
           but data may be lost if jabberd crashes. -->
 | 
			
		||||
      <transactions/>
 | 
			
		||||
 | 
			
		||||
      <!-- SQLite busy-timeout in milliseconds. -->
 | 
			
		||||
      <busy-timeout>2000</busy-timeout>
 | 
			
		||||
 | 
			
		||||
      <!-- Passwords in DB may be stored in plain or hashed format -->
 | 
			
		||||
      <!-- NOTE: If you are using hashed passwords, the only auth
 | 
			
		||||
                 method that will work is PLAIN.
 | 
			
		||||
                 Make sure that you disabled others in 'mechanisms'
 | 
			
		||||
                 sections of the config file. -->
 | 
			
		||||
      <password_type>
 | 
			
		||||
        <!-- only one may be enabled here -->
 | 
			
		||||
        <plaintext/>
 | 
			
		||||
        <!-- use crypt(3)ed passwords
 | 
			
		||||
        <crypt/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- use A1HASH passwords
 | 
			
		||||
             This stores the MD5 digest of user:realm:password in the database
 | 
			
		||||
        <a1hash/>
 | 
			
		||||
        -->
 | 
			
		||||
      </password_type>
 | 
			
		||||
    </sqlite>
 | 
			
		||||
 | 
			
		||||
    <!-- MySQL module configuration -->
 | 
			
		||||
    <mysql>
 | 
			
		||||
      <!-- Database server host and port -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>3306</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
 | 
			
		||||
      <!-- Passwords in DB may be stored in plain or hashed format -->
 | 
			
		||||
      <!-- NOTE: If you are using hashed passwords, the only auth
 | 
			
		||||
                 method that will work is PLAIN.
 | 
			
		||||
                 Make sure that you disabled others in 'mechanisms'
 | 
			
		||||
                 sections of the config file. -->
 | 
			
		||||
      <password_type>
 | 
			
		||||
        <!-- only one may be enabled here -->
 | 
			
		||||
        <plaintext/>
 | 
			
		||||
        <!-- use crypt(3)ed passwords
 | 
			
		||||
        <crypt/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- use A1HASH passwords
 | 
			
		||||
		     This stores the MD5 digest of user:realm:password in the database
 | 
			
		||||
        <a1hash/>
 | 
			
		||||
        -->
 | 
			
		||||
      </password_type>
 | 
			
		||||
    </mysql>
 | 
			
		||||
 | 
			
		||||
    <!-- PostgreSQL module configuration -->
 | 
			
		||||
    <pgsql>
 | 
			
		||||
      <!-- PostgreSQL connection info.
 | 
			
		||||
           For the rest of the options see
 | 
			
		||||
           http://www.postgresql.org/docs/8.0/interactive/libpq.html -->
 | 
			
		||||
      <conninfo>dbname=jabberd2 user=jabberd2 password=secret</conninfo>
 | 
			
		||||
 | 
			
		||||
      <!-- Alternatively you may set connection settings separately.
 | 
			
		||||
           These are used only in absence of 'conninfo' -->
 | 
			
		||||
 | 
			
		||||
      <!-- Database server host and port -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>5432</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database schema -->
 | 
			
		||||
      <schema>public</schema>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
 | 
			
		||||
      <!-- Passwords in DB may be stored in plain or hashed format -->
 | 
			
		||||
      <!-- NOTE: If you are using hashed passwords, the only auth
 | 
			
		||||
                 method that will work is PLAIN.
 | 
			
		||||
                 Make sure that you disabled others in 'mechanisms'
 | 
			
		||||
                 sections of the config file. -->
 | 
			
		||||
      <password_type>
 | 
			
		||||
        <!-- only one may be enabled here -->
 | 
			
		||||
        <plaintext/>
 | 
			
		||||
        <!-- use crypt(3)ed passwords
 | 
			
		||||
        <crypt/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- use A1HASH passwords
 | 
			
		||||
		     This stores the MD5 digest of user:realm:password in the database
 | 
			
		||||
        <a1hash/>
 | 
			
		||||
        -->
 | 
			
		||||
      </password_type>
 | 
			
		||||
    </pgsql>
 | 
			
		||||
 | 
			
		||||
    <!-- Oracle driver configuration -->
 | 
			
		||||
    <oracle>
 | 
			
		||||
      <!-- Database server host and port. -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>1521</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
    </oracle>
 | 
			
		||||
 | 
			
		||||
    <!-- Berkeley DB module configuration -->
 | 
			
		||||
    <db>
 | 
			
		||||
      <!-- Directory to store database files under -->
 | 
			
		||||
      <path>/var/spool/jabber/db</path>
 | 
			
		||||
 | 
			
		||||
      <!-- Synchronize the database to disk after each write. If you
 | 
			
		||||
           disable this, database accesses may be faster, but data may
 | 
			
		||||
           be lost if jabberd crashes. -->
 | 
			
		||||
      <sync/>
 | 
			
		||||
    </db>
 | 
			
		||||
 | 
			
		||||
    <!-- LDAPFULL module configuration -->
 | 
			
		||||
    <ldapfull>
 | 
			
		||||
      <!-- LDAP server host and port (default: 389) -->
 | 
			
		||||
      <uri>ldap://localhost/ ldaps://ldap.example.com/</uri>
 | 
			
		||||
      
 | 
			
		||||
      <!-- DN to bind as for searches. If unspecified, the searches
 | 
			
		||||
           will be done anonymously. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <binddn>cn=Directory Manager</binddn>
 | 
			
		||||
      <bindpw>secret</bindpw>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Type of LDAP server. Currently "ad" for active directory and "ldap"
 | 
			
		||||
           for other ldap servers. If not specified, then it is ldap. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <type>ad</type>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- LDAP attribute that holds the user ID (default: uid) -->
 | 
			
		||||
      <uidattr>uid</uidattr>
 | 
			
		||||
      <objectclass>posixAccount</objectclass>
 | 
			
		||||
      <!-- LDAP attribute that holds the cleartext or hashed password
 | 
			
		||||
           (not needed when pwscheme is set to 'bind') -->
 | 
			
		||||
      <pwattr>userPassword</pwattr>
 | 
			
		||||
      <!-- if you use included jabberd.schema use this:
 | 
			
		||||
      <uidattr>jid</uidattr>
 | 
			
		||||
      <objectclass>jabberUser</objectclass>
 | 
			
		||||
      <pwattr>jabberPassword</pwattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Attribute that holds jabber account status. Must be TRUE for AD,
 | 
			
		||||
           and 1 for other LDAP server.
 | 
			
		||||
           If not specified, then it will not be used. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <validattr>valid</validattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Group that users must be members of
 | 
			
		||||
           If this is set, only user that are members of the specified LDAP
 | 
			
		||||
           group can log in. The group must be specified with its full
 | 
			
		||||
           distinguished name -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <group_dn>cn=jabberdusers,ou=servicegroups,dc=example,dc=com</group_dn>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <fulluid/>
 | 
			
		||||
      <!-- If pwscheme is not defined, then passwords are stored in clear
 | 
			
		||||
           text and digest authentication may be done.
 | 
			
		||||
           If passwords are hashed, then you cannot use digest authentication
 | 
			
		||||
           and should use plain text authentication.
 | 
			
		||||
           Any of sha, ssha, crypt, bind and clear may be specified.
 | 
			
		||||
           'sha' specifies that the attribute in pwattr holds a base-64
 | 
			
		||||
           encoded SHA-1 hashed password beginning with the string {SHA}.
 | 
			
		||||
           'ssha' specifies that the attribute in pwattr holds a base-64
 | 
			
		||||
           SHA-1 hashed password appended with 32 bits of salt and beginning
 | 
			
		||||
           with the string {SSHA}.
 | 
			
		||||
           'crypt' specifies that the attribute in pwattr holds a UNIX-style
 | 
			
		||||
           crypt(3) hashed password.
 | 
			
		||||
           'bind' specifies that the password is not stored in an attribute
 | 
			
		||||
           but is authenticated directly by the LDAP server by binding
 | 
			
		||||
           using the user's DN. This should be compatible with the
 | 
			
		||||
           widest variety of LDAP servers.
 | 
			
		||||
      -->
 | 
			
		||||
      <!-- <pwscheme>bind</pwscheme> -->
 | 
			
		||||
 | 
			
		||||
      <!-- base DN of the tree. You should specify a DN for each
 | 
			
		||||
           authentication realm declared in the <local/> section above,
 | 
			
		||||
           by using the realm attribute. -->
 | 
			
		||||
      <basedn realm='company'>o=Company.com</basedn>
 | 
			
		||||
      <basedn>o=Example Corp.</basedn>
 | 
			
		||||
    </ldapfull>
 | 
			
		||||
 | 
			
		||||
    <!-- LDAP module configuration -->
 | 
			
		||||
    <!-- Remember that you need to use PLAIN auth with LDAP backend -->
 | 
			
		||||
    <ldap>
 | 
			
		||||
      <!-- LDAP server host and port (default: 389) -->
 | 
			
		||||
      <host>ldap.example.com</host>
 | 
			
		||||
      <port>389</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Use LDAP v3 if possible. If disabled, v2 will be used.
 | 
			
		||||
           Encryption options are only available if v3 is enabled. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <v3/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Encryption. If enabled, this will create an encrypted channel
 | 
			
		||||
           to the LDAP server using the LDAP STARTTLS mechanism. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <starttls/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Encryption. If enabled, this will create an encrypted channel
 | 
			
		||||
           to the server using the old-style "ldaps://" mechanism. It is
 | 
			
		||||
           recommended that you use <starttls/> instead of this. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <ssl/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- DN to bind as for searches. If unspecified, the searches
 | 
			
		||||
           will be done anonymously. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <binddn>cn=Directory Manager</binddn>
 | 
			
		||||
      <bindpw>secret</bindpw>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- LDAP attribute that holds the user ID (default: uid) -->
 | 
			
		||||
      <uidattr>uid</uidattr>
 | 
			
		||||
 | 
			
		||||
      <!-- Enable the append-realm element if you want to append
 | 
			
		||||
           realm value (usernam@realm) to the uidattr value
 | 
			
		||||
      <append-realm/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Alternatively to <uidattr/> and <append-realm/> you may
 | 
			
		||||
           specify full LDAP search <query/> that will be used to
 | 
			
		||||
           get user objects from directory.
 | 
			
		||||
 | 
			
		||||
           The following replacements take place:
 | 
			
		||||
           %u  is replaced by user login name
 | 
			
		||||
           %r  is replaced by user login realm
 | 
			
		||||
 | 
			
		||||
           When <query/> is specified, <uidattr/> and <append-realm/>
 | 
			
		||||
           are unused and take no effect. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <query>(&(mail=%u@%r)(objectClass=inetOrgPerson))</query>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- base DN of the tree. You should specify a DN for each
 | 
			
		||||
           authentication realm declared in the <local/> section above,
 | 
			
		||||
           by using the realm attribute. -->
 | 
			
		||||
      <basedn realm='company'>o=Company.com</basedn>
 | 
			
		||||
      <basedn>o=Example Corp.</basedn>
 | 
			
		||||
    </ldap>
 | 
			
		||||
    <!-- if you want to configure more than one LDAP server
 | 
			
		||||
         create ldap1, ldap2 etc. sections
 | 
			
		||||
    <ldap1>
 | 
			
		||||
 | 
			
		||||
    </ldap1>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Pipe module configuration -->
 | 
			
		||||
    <pipe>
 | 
			
		||||
      <!-- Program to execute -->
 | 
			
		||||
      <exec>/usr/bin/pipe-auth.pl</exec>
 | 
			
		||||
    </pipe>
 | 
			
		||||
 | 
			
		||||
  </authreg>
 | 
			
		||||
 | 
			
		||||
</c2s>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
@ -1,18 +0,0 @@
 | 
			
		||||
#
 | 
			
		||||
# jabberd config file
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
#   This file tells the jabberd wrapper what programs to launch,
 | 
			
		||||
# and the config files to launch them with.  If the config file
 | 
			
		||||
# is left out, then the system default will be used.
 | 
			
		||||
#
 | 
			
		||||
#   To run multiple Session Managers, just list them all seperatly
 | 
			
		||||
# and provide the path to the appropriate config files.
 | 
			
		||||
#
 | 
			
		||||
# program   [ path to config file ]
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
jabberd2-router      /etc/jabber/router.xml
 | 
			
		||||
jabberd2-sm          /etc/jabber/sm.xml
 | 
			
		||||
jabberd2-s2s         /etc/jabber/s2s.xml
 | 
			
		||||
jabberd2-c2s         /etc/jabber/c2s.xml
 | 
			
		||||
@ -1,18 +0,0 @@
 | 
			
		||||
#
 | 
			
		||||
# jabberd config file
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
#   This file tells the jabberd wrapper what programs to launch,
 | 
			
		||||
# and the config files to launch them with.  If the config file
 | 
			
		||||
# is left out, then the system default will be used.
 | 
			
		||||
#
 | 
			
		||||
#   To run multiple Session Managers, just list them all seperatly
 | 
			
		||||
# and provide the path to the appropriate config files.
 | 
			
		||||
#
 | 
			
		||||
# program   [ path to config file ]
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
jabberd2-router      /etc/jabber/router.xml
 | 
			
		||||
jabberd2-sm          /etc/jabber/sm.xml
 | 
			
		||||
jabberd2-s2s         /etc/jabber/s2s.xml
 | 
			
		||||
jabberd2-c2s         /etc/jabber/c2s.xml
 | 
			
		||||
@ -1,61 +0,0 @@
 | 
			
		||||
<jcr>
 | 
			
		||||
  <!-- 
 | 
			
		||||
       This is a config file for a copy of MU-Conference, compiled against 
 | 
			
		||||
       the Jabber Component Runtime (JCR). This is the same file that I use
 | 
			
		||||
       to connect to my development server, running jabberd2 beta2 
 | 
			
		||||
 | 
			
		||||
       In order to connect to a jabberd v1.4 server, simply change the 
 | 
			
		||||
       <name> value to muclinker, and make sure the muclinker section is in
 | 
			
		||||
       your main jabber.xml file, as per the MU-Conference README file.
 | 
			
		||||
  -->
 | 
			
		||||
 | 
			
		||||
  <name>conference.localhost</name> <!-- the jid of your component -->
 | 
			
		||||
  <host>conference.localhost</host> <!-- this should be the same as above -->
 | 
			
		||||
  <ip>localhost</ip> <!-- adress of the jabber server -->
 | 
			
		||||
  <port>5347</port>  <!-- port used to connect the service to the jabber server -->
 | 
			
		||||
  <secret>secret</secret> <!-- secret shared with the jabber server -->
 | 
			
		||||
 | 
			
		||||
  <spool>/var/spool/jabber/mu-conference</spool> <!-- directory containing the rooms data -->
 | 
			
		||||
  <logdir>/var/log/jabber</logdir> <!-- directory containing the debug log (the file is called mu-conference.log) -->
 | 
			
		||||
  <pidfile>/var/run/jabber/mu-conference.pid</pidfile> <!-- file that will contain the PID of the process -->
 | 
			
		||||
  
 | 
			
		||||
  <!--   <logstderr/> --> <!-- uncomment to also send log to stderr -->
 | 
			
		||||
  
 | 
			
		||||
  <loglevel>124</loglevel> <!-- log verbosity, 255 for very verbose, 0 for quiet -->
 | 
			
		||||
 | 
			
		||||
    <conference xmlns="jabber:config:conference">
 | 
			
		||||
      <public/> <!-- rooms are public when created, comment to make them private by default -->
 | 
			
		||||
      <!-- the vCard section contains the vCard of the service -->
 | 
			
		||||
      <vCard>
 | 
			
		||||
        <FN>Public Chatrooms</FN>
 | 
			
		||||
        <DESC>This service is for public chatrooms.</DESC>
 | 
			
		||||
        <URL>http://foo.bar/</URL>
 | 
			
		||||
      </vCard>
 | 
			
		||||
      <history>40</history> <!-- maximum numbers of history lines send when joining a room -->
 | 
			
		||||
      <logdir>/var/log/jabber/mu-conference/</logdir> <!-- where to store the room logs, comment to disable logging -->
 | 
			
		||||
      <!--logsubdirs/--> <!-- uncomment to stores the room logs in subdirs (for example 2007/08/02) -->
 | 
			
		||||
      <stylesheet>/etc/jabber/style.css</stylesheet> <!--URL of the log stylesheet -->
 | 
			
		||||
      <!-- default text to send to legacy clients, will also be used in the logs -->
 | 
			
		||||
      <notice>
 | 
			
		||||
        <join>has become available</join>
 | 
			
		||||
        <leave>has left</leave>
 | 
			
		||||
        <rename>is now known as</rename>
 | 
			
		||||
      </notice>
 | 
			
		||||
      <!-- lists of admins of the service, add a <user/> tag by admin -->
 | 
			
		||||
      <sadmin>
 | 
			
		||||
        <user>admin@localhost</user>
 | 
			
		||||
      </sadmin>
 | 
			
		||||
      <!-- <dynamic/> --> <!-- when uncommented, only dynamic rooms can be created -->
 | 
			
		||||
      <!-- <persistent/> --> <!-- persistent rooms will be created, overide <dynamic/> -->
 | 
			
		||||
      <!-- <locknicks/> --> <!-- enforce the user nickname to the user part of his jid -->
 | 
			
		||||
      <!-- <roomlock/> --> <!-- uncomment to allow only admins to create rooms -->
 | 
			
		||||
      <!-- <hideempty/> --> <!-- uncomment to hide rooms with no participants -->
 | 
			
		||||
      <!-- configuration of MySQL, only used if the MySQL exports is activated, see README.sql -->
 | 
			
		||||
      <!--<mysql>
 | 
			
		||||
        <user>root</user>
 | 
			
		||||
        <pass/>
 | 
			
		||||
        <database>chat</database>
 | 
			
		||||
        <host>localhost</host>
 | 
			
		||||
      </mysql>-->
 | 
			
		||||
    </conference>
 | 
			
		||||
</jcr>
 | 
			
		||||
@ -1,47 +0,0 @@
 | 
			
		||||
<!-- This is the router filter ruleset.
 | 
			
		||||
     It allows for finegrained routing control.
 | 
			
		||||
 | 
			
		||||
     to, from - wildmat patterns
 | 
			
		||||
                absent attribute matches absence of attribute
 | 
			
		||||
                "*" matches any value of attribute
 | 
			
		||||
     what     - XPath like query
 | 
			
		||||
     redirect - send packet to given JID instead original recipient
 | 
			
		||||
     error    - none given means allow, if given means deny
 | 
			
		||||
                this is an XMPP RFC defined error condition
 | 
			
		||||
     log      - if set, the matched packets will be logged in router log
 | 
			
		||||
 | 
			
		||||
     Rules are matched in order of apperance. First match is efffective.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<filter>
 | 
			
		||||
  <!-- first allow any routing without to or from - it's internal. -->
 | 
			
		||||
  <!--
 | 
			
		||||
  <rule/>
 | 
			
		||||
  <rule from="*"/>
 | 
			
		||||
  <rule to="*"/>
 | 
			
		||||
  -->
 | 
			
		||||
 | 
			
		||||
  <!-- create simple alias -->
 | 
			
		||||
  <!-- <rule from="*" to="god@example.org" redirect="admin@example.org"/> -->
 | 
			
		||||
 | 
			
		||||
  <!-- don't allow msn registrations, but... -->
 | 
			
		||||
  <!-- <rule from="dearhart@example.org" to="msn.example.org"/> -->
 | 
			
		||||
  <!-- <rule error="not-allowed" from="*" to="msn.example.org" what="iq/query?xmlns=jabber:iq:register" log="yes"/> -->
 | 
			
		||||
 | 
			
		||||
  <!-- this user should not talk with evil -->
 | 
			
		||||
  <!-- <rule error="not-allowed" from="user@example.org" to="*@evil.gov" what="message"/> -->
 | 
			
		||||
 | 
			
		||||
  <!-- I don't want evil to read my data -->
 | 
			
		||||
  <!-- <rule error="forbidden" from="*@evil.gov" to="admin@example.org" what="iq/vCard" log="on"/> -->
 | 
			
		||||
 | 
			
		||||
  <!-- and finally, let's blind the world with some exceptions -->
 | 
			
		||||
  <!--
 | 
			
		||||
  <rule from="*@goodguys.org" to="*" what="presence"/>
 | 
			
		||||
  <rule from="admin@example.org" to="*" what="presence"/>
 | 
			
		||||
  <rule error="not-acceptable" from="*" to="*" what="presence"/>
 | 
			
		||||
  -->
 | 
			
		||||
 | 
			
		||||
</filter>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
@ -1,47 +0,0 @@
 | 
			
		||||
<!-- This is the router filter ruleset.
 | 
			
		||||
     It allows for finegrained routing control.
 | 
			
		||||
 | 
			
		||||
     to, from - wildmat patterns
 | 
			
		||||
                absent attribute matches absence of attribute
 | 
			
		||||
                "*" matches any value of attribute
 | 
			
		||||
     what     - XPath like query
 | 
			
		||||
     redirect - send packet to given JID instead original recipient
 | 
			
		||||
     error    - none given means allow, if given means deny
 | 
			
		||||
                this is an XMPP RFC defined error condition
 | 
			
		||||
     log      - if set, the matched packets will be logged in router log
 | 
			
		||||
 | 
			
		||||
     Rules are matched in order of apperance. First match is efffective.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<filter>
 | 
			
		||||
  <!-- first allow any routing without to or from - it's internal. -->
 | 
			
		||||
  <!--
 | 
			
		||||
  <rule/>
 | 
			
		||||
  <rule from="*"/>
 | 
			
		||||
  <rule to="*"/>
 | 
			
		||||
  -->
 | 
			
		||||
 | 
			
		||||
  <!-- create simple alias -->
 | 
			
		||||
  <!-- <rule from="*" to="god@example.org" redirect="admin@example.org"/> -->
 | 
			
		||||
 | 
			
		||||
  <!-- don't allow msn registrations, but... -->
 | 
			
		||||
  <!-- <rule from="dearhart@example.org" to="msn.example.org"/> -->
 | 
			
		||||
  <!-- <rule error="not-allowed" from="*" to="msn.example.org" what="iq/query?xmlns=jabber:iq:register" log="yes"/> -->
 | 
			
		||||
 | 
			
		||||
  <!-- this user should not talk with evil -->
 | 
			
		||||
  <!-- <rule error="not-allowed" from="user@example.org" to="*@evil.gov" what="message"/> -->
 | 
			
		||||
 | 
			
		||||
  <!-- I don't want evil to read my data -->
 | 
			
		||||
  <!-- <rule error="forbidden" from="*@evil.gov" to="admin@example.org" what="iq/vCard" log="on"/> -->
 | 
			
		||||
 | 
			
		||||
  <!-- and finally, let's blind the world with some exceptions -->
 | 
			
		||||
  <!--
 | 
			
		||||
  <rule from="*@goodguys.org" to="*" what="presence"/>
 | 
			
		||||
  <rule from="admin@example.org" to="*" what="presence"/>
 | 
			
		||||
  <rule error="not-acceptable" from="*" to="*" what="presence"/>
 | 
			
		||||
  -->
 | 
			
		||||
 | 
			
		||||
</filter>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
@ -1,11 +0,0 @@
 | 
			
		||||
<!-- This is the list of known router users, and their authentication
 | 
			
		||||
     secrets. Access control is done via the settings in router.xml -->
 | 
			
		||||
<users>
 | 
			
		||||
  <user>
 | 
			
		||||
    <name>jabberd</name>
 | 
			
		||||
    <secret>secret</secret>
 | 
			
		||||
  </user>
 | 
			
		||||
</users>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
@ -1,11 +0,0 @@
 | 
			
		||||
<!-- This is the list of known router users, and their authentication
 | 
			
		||||
     secrets. Access control is done via the settings in router.xml -->
 | 
			
		||||
<users>
 | 
			
		||||
  <user>
 | 
			
		||||
    <name>jabberd</name>
 | 
			
		||||
    <secret>secret</secret>
 | 
			
		||||
  </user>
 | 
			
		||||
</users>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
@ -1,215 +0,0 @@
 | 
			
		||||
<!-- Router configuration -->
 | 
			
		||||
<router>
 | 
			
		||||
  <!-- ID of the router on the network (default: router) -->
 | 
			
		||||
  <id>router</id>
 | 
			
		||||
 | 
			
		||||
  <!-- The process ID file. Comment this out if you don't need to know
 | 
			
		||||
       the process ID from outside the process (eg for control scripts) -->
 | 
			
		||||
  <pidfile>/var/run/jabber/jabberd2-router.pid</pidfile>
 | 
			
		||||
 | 
			
		||||
  <!-- Log configuration - type is "syslog", "file" or "stdout" -->
 | 
			
		||||
  <log type='syslog'>
 | 
			
		||||
    <!-- If logging to syslog, this is the log ident -->
 | 
			
		||||
    <ident>jabberd/router</ident>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to syslog, this is the log facility
 | 
			
		||||
         (local0 - local7)                        [default: local3] -->
 | 
			
		||||
    <facility>local3</facility>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to file, this is the filename of the logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <file>/var/log/jabber/router.log</file>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Filename of the debug logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <debug>/var/log/jabber/debug-${id}.log</debug>
 | 
			
		||||
    -->
 | 
			
		||||
  </log>
 | 
			
		||||
 | 
			
		||||
  <!-- Local network configuration -->
 | 
			
		||||
  <local>
 | 
			
		||||
    <!-- IP address to bind to (default: 0.0.0.0) -->
 | 
			
		||||
    <ip>0.0.0.0</ip>
 | 
			
		||||
 | 
			
		||||
    <!-- Port to bind to (default: 5347) -->
 | 
			
		||||
    <port>5347</port>
 | 
			
		||||
 | 
			
		||||
    <!-- File containing the user table. This is where the router gets
 | 
			
		||||
         its component and secret information from for component
 | 
			
		||||
         authentication.-->
 | 
			
		||||
    <users>/etc/jabber/router-users.xml</users>
 | 
			
		||||
 | 
			
		||||
    <!-- Shared secret used to identify XEP-0114 components (that is,
 | 
			
		||||
         "jabber:component:accept" components that authenticate using
 | 
			
		||||
         the Jabber Component Protocol's "handshake", for example
 | 
			
		||||
         mu-conference). If this is commented out, support for XEP-0114
 | 
			
		||||
         components will be disabled. -->
 | 
			
		||||
    <secret>secret</secret>
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key for client
 | 
			
		||||
         connections. From SSL_CTX_use_certificate_chain_file(3):
 | 
			
		||||
         "The certificates must be in PEM format and must be sorted
 | 
			
		||||
         starting with the subject's certificate (actual client or
 | 
			
		||||
         server certificate), followed by intermediate CA certificates
 | 
			
		||||
         if applicable, and ending at the highest level (root) CA"
 | 
			
		||||
         (the latter one being optional).
 | 
			
		||||
         If this is commented out, connecting components will not be able
 | 
			
		||||
         to request an SSL-encrypted channel. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
  </local>
 | 
			
		||||
 | 
			
		||||
  <!-- Timed checks -->
 | 
			
		||||
  <check>
 | 
			
		||||
    <!-- Interval between checks.
 | 
			
		||||
 | 
			
		||||
         Checks will be run every n seconds.
 | 
			
		||||
 | 
			
		||||
         0 disables all checks.                       (default: 60) -->
 | 
			
		||||
    <interval>60</interval>
 | 
			
		||||
 | 
			
		||||
    <!-- Keepalives.
 | 
			
		||||
         Connections that have not been used for longer than
 | 
			
		||||
         this many seconds will have a single whitespace character sent
 | 
			
		||||
         to them. This will force the TCP connection to be closed if
 | 
			
		||||
         they have disconnected without us knowing about it.
 | 
			
		||||
         0 disables keepalives.                       (default: 0) -->
 | 
			
		||||
     <keepalive>0</keepalive>
 | 
			
		||||
 | 
			
		||||
  </check>
 | 
			
		||||
 | 
			
		||||
  <!-- input/output settings -->
 | 
			
		||||
  <io>
 | 
			
		||||
    <!-- Maximum number of file descriptors. Note that the number of
 | 
			
		||||
         possible connections will be slightly less than this, because
 | 
			
		||||
         the router itself can use up four on its own. If the supply of
 | 
			
		||||
         file descriptors is exhausted, new incoming connections will be
 | 
			
		||||
         denied.
 | 
			
		||||
 | 
			
		||||
         These file descriptors are really only used when a component
 | 
			
		||||
         connects to the router. So unless you have a lot of components
 | 
			
		||||
         for some reason then you probably don't need to change this
 | 
			
		||||
         value.
 | 
			
		||||
 | 
			
		||||
         (default: 1024) -->
 | 
			
		||||
    <max_fds>1024</max_fds>
 | 
			
		||||
 | 
			
		||||
    <!-- Rate limiting -->
 | 
			
		||||
    <limits>
 | 
			
		||||
      <!-- Maximum bytes per second - if more than X bytes are sent in Y
 | 
			
		||||
           seconds, connection is throttled for Z seconds. The format
 | 
			
		||||
           is:
 | 
			
		||||
 | 
			
		||||
             <bytes seconds='Y' throttle='Z'>X</bytes>
 | 
			
		||||
 | 
			
		||||
           Default Y is 1, default Z is 5. set X to 0 to disable. -->
 | 
			
		||||
      <bytes>0</bytes>
 | 
			
		||||
 | 
			
		||||
      <!-- Maximum connects per second - if more than X connects are
 | 
			
		||||
           attempted from a single IP in Y seconds, that IP is throttled
 | 
			
		||||
           for Z seconds. The format is:
 | 
			
		||||
 | 
			
		||||
             <connects seconds='Y' throttle='Z'>X</connects>
 | 
			
		||||
 | 
			
		||||
           Default Y is 5, default Z is 5. set X to 0 to disable. -->
 | 
			
		||||
      <connects>0</connects>
 | 
			
		||||
    </limits>
 | 
			
		||||
 | 
			
		||||
    <!-- IP-based access controls. If a connection IP matches an allow
 | 
			
		||||
         rule, the connection will be accepted. If a connecting IP
 | 
			
		||||
         matches a deny rule, the connection will be refused. If the
 | 
			
		||||
         connecting IP does not match any rules, or it matches both an
 | 
			
		||||
         allow and a deny rule, the contents of the <order/> option
 | 
			
		||||
         determines what happens. -->
 | 
			
		||||
    <access>
 | 
			
		||||
      <!-- Rule check order (default: allow,deny)
 | 
			
		||||
 | 
			
		||||
           allow,deny - Check allow rules, then check deny rules.
 | 
			
		||||
                        Allow by default.
 | 
			
		||||
           deny,allow - Check deny rules, then check allow rules.
 | 
			
		||||
                        Deny by default. -->
 | 
			
		||||
      <order>allow,deny</order>
 | 
			
		||||
 | 
			
		||||
      <!-- Allow a network. If the mask isn't specified, it defaults to
 | 
			
		||||
           255.255.255.255 (ie allow onle the specified IP) -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <allow ip='127.0.0.0' mask='255.0.0.0'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Allow a single host -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <allow ip='12.34.56.78'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Deny a network or a host -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <deny ip='127.0.0.1' mask='255.0.0.0'/>
 | 
			
		||||
      <deny ip='87.65.43.21'/>
 | 
			
		||||
      -->
 | 
			
		||||
    </access>
 | 
			
		||||
  </io>
 | 
			
		||||
 | 
			
		||||
  <!-- Name aliases.
 | 
			
		||||
 | 
			
		||||
       Packets destined for the domain specified in the "name" attribute
 | 
			
		||||
       will be routed to the component that has currently bound the name
 | 
			
		||||
       in the "target" attribute (assuming it is online).
 | 
			
		||||
 | 
			
		||||
       This is usually only required for some kinds of legacy
 | 
			
		||||
       components (particularly jabberd 1.4 "uplink" components) -->
 | 
			
		||||
  <aliases>
 | 
			
		||||
    <!-- Example for a MUC component running from a jabberd 1.4 uplink -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <alias name='conference.domain.com' target='muclinker'/>
 | 
			
		||||
    -->
 | 
			
		||||
  </aliases>
 | 
			
		||||
 | 
			
		||||
  <!-- Access control information -->
 | 
			
		||||
  <aci>
 | 
			
		||||
    <!-- The usernames listed here will get access to all restricted
 | 
			
		||||
         functions, regardless of restrictions further down -->
 | 
			
		||||
    <acl type='all'>
 | 
			
		||||
      <user>jabberd</user>
 | 
			
		||||
    </acl>
 | 
			
		||||
 | 
			
		||||
    <!-- These users can bind names other than their username -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='bind'>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- These users can bind a name as a default route -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='default-route'>
 | 
			
		||||
      <user>s2s</user>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- These users can elect to receive all packets that pass through the router -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='log'>
 | 
			
		||||
      <user>msglog</user>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing packet filter rules.
 | 
			
		||||
         May be used for fine grained packet routing control. -->
 | 
			
		||||
    <filter>/etc/jabber/router-filter.xml</filter>
 | 
			
		||||
 | 
			
		||||
  </aci>
 | 
			
		||||
 | 
			
		||||
  <!-- Simple message logging to flat file
 | 
			
		||||
       Remove <enabled/> tag to disable logging -->
 | 
			
		||||
  <!--
 | 
			
		||||
  <message_logging>
 | 
			
		||||
    <enabled/>
 | 
			
		||||
    <file>filename</file>
 | 
			
		||||
  </message_logging>
 | 
			
		||||
  -->
 | 
			
		||||
 | 
			
		||||
</router>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
@ -1,215 +0,0 @@
 | 
			
		||||
<!-- Router configuration -->
 | 
			
		||||
<router>
 | 
			
		||||
  <!-- ID of the router on the network (default: router) -->
 | 
			
		||||
  <id>router</id>
 | 
			
		||||
 | 
			
		||||
  <!-- The process ID file. Comment this out if you don't need to know
 | 
			
		||||
       the process ID from outside the process (eg for control scripts) -->
 | 
			
		||||
  <pidfile>/var/run/jabber/jabberd2-router.pid</pidfile>
 | 
			
		||||
 | 
			
		||||
  <!-- Log configuration - type is "syslog", "file" or "stdout" -->
 | 
			
		||||
  <log type='syslog'>
 | 
			
		||||
    <!-- If logging to syslog, this is the log ident -->
 | 
			
		||||
    <ident>jabberd/router</ident>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to syslog, this is the log facility
 | 
			
		||||
         (local0 - local7)                        [default: local3] -->
 | 
			
		||||
    <facility>local3</facility>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to file, this is the filename of the logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <file>/var/log/jabber/router.log</file>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Filename of the debug logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <debug>/var/log/jabber/debug-${id}.log</debug>
 | 
			
		||||
    -->
 | 
			
		||||
  </log>
 | 
			
		||||
 | 
			
		||||
  <!-- Local network configuration -->
 | 
			
		||||
  <local>
 | 
			
		||||
    <!-- IP address to bind to (default: 0.0.0.0) -->
 | 
			
		||||
    <ip>0.0.0.0</ip>
 | 
			
		||||
 | 
			
		||||
    <!-- Port to bind to (default: 5347) -->
 | 
			
		||||
    <port>5347</port>
 | 
			
		||||
 | 
			
		||||
    <!-- File containing the user table. This is where the router gets
 | 
			
		||||
         its component and secret information from for component
 | 
			
		||||
         authentication.-->
 | 
			
		||||
    <users>/etc/jabber/router-users.xml</users>
 | 
			
		||||
 | 
			
		||||
    <!-- Shared secret used to identify XEP-0114 components (that is,
 | 
			
		||||
         "jabber:component:accept" components that authenticate using
 | 
			
		||||
         the Jabber Component Protocol's "handshake", for example
 | 
			
		||||
         mu-conference). If this is commented out, support for XEP-0114
 | 
			
		||||
         components will be disabled. -->
 | 
			
		||||
    <secret>secret</secret>
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key for client
 | 
			
		||||
         connections. From SSL_CTX_use_certificate_chain_file(3):
 | 
			
		||||
         "The certificates must be in PEM format and must be sorted
 | 
			
		||||
         starting with the subject's certificate (actual client or
 | 
			
		||||
         server certificate), followed by intermediate CA certificates
 | 
			
		||||
         if applicable, and ending at the highest level (root) CA"
 | 
			
		||||
         (the latter one being optional).
 | 
			
		||||
         If this is commented out, connecting components will not be able
 | 
			
		||||
         to request an SSL-encrypted channel. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
  </local>
 | 
			
		||||
 | 
			
		||||
  <!-- Timed checks -->
 | 
			
		||||
  <check>
 | 
			
		||||
    <!-- Interval between checks.
 | 
			
		||||
 | 
			
		||||
         Checks will be run every n seconds.
 | 
			
		||||
 | 
			
		||||
         0 disables all checks.                       (default: 60) -->
 | 
			
		||||
    <interval>60</interval>
 | 
			
		||||
 | 
			
		||||
    <!-- Keepalives.
 | 
			
		||||
         Connections that have not been used for longer than
 | 
			
		||||
         this many seconds will have a single whitespace character sent
 | 
			
		||||
         to them. This will force the TCP connection to be closed if
 | 
			
		||||
         they have disconnected without us knowing about it.
 | 
			
		||||
         0 disables keepalives.                       (default: 0) -->
 | 
			
		||||
     <keepalive>0</keepalive>
 | 
			
		||||
 | 
			
		||||
  </check>
 | 
			
		||||
 | 
			
		||||
  <!-- input/output settings -->
 | 
			
		||||
  <io>
 | 
			
		||||
    <!-- Maximum number of file descriptors. Note that the number of
 | 
			
		||||
         possible connections will be slightly less than this, because
 | 
			
		||||
         the router itself can use up four on its own. If the supply of
 | 
			
		||||
         file descriptors is exhausted, new incoming connections will be
 | 
			
		||||
         denied.
 | 
			
		||||
 | 
			
		||||
         These file descriptors are really only used when a component
 | 
			
		||||
         connects to the router. So unless you have a lot of components
 | 
			
		||||
         for some reason then you probably don't need to change this
 | 
			
		||||
         value.
 | 
			
		||||
 | 
			
		||||
         (default: 1024) -->
 | 
			
		||||
    <max_fds>1024</max_fds>
 | 
			
		||||
 | 
			
		||||
    <!-- Rate limiting -->
 | 
			
		||||
    <limits>
 | 
			
		||||
      <!-- Maximum bytes per second - if more than X bytes are sent in Y
 | 
			
		||||
           seconds, connection is throttled for Z seconds. The format
 | 
			
		||||
           is:
 | 
			
		||||
 | 
			
		||||
             <bytes seconds='Y' throttle='Z'>X</bytes>
 | 
			
		||||
 | 
			
		||||
           Default Y is 1, default Z is 5. set X to 0 to disable. -->
 | 
			
		||||
      <bytes>0</bytes>
 | 
			
		||||
 | 
			
		||||
      <!-- Maximum connects per second - if more than X connects are
 | 
			
		||||
           attempted from a single IP in Y seconds, that IP is throttled
 | 
			
		||||
           for Z seconds. The format is:
 | 
			
		||||
 | 
			
		||||
             <connects seconds='Y' throttle='Z'>X</connects>
 | 
			
		||||
 | 
			
		||||
           Default Y is 5, default Z is 5. set X to 0 to disable. -->
 | 
			
		||||
      <connects>0</connects>
 | 
			
		||||
    </limits>
 | 
			
		||||
 | 
			
		||||
    <!-- IP-based access controls. If a connection IP matches an allow
 | 
			
		||||
         rule, the connection will be accepted. If a connecting IP
 | 
			
		||||
         matches a deny rule, the connection will be refused. If the
 | 
			
		||||
         connecting IP does not match any rules, or it matches both an
 | 
			
		||||
         allow and a deny rule, the contents of the <order/> option
 | 
			
		||||
         determines what happens. -->
 | 
			
		||||
    <access>
 | 
			
		||||
      <!-- Rule check order (default: allow,deny)
 | 
			
		||||
 | 
			
		||||
           allow,deny - Check allow rules, then check deny rules.
 | 
			
		||||
                        Allow by default.
 | 
			
		||||
           deny,allow - Check deny rules, then check allow rules.
 | 
			
		||||
                        Deny by default. -->
 | 
			
		||||
      <order>allow,deny</order>
 | 
			
		||||
 | 
			
		||||
      <!-- Allow a network. If the mask isn't specified, it defaults to
 | 
			
		||||
           255.255.255.255 (ie allow onle the specified IP) -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <allow ip='127.0.0.0' mask='255.0.0.0'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Allow a single host -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <allow ip='12.34.56.78'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Deny a network or a host -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <deny ip='127.0.0.1' mask='255.0.0.0'/>
 | 
			
		||||
      <deny ip='87.65.43.21'/>
 | 
			
		||||
      -->
 | 
			
		||||
    </access>
 | 
			
		||||
  </io>
 | 
			
		||||
 | 
			
		||||
  <!-- Name aliases.
 | 
			
		||||
 | 
			
		||||
       Packets destined for the domain specified in the "name" attribute
 | 
			
		||||
       will be routed to the component that has currently bound the name
 | 
			
		||||
       in the "target" attribute (assuming it is online).
 | 
			
		||||
 | 
			
		||||
       This is usually only required for some kinds of legacy
 | 
			
		||||
       components (particularly jabberd 1.4 "uplink" components) -->
 | 
			
		||||
  <aliases>
 | 
			
		||||
    <!-- Example for a MUC component running from a jabberd 1.4 uplink -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <alias name='conference.domain.com' target='muclinker'/>
 | 
			
		||||
    -->
 | 
			
		||||
  </aliases>
 | 
			
		||||
 | 
			
		||||
  <!-- Access control information -->
 | 
			
		||||
  <aci>
 | 
			
		||||
    <!-- The usernames listed here will get access to all restricted
 | 
			
		||||
         functions, regardless of restrictions further down -->
 | 
			
		||||
    <acl type='all'>
 | 
			
		||||
      <user>jabberd</user>
 | 
			
		||||
    </acl>
 | 
			
		||||
 | 
			
		||||
    <!-- These users can bind names other than their username -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='bind'>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- These users can bind a name as a default route -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='default-route'>
 | 
			
		||||
      <user>s2s</user>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- These users can elect to receive all packets that pass through the router -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='log'>
 | 
			
		||||
      <user>msglog</user>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing packet filter rules.
 | 
			
		||||
         May be used for fine grained packet routing control. -->
 | 
			
		||||
    <filter>/etc/jabber/router-filter.xml</filter>
 | 
			
		||||
 | 
			
		||||
  </aci>
 | 
			
		||||
 | 
			
		||||
  <!-- Simple message logging to flat file
 | 
			
		||||
       Remove <enabled/> tag to disable logging -->
 | 
			
		||||
  <!--
 | 
			
		||||
  <message_logging>
 | 
			
		||||
    <enabled/>
 | 
			
		||||
    <file>filename</file>
 | 
			
		||||
  </message_logging>
 | 
			
		||||
  -->
 | 
			
		||||
 | 
			
		||||
</router>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
							
								
								
									
										323
									
								
								jabber/s2s.xml
									
									
									
									
									
								
							
							
						
						
									
										323
									
								
								jabber/s2s.xml
									
									
									
									
									
								
							@ -1,323 +0,0 @@
 | 
			
		||||
<!-- s2s configuration -->
 | 
			
		||||
<s2s>
 | 
			
		||||
  <!-- Our ID on the network (default: s2s) -->
 | 
			
		||||
  <id>s2s</id>
 | 
			
		||||
 | 
			
		||||
  <!-- The process ID file. Comment this out if you don't need to know
 | 
			
		||||
       the process ID from outside the process (eg for control scripts) -->
 | 
			
		||||
  <pidfile>/var/run/jabber/jabberd2-s2s.pid</pidfile>
 | 
			
		||||
 | 
			
		||||
  <!-- Router connection configuration -->
 | 
			
		||||
  <router>
 | 
			
		||||
    <!-- IP/port the router is waiting for connections on -->
 | 
			
		||||
    <ip>127.0.0.1</ip>            <!-- default: 127.0.0.1 -->
 | 
			
		||||
    <port>5347</port>             <!-- default: 5347 -->
 | 
			
		||||
 | 
			
		||||
    <!-- Username/password to authenticate as -->
 | 
			
		||||
    <user>jabberd</user>          <!-- default: jabberd -->
 | 
			
		||||
    <pass>secret</pass>           <!-- default: secret -->
 | 
			
		||||
 | 
			
		||||
    <!-- The router will only allow one component to be the default
 | 
			
		||||
         route (ie the component that receives packets destined for
 | 
			
		||||
         unknown hosts). If you want to run more than one s2s instance,
 | 
			
		||||
         you need to uncomment this so that s2s does not try to become
 | 
			
		||||
         the default route. Note that all outgoing s2s communication
 | 
			
		||||
         will go to the component that is the default route. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <non-default/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key to use when
 | 
			
		||||
         setting up an encrypted channel with the router. From
 | 
			
		||||
         SSL_CTX_use_certificate_chain_file(3): "The certificates must be
 | 
			
		||||
         in PEM format and must be sorted starting with the subject's
 | 
			
		||||
         certificate (actual client or server certificate), followed
 | 
			
		||||
         by intermediate CA certificates if applicable, and ending
 | 
			
		||||
         at the highest level (root) CA" (the latter one being optional).
 | 
			
		||||
         If this is commented out, or the file can't be read, no attempt
 | 
			
		||||
         will be made to establish an encrypted channel with the router. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Router connection retry -->
 | 
			
		||||
    <retry>
 | 
			
		||||
      <!-- If the connection to the router can't be established at
 | 
			
		||||
           startup, we should try again this many times before exiting.
 | 
			
		||||
           Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <init>3</init>
 | 
			
		||||
 | 
			
		||||
      <!-- If we lost the connection to the router during normal
 | 
			
		||||
           operation (ie we've successfully connected to the router in
 | 
			
		||||
           the past), we should try to reconnect this many times before
 | 
			
		||||
           exiting. Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <lost>3</lost>
 | 
			
		||||
 | 
			
		||||
      <!-- Sleep for this many seconds before trying attempting a
 | 
			
		||||
           reconnect. [default: 2] -->
 | 
			
		||||
      <sleep>2</sleep>
 | 
			
		||||
    </retry>
 | 
			
		||||
  </router>
 | 
			
		||||
 | 
			
		||||
  <!-- Log configuration - type is "syslog", "file" or "stdout" -->
 | 
			
		||||
  <log type='syslog'>
 | 
			
		||||
    <!-- If logging to syslog, this is the log ident -->
 | 
			
		||||
    <ident>jabberd/s2s</ident>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to syslog, this is the log facility
 | 
			
		||||
         (local0 - local7)                        [default: local3] -->
 | 
			
		||||
    <facility>local3</facility>
 | 
			
		||||
 | 
			
		||||
    <!-- if logging to file, this is the filename of the logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <file>/var/log/jabber/s2s.log</file>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Filename of the debug logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <debug>/var/log/jabber/debug-${id}.log</debug>
 | 
			
		||||
    -->
 | 
			
		||||
  </log>
 | 
			
		||||
 | 
			
		||||
  <!-- Local network configuration -->
 | 
			
		||||
  <local>
 | 
			
		||||
    <!-- IP and port to listen for incoming s2s connections on
 | 
			
		||||
                                           (default: 0.0.0.0, 5269) -->
 | 
			
		||||
    <ip>0.0.0.0</ip>
 | 
			
		||||
    <port>5269</port>
 | 
			
		||||
 | 
			
		||||
    <!-- Multihomed machines (with more than one interface and IP address)
 | 
			
		||||
         need to specify outgoing S2S connections interface/address.
 | 
			
		||||
         If not set, the <ip> section address above is used. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <origins>
 | 
			
		||||
      <ip>1.2.3.4</ip>
 | 
			
		||||
      <ip>fe80::202:b3ff:fe1e:8329</ip>
 | 
			
		||||
    </origins>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Secret used to generate dialback keys. If you have more than
 | 
			
		||||
         one s2s instance configured, make sure that this is the same on
 | 
			
		||||
         all of them. If this is commented out, a random one will be
 | 
			
		||||
         generated. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <secret>secret</secret>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key to use when setting
 | 
			
		||||
         up encrypted s2s connections with other servers (STARTTLS + Dialback).
 | 
			
		||||
         From SSL_CTX_use_certificate_chain_file(3): "The certificates must be
 | 
			
		||||
         in PEM format and must be sorted starting with the subject's
 | 
			
		||||
         certificate (actual client or server certificate), followed
 | 
			
		||||
         by intermediate CA certificates if applicable, and ending
 | 
			
		||||
         at the highest level (root) CA" (the latter one being optional).
 | 
			
		||||
         If this is commented out, or the file can't be read, no attempt will be
 | 
			
		||||
         made to establish encrypted connections with other servers. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- SSL verify mode - see SSL_CTX_set_verify(3), mode parameter -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <verify-mode>7</verify-mode>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an optional SSL certificate chain file for SSL
 | 
			
		||||
         connections. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <cachain>/etc/jabber/cachain.pem</cachain>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
  </local>
 | 
			
		||||
 | 
			
		||||
  <!-- input/output settings -->
 | 
			
		||||
  <io>
 | 
			
		||||
    <!-- Maximum number of file descriptors. Note that the number of
 | 
			
		||||
         possible connections will be slightly less than this, because
 | 
			
		||||
         s2s itself can use some on its own. If the supply of file
 | 
			
		||||
         descriptors is exhausted, new incoming connections will be
 | 
			
		||||
         denied.
 | 
			
		||||
 | 
			
		||||
         These connections are mainly consumed when we make a
 | 
			
		||||
         connection to an external jabber server, or an external jabber
 | 
			
		||||
         server connects to us. If you don't have a lot of users then
 | 
			
		||||
         there's probably no need for s2s to establish connections to
 | 
			
		||||
         external jabber servers and the default value here is probably
 | 
			
		||||
         fine. On the other hand, if you have lots of users with lots
 | 
			
		||||
         of remote buddies in their buddylist then s2s will need to have
 | 
			
		||||
         lots of open connections with other jabber servers and you may
 | 
			
		||||
         need to increase this value.
 | 
			
		||||
 | 
			
		||||
         Note that this value only affects how many file descriptors
 | 
			
		||||
         jabberd is able to handle internally. You may also need to
 | 
			
		||||
         tell your operating system to allow jabberd to use more file
 | 
			
		||||
         descriptors. On Linux this can be done using ulimit -n or by
 | 
			
		||||
         changing the value of /proc/sys/fd/file-max.
 | 
			
		||||
 | 
			
		||||
         (default: 1024) -->
 | 
			
		||||
    <max_fds>1024</max_fds>
 | 
			
		||||
 | 
			
		||||
    <!-- Rate limiting -->
 | 
			
		||||
    <limits>
 | 
			
		||||
      <!-- Maximum stanza size - if more than given number of bytes
 | 
			
		||||
           are read in one incoming stanza, the stream is closed
 | 
			
		||||
	   with policy-violation error.
 | 
			
		||||
 | 
			
		||||
           Set to 0 to disable.
 | 
			
		||||
           Values less than 16384 might not work. -->
 | 
			
		||||
      <stanzasize>65535</stanzasize>
 | 
			
		||||
    </limits>
 | 
			
		||||
 | 
			
		||||
    <!-- Enable XEP-0138: Stream Compression -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <compression/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
  </io>
 | 
			
		||||
 | 
			
		||||
  <!-- Timed checks -->
 | 
			
		||||
  <check>
 | 
			
		||||
    <!-- Interval between checks.
 | 
			
		||||
 | 
			
		||||
         Checks will be run every n seconds.
 | 
			
		||||
 | 
			
		||||
         0 disables all checks except DNS expiry.     (default: 60) -->
 | 
			
		||||
    <interval>60</interval>
 | 
			
		||||
 | 
			
		||||
    <!-- Queue expiry and connection timeout.
 | 
			
		||||
 | 
			
		||||
         While a connection is being established and dialback is in
 | 
			
		||||
         progress, packets are queued. If a valid connection has not
 | 
			
		||||
         been established within this many seconds, the connection
 | 
			
		||||
         process will be aborted and the queued packets will be
 | 
			
		||||
         bounced. Timeout checks are made for three phases of
 | 
			
		||||
         setting up a route authenticated through dialback:
 | 
			
		||||
         1. Connection establishment to exchange of stream headers
 | 
			
		||||
         2. Initiating dialback (incoming connections)
 | 
			
		||||
         3. Completing dialback (incoming and outgoing)
 | 
			
		||||
 | 
			
		||||
         If stage 1 connection establishment fails and there are
 | 
			
		||||
         alternative hosts for this route that have not failed 
 | 
			
		||||
         recently, they will be tried too before finally giving up.
 | 
			
		||||
 | 
			
		||||
         0 disables queue expiry.                     (default: 60) -->
 | 
			
		||||
    <queue>60</queue>
 | 
			
		||||
 | 
			
		||||
    <!-- Queue retry timeout.
 | 
			
		||||
 | 
			
		||||
         If the queue is older than this timeout, the connection
 | 
			
		||||
         will not be retried even if there are alternative hosts
 | 
			
		||||
         that have not failed recently.
 | 
			
		||||
 | 
			
		||||
         0 disables retry expiry.                    (default: 300) -->
 | 
			
		||||
    <retry>300</retry>
 | 
			
		||||
 | 
			
		||||
    <!-- Idle connection checks.
 | 
			
		||||
 | 
			
		||||
         Connections that have not sent data for longer than this many
 | 
			
		||||
         seconds will be dropped.
 | 
			
		||||
 | 
			
		||||
         0 disables idle timeouts.                 (default: 86400) -->
 | 
			
		||||
    <idle>86400</idle>
 | 
			
		||||
 | 
			
		||||
    <!-- Keepalives.
 | 
			
		||||
 | 
			
		||||
         Outgoing connections that have not been used for longer than
 | 
			
		||||
         this many seconds will have a single whitespace character sent
 | 
			
		||||
         to them. This will force the TCP connection to be closed if
 | 
			
		||||
         they have disconnected without us knowing about it.
 | 
			
		||||
 | 
			
		||||
         0 disables keepalives.                       (default: 0) -->
 | 
			
		||||
    <keepalive>0</keepalive>
 | 
			
		||||
 | 
			
		||||
    <!-- Interval between DNS result/bad host expiry.
 | 
			
		||||
 | 
			
		||||
         0 disables expiry checks.                 (default: 300) -->
 | 
			
		||||
    <dnscache>300</dnscache>
 | 
			
		||||
  </check>
 | 
			
		||||
 | 
			
		||||
  <!-- Statistics -->
 | 
			
		||||
  <stats>
 | 
			
		||||
    <!-- file containing count of packets that went through -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <packet>/var/spool/jabber/stats/s2s.packets</packet>
 | 
			
		||||
    -->
 | 
			
		||||
  </stats>
 | 
			
		||||
 | 
			
		||||
  <lookup>
 | 
			
		||||
     <!-- SRV TCP services will be resolved in the following order. The first
 | 
			
		||||
          one that returns something will be used (ie dereferenced via an
 | 
			
		||||
          A/AAAA lookup). If no SRV records are found, resolver will
 | 
			
		||||
          fallback to a straight A/AAAA lookup. -->
 | 
			
		||||
 | 
			
		||||
    <!-- xmpp-server is mandated by the XMPP spec -->
 | 
			
		||||
    <srv>xmpp-server</srv>
 | 
			
		||||
 | 
			
		||||
    <!-- traditionally, jabber has been used -->
 | 
			
		||||
    <srv>jabber</srv>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    <!-- If this is enabled, the resolver will look up AAAA records as well
 | 
			
		||||
         as A records. This is needed if you want s2s to use IPv6.
 | 
			
		||||
         Connection attempts will be made to all IPv6 hosts before trying
 | 
			
		||||
         IPv4 (see bad host timeout below). -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <resolve-ipv6/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Minimum time that DNS lookup results are cached (overrides max below). -->
 | 
			
		||||
    <min-ttl>30</min-ttl>
 | 
			
		||||
 | 
			
		||||
    <!-- Maximum time that DNS lookup results are cached. -->
 | 
			
		||||
    <max-ttl>86400</max-ttl>
 | 
			
		||||
 | 
			
		||||
    <!-- Time /etc/hosts lookup results are cached for (default: 86400). -->
 | 
			
		||||
    <etc-hosts-ttl>86400</etc-hosts-ttl>
 | 
			
		||||
 | 
			
		||||
    <!-- Minimum time to wait before using hosts that we have failed to
 | 
			
		||||
         establish a connection to (unless there are no alternatives).
 | 
			
		||||
         Do not set this too low - it is required to detect permanent
 | 
			
		||||
         problems like broken IPv6 connectivity in order to attempt IPv4.
 | 
			
		||||
 | 
			
		||||
         0 disables bad host caching.               (default: 3600) -->
 | 
			
		||||
    <bad-host-timeout>3600</bad-host-timeout>
 | 
			
		||||
 | 
			
		||||
    <!-- Disable the DNS cache (negative caching will still be done).
 | 
			
		||||
         This is likely to negatively impact performance while saving
 | 
			
		||||
         a small amount of memory since multiple DNS requests must
 | 
			
		||||
         then be made for every re-connection. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <no-cache/>
 | 
			
		||||
    -->
 | 
			
		||||
  </lookup>
 | 
			
		||||
 | 
			
		||||
  <!-- If this is enabled, domains which share the same host will re-use
 | 
			
		||||
       existing outgoing connections. This is a potential security risk
 | 
			
		||||
       as the SSL connection from the first domain will be re-used too. -->
 | 
			
		||||
  <out-conn-reuse/>
 | 
			
		||||
 | 
			
		||||
  <security>
 | 
			
		||||
    <!-- Require TLS secured S2S connections -->
 | 
			
		||||
    <!--
 | 
			
		||||
      <require_tls/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        Domain whitelisting
 | 
			
		||||
    -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <enable_whitelist/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Domain whitelisting
 | 
			
		||||
         When defined, only whitelisted domains are allowed to connect -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <whitelist_domain>domain1.tld</whitelist_domain>
 | 
			
		||||
    <whitelist_domain>domain2.tld</whitelist_domain>
 | 
			
		||||
    <whitelist_domain>other.tld</whitelist_domain>
 | 
			
		||||
    -->
 | 
			
		||||
  </security>
 | 
			
		||||
</s2s>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
@ -1,323 +0,0 @@
 | 
			
		||||
<!-- s2s configuration -->
 | 
			
		||||
<s2s>
 | 
			
		||||
  <!-- Our ID on the network (default: s2s) -->
 | 
			
		||||
  <id>s2s</id>
 | 
			
		||||
 | 
			
		||||
  <!-- The process ID file. Comment this out if you don't need to know
 | 
			
		||||
       the process ID from outside the process (eg for control scripts) -->
 | 
			
		||||
  <pidfile>/var/run/jabber/jabberd2-s2s.pid</pidfile>
 | 
			
		||||
 | 
			
		||||
  <!-- Router connection configuration -->
 | 
			
		||||
  <router>
 | 
			
		||||
    <!-- IP/port the router is waiting for connections on -->
 | 
			
		||||
    <ip>127.0.0.1</ip>            <!-- default: 127.0.0.1 -->
 | 
			
		||||
    <port>5347</port>             <!-- default: 5347 -->
 | 
			
		||||
 | 
			
		||||
    <!-- Username/password to authenticate as -->
 | 
			
		||||
    <user>jabberd</user>          <!-- default: jabberd -->
 | 
			
		||||
    <pass>secret</pass>           <!-- default: secret -->
 | 
			
		||||
 | 
			
		||||
    <!-- The router will only allow one component to be the default
 | 
			
		||||
         route (ie the component that receives packets destined for
 | 
			
		||||
         unknown hosts). If you want to run more than one s2s instance,
 | 
			
		||||
         you need to uncomment this so that s2s does not try to become
 | 
			
		||||
         the default route. Note that all outgoing s2s communication
 | 
			
		||||
         will go to the component that is the default route. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <non-default/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key to use when
 | 
			
		||||
         setting up an encrypted channel with the router. From
 | 
			
		||||
         SSL_CTX_use_certificate_chain_file(3): "The certificates must be
 | 
			
		||||
         in PEM format and must be sorted starting with the subject's
 | 
			
		||||
         certificate (actual client or server certificate), followed
 | 
			
		||||
         by intermediate CA certificates if applicable, and ending
 | 
			
		||||
         at the highest level (root) CA" (the latter one being optional).
 | 
			
		||||
         If this is commented out, or the file can't be read, no attempt
 | 
			
		||||
         will be made to establish an encrypted channel with the router. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Router connection retry -->
 | 
			
		||||
    <retry>
 | 
			
		||||
      <!-- If the connection to the router can't be established at
 | 
			
		||||
           startup, we should try again this many times before exiting.
 | 
			
		||||
           Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <init>3</init>
 | 
			
		||||
 | 
			
		||||
      <!-- If we lost the connection to the router during normal
 | 
			
		||||
           operation (ie we've successfully connected to the router in
 | 
			
		||||
           the past), we should try to reconnect this many times before
 | 
			
		||||
           exiting. Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <lost>3</lost>
 | 
			
		||||
 | 
			
		||||
      <!-- Sleep for this many seconds before trying attempting a
 | 
			
		||||
           reconnect. [default: 2] -->
 | 
			
		||||
      <sleep>2</sleep>
 | 
			
		||||
    </retry>
 | 
			
		||||
  </router>
 | 
			
		||||
 | 
			
		||||
  <!-- Log configuration - type is "syslog", "file" or "stdout" -->
 | 
			
		||||
  <log type='syslog'>
 | 
			
		||||
    <!-- If logging to syslog, this is the log ident -->
 | 
			
		||||
    <ident>jabberd/s2s</ident>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to syslog, this is the log facility
 | 
			
		||||
         (local0 - local7)                        [default: local3] -->
 | 
			
		||||
    <facility>local3</facility>
 | 
			
		||||
 | 
			
		||||
    <!-- if logging to file, this is the filename of the logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <file>/var/log/jabber/s2s.log</file>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Filename of the debug logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <debug>/var/log/jabber/debug-${id}.log</debug>
 | 
			
		||||
    -->
 | 
			
		||||
  </log>
 | 
			
		||||
 | 
			
		||||
  <!-- Local network configuration -->
 | 
			
		||||
  <local>
 | 
			
		||||
    <!-- IP and port to listen for incoming s2s connections on
 | 
			
		||||
                                           (default: 0.0.0.0, 5269) -->
 | 
			
		||||
    <ip>0.0.0.0</ip>
 | 
			
		||||
    <port>5269</port>
 | 
			
		||||
 | 
			
		||||
    <!-- Multihomed machines (with more than one interface and IP address)
 | 
			
		||||
         need to specify outgoing S2S connections interface/address.
 | 
			
		||||
         If not set, the <ip> section address above is used. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <origins>
 | 
			
		||||
      <ip>1.2.3.4</ip>
 | 
			
		||||
      <ip>fe80::202:b3ff:fe1e:8329</ip>
 | 
			
		||||
    </origins>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Secret used to generate dialback keys. If you have more than
 | 
			
		||||
         one s2s instance configured, make sure that this is the same on
 | 
			
		||||
         all of them. If this is commented out, a random one will be
 | 
			
		||||
         generated. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <secret>secret</secret>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key to use when setting
 | 
			
		||||
         up encrypted s2s connections with other servers (STARTTLS + Dialback).
 | 
			
		||||
         From SSL_CTX_use_certificate_chain_file(3): "The certificates must be
 | 
			
		||||
         in PEM format and must be sorted starting with the subject's
 | 
			
		||||
         certificate (actual client or server certificate), followed
 | 
			
		||||
         by intermediate CA certificates if applicable, and ending
 | 
			
		||||
         at the highest level (root) CA" (the latter one being optional).
 | 
			
		||||
         If this is commented out, or the file can't be read, no attempt will be
 | 
			
		||||
         made to establish encrypted connections with other servers. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- SSL verify mode - see SSL_CTX_set_verify(3), mode parameter -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <verify-mode>7</verify-mode>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an optional SSL certificate chain file for SSL
 | 
			
		||||
         connections. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <cachain>/etc/jabber/cachain.pem</cachain>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
  </local>
 | 
			
		||||
 | 
			
		||||
  <!-- input/output settings -->
 | 
			
		||||
  <io>
 | 
			
		||||
    <!-- Maximum number of file descriptors. Note that the number of
 | 
			
		||||
         possible connections will be slightly less than this, because
 | 
			
		||||
         s2s itself can use some on its own. If the supply of file
 | 
			
		||||
         descriptors is exhausted, new incoming connections will be
 | 
			
		||||
         denied.
 | 
			
		||||
 | 
			
		||||
         These connections are mainly consumed when we make a
 | 
			
		||||
         connection to an external jabber server, or an external jabber
 | 
			
		||||
         server connects to us. If you don't have a lot of users then
 | 
			
		||||
         there's probably no need for s2s to establish connections to
 | 
			
		||||
         external jabber servers and the default value here is probably
 | 
			
		||||
         fine. On the other hand, if you have lots of users with lots
 | 
			
		||||
         of remote buddies in their buddylist then s2s will need to have
 | 
			
		||||
         lots of open connections with other jabber servers and you may
 | 
			
		||||
         need to increase this value.
 | 
			
		||||
 | 
			
		||||
         Note that this value only affects how many file descriptors
 | 
			
		||||
         jabberd is able to handle internally. You may also need to
 | 
			
		||||
         tell your operating system to allow jabberd to use more file
 | 
			
		||||
         descriptors. On Linux this can be done using ulimit -n or by
 | 
			
		||||
         changing the value of /proc/sys/fd/file-max.
 | 
			
		||||
 | 
			
		||||
         (default: 1024) -->
 | 
			
		||||
    <max_fds>1024</max_fds>
 | 
			
		||||
 | 
			
		||||
    <!-- Rate limiting -->
 | 
			
		||||
    <limits>
 | 
			
		||||
      <!-- Maximum stanza size - if more than given number of bytes
 | 
			
		||||
           are read in one incoming stanza, the stream is closed
 | 
			
		||||
	   with policy-violation error.
 | 
			
		||||
 | 
			
		||||
           Set to 0 to disable.
 | 
			
		||||
           Values less than 16384 might not work. -->
 | 
			
		||||
      <stanzasize>65535</stanzasize>
 | 
			
		||||
    </limits>
 | 
			
		||||
 | 
			
		||||
    <!-- Enable XEP-0138: Stream Compression -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <compression/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
  </io>
 | 
			
		||||
 | 
			
		||||
  <!-- Timed checks -->
 | 
			
		||||
  <check>
 | 
			
		||||
    <!-- Interval between checks.
 | 
			
		||||
 | 
			
		||||
         Checks will be run every n seconds.
 | 
			
		||||
 | 
			
		||||
         0 disables all checks except DNS expiry.     (default: 60) -->
 | 
			
		||||
    <interval>60</interval>
 | 
			
		||||
 | 
			
		||||
    <!-- Queue expiry and connection timeout.
 | 
			
		||||
 | 
			
		||||
         While a connection is being established and dialback is in
 | 
			
		||||
         progress, packets are queued. If a valid connection has not
 | 
			
		||||
         been established within this many seconds, the connection
 | 
			
		||||
         process will be aborted and the queued packets will be
 | 
			
		||||
         bounced. Timeout checks are made for three phases of
 | 
			
		||||
         setting up a route authenticated through dialback:
 | 
			
		||||
         1. Connection establishment to exchange of stream headers
 | 
			
		||||
         2. Initiating dialback (incoming connections)
 | 
			
		||||
         3. Completing dialback (incoming and outgoing)
 | 
			
		||||
 | 
			
		||||
         If stage 1 connection establishment fails and there are
 | 
			
		||||
         alternative hosts for this route that have not failed 
 | 
			
		||||
         recently, they will be tried too before finally giving up.
 | 
			
		||||
 | 
			
		||||
         0 disables queue expiry.                     (default: 60) -->
 | 
			
		||||
    <queue>60</queue>
 | 
			
		||||
 | 
			
		||||
    <!-- Queue retry timeout.
 | 
			
		||||
 | 
			
		||||
         If the queue is older than this timeout, the connection
 | 
			
		||||
         will not be retried even if there are alternative hosts
 | 
			
		||||
         that have not failed recently.
 | 
			
		||||
 | 
			
		||||
         0 disables retry expiry.                    (default: 300) -->
 | 
			
		||||
    <retry>300</retry>
 | 
			
		||||
 | 
			
		||||
    <!-- Idle connection checks.
 | 
			
		||||
 | 
			
		||||
         Connections that have not sent data for longer than this many
 | 
			
		||||
         seconds will be dropped.
 | 
			
		||||
 | 
			
		||||
         0 disables idle timeouts.                 (default: 86400) -->
 | 
			
		||||
    <idle>86400</idle>
 | 
			
		||||
 | 
			
		||||
    <!-- Keepalives.
 | 
			
		||||
 | 
			
		||||
         Outgoing connections that have not been used for longer than
 | 
			
		||||
         this many seconds will have a single whitespace character sent
 | 
			
		||||
         to them. This will force the TCP connection to be closed if
 | 
			
		||||
         they have disconnected without us knowing about it.
 | 
			
		||||
 | 
			
		||||
         0 disables keepalives.                       (default: 0) -->
 | 
			
		||||
    <keepalive>0</keepalive>
 | 
			
		||||
 | 
			
		||||
    <!-- Interval between DNS result/bad host expiry.
 | 
			
		||||
 | 
			
		||||
         0 disables expiry checks.                 (default: 300) -->
 | 
			
		||||
    <dnscache>300</dnscache>
 | 
			
		||||
  </check>
 | 
			
		||||
 | 
			
		||||
  <!-- Statistics -->
 | 
			
		||||
  <stats>
 | 
			
		||||
    <!-- file containing count of packets that went through -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <packet>/var/spool/jabber/stats/s2s.packets</packet>
 | 
			
		||||
    -->
 | 
			
		||||
  </stats>
 | 
			
		||||
 | 
			
		||||
  <lookup>
 | 
			
		||||
     <!-- SRV TCP services will be resolved in the following order. The first
 | 
			
		||||
          one that returns something will be used (ie dereferenced via an
 | 
			
		||||
          A/AAAA lookup). If no SRV records are found, resolver will
 | 
			
		||||
          fallback to a straight A/AAAA lookup. -->
 | 
			
		||||
 | 
			
		||||
    <!-- xmpp-server is mandated by the XMPP spec -->
 | 
			
		||||
    <srv>xmpp-server</srv>
 | 
			
		||||
 | 
			
		||||
    <!-- traditionally, jabber has been used -->
 | 
			
		||||
    <srv>jabber</srv>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    <!-- If this is enabled, the resolver will look up AAAA records as well
 | 
			
		||||
         as A records. This is needed if you want s2s to use IPv6.
 | 
			
		||||
         Connection attempts will be made to all IPv6 hosts before trying
 | 
			
		||||
         IPv4 (see bad host timeout below). -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <resolve-ipv6/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Minimum time that DNS lookup results are cached (overrides max below). -->
 | 
			
		||||
    <min-ttl>30</min-ttl>
 | 
			
		||||
 | 
			
		||||
    <!-- Maximum time that DNS lookup results are cached. -->
 | 
			
		||||
    <max-ttl>86400</max-ttl>
 | 
			
		||||
 | 
			
		||||
    <!-- Time /etc/hosts lookup results are cached for (default: 86400). -->
 | 
			
		||||
    <etc-hosts-ttl>86400</etc-hosts-ttl>
 | 
			
		||||
 | 
			
		||||
    <!-- Minimum time to wait before using hosts that we have failed to
 | 
			
		||||
         establish a connection to (unless there are no alternatives).
 | 
			
		||||
         Do not set this too low - it is required to detect permanent
 | 
			
		||||
         problems like broken IPv6 connectivity in order to attempt IPv4.
 | 
			
		||||
 | 
			
		||||
         0 disables bad host caching.               (default: 3600) -->
 | 
			
		||||
    <bad-host-timeout>3600</bad-host-timeout>
 | 
			
		||||
 | 
			
		||||
    <!-- Disable the DNS cache (negative caching will still be done).
 | 
			
		||||
         This is likely to negatively impact performance while saving
 | 
			
		||||
         a small amount of memory since multiple DNS requests must
 | 
			
		||||
         then be made for every re-connection. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <no-cache/>
 | 
			
		||||
    -->
 | 
			
		||||
  </lookup>
 | 
			
		||||
 | 
			
		||||
  <!-- If this is enabled, domains which share the same host will re-use
 | 
			
		||||
       existing outgoing connections. This is a potential security risk
 | 
			
		||||
       as the SSL connection from the first domain will be re-used too. -->
 | 
			
		||||
  <out-conn-reuse/>
 | 
			
		||||
 | 
			
		||||
  <security>
 | 
			
		||||
    <!-- Require TLS secured S2S connections -->
 | 
			
		||||
    <!--
 | 
			
		||||
      <require_tls/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        Domain whitelisting
 | 
			
		||||
    -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <enable_whitelist/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Domain whitelisting
 | 
			
		||||
         When defined, only whitelisted domains are allowed to connect -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <whitelist_domain>domain1.tld</whitelist_domain>
 | 
			
		||||
    <whitelist_domain>domain2.tld</whitelist_domain>
 | 
			
		||||
    <whitelist_domain>other.tld</whitelist_domain>
 | 
			
		||||
    -->
 | 
			
		||||
  </security>
 | 
			
		||||
</s2s>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
							
								
								
									
										811
									
								
								jabber/sm.xml
									
									
									
									
									
								
							
							
						
						
									
										811
									
								
								jabber/sm.xml
									
									
									
									
									
								
							@ -1,811 +0,0 @@
 | 
			
		||||
<!-- Session manager configuration -->
 | 
			
		||||
<sm>
 | 
			
		||||
  <!-- Our ID on the network (default: sm) -->
 | 
			
		||||
  <id>sm</id>
 | 
			
		||||
 | 
			
		||||
  <!-- The process ID file. Comment this out if you don't need to know
 | 
			
		||||
       the process ID from outside the process (eg for control scripts) -->
 | 
			
		||||
  <pidfile>/var/run/jabber/jabberd2-sm.pid</pidfile>
 | 
			
		||||
 | 
			
		||||
  <!-- Router connection configuration -->
 | 
			
		||||
  <router>
 | 
			
		||||
    <!-- IP/port the router is waiting for connections on -->
 | 
			
		||||
    <ip>127.0.0.1</ip>            <!-- default: 127.0.0.1 -->
 | 
			
		||||
    <port>5347</port>             <!-- default: 5347 -->
 | 
			
		||||
 | 
			
		||||
    <!-- Username/password to authenticate as -->
 | 
			
		||||
    <user>jabberd</user>          <!-- default: jabberd -->
 | 
			
		||||
    <pass>secret</pass>           <!-- default: secret -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key to use when
 | 
			
		||||
         setting up an encrypted channel with the router. From
 | 
			
		||||
         SSL_CTX_use_certificate_chain_file(3): "The certificates must be
 | 
			
		||||
         in PEM format and must be sorted starting with the subject's
 | 
			
		||||
         certificate (actual client or server certificate), followed
 | 
			
		||||
         by intermediate CA certificates if applicable, and ending
 | 
			
		||||
         at the highest level (root) CA" (the latter one being optional).
 | 
			
		||||
         If this is commented out, or the file can't be read, no attempt
 | 
			
		||||
         will be made to establish an encrypted channel with the router. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Router connection retry -->
 | 
			
		||||
    <retry>
 | 
			
		||||
      <!-- If the connection to the router can't be established at
 | 
			
		||||
           startup, we should try again this many times before exiting.
 | 
			
		||||
           Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <init>3</init>
 | 
			
		||||
 | 
			
		||||
      <!-- If we lost the connection to the router during normal
 | 
			
		||||
           operation (ie we've successfully connected to the router in
 | 
			
		||||
           the past), we should try to reconnect this many times before
 | 
			
		||||
           exiting. Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <lost>3</lost>
 | 
			
		||||
 | 
			
		||||
      <!-- Sleep for this many seconds before trying attempting a
 | 
			
		||||
           reconnect. [default: 2] -->
 | 
			
		||||
      <sleep>2</sleep>
 | 
			
		||||
    </retry>
 | 
			
		||||
  </router>
 | 
			
		||||
 | 
			
		||||
  <!-- Log configuration - type is "syslog", "file" or "stdout" -->
 | 
			
		||||
  <log type='syslog'>
 | 
			
		||||
    <!-- If logging to syslog, this is the log ident -->
 | 
			
		||||
    <ident>jabberd/sm</ident>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to syslog, this is the log facility
 | 
			
		||||
         (local0 - local7)                        [default: local3] -->
 | 
			
		||||
    <facility>local3</facility>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to file, this is the filename of the logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <file>/var/log/jabber/sm.log</file>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Filename of the debug logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <debug>/var/log/jabber/debug-${id}.log</debug>
 | 
			
		||||
    -->
 | 
			
		||||
  </log>
 | 
			
		||||
 | 
			
		||||
  <!-- Local network configuration -->
 | 
			
		||||
  <local>
 | 
			
		||||
    <!-- Who we identify ourselves as.
 | 
			
		||||
         Users will have this as the domain part of their JID.
 | 
			
		||||
         If you want your server to be accessible from other
 | 
			
		||||
         Jabber servers, this IDs must be FQDN resolvable by DNSes.
 | 
			
		||||
         If not set, the SM id is used. -->
 | 
			
		||||
    <id>localhost.localdomain</id>
 | 
			
		||||
    <!--
 | 
			
		||||
    <id>vhost1.localdomain</id>
 | 
			
		||||
    <id>vhost2.localdomain</id>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
  </local>
 | 
			
		||||
 | 
			
		||||
  <!-- Storage database configuration -->
 | 
			
		||||
  <storage>
 | 
			
		||||
    <!-- Dynamic storage modules path -->
 | 
			
		||||
    <path>/usr/lib64/jabberd</path>
 | 
			
		||||
 | 
			
		||||
    <!-- By default, we use the SQLite driver for all storage -->
 | 
			
		||||
    <driver>db</driver>
 | 
			
		||||
 | 
			
		||||
    <!-- Its also possible to explicitly list alternate drivers for
 | 
			
		||||
         specific data types. -->
 | 
			
		||||
 | 
			
		||||
    <!-- Store vcards in a ldapvcard database instead -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <driver type='vcard'>ldapvcard</driver>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Only ldapvcard driver implements published-roster: -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <driver type='published-roster'>ldapvcard</driver>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Use ldapvcard driver for published-roster-groups.
 | 
			
		||||
         See description in section sm/user/template/mapped-groups.
 | 
			
		||||
         Used by mod_published_roster.
 | 
			
		||||
         See ldapvcard section for options.
 | 
			
		||||
         When resolving group id to group name, it searches for
 | 
			
		||||
         groupsobjectclass objects at groupsdn base using group id
 | 
			
		||||
         (in groupsidattr) as key and returns the first value of 
 | 
			
		||||
         groupattr of first found entry.
 | 
			
		||||
         E.g.. in general case, if group id is "some-dep", and groupsdn
 | 
			
		||||
         is o=org, and class is jabberGroup, it searches for
 | 
			
		||||
         (&(objectClass=jabberGroup)(cn=some-dep)) and returns value of
 | 
			
		||||
         jabberPublishedItem attribute, which may contain textual description.
 | 
			
		||||
         -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <driver type='published-roster-groups'>ldapvcard</driver>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Rate limiting -->
 | 
			
		||||
    <limits>
 | 
			
		||||
      <!-- Maximum queries per second - if more than X queries are sent in Y
 | 
			
		||||
           seconds, connection is throttled for Z seconds. The format
 | 
			
		||||
           is:
 | 
			
		||||
 | 
			
		||||
             <queries seconds='Y' throttle='Z'>X</bytes>
 | 
			
		||||
 | 
			
		||||
           Default Y is 5, default Z is 60. set X to 0 to disable. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <queries>3</queries>
 | 
			
		||||
      -->
 | 
			
		||||
    </limits>
 | 
			
		||||
 | 
			
		||||
    <!-- SQLite driver configuration -->
 | 
			
		||||
    <sqlite>
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>/var/spool/jabber/db/sqlite.db</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Transaction support. If this is commented out, transactions
 | 
			
		||||
           will be disabled. This might make database accesses faster,
 | 
			
		||||
           but data may be lost if jabberd crashes. -->
 | 
			
		||||
      <transactions/>
 | 
			
		||||
 | 
			
		||||
      <!-- SQLite busy-timeout in milliseconds. -->
 | 
			
		||||
      <busy-timeout>2000</busy-timeout>
 | 
			
		||||
    </sqlite>
 | 
			
		||||
 | 
			
		||||
    <!-- MySQL driver configuration -->
 | 
			
		||||
    <mysql>
 | 
			
		||||
      <!-- Database server host and port -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>3306</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
 | 
			
		||||
      <!-- Transaction support. If this is commented out, transactions
 | 
			
		||||
           will be disabled. This might make database accesses faster,
 | 
			
		||||
           but data may be lost if jabberd crashes.
 | 
			
		||||
 | 
			
		||||
           This will need to be disabled if you are using a MySQL
 | 
			
		||||
           earlier than v3.23.xx, as transaction support did not appear
 | 
			
		||||
           until this version. -->
 | 
			
		||||
      <transactions/>
 | 
			
		||||
    </mysql>
 | 
			
		||||
 | 
			
		||||
    <!-- PostgreSQL driver configuration -->
 | 
			
		||||
    <pgsql>
 | 
			
		||||
      <!-- PostgreSQL connection info.
 | 
			
		||||
           For the rest of the options see
 | 
			
		||||
           http://www.postgresql.org/docs/8.0/interactive/libpq.html -->
 | 
			
		||||
      <conninfo>dbname=jabberd2 user=jabberd2 password=secret</conninfo>
 | 
			
		||||
 | 
			
		||||
      <!-- Alternatively you may set connection settings separately.
 | 
			
		||||
           These are used only in absence of 'conninfo' -->
 | 
			
		||||
 | 
			
		||||
      <!-- Database server host and port -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>5432</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database schema -->
 | 
			
		||||
      <schema>public</schema>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
 | 
			
		||||
      <!-- Transaction support. If this is commented out, transactions
 | 
			
		||||
           will be disabled. This might make database accesses faster,
 | 
			
		||||
           but data may be lost if jabberd crashes. -->
 | 
			
		||||
      <transactions/>
 | 
			
		||||
    </pgsql>
 | 
			
		||||
 | 
			
		||||
    <!-- Berkeley DB driver configuration.  This does not support roster
 | 
			
		||||
         maxitems or offline userquota (because the mod_roster
 | 
			
		||||
         implementation does not implement the 'count' callback). -->
 | 
			
		||||
    <db>
 | 
			
		||||
      <!-- Directory to store database files under -->
 | 
			
		||||
      <path>/var/spool/jabber/db</path>
 | 
			
		||||
 | 
			
		||||
      <!-- Synchronize the database to disk after each write. If you
 | 
			
		||||
           disable this, database accesses may be faster, but data may
 | 
			
		||||
           be lost if jabberd crashes. -->
 | 
			
		||||
      <sync/>
 | 
			
		||||
    </db>
 | 
			
		||||
 | 
			
		||||
    <!-- Oracle driver configuration -->
 | 
			
		||||
    <oracle>
 | 
			
		||||
      <!-- Database server host and port. -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>1521</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
    </oracle>
 | 
			
		||||
 | 
			
		||||
    <!-- Filesystem driver configuration -->
 | 
			
		||||
    <fs>
 | 
			
		||||
      <!-- Directory to store database files under. -->
 | 
			
		||||
      <path>/var/spool/jabber/fs</path>
 | 
			
		||||
    </fs>
 | 
			
		||||
 | 
			
		||||
    <!-- LDAPVCARD driver configuration -->
 | 
			
		||||
    <ldapvcard>
 | 
			
		||||
      <!-- LDAP server host and port (default: 389) -->
 | 
			
		||||
      <uri>ldap://localhost/ ldaps://ldap.example.com/</uri>
 | 
			
		||||
      
 | 
			
		||||
      <!-- DN to bind as for searches. If unspecified, the searches
 | 
			
		||||
           will be done anonymously. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <binddn>cn=Directory Manager</binddn>
 | 
			
		||||
      <bindpw>secret</bindpw>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- see authreg.ldapfull in c2s.xml for description. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <type>ad</type>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- LDAP attribute that holds the user ID (default: uid) -->
 | 
			
		||||
      <uidattr>uid</uidattr>
 | 
			
		||||
      <objectclass>posixAccount</objectclass>
 | 
			
		||||
      <pwattr>userPassword</pwattr>
 | 
			
		||||
      <!-- if you use included jabberd.schema use this:
 | 
			
		||||
      <uidattr>jid</uidattr>
 | 
			
		||||
      <objectclass>jabberUser</objectclass>
 | 
			
		||||
      <pwattr>jabberPassword</pwattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Realm to append to uidattr. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <realm>example.org</realm>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- see authreg.ldapfull in c2s.xml for description. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <validattr>valid</validattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- base DN of the tree. You should specify a DN for each
 | 
			
		||||
           authentication realm declared in the <local/> section above,
 | 
			
		||||
           by using the realm attribute. -->
 | 
			
		||||
      <basedn>o=Example Corp.</basedn>
 | 
			
		||||
 | 
			
		||||
      <!-- attribute that holds published group name or id,
 | 
			
		||||
           jabberPublishedGroup if not set -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <groupattr>jabberPublishedGroup</groupattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- this option is helpful if your schema does not have designated
 | 
			
		||||
	       attribute that holds jabber group name
 | 
			
		||||
		   you can use any attribute in <groupattr> i.e. 'distinguishedName'
 | 
			
		||||
		   and then extract a part of it using Regular Expression;
 | 
			
		||||
           first matching () group will be used -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <groupattr_regex>OU=([^,]*),</groupattr_regex>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- boolean attribute that tells whether or not to publish this user
 | 
			
		||||
           jabberPublishedItem by default -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <publishedattr>jabberPublishedItem</publishedattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- If value specified, then keep cache of "published-roster"
 | 
			
		||||
           database, which is used for all users. Cache is renewed when kept more seconds than value
 | 
			
		||||
           specified. Setting this value increases perfomance of publishing
 | 
			
		||||
           roster. If not specified, then we don't keep cache. -->
 | 
			
		||||
      <publishedcachettl>60</publishedcachettl>
 | 
			
		||||
 | 
			
		||||
      <mapped-groups>
 | 
			
		||||
        <!-- If turned on, then mapping of group ids to names with
 | 
			
		||||
             LDAP will works. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <map-groups/>
 | 
			
		||||
        -->
 | 
			
		||||
 | 
			
		||||
        <!-- base for searches for group id to group name mappings -->
 | 
			
		||||
        <basedn>ou=jabbergroups, o=Example Corp.</basedn>
 | 
			
		||||
 | 
			
		||||
        <!-- what objectclass to search, jabberGroup by default -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <objectclass>jabberGroup</objectclass>
 | 
			
		||||
        -->
 | 
			
		||||
 | 
			
		||||
        <!-- what attribute to search, cn by default -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <idattr>cn</idattr>
 | 
			
		||||
        -->
 | 
			
		||||
 | 
			
		||||
        <!-- attribute with text group name, description by default -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <nameattr>description</nameattr>
 | 
			
		||||
        -->
 | 
			
		||||
      </mapped-groups>
 | 
			
		||||
    </ldapvcard>
 | 
			
		||||
  </storage>
 | 
			
		||||
 | 
			
		||||
  <!-- Access control information -->
 | 
			
		||||
  <aci>
 | 
			
		||||
    <!-- The JIDs listed here will get access to all restricted
 | 
			
		||||
         functions, regardless of restrictions further down -->
 | 
			
		||||
    <acl type='all'>
 | 
			
		||||
      <jid>admin@localhost.localdomain</jid>
 | 
			
		||||
    </acl>
 | 
			
		||||
 | 
			
		||||
    <!-- These JIDs can send broadcast messages (announce, motd) -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='broadcast'>
 | 
			
		||||
      <jid>nocstaff1@localhost.localdomain</jid>
 | 
			
		||||
      <jid>nocstaff2@localhost.localdomain</jid>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- These JIDs will receive messages addressed to the sm itself
 | 
			
		||||
         (help requestes and such) -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='messages'>
 | 
			
		||||
      <jid>support@localhost.localdomain</jid>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- These JIDs can discover active user/session information -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='disco'>
 | 
			
		||||
      <jid>webstatus@localhost.localdomain</jid>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
  </aci>
 | 
			
		||||
 | 
			
		||||
  <!-- Module chain configuration
 | 
			
		||||
 | 
			
		||||
       Modules listed in a chain are called in the order specified at
 | 
			
		||||
       the appropriate time for that chain (assuming that the module
 | 
			
		||||
       knows how to work with that chain; otherwise it simply ignores
 | 
			
		||||
       it).
 | 
			
		||||
 | 
			
		||||
       Removing a module from these lists will stop the module being
 | 
			
		||||
       called, even if it's compiled into the server.
 | 
			
		||||
 | 
			
		||||
       Serveral modules have a presence in more than one chain. It is
 | 
			
		||||
       possible to remove a module from one chain but not others, but
 | 
			
		||||
       this may cause strange behaviour. Make sure you know what you're
 | 
			
		||||
       doing. -->
 | 
			
		||||
  <modules>
 | 
			
		||||
    <!-- Dynamic sm modules path -->
 | 
			
		||||
    <path>/usr/lib64/jabberd</path>
 | 
			
		||||
 | 
			
		||||
    <!-- sess-start. The modules in this chain are called when a session
 | 
			
		||||
         is first started (usually on request by c2s as part of the
 | 
			
		||||
         authentication process). This is normally used to load
 | 
			
		||||
         per-session data. -->
 | 
			
		||||
    <chain id='sess-start'>
 | 
			
		||||
      <module>status</module>           <!-- record status information -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- sess-end. The modules in this chain are called just before a
 | 
			
		||||
         session is destroyed (after the client has disconnected). -->
 | 
			
		||||
    <chain id='sess-end'>
 | 
			
		||||
      <module>status</module>           <!-- update status information -->
 | 
			
		||||
      <module>iq-last</module>          <!-- update logout time -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- in-sess. The modules in this chain are called when a packet
 | 
			
		||||
         arrives from an active user session. Note that this chain is
 | 
			
		||||
         also responsible for delivering packets to their destinations -
 | 
			
		||||
         this is usually handled by the "deliver" module. -->
 | 
			
		||||
    <chain id='in-sess'>
 | 
			
		||||
      <module>validate</module>         <!-- validate packet type -->
 | 
			
		||||
      <module>status</module>           <!-- update status information -->
 | 
			
		||||
      <module>privacy</module>          <!-- manage privacy lists -->
 | 
			
		||||
      <module>roster</module>           <!-- handle roster get/sets and s10ns -->
 | 
			
		||||
      <module>vacation</module>         <!-- manage vacation settings -->
 | 
			
		||||
      <!-- <module>pep</module>         <!- - personal eventing -->
 | 
			
		||||
      <module>iq-vcard</module>         <!-- store and retrieve the user's vcard -->
 | 
			
		||||
      <module>iq-ping</module>          <!-- return the server ping -->
 | 
			
		||||
      <module>iq-private</module>       <!-- manage the user's private data store -->
 | 
			
		||||
      <module>disco</module>            <!-- respond to agents requests from sessions -->
 | 
			
		||||
      <module>amp</module>              <!-- advanced message processing -->
 | 
			
		||||
      <module>offline</module>          <!-- if we're coming online for the first time, deliver queued messages -->
 | 
			
		||||
      <module>announce</module>         <!-- deliver motd -->
 | 
			
		||||
      <module>presence</module>         <!-- process and distribute presence updates -->
 | 
			
		||||
      <module>deliver</module>          <!-- deliver packets with full jids directly -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- out-sess. The modules in this chain are called just before a
 | 
			
		||||
         packet is delivered to an active user session. -->
 | 
			
		||||
    <chain id='out-sess'>
 | 
			
		||||
      <!-- <module>pep</module>         <!- - personal eventing -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- in-router. The modules in this chain are called when a packet
 | 
			
		||||
         arrives from the router (ie another component or s2s), but
 | 
			
		||||
         before any processing is done. This is a good place to filter
 | 
			
		||||
         incoming packets. -->
 | 
			
		||||
    <chain id='in-router'>
 | 
			
		||||
      <module>session</module>          <!-- perform session actions as required by c2s -->
 | 
			
		||||
      <module>validate</module>         <!-- validate packet type -->
 | 
			
		||||
      <module>presence</module>         <!-- drop incoming presence if user not online -->
 | 
			
		||||
      <module>privacy</module>          <!-- filter incoming packets based on privacy rules -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- out-router. The modules in this chain are called just before a
 | 
			
		||||
         packet is delivered to the router (destined for another
 | 
			
		||||
         component or s2s). This is a good place to filter outgoing
 | 
			
		||||
         packets. -->
 | 
			
		||||
    <chain id='out-router'>
 | 
			
		||||
      <module>privacy</module>          <!-- filter outgoing packets based on privacy rules -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- pkt-sm. The modules in this chain are called when a packet
 | 
			
		||||
         arrives that is addressed to the session manager itself (ie the
 | 
			
		||||
         to JID has no node part). This is normally used to provide
 | 
			
		||||
         session-manager-wide services (like service discovery). -->
 | 
			
		||||
    <chain id='pkt-sm'>
 | 
			
		||||
      <module>iq-last</module>          <!-- return the server uptime -->
 | 
			
		||||
      <module>iq-ping</module>          <!-- return the server ping -->
 | 
			
		||||
      <module>iq-time</module>          <!-- return the current server time -->
 | 
			
		||||
      <module>iq-version</module>       <!-- return the server name and version -->
 | 
			
		||||
      <module>amp</module>              <!-- advanced message processing -->
 | 
			
		||||
      <module>disco</module>            <!-- build the disco list; respond to disco queries -->
 | 
			
		||||
      <module>announce</module>         <!-- send broadcast messages (announce, motd, etc) -->
 | 
			
		||||
      <module>help</module>             <!-- resend sm messages to administrators -->
 | 
			
		||||
      <module>echo</module>             <!-- echo messages sent to /echo -->
 | 
			
		||||
      <module>status</module>           <!-- track status information -->
 | 
			
		||||
      <module>presence</module>         <!-- proces server presence subscriptions -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- pkt-user. The modules in this chain are called when a packet
 | 
			
		||||
         arrives that is address to a specific user. Note that this
 | 
			
		||||
         chain is also responsible for delivering packets to user
 | 
			
		||||
         sessions as appropriate - this is usually handled by the
 | 
			
		||||
         "deliver" module. -->
 | 
			
		||||
    <chain id='pkt-user'>
 | 
			
		||||
      <module>roster</module>           <!-- handle s10n responses -->
 | 
			
		||||
      <module>presence</module>         <!-- process and distribute incoming presence from external entities -->
 | 
			
		||||
      <module>iq-vcard</module>         <!-- grab user vcards -->
 | 
			
		||||
      <module>amp</module>              <!-- advanced message processing -->
 | 
			
		||||
      <module>deliver</module>          <!-- deliver the packet to an active session if we can -->
 | 
			
		||||
      <module>vacation</module>         <!-- send vacation messages -->
 | 
			
		||||
      <module>offline</module>          <!-- save messages and s10ns for later -->
 | 
			
		||||
      <module>iq-last</module>          <!-- return time since last logout -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- pkt-router. The modules in this chain are called when a
 | 
			
		||||
         special-purpose packet arrives from the router (eg domain
 | 
			
		||||
         advertisements). -->
 | 
			
		||||
    <chain id='pkt-router'>
 | 
			
		||||
      <module>session</module>          <!-- take sessions offline if their c2s disappears -->
 | 
			
		||||
      <module>disco</module>            <!-- query new components for service information -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- user-load. The modules in this chain are called to load
 | 
			
		||||
         per-user data. This will happen before a user can be used (ie
 | 
			
		||||
         before a session is created). -->
 | 
			
		||||
    <chain id='user-load'>
 | 
			
		||||
      <module>active</module>           <!-- get active status -->
 | 
			
		||||
      <module>roster</module>           <!-- load the roster and trust list -->
 | 
			
		||||
      <module>roster-publish</module>   <!-- load the published roster -->
 | 
			
		||||
      <module>privacy</module>          <!-- load privacy lists -->
 | 
			
		||||
      <module>vacation</module>         <!-- load vacation settings -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- user-unload. The modules in this chain are called right
 | 
			
		||||
         after last per-user session is destroyed. -->
 | 
			
		||||
    <chain id='user-unload'>
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- user-create. The modules in this chain are called when a user
 | 
			
		||||
         creation request is received (usually from c2s as part of a
 | 
			
		||||
         registration request). This initialises any per-user data. -->
 | 
			
		||||
    <chain id='user-create'>
 | 
			
		||||
      <module>active</module>           <!-- activate new users -->
 | 
			
		||||
      <module>template-roster</module>  <!-- populate roster from template -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- user-delete. The modules in this chain are called when a user
 | 
			
		||||
         deletion request is received (usually from c2s as part of a
 | 
			
		||||
         registration removal request). This deletes all data that may
 | 
			
		||||
         have been previously created for the user during normal
 | 
			
		||||
         operation. -->
 | 
			
		||||
    <chain id='user-delete'>
 | 
			
		||||
      <module>active</module>           <!-- deactivate users -->
 | 
			
		||||
      <module>announce</module>         <!-- delete motd data -->
 | 
			
		||||
      <module>offline</module>          <!-- bounce queued messages -->
 | 
			
		||||
      <module>privacy</module>          <!-- delete privacy lists -->
 | 
			
		||||
      <module>roster</module>           <!-- delete roster -->
 | 
			
		||||
      <module>vacation</module>         <!-- delete vacation settings -->
 | 
			
		||||
      <module>status</module>           <!-- delete status information -->
 | 
			
		||||
      <module>iq-last</module>          <!-- delete last logout time -->
 | 
			
		||||
      <module>iq-private</module>       <!-- delete private data -->
 | 
			
		||||
      <module>iq-vcard</module>         <!-- delete vcard -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- disco-extend. The modules in this chain are called when a disco
 | 
			
		||||
         info request is send to session manager. It implements XEP-0128
 | 
			
		||||
     Service Discovery Extensions mechanizm to add additional
 | 
			
		||||
     information to disco#info reply. -->
 | 
			
		||||
    <chain id='disco-extend'>
 | 
			
		||||
      <module>iq-version</module>       <!-- add XEP-xxxx Software Information -->
 | 
			
		||||
      <module>help</module>             <!-- add XEP-0157 Contact Addresses -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
  </modules>
 | 
			
		||||
 | 
			
		||||
  <!-- Service discovery configuration -->
 | 
			
		||||
  <discovery>
 | 
			
		||||
 | 
			
		||||
    <!-- Service identity. these specify the category, type and name of
 | 
			
		||||
         this service that will be included in discovery information
 | 
			
		||||
         responses. -->
 | 
			
		||||
    <identity>
 | 
			
		||||
      <category>server</category>       <!-- default: server -->
 | 
			
		||||
      <type>im</type>                   <!-- default: im -->
 | 
			
		||||
      <name>Jabber IM server</name>     <!-- default: Jabber IM server -->
 | 
			
		||||
    </identity>
 | 
			
		||||
 | 
			
		||||
    <!-- The discovery module can respond to jabber:iq:agents queries
 | 
			
		||||
         for compatibility with older clients. Comment this out to
 | 
			
		||||
         disable this. -->
 | 
			
		||||
    <agents/>
 | 
			
		||||
 | 
			
		||||
    <!-- Static service list.
 | 
			
		||||
 | 
			
		||||
         The discover module can discover disco-capable services
 | 
			
		||||
         automatically as they come online. Most XEP-0114 components,
 | 
			
		||||
         however, will not support discovery. In order to get them to
 | 
			
		||||
         appear in disco/agents lists returned to the client, they
 | 
			
		||||
         should be listed here.
 | 
			
		||||
 | 
			
		||||
         Note that if a disco-capable service with the same name as one
 | 
			
		||||
         listed below comes online, the information it provides will
 | 
			
		||||
         override the information listed below.
 | 
			
		||||
 | 
			
		||||
         The "category" and "type" attributes, and the list of supported
 | 
			
		||||
         namespaces are only used for agents compatibility. If you have
 | 
			
		||||
         disabled this above, you may omit them. -->
 | 
			
		||||
    <items>
 | 
			
		||||
 | 
			
		||||
      <!-- example entry for a user directory -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <item category='service' type='jud' jid='users.jabber.org' name='Jabber User Directory'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- example entry for a groupchat (conference) service -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <item category='conference' type='public' jid='conference.jabber.org' name='Text conferencing'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
    </items>
 | 
			
		||||
 | 
			
		||||
    <!-- Server information added to server discovery information
 | 
			
		||||
         in http://jabber.org/network/serverinfo jabber:x:data form. (XEP-0157)
 | 
			
		||||
 | 
			
		||||
         May contain many values per item -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <serverinfo>
 | 
			
		||||
      <admin-addresses>
 | 
			
		||||
        <value>mailto:xmpp@localhost.localdomain</value>
 | 
			
		||||
        <value>xmpp:admins@localhost.localdomain</value>
 | 
			
		||||
      </admin-addresses>
 | 
			
		||||
      <abuse-addresses>
 | 
			
		||||
        <value>mailto:abuse@localhost.localdomain</value>
 | 
			
		||||
        <value>xmpp:abuse@localhost.localdomain</value>
 | 
			
		||||
      </abuse-addresses>
 | 
			
		||||
      <feedback-addresses>
 | 
			
		||||
        <value>http://example.org/feedback.php</value>
 | 
			
		||||
      </feedback-addresses>
 | 
			
		||||
      <sales-addresses/>
 | 
			
		||||
      <security-addresses/>
 | 
			
		||||
      <support-addresses/>
 | 
			
		||||
    </serverinfo>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
  </discovery>
 | 
			
		||||
 | 
			
		||||
  <!-- User options -->
 | 
			
		||||
  <user>
 | 
			
		||||
    <!-- By default, users must explicitly created before they can start
 | 
			
		||||
         a session. The creation process is usually triggered by a c2s
 | 
			
		||||
         component in response to a client registering a new user.
 | 
			
		||||
 | 
			
		||||
         Enabling this option will make it so that user creation will be
 | 
			
		||||
         triggered the first time a non-existant user attempts to start
 | 
			
		||||
         a session. This is useful if you already have users in an
 | 
			
		||||
         external authentication database (eg LDAP) and you don't want
 | 
			
		||||
         them to have to register. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <auto-create/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Define maximum size in bytes of fields of vcards.
 | 
			
		||||
         There is a recommendation that the avatar picture SHOULD NOT
 | 
			
		||||
         be larger than 16 KiB. --> 
 | 
			
		||||
    <!--
 | 
			
		||||
    <vcard>
 | 
			
		||||
        <max-field-size>
 | 
			
		||||
            <default>16384</default>
 | 
			
		||||
            <avatar>16384</avatar>
 | 
			
		||||
        </max-field-size>
 | 
			
		||||
    </vcard>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Templates. If defined, the contents of these files will be
 | 
			
		||||
         stored in the users data store when they are created. -->
 | 
			
		||||
    <template>
 | 
			
		||||
      <!-- Uncomment <publish> if you wish to forcibly publish
 | 
			
		||||
           roster template from ldap on each user login -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <publish>
 | 
			
		||||
      -->
 | 
			
		||||
        <!-- Key used for fetching published roster items.
 | 
			
		||||
             Only one might be set at a time.
 | 
			
		||||
             If not set, all items are fetched. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <fetch-key>
 | 
			
		||||
          <domain/>
 | 
			
		||||
          <user/>
 | 
			
		||||
          <fixed>grouping-key</fixed>
 | 
			
		||||
        </fetch-key>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- If <check-remove-domain> given, then published contact is checked
 | 
			
		||||
             against sm user database and if user is unknown to sm, contact
 | 
			
		||||
             will be deleted from user's roster (if it is in roster).
 | 
			
		||||
			 If no domain set (tag empty) all contacts are checked. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <check-remove-domain>jabber.example.com</check-remove-domain>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- Alternatively if <force-create-contacts/> is not commented,
 | 
			
		||||
		     published contact is added to sm user database
 | 
			
		||||
			 and user set known to sm, so it won't auto-unsubscribe
 | 
			
		||||
			 on connection established -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <force-create-contacts/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- Keep cache of "active" database specified number of seconds.
 | 
			
		||||
             This will significantly speed up publishing of roster.
 | 
			
		||||
             If unspecified or 0, no cache is used. -->
 | 
			
		||||
        <active-cache-ttl>60</active-cache-ttl>
 | 
			
		||||
        <!-- If <fix-subscriptions/> is not commented, set "to" and "from" subscriptions of
 | 
			
		||||
             user's contacts to subscriptions of corresponding published
 | 
			
		||||
             contacts. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <fix-subscriptions/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- If <override-names/> is uncommented, then displayed names of
 | 
			
		||||
             contacts in user's roster will be updated accordingly to
 | 
			
		||||
             published roster (if they differ). If commented, then user can
 | 
			
		||||
             rename contacts in roster -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <override-names/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- when mapped-groups is on (<map-groups/> is uncommented), the actual
 | 
			
		||||
             group names for published contacts are read from
 | 
			
		||||
             published-roster-groups storage type, which may be set
 | 
			
		||||
             to ldapvcard driver. The key for searching is published user's
 | 
			
		||||
             group, and returned value is used as group name. So you can assign
 | 
			
		||||
             textual group IDs to users rather then group names.
 | 
			
		||||
             group-cache-ttl keeps cache of mapping from group id to name for
 | 
			
		||||
             specified number of seconds. If unspecified or 0, no cache is used.
 | 
			
		||||
             -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <mapped-groups>
 | 
			
		||||
          <map-groups/>
 | 
			
		||||
          <group-cache-ttl>120</group-cache-ttl>
 | 
			
		||||
        </mapped-groups>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- If <force-groups> is commented out, published roster's contact
 | 
			
		||||
             added to user's roster only when user does not have this contact.
 | 
			
		||||
 | 
			
		||||
             If <force-groups> is uncommented, then these checks are performed
 | 
			
		||||
             against each roster item already in user's roster:
 | 
			
		||||
	       If roster item already present in user's roster in
 | 
			
		||||
	       group of same name, no changes are made with this group (note
 | 
			
		||||
               that contact may be in more than one group).
 | 
			
		||||
	       If <prefix> or <suffix> are given, then contact removed
 | 
			
		||||
	       from any matching groups.
 | 
			
		||||
               After that, contact is added to group from published roster.
 | 
			
		||||
 | 
			
		||||
             In other words, all groups of updated contact, that match prefix
 | 
			
		||||
             or suffix, are replaced with group of published contact.
 | 
			
		||||
             This is done because there is no way to determine that group was
 | 
			
		||||
             published or greated by user. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <force-groups>
 | 
			
		||||
          <prefix>MyOrg.</prefix>
 | 
			
		||||
          <suffix>(MyOrg)</suffix>
 | 
			
		||||
        </force-groups>
 | 
			
		||||
        -->
 | 
			
		||||
      <!--
 | 
			
		||||
      </publish>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- If defined, the contents of these files will be
 | 
			
		||||
           stored in the users data store when they are created. -->
 | 
			
		||||
      <!-- If you defined publish, you should comment-out <roster> -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <roster>/etc/jabber/templates/roster.xml</roster>
 | 
			
		||||
      -->
 | 
			
		||||
    </template>
 | 
			
		||||
  </user>
 | 
			
		||||
 | 
			
		||||
  <!-- Advanced Message Processing module configuration -->
 | 
			
		||||
  <amp>
 | 
			
		||||
    <!-- You can disable some actions -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <disableactions>
 | 
			
		||||
      <drop/>
 | 
			
		||||
      <error/>
 | 
			
		||||
      <alert/>
 | 
			
		||||
      <notify/>
 | 
			
		||||
    </disableactions>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- You can disable some conditions -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <disableconditions>
 | 
			
		||||
      <expireat/>
 | 
			
		||||
      <matchresource/>
 | 
			
		||||
      <deliver/>
 | 
			
		||||
    </disableconditions>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- You need to enable this if your server has offline storage disabled -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <offlinestoragedisabled/>
 | 
			
		||||
    -->
 | 
			
		||||
  </amp>
 | 
			
		||||
 | 
			
		||||
  <!-- Offline module configuration -->
 | 
			
		||||
  <offline>
 | 
			
		||||
    <!-- Do not store messages in offline store -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <dropmessages/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Store headline messages in offline store -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <storeheadlines/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Do not store subscription requests in offline store -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <dropsubscriptions/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Offline storage message quota.
 | 
			
		||||
         Specifies how many messages will be stored in user offline store -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <userquota>500</userquota>
 | 
			
		||||
    -->
 | 
			
		||||
  </offline>
 | 
			
		||||
 | 
			
		||||
  <!-- roster module configuration -->
 | 
			
		||||
  <roster>
 | 
			
		||||
    <!-- maximum items per user roster -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <maxitems>100</maxitems>
 | 
			
		||||
    -->
 | 
			
		||||
  </roster>
 | 
			
		||||
 | 
			
		||||
  <!-- status module configuration -->
 | 
			
		||||
  <status>
 | 
			
		||||
    <!-- presence service resource
 | 
			
		||||
         disabled when commented out -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <resource>webstatus</resource>
 | 
			
		||||
    -->
 | 
			
		||||
  </status>
 | 
			
		||||
 | 
			
		||||
</sm>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
@ -1,811 +0,0 @@
 | 
			
		||||
<!-- Session manager configuration -->
 | 
			
		||||
<sm>
 | 
			
		||||
  <!-- Our ID on the network (default: sm) -->
 | 
			
		||||
  <id>sm</id>
 | 
			
		||||
 | 
			
		||||
  <!-- The process ID file. Comment this out if you don't need to know
 | 
			
		||||
       the process ID from outside the process (eg for control scripts) -->
 | 
			
		||||
  <pidfile>/var/run/jabber/jabberd2-sm.pid</pidfile>
 | 
			
		||||
 | 
			
		||||
  <!-- Router connection configuration -->
 | 
			
		||||
  <router>
 | 
			
		||||
    <!-- IP/port the router is waiting for connections on -->
 | 
			
		||||
    <ip>127.0.0.1</ip>            <!-- default: 127.0.0.1 -->
 | 
			
		||||
    <port>5347</port>             <!-- default: 5347 -->
 | 
			
		||||
 | 
			
		||||
    <!-- Username/password to authenticate as -->
 | 
			
		||||
    <user>jabberd</user>          <!-- default: jabberd -->
 | 
			
		||||
    <pass>secret</pass>           <!-- default: secret -->
 | 
			
		||||
 | 
			
		||||
    <!-- File containing an SSL certificate and private key to use when
 | 
			
		||||
         setting up an encrypted channel with the router. From
 | 
			
		||||
         SSL_CTX_use_certificate_chain_file(3): "The certificates must be
 | 
			
		||||
         in PEM format and must be sorted starting with the subject's
 | 
			
		||||
         certificate (actual client or server certificate), followed
 | 
			
		||||
         by intermediate CA certificates if applicable, and ending
 | 
			
		||||
         at the highest level (root) CA" (the latter one being optional).
 | 
			
		||||
         If this is commented out, or the file can't be read, no attempt
 | 
			
		||||
         will be made to establish an encrypted channel with the router. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <pemfile>/etc/jabber/server.pem</pemfile>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Router connection retry -->
 | 
			
		||||
    <retry>
 | 
			
		||||
      <!-- If the connection to the router can't be established at
 | 
			
		||||
           startup, we should try again this many times before exiting.
 | 
			
		||||
           Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <init>3</init>
 | 
			
		||||
 | 
			
		||||
      <!-- If we lost the connection to the router during normal
 | 
			
		||||
           operation (ie we've successfully connected to the router in
 | 
			
		||||
           the past), we should try to reconnect this many times before
 | 
			
		||||
           exiting. Use -1 to retry indefinitely. [default: 3] -->
 | 
			
		||||
      <lost>3</lost>
 | 
			
		||||
 | 
			
		||||
      <!-- Sleep for this many seconds before trying attempting a
 | 
			
		||||
           reconnect. [default: 2] -->
 | 
			
		||||
      <sleep>2</sleep>
 | 
			
		||||
    </retry>
 | 
			
		||||
  </router>
 | 
			
		||||
 | 
			
		||||
  <!-- Log configuration - type is "syslog", "file" or "stdout" -->
 | 
			
		||||
  <log type='syslog'>
 | 
			
		||||
    <!-- If logging to syslog, this is the log ident -->
 | 
			
		||||
    <ident>jabberd/sm</ident>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to syslog, this is the log facility
 | 
			
		||||
         (local0 - local7)                        [default: local3] -->
 | 
			
		||||
    <facility>local3</facility>
 | 
			
		||||
 | 
			
		||||
    <!-- If logging to file, this is the filename of the logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <file>/var/log/jabber/sm.log</file>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Filename of the debug logfile -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <debug>/var/log/jabber/debug-${id}.log</debug>
 | 
			
		||||
    -->
 | 
			
		||||
  </log>
 | 
			
		||||
 | 
			
		||||
  <!-- Local network configuration -->
 | 
			
		||||
  <local>
 | 
			
		||||
    <!-- Who we identify ourselves as.
 | 
			
		||||
         Users will have this as the domain part of their JID.
 | 
			
		||||
         If you want your server to be accessible from other
 | 
			
		||||
         Jabber servers, this IDs must be FQDN resolvable by DNSes.
 | 
			
		||||
         If not set, the SM id is used. -->
 | 
			
		||||
    <id>localhost.localdomain</id>
 | 
			
		||||
    <!--
 | 
			
		||||
    <id>vhost1.localdomain</id>
 | 
			
		||||
    <id>vhost2.localdomain</id>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
  </local>
 | 
			
		||||
 | 
			
		||||
  <!-- Storage database configuration -->
 | 
			
		||||
  <storage>
 | 
			
		||||
    <!-- Dynamic storage modules path -->
 | 
			
		||||
    <path>/usr/lib64/jabberd</path>
 | 
			
		||||
 | 
			
		||||
    <!-- By default, we use the SQLite driver for all storage -->
 | 
			
		||||
    <driver>db</driver>
 | 
			
		||||
 | 
			
		||||
    <!-- Its also possible to explicitly list alternate drivers for
 | 
			
		||||
         specific data types. -->
 | 
			
		||||
 | 
			
		||||
    <!-- Store vcards in a ldapvcard database instead -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <driver type='vcard'>ldapvcard</driver>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Only ldapvcard driver implements published-roster: -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <driver type='published-roster'>ldapvcard</driver>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Use ldapvcard driver for published-roster-groups.
 | 
			
		||||
         See description in section sm/user/template/mapped-groups.
 | 
			
		||||
         Used by mod_published_roster.
 | 
			
		||||
         See ldapvcard section for options.
 | 
			
		||||
         When resolving group id to group name, it searches for
 | 
			
		||||
         groupsobjectclass objects at groupsdn base using group id
 | 
			
		||||
         (in groupsidattr) as key and returns the first value of 
 | 
			
		||||
         groupattr of first found entry.
 | 
			
		||||
         E.g.. in general case, if group id is "some-dep", and groupsdn
 | 
			
		||||
         is o=org, and class is jabberGroup, it searches for
 | 
			
		||||
         (&(objectClass=jabberGroup)(cn=some-dep)) and returns value of
 | 
			
		||||
         jabberPublishedItem attribute, which may contain textual description.
 | 
			
		||||
         -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <driver type='published-roster-groups'>ldapvcard</driver>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Rate limiting -->
 | 
			
		||||
    <limits>
 | 
			
		||||
      <!-- Maximum queries per second - if more than X queries are sent in Y
 | 
			
		||||
           seconds, connection is throttled for Z seconds. The format
 | 
			
		||||
           is:
 | 
			
		||||
 | 
			
		||||
             <queries seconds='Y' throttle='Z'>X</bytes>
 | 
			
		||||
 | 
			
		||||
           Default Y is 5, default Z is 60. set X to 0 to disable. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <queries>3</queries>
 | 
			
		||||
      -->
 | 
			
		||||
    </limits>
 | 
			
		||||
 | 
			
		||||
    <!-- SQLite driver configuration -->
 | 
			
		||||
    <sqlite>
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>/var/spool/jabber/db/sqlite.db</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Transaction support. If this is commented out, transactions
 | 
			
		||||
           will be disabled. This might make database accesses faster,
 | 
			
		||||
           but data may be lost if jabberd crashes. -->
 | 
			
		||||
      <transactions/>
 | 
			
		||||
 | 
			
		||||
      <!-- SQLite busy-timeout in milliseconds. -->
 | 
			
		||||
      <busy-timeout>2000</busy-timeout>
 | 
			
		||||
    </sqlite>
 | 
			
		||||
 | 
			
		||||
    <!-- MySQL driver configuration -->
 | 
			
		||||
    <mysql>
 | 
			
		||||
      <!-- Database server host and port -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>3306</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
 | 
			
		||||
      <!-- Transaction support. If this is commented out, transactions
 | 
			
		||||
           will be disabled. This might make database accesses faster,
 | 
			
		||||
           but data may be lost if jabberd crashes.
 | 
			
		||||
 | 
			
		||||
           This will need to be disabled if you are using a MySQL
 | 
			
		||||
           earlier than v3.23.xx, as transaction support did not appear
 | 
			
		||||
           until this version. -->
 | 
			
		||||
      <transactions/>
 | 
			
		||||
    </mysql>
 | 
			
		||||
 | 
			
		||||
    <!-- PostgreSQL driver configuration -->
 | 
			
		||||
    <pgsql>
 | 
			
		||||
      <!-- PostgreSQL connection info.
 | 
			
		||||
           For the rest of the options see
 | 
			
		||||
           http://www.postgresql.org/docs/8.0/interactive/libpq.html -->
 | 
			
		||||
      <conninfo>dbname=jabberd2 user=jabberd2 password=secret</conninfo>
 | 
			
		||||
 | 
			
		||||
      <!-- Alternatively you may set connection settings separately.
 | 
			
		||||
           These are used only in absence of 'conninfo' -->
 | 
			
		||||
 | 
			
		||||
      <!-- Database server host and port -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>5432</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database schema -->
 | 
			
		||||
      <schema>public</schema>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
 | 
			
		||||
      <!-- Transaction support. If this is commented out, transactions
 | 
			
		||||
           will be disabled. This might make database accesses faster,
 | 
			
		||||
           but data may be lost if jabberd crashes. -->
 | 
			
		||||
      <transactions/>
 | 
			
		||||
    </pgsql>
 | 
			
		||||
 | 
			
		||||
    <!-- Berkeley DB driver configuration.  This does not support roster
 | 
			
		||||
         maxitems or offline userquota (because the mod_roster
 | 
			
		||||
         implementation does not implement the 'count' callback). -->
 | 
			
		||||
    <db>
 | 
			
		||||
      <!-- Directory to store database files under -->
 | 
			
		||||
      <path>/var/spool/jabber/db</path>
 | 
			
		||||
 | 
			
		||||
      <!-- Synchronize the database to disk after each write. If you
 | 
			
		||||
           disable this, database accesses may be faster, but data may
 | 
			
		||||
           be lost if jabberd crashes. -->
 | 
			
		||||
      <sync/>
 | 
			
		||||
    </db>
 | 
			
		||||
 | 
			
		||||
    <!-- Oracle driver configuration -->
 | 
			
		||||
    <oracle>
 | 
			
		||||
      <!-- Database server host and port. -->
 | 
			
		||||
      <host>localhost</host>
 | 
			
		||||
      <port>1521</port>
 | 
			
		||||
 | 
			
		||||
      <!-- Database name -->
 | 
			
		||||
      <dbname>jabberd2</dbname>
 | 
			
		||||
 | 
			
		||||
      <!-- Database username and password -->
 | 
			
		||||
      <user>jabberd2</user>
 | 
			
		||||
      <pass>secret</pass>
 | 
			
		||||
    </oracle>
 | 
			
		||||
 | 
			
		||||
    <!-- Filesystem driver configuration -->
 | 
			
		||||
    <fs>
 | 
			
		||||
      <!-- Directory to store database files under. -->
 | 
			
		||||
      <path>/var/spool/jabber/fs</path>
 | 
			
		||||
    </fs>
 | 
			
		||||
 | 
			
		||||
    <!-- LDAPVCARD driver configuration -->
 | 
			
		||||
    <ldapvcard>
 | 
			
		||||
      <!-- LDAP server host and port (default: 389) -->
 | 
			
		||||
      <uri>ldap://localhost/ ldaps://ldap.example.com/</uri>
 | 
			
		||||
      
 | 
			
		||||
      <!-- DN to bind as for searches. If unspecified, the searches
 | 
			
		||||
           will be done anonymously. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <binddn>cn=Directory Manager</binddn>
 | 
			
		||||
      <bindpw>secret</bindpw>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- see authreg.ldapfull in c2s.xml for description. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <type>ad</type>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- LDAP attribute that holds the user ID (default: uid) -->
 | 
			
		||||
      <uidattr>uid</uidattr>
 | 
			
		||||
      <objectclass>posixAccount</objectclass>
 | 
			
		||||
      <pwattr>userPassword</pwattr>
 | 
			
		||||
      <!-- if you use included jabberd.schema use this:
 | 
			
		||||
      <uidattr>jid</uidattr>
 | 
			
		||||
      <objectclass>jabberUser</objectclass>
 | 
			
		||||
      <pwattr>jabberPassword</pwattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- Realm to append to uidattr. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <realm>example.org</realm>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- see authreg.ldapfull in c2s.xml for description. -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <validattr>valid</validattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- base DN of the tree. You should specify a DN for each
 | 
			
		||||
           authentication realm declared in the <local/> section above,
 | 
			
		||||
           by using the realm attribute. -->
 | 
			
		||||
      <basedn>o=Example Corp.</basedn>
 | 
			
		||||
 | 
			
		||||
      <!-- attribute that holds published group name or id,
 | 
			
		||||
           jabberPublishedGroup if not set -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <groupattr>jabberPublishedGroup</groupattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- this option is helpful if your schema does not have designated
 | 
			
		||||
	       attribute that holds jabber group name
 | 
			
		||||
		   you can use any attribute in <groupattr> i.e. 'distinguishedName'
 | 
			
		||||
		   and then extract a part of it using Regular Expression;
 | 
			
		||||
           first matching () group will be used -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <groupattr_regex>OU=([^,]*),</groupattr_regex>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- boolean attribute that tells whether or not to publish this user
 | 
			
		||||
           jabberPublishedItem by default -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <publishedattr>jabberPublishedItem</publishedattr>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- If value specified, then keep cache of "published-roster"
 | 
			
		||||
           database, which is used for all users. Cache is renewed when kept more seconds than value
 | 
			
		||||
           specified. Setting this value increases perfomance of publishing
 | 
			
		||||
           roster. If not specified, then we don't keep cache. -->
 | 
			
		||||
      <publishedcachettl>60</publishedcachettl>
 | 
			
		||||
 | 
			
		||||
      <mapped-groups>
 | 
			
		||||
        <!-- If turned on, then mapping of group ids to names with
 | 
			
		||||
             LDAP will works. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <map-groups/>
 | 
			
		||||
        -->
 | 
			
		||||
 | 
			
		||||
        <!-- base for searches for group id to group name mappings -->
 | 
			
		||||
        <basedn>ou=jabbergroups, o=Example Corp.</basedn>
 | 
			
		||||
 | 
			
		||||
        <!-- what objectclass to search, jabberGroup by default -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <objectclass>jabberGroup</objectclass>
 | 
			
		||||
        -->
 | 
			
		||||
 | 
			
		||||
        <!-- what attribute to search, cn by default -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <idattr>cn</idattr>
 | 
			
		||||
        -->
 | 
			
		||||
 | 
			
		||||
        <!-- attribute with text group name, description by default -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <nameattr>description</nameattr>
 | 
			
		||||
        -->
 | 
			
		||||
      </mapped-groups>
 | 
			
		||||
    </ldapvcard>
 | 
			
		||||
  </storage>
 | 
			
		||||
 | 
			
		||||
  <!-- Access control information -->
 | 
			
		||||
  <aci>
 | 
			
		||||
    <!-- The JIDs listed here will get access to all restricted
 | 
			
		||||
         functions, regardless of restrictions further down -->
 | 
			
		||||
    <acl type='all'>
 | 
			
		||||
      <jid>admin@localhost.localdomain</jid>
 | 
			
		||||
    </acl>
 | 
			
		||||
 | 
			
		||||
    <!-- These JIDs can send broadcast messages (announce, motd) -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='broadcast'>
 | 
			
		||||
      <jid>nocstaff1@localhost.localdomain</jid>
 | 
			
		||||
      <jid>nocstaff2@localhost.localdomain</jid>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- These JIDs will receive messages addressed to the sm itself
 | 
			
		||||
         (help requestes and such) -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='messages'>
 | 
			
		||||
      <jid>support@localhost.localdomain</jid>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- These JIDs can discover active user/session information -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <acl type='disco'>
 | 
			
		||||
      <jid>webstatus@localhost.localdomain</jid>
 | 
			
		||||
    </acl>
 | 
			
		||||
    -->
 | 
			
		||||
  </aci>
 | 
			
		||||
 | 
			
		||||
  <!-- Module chain configuration
 | 
			
		||||
 | 
			
		||||
       Modules listed in a chain are called in the order specified at
 | 
			
		||||
       the appropriate time for that chain (assuming that the module
 | 
			
		||||
       knows how to work with that chain; otherwise it simply ignores
 | 
			
		||||
       it).
 | 
			
		||||
 | 
			
		||||
       Removing a module from these lists will stop the module being
 | 
			
		||||
       called, even if it's compiled into the server.
 | 
			
		||||
 | 
			
		||||
       Serveral modules have a presence in more than one chain. It is
 | 
			
		||||
       possible to remove a module from one chain but not others, but
 | 
			
		||||
       this may cause strange behaviour. Make sure you know what you're
 | 
			
		||||
       doing. -->
 | 
			
		||||
  <modules>
 | 
			
		||||
    <!-- Dynamic sm modules path -->
 | 
			
		||||
    <path>/usr/lib64/jabberd</path>
 | 
			
		||||
 | 
			
		||||
    <!-- sess-start. The modules in this chain are called when a session
 | 
			
		||||
         is first started (usually on request by c2s as part of the
 | 
			
		||||
         authentication process). This is normally used to load
 | 
			
		||||
         per-session data. -->
 | 
			
		||||
    <chain id='sess-start'>
 | 
			
		||||
      <module>status</module>           <!-- record status information -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- sess-end. The modules in this chain are called just before a
 | 
			
		||||
         session is destroyed (after the client has disconnected). -->
 | 
			
		||||
    <chain id='sess-end'>
 | 
			
		||||
      <module>status</module>           <!-- update status information -->
 | 
			
		||||
      <module>iq-last</module>          <!-- update logout time -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- in-sess. The modules in this chain are called when a packet
 | 
			
		||||
         arrives from an active user session. Note that this chain is
 | 
			
		||||
         also responsible for delivering packets to their destinations -
 | 
			
		||||
         this is usually handled by the "deliver" module. -->
 | 
			
		||||
    <chain id='in-sess'>
 | 
			
		||||
      <module>validate</module>         <!-- validate packet type -->
 | 
			
		||||
      <module>status</module>           <!-- update status information -->
 | 
			
		||||
      <module>privacy</module>          <!-- manage privacy lists -->
 | 
			
		||||
      <module>roster</module>           <!-- handle roster get/sets and s10ns -->
 | 
			
		||||
      <module>vacation</module>         <!-- manage vacation settings -->
 | 
			
		||||
      <!-- <module>pep</module>         <!- - personal eventing -->
 | 
			
		||||
      <module>iq-vcard</module>         <!-- store and retrieve the user's vcard -->
 | 
			
		||||
      <module>iq-ping</module>          <!-- return the server ping -->
 | 
			
		||||
      <module>iq-private</module>       <!-- manage the user's private data store -->
 | 
			
		||||
      <module>disco</module>            <!-- respond to agents requests from sessions -->
 | 
			
		||||
      <module>amp</module>              <!-- advanced message processing -->
 | 
			
		||||
      <module>offline</module>          <!-- if we're coming online for the first time, deliver queued messages -->
 | 
			
		||||
      <module>announce</module>         <!-- deliver motd -->
 | 
			
		||||
      <module>presence</module>         <!-- process and distribute presence updates -->
 | 
			
		||||
      <module>deliver</module>          <!-- deliver packets with full jids directly -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- out-sess. The modules in this chain are called just before a
 | 
			
		||||
         packet is delivered to an active user session. -->
 | 
			
		||||
    <chain id='out-sess'>
 | 
			
		||||
      <!-- <module>pep</module>         <!- - personal eventing -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- in-router. The modules in this chain are called when a packet
 | 
			
		||||
         arrives from the router (ie another component or s2s), but
 | 
			
		||||
         before any processing is done. This is a good place to filter
 | 
			
		||||
         incoming packets. -->
 | 
			
		||||
    <chain id='in-router'>
 | 
			
		||||
      <module>session</module>          <!-- perform session actions as required by c2s -->
 | 
			
		||||
      <module>validate</module>         <!-- validate packet type -->
 | 
			
		||||
      <module>presence</module>         <!-- drop incoming presence if user not online -->
 | 
			
		||||
      <module>privacy</module>          <!-- filter incoming packets based on privacy rules -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- out-router. The modules in this chain are called just before a
 | 
			
		||||
         packet is delivered to the router (destined for another
 | 
			
		||||
         component or s2s). This is a good place to filter outgoing
 | 
			
		||||
         packets. -->
 | 
			
		||||
    <chain id='out-router'>
 | 
			
		||||
      <module>privacy</module>          <!-- filter outgoing packets based on privacy rules -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- pkt-sm. The modules in this chain are called when a packet
 | 
			
		||||
         arrives that is addressed to the session manager itself (ie the
 | 
			
		||||
         to JID has no node part). This is normally used to provide
 | 
			
		||||
         session-manager-wide services (like service discovery). -->
 | 
			
		||||
    <chain id='pkt-sm'>
 | 
			
		||||
      <module>iq-last</module>          <!-- return the server uptime -->
 | 
			
		||||
      <module>iq-ping</module>          <!-- return the server ping -->
 | 
			
		||||
      <module>iq-time</module>          <!-- return the current server time -->
 | 
			
		||||
      <module>iq-version</module>       <!-- return the server name and version -->
 | 
			
		||||
      <module>amp</module>              <!-- advanced message processing -->
 | 
			
		||||
      <module>disco</module>            <!-- build the disco list; respond to disco queries -->
 | 
			
		||||
      <module>announce</module>         <!-- send broadcast messages (announce, motd, etc) -->
 | 
			
		||||
      <module>help</module>             <!-- resend sm messages to administrators -->
 | 
			
		||||
      <module>echo</module>             <!-- echo messages sent to /echo -->
 | 
			
		||||
      <module>status</module>           <!-- track status information -->
 | 
			
		||||
      <module>presence</module>         <!-- proces server presence subscriptions -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- pkt-user. The modules in this chain are called when a packet
 | 
			
		||||
         arrives that is address to a specific user. Note that this
 | 
			
		||||
         chain is also responsible for delivering packets to user
 | 
			
		||||
         sessions as appropriate - this is usually handled by the
 | 
			
		||||
         "deliver" module. -->
 | 
			
		||||
    <chain id='pkt-user'>
 | 
			
		||||
      <module>roster</module>           <!-- handle s10n responses -->
 | 
			
		||||
      <module>presence</module>         <!-- process and distribute incoming presence from external entities -->
 | 
			
		||||
      <module>iq-vcard</module>         <!-- grab user vcards -->
 | 
			
		||||
      <module>amp</module>              <!-- advanced message processing -->
 | 
			
		||||
      <module>deliver</module>          <!-- deliver the packet to an active session if we can -->
 | 
			
		||||
      <module>vacation</module>         <!-- send vacation messages -->
 | 
			
		||||
      <module>offline</module>          <!-- save messages and s10ns for later -->
 | 
			
		||||
      <module>iq-last</module>          <!-- return time since last logout -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- pkt-router. The modules in this chain are called when a
 | 
			
		||||
         special-purpose packet arrives from the router (eg domain
 | 
			
		||||
         advertisements). -->
 | 
			
		||||
    <chain id='pkt-router'>
 | 
			
		||||
      <module>session</module>          <!-- take sessions offline if their c2s disappears -->
 | 
			
		||||
      <module>disco</module>            <!-- query new components for service information -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- user-load. The modules in this chain are called to load
 | 
			
		||||
         per-user data. This will happen before a user can be used (ie
 | 
			
		||||
         before a session is created). -->
 | 
			
		||||
    <chain id='user-load'>
 | 
			
		||||
      <module>active</module>           <!-- get active status -->
 | 
			
		||||
      <module>roster</module>           <!-- load the roster and trust list -->
 | 
			
		||||
      <module>roster-publish</module>   <!-- load the published roster -->
 | 
			
		||||
      <module>privacy</module>          <!-- load privacy lists -->
 | 
			
		||||
      <module>vacation</module>         <!-- load vacation settings -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- user-unload. The modules in this chain are called right
 | 
			
		||||
         after last per-user session is destroyed. -->
 | 
			
		||||
    <chain id='user-unload'>
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- user-create. The modules in this chain are called when a user
 | 
			
		||||
         creation request is received (usually from c2s as part of a
 | 
			
		||||
         registration request). This initialises any per-user data. -->
 | 
			
		||||
    <chain id='user-create'>
 | 
			
		||||
      <module>active</module>           <!-- activate new users -->
 | 
			
		||||
      <module>template-roster</module>  <!-- populate roster from template -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- user-delete. The modules in this chain are called when a user
 | 
			
		||||
         deletion request is received (usually from c2s as part of a
 | 
			
		||||
         registration removal request). This deletes all data that may
 | 
			
		||||
         have been previously created for the user during normal
 | 
			
		||||
         operation. -->
 | 
			
		||||
    <chain id='user-delete'>
 | 
			
		||||
      <module>active</module>           <!-- deactivate users -->
 | 
			
		||||
      <module>announce</module>         <!-- delete motd data -->
 | 
			
		||||
      <module>offline</module>          <!-- bounce queued messages -->
 | 
			
		||||
      <module>privacy</module>          <!-- delete privacy lists -->
 | 
			
		||||
      <module>roster</module>           <!-- delete roster -->
 | 
			
		||||
      <module>vacation</module>         <!-- delete vacation settings -->
 | 
			
		||||
      <module>status</module>           <!-- delete status information -->
 | 
			
		||||
      <module>iq-last</module>          <!-- delete last logout time -->
 | 
			
		||||
      <module>iq-private</module>       <!-- delete private data -->
 | 
			
		||||
      <module>iq-vcard</module>         <!-- delete vcard -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
    <!-- disco-extend. The modules in this chain are called when a disco
 | 
			
		||||
         info request is send to session manager. It implements XEP-0128
 | 
			
		||||
     Service Discovery Extensions mechanizm to add additional
 | 
			
		||||
     information to disco#info reply. -->
 | 
			
		||||
    <chain id='disco-extend'>
 | 
			
		||||
      <module>iq-version</module>       <!-- add XEP-xxxx Software Information -->
 | 
			
		||||
      <module>help</module>             <!-- add XEP-0157 Contact Addresses -->
 | 
			
		||||
    </chain>
 | 
			
		||||
 | 
			
		||||
  </modules>
 | 
			
		||||
 | 
			
		||||
  <!-- Service discovery configuration -->
 | 
			
		||||
  <discovery>
 | 
			
		||||
 | 
			
		||||
    <!-- Service identity. these specify the category, type and name of
 | 
			
		||||
         this service that will be included in discovery information
 | 
			
		||||
         responses. -->
 | 
			
		||||
    <identity>
 | 
			
		||||
      <category>server</category>       <!-- default: server -->
 | 
			
		||||
      <type>im</type>                   <!-- default: im -->
 | 
			
		||||
      <name>Jabber IM server</name>     <!-- default: Jabber IM server -->
 | 
			
		||||
    </identity>
 | 
			
		||||
 | 
			
		||||
    <!-- The discovery module can respond to jabber:iq:agents queries
 | 
			
		||||
         for compatibility with older clients. Comment this out to
 | 
			
		||||
         disable this. -->
 | 
			
		||||
    <agents/>
 | 
			
		||||
 | 
			
		||||
    <!-- Static service list.
 | 
			
		||||
 | 
			
		||||
         The discover module can discover disco-capable services
 | 
			
		||||
         automatically as they come online. Most XEP-0114 components,
 | 
			
		||||
         however, will not support discovery. In order to get them to
 | 
			
		||||
         appear in disco/agents lists returned to the client, they
 | 
			
		||||
         should be listed here.
 | 
			
		||||
 | 
			
		||||
         Note that if a disco-capable service with the same name as one
 | 
			
		||||
         listed below comes online, the information it provides will
 | 
			
		||||
         override the information listed below.
 | 
			
		||||
 | 
			
		||||
         The "category" and "type" attributes, and the list of supported
 | 
			
		||||
         namespaces are only used for agents compatibility. If you have
 | 
			
		||||
         disabled this above, you may omit them. -->
 | 
			
		||||
    <items>
 | 
			
		||||
 | 
			
		||||
      <!-- example entry for a user directory -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <item category='service' type='jud' jid='users.jabber.org' name='Jabber User Directory'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- example entry for a groupchat (conference) service -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <item category='conference' type='public' jid='conference.jabber.org' name='Text conferencing'/>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
    </items>
 | 
			
		||||
 | 
			
		||||
    <!-- Server information added to server discovery information
 | 
			
		||||
         in http://jabber.org/network/serverinfo jabber:x:data form. (XEP-0157)
 | 
			
		||||
 | 
			
		||||
         May contain many values per item -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <serverinfo>
 | 
			
		||||
      <admin-addresses>
 | 
			
		||||
        <value>mailto:xmpp@localhost.localdomain</value>
 | 
			
		||||
        <value>xmpp:admins@localhost.localdomain</value>
 | 
			
		||||
      </admin-addresses>
 | 
			
		||||
      <abuse-addresses>
 | 
			
		||||
        <value>mailto:abuse@localhost.localdomain</value>
 | 
			
		||||
        <value>xmpp:abuse@localhost.localdomain</value>
 | 
			
		||||
      </abuse-addresses>
 | 
			
		||||
      <feedback-addresses>
 | 
			
		||||
        <value>http://example.org/feedback.php</value>
 | 
			
		||||
      </feedback-addresses>
 | 
			
		||||
      <sales-addresses/>
 | 
			
		||||
      <security-addresses/>
 | 
			
		||||
      <support-addresses/>
 | 
			
		||||
    </serverinfo>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
  </discovery>
 | 
			
		||||
 | 
			
		||||
  <!-- User options -->
 | 
			
		||||
  <user>
 | 
			
		||||
    <!-- By default, users must explicitly created before they can start
 | 
			
		||||
         a session. The creation process is usually triggered by a c2s
 | 
			
		||||
         component in response to a client registering a new user.
 | 
			
		||||
 | 
			
		||||
         Enabling this option will make it so that user creation will be
 | 
			
		||||
         triggered the first time a non-existant user attempts to start
 | 
			
		||||
         a session. This is useful if you already have users in an
 | 
			
		||||
         external authentication database (eg LDAP) and you don't want
 | 
			
		||||
         them to have to register. -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <auto-create/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Define maximum size in bytes of fields of vcards.
 | 
			
		||||
         There is a recommendation that the avatar picture SHOULD NOT
 | 
			
		||||
         be larger than 16 KiB. --> 
 | 
			
		||||
    <!--
 | 
			
		||||
    <vcard>
 | 
			
		||||
        <max-field-size>
 | 
			
		||||
            <default>16384</default>
 | 
			
		||||
            <avatar>16384</avatar>
 | 
			
		||||
        </max-field-size>
 | 
			
		||||
    </vcard>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Templates. If defined, the contents of these files will be
 | 
			
		||||
         stored in the users data store when they are created. -->
 | 
			
		||||
    <template>
 | 
			
		||||
      <!-- Uncomment <publish> if you wish to forcibly publish
 | 
			
		||||
           roster template from ldap on each user login -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <publish>
 | 
			
		||||
      -->
 | 
			
		||||
        <!-- Key used for fetching published roster items.
 | 
			
		||||
             Only one might be set at a time.
 | 
			
		||||
             If not set, all items are fetched. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <fetch-key>
 | 
			
		||||
          <domain/>
 | 
			
		||||
          <user/>
 | 
			
		||||
          <fixed>grouping-key</fixed>
 | 
			
		||||
        </fetch-key>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- If <check-remove-domain> given, then published contact is checked
 | 
			
		||||
             against sm user database and if user is unknown to sm, contact
 | 
			
		||||
             will be deleted from user's roster (if it is in roster).
 | 
			
		||||
			 If no domain set (tag empty) all contacts are checked. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <check-remove-domain>jabber.example.com</check-remove-domain>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- Alternatively if <force-create-contacts/> is not commented,
 | 
			
		||||
		     published contact is added to sm user database
 | 
			
		||||
			 and user set known to sm, so it won't auto-unsubscribe
 | 
			
		||||
			 on connection established -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <force-create-contacts/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- Keep cache of "active" database specified number of seconds.
 | 
			
		||||
             This will significantly speed up publishing of roster.
 | 
			
		||||
             If unspecified or 0, no cache is used. -->
 | 
			
		||||
        <active-cache-ttl>60</active-cache-ttl>
 | 
			
		||||
        <!-- If <fix-subscriptions/> is not commented, set "to" and "from" subscriptions of
 | 
			
		||||
             user's contacts to subscriptions of corresponding published
 | 
			
		||||
             contacts. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <fix-subscriptions/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- If <override-names/> is uncommented, then displayed names of
 | 
			
		||||
             contacts in user's roster will be updated accordingly to
 | 
			
		||||
             published roster (if they differ). If commented, then user can
 | 
			
		||||
             rename contacts in roster -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <override-names/>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- when mapped-groups is on (<map-groups/> is uncommented), the actual
 | 
			
		||||
             group names for published contacts are read from
 | 
			
		||||
             published-roster-groups storage type, which may be set
 | 
			
		||||
             to ldapvcard driver. The key for searching is published user's
 | 
			
		||||
             group, and returned value is used as group name. So you can assign
 | 
			
		||||
             textual group IDs to users rather then group names.
 | 
			
		||||
             group-cache-ttl keeps cache of mapping from group id to name for
 | 
			
		||||
             specified number of seconds. If unspecified or 0, no cache is used.
 | 
			
		||||
             -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <mapped-groups>
 | 
			
		||||
          <map-groups/>
 | 
			
		||||
          <group-cache-ttl>120</group-cache-ttl>
 | 
			
		||||
        </mapped-groups>
 | 
			
		||||
        -->
 | 
			
		||||
        <!-- If <force-groups> is commented out, published roster's contact
 | 
			
		||||
             added to user's roster only when user does not have this contact.
 | 
			
		||||
 | 
			
		||||
             If <force-groups> is uncommented, then these checks are performed
 | 
			
		||||
             against each roster item already in user's roster:
 | 
			
		||||
	       If roster item already present in user's roster in
 | 
			
		||||
	       group of same name, no changes are made with this group (note
 | 
			
		||||
               that contact may be in more than one group).
 | 
			
		||||
	       If <prefix> or <suffix> are given, then contact removed
 | 
			
		||||
	       from any matching groups.
 | 
			
		||||
               After that, contact is added to group from published roster.
 | 
			
		||||
 | 
			
		||||
             In other words, all groups of updated contact, that match prefix
 | 
			
		||||
             or suffix, are replaced with group of published contact.
 | 
			
		||||
             This is done because there is no way to determine that group was
 | 
			
		||||
             published or greated by user. -->
 | 
			
		||||
        <!--
 | 
			
		||||
        <force-groups>
 | 
			
		||||
          <prefix>MyOrg.</prefix>
 | 
			
		||||
          <suffix>(MyOrg)</suffix>
 | 
			
		||||
        </force-groups>
 | 
			
		||||
        -->
 | 
			
		||||
      <!--
 | 
			
		||||
      </publish>
 | 
			
		||||
      -->
 | 
			
		||||
 | 
			
		||||
      <!-- If defined, the contents of these files will be
 | 
			
		||||
           stored in the users data store when they are created. -->
 | 
			
		||||
      <!-- If you defined publish, you should comment-out <roster> -->
 | 
			
		||||
      <!--
 | 
			
		||||
      <roster>/etc/jabber/templates/roster.xml</roster>
 | 
			
		||||
      -->
 | 
			
		||||
    </template>
 | 
			
		||||
  </user>
 | 
			
		||||
 | 
			
		||||
  <!-- Advanced Message Processing module configuration -->
 | 
			
		||||
  <amp>
 | 
			
		||||
    <!-- You can disable some actions -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <disableactions>
 | 
			
		||||
      <drop/>
 | 
			
		||||
      <error/>
 | 
			
		||||
      <alert/>
 | 
			
		||||
      <notify/>
 | 
			
		||||
    </disableactions>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- You can disable some conditions -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <disableconditions>
 | 
			
		||||
      <expireat/>
 | 
			
		||||
      <matchresource/>
 | 
			
		||||
      <deliver/>
 | 
			
		||||
    </disableconditions>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- You need to enable this if your server has offline storage disabled -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <offlinestoragedisabled/>
 | 
			
		||||
    -->
 | 
			
		||||
  </amp>
 | 
			
		||||
 | 
			
		||||
  <!-- Offline module configuration -->
 | 
			
		||||
  <offline>
 | 
			
		||||
    <!-- Do not store messages in offline store -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <dropmessages/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Store headline messages in offline store -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <storeheadlines/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Do not store subscription requests in offline store -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <dropsubscriptions/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- Offline storage message quota.
 | 
			
		||||
         Specifies how many messages will be stored in user offline store -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <userquota>500</userquota>
 | 
			
		||||
    -->
 | 
			
		||||
  </offline>
 | 
			
		||||
 | 
			
		||||
  <!-- roster module configuration -->
 | 
			
		||||
  <roster>
 | 
			
		||||
    <!-- maximum items per user roster -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <maxitems>100</maxitems>
 | 
			
		||||
    -->
 | 
			
		||||
  </roster>
 | 
			
		||||
 | 
			
		||||
  <!-- status module configuration -->
 | 
			
		||||
  <status>
 | 
			
		||||
    <!-- presence service resource
 | 
			
		||||
         disabled when commented out -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <resource>webstatus</resource>
 | 
			
		||||
    -->
 | 
			
		||||
  </status>
 | 
			
		||||
 | 
			
		||||
</sm>
 | 
			
		||||
<!--
 | 
			
		||||
  vim: syntax=xml
 | 
			
		||||
-->
 | 
			
		||||
@ -1,25 +0,0 @@
 | 
			
		||||
html {
 | 
			
		||||
	background-color: #efefef;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
body {
 | 
			
		||||
	margin: 20px 20px 20px 20px;
 | 
			
		||||
	padding: 10px 10px 10px 10px;
 | 
			
		||||
	border: 1px solid black;
 | 
			
		||||
	background-color: #fffff2;
 | 
			
		||||
	color: #464543;
 | 
			
		||||
	font-family : Verdana, Arial, Helvetica, sans-serif;
 | 
			
		||||
	font-size: 12pt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
span.time {
 | 
			
		||||
	color: #8b8986;
 | 
			
		||||
}
 | 
			
		||||
span.time a{
 | 
			
		||||
	color: #8b8986;
 | 
			
		||||
	text-decoration: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
span.nick {
 | 
			
		||||
	color: black;
 | 
			
		||||
}
 | 
			
		||||
@ -1,7 +0,0 @@
 | 
			
		||||
<!-- This is the roster template. If enabled in sm.xml, new users will
 | 
			
		||||
     get this roster by default. -->
 | 
			
		||||
<query xmlns='jabber:iq:roster'>
 | 
			
		||||
  <!--
 | 
			
		||||
  <item name='Helpdesk' jid='helpdesk@localhost' subscription='none'><group>Support</group></item>
 | 
			
		||||
  -->
 | 
			
		||||
</query>
 | 
			
		||||
@ -1,7 +0,0 @@
 | 
			
		||||
<!-- This is the roster template. If enabled in sm.xml, new users will
 | 
			
		||||
     get this roster by default. -->
 | 
			
		||||
<query xmlns='jabber:iq:roster'>
 | 
			
		||||
  <!--
 | 
			
		||||
  <item name='Helpdesk' jid='helpdesk@localhost' subscription='none'><group>Support</group></item>
 | 
			
		||||
  -->
 | 
			
		||||
</query>
 | 
			
		||||
@ -1,14 +0,0 @@
 | 
			
		||||
# Nvidia drivers support
 | 
			
		||||
alias char-major-195 nvidia
 | 
			
		||||
alias /dev/nvidiactl char-major-195
 | 
			
		||||
 | 
			
		||||
# To tweak the driver the following options can be used, note that
 | 
			
		||||
# you should be careful, as it could cause instability!! For more 
 | 
			
		||||
# options see /usr/share/doc/nvidia-drivers-355.06-r1/README 
 | 
			
		||||
#
 | 
			
		||||
# !!! SECURITY WARNING !!!
 | 
			
		||||
# DO NOT MODIFY OR REMOVE THE DEVICE FILE RELATED OPTIONS UNLESS YOU KNOW
 | 
			
		||||
# WHAT YOU ARE DOING.
 | 
			
		||||
# ONLY ADD TRUSTED USERS TO THE VIDEO GROUP, THESE USERS MAY BE ABLE TO CRASH,
 | 
			
		||||
# COMPROMISE, OR IRREPARABLY DAMAGE THE MACHINE.
 | 
			
		||||
options nvidia NVreg_DeviceFileMode=432 NVreg_DeviceFileUID=0 NVreg_DeviceFileGID=27 NVreg_ModifyDeviceFiles=1
 | 
			
		||||
@ -4,7 +4,7 @@ alias /dev/nvidiactl char-major-195
 | 
			
		||||
 | 
			
		||||
# To tweak the driver the following options can be used, note that
 | 
			
		||||
# you should be careful, as it could cause instability!! For more 
 | 
			
		||||
# options see /usr/share/doc/nvidia-drivers-343.36/README 
 | 
			
		||||
# options see /usr/share/doc/nvidia-drivers-355.06-r1/README 
 | 
			
		||||
#
 | 
			
		||||
# !!! SECURITY WARNING !!!
 | 
			
		||||
# DO NOT MODIFY OR REMOVE THE DEVICE FILE RELATED OPTIONS UNLESS YOU KNOW
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user