Merge remote-tracking branch 'processone/master' into xep-0198

Conflicts:
	doc/guide.tex
	src/ejabberd_c2s.erl
This commit is contained in:
Holger Weiss 2014-05-06 21:41:29 +02:00
commit d343447cc9
178 changed files with 5553 additions and 3953 deletions

5
.gitignore vendored
View File

@ -24,8 +24,9 @@
/doc/*.toc /doc/*.toc
/doc/contributed_modules.tex /doc/contributed_modules.tex
/doc/version.tex /doc/version.tex
/ebin/*.beam /ebin/
/ebin/ejabberd.app /ejabberd.init
/ejabberdctl.example
/include/XmppAddr.hrl /include/XmppAddr.hrl
/src/XmppAddr.asn1db /src/XmppAddr.asn1db
/src/XmppAddr.erl /src/XmppAddr.erl

35
.travis.yml Normal file
View File

@ -0,0 +1,35 @@
language: erlang
otp_release:
- 17.0
- R15B01
before_install:
- sudo apt-get -qq update
install:
- sudo apt-get -qq install libexpat1-dev libyaml-dev libpam0g-dev
before_script:
- mysql -u root -e "CREATE USER 'ejabberd_test'@'localhost' IDENTIFIED BY 'ejabberd_test';"
- mysql -u root -e "CREATE DATABASE ejabberd_test;"
- mysql -u root -e "GRANT ALL ON ejabberd_test.* TO 'ejabberd_test'@'localhost';"
- psql -U postgres -c "CREATE USER ejabberd_test WITH PASSWORD 'ejabberd_test';"
- psql -U postgres -c "CREATE DATABASE ejabberd_test;"
- psql -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE ejabberd_test TO ejabberd_test;"
script:
- ./autogen.sh
- ./configure --enable-transient_supervisors --enable-all --disable-http --disable-odbc
- make
- make test
- grep -q 'TEST COMPLETE, \([[:digit:]]*\) ok, .* of \1 ' logs/raw.log
after_script:
- find logs -name suite.log -exec cat '{}' ';'
after_failure:
- find logs -name ejabberd.log -exec cat '{}' ';'
notifications:
email: false

10
COPYING
View File

@ -4,8 +4,8 @@ with the OpenSSL library and distribute the resulting binary.
GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE
Version 2, June 1991 Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc. Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed. of this license document, but changing it is not allowed.
@ -306,9 +306,9 @@ the "copyright" line and a pointer to where the full notice is found.
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License along
along with this program; if not, write to the Free Software with this program; if not, write to the Free Software Foundation, Inc.,
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail. Also add information on how to contact you by electronic and paper mail.

31
README
View File

@ -1,13 +1,18 @@
ejabberd - High-Performance Enterprise Instant Messaging Server ejabberd - High-Performance Enterprise Instant Messaging Server
---------------------------------------------------------------
Quickstart guide Quickstart guide
================
0. Requirements 0. Requirements
---------------
To compile ejabberd you need: To compile ejabberd you need:
- GNU Make - GNU Make
- GCC - GCC
- pkg-config
- Libexpat 1.95 or higher - Libexpat 1.95 or higher
- Libyaml 1.4 or higher - Libyaml 1.4 or higher
- Erlang/OTP R15B or higher. - Erlang/OTP R15B or higher.
@ -18,12 +23,13 @@ To compile ejabberd you need:
- GNU Iconv 1.8 or higher, for the IRC Transport - GNU Iconv 1.8 or higher, for the IRC Transport
(mod_irc). Optional. Not needed on systems with GNU Libc. (mod_irc). Optional. Not needed on systems with GNU Libc.
- ImageMagick's Convert program. Optional. For CAPTCHA challenges. - ImageMagick's Convert program. Optional. For CAPTCHA challenges.
- exmpp 0.9.6 or higher. Optional. For import/export XEP-0227 files.
1. Compile and install on *nix systems 1. Compile and install on *nix systems
--------------------------------------
To compile ejabberd execute the commands: To compile ejabberd execute the commands:
./configure ./configure
make make
@ -33,20 +39,25 @@ To install ejabberd, run this command with system administrator rights
sudo make install sudo make install
These commands will: These commands will:
- Install the configuration files in /etc/ejabberd/
- Install ejabberd binary, header and runtime files in /lib/ejabberd/ - Install the configuration files in `/etc/ejabberd/`
- Install the administration script: /sbin/ejabberdctl - Install ejabberd binary, header and runtime files in `/lib/ejabberd/`
- Install ejabberd documentation in /share/doc/ejabberd/ - Install the administration script: `/sbin/ejabberdctl`
- Create a spool directory: /var/lib/ejabberd/ - Install ejabberd documentation in `/share/doc/ejabberd/`
- Create a directory for log files: /var/log/ejabberd/ - Create a spool directory: `/var/lib/ejabberd/`
- Create a directory for log files: `/var/log/ejabberd/`
2. Start ejabberd 2. Start ejabberd
-----------------
You can use the ejabberdctl command line administration script to You can use the `ejabberdctl` command line administration script to
start and stop ejabberd. For example: start and stop ejabberd. For example:
ejabberdctl start ejabberdctl start
For detailed information please refer to the For detailed information please refer to the [ejabberd Installation and
ejabberd Installation and Operation Guide Operation Guide][1].
[1]: http://www.process-one.net/docs/ejabberd/guide_en.html

1
README.md Symbolic link
View File

@ -0,0 +1 @@
README

View File

@ -1,3 +1,3 @@
# generate a new autoconf # generate a new autoconf
aclocal -I m4 aclocal -I m4
autoconf autoconf -f

28
configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.67 for ejabberd community. # Generated by GNU Autoconf 2.67 for ejabberd community 13.12-119-g47a39ce.
# #
# Report bugs to <ejabberd@process-one.net>. # Report bugs to <ejabberd@process-one.net>.
# #
@ -552,8 +552,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='ejabberd' PACKAGE_NAME='ejabberd'
PACKAGE_TARNAME='ejabberd' PACKAGE_TARNAME='ejabberd'
PACKAGE_VERSION='community' PACKAGE_VERSION='community 13.12-119-g47a39ce'
PACKAGE_STRING='ejabberd community' PACKAGE_STRING='ejabberd community 13.12-119-g47a39ce'
PACKAGE_BUGREPORT='ejabberd@process-one.net' PACKAGE_BUGREPORT='ejabberd@process-one.net'
PACKAGE_URL='' PACKAGE_URL=''
@ -1222,7 +1222,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures ejabberd community to adapt to many kinds of systems. \`configure' configures ejabberd community 13.12-119-g47a39ce to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1283,7 +1283,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of ejabberd community:";; short | recursive ) echo "Configuration of ejabberd community 13.12-119-g47a39ce:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1407,7 +1407,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
ejabberd configure community ejabberd configure community 13.12-119-g47a39ce
generated by GNU Autoconf 2.67 generated by GNU Autoconf 2.67
Copyright (C) 2010 Free Software Foundation, Inc. Copyright (C) 2010 Free Software Foundation, Inc.
@ -1466,7 +1466,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by ejabberd $as_me community, which was It was created by ejabberd $as_me community 13.12-119-g47a39ce, which was
generated by GNU Autoconf 2.67. Invocation command line was generated by GNU Autoconf 2.67. Invocation command line was
$ $0 $@ $ $0 $@
@ -2480,7 +2480,7 @@ if test "${enable_erlang_version_check+set}" = set; then :
enableval=$enable_erlang_version_check; enableval=$enable_erlang_version_check;
fi fi
case "$enable_erlang_version_check" in case "$enable_erlang_version_check" in
yes|'') yes|'')
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Erlang/OTP version" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking Erlang/OTP version" >&5
$as_echo_n "checking Erlang/OTP version... " >&6; } $as_echo_n "checking Erlang/OTP version... " >&6; }
@ -2526,6 +2526,10 @@ parse(Version) ->
less_or_equal([], []) -> less_or_equal([], []) ->
true; true;
less_or_equal([], _Any) ->
true;
less_or_equal(_Any, []) ->
false;
less_or_equal([Left| Rl], [Right| Rr]) -> less_or_equal([Left| Rl], [Right| Rr]) ->
case {Left < Right, Left == Right} of case {Left < Right, Left == Right} of
{true, _} -> {true, _} ->
@ -2608,6 +2612,10 @@ parse(Version) ->
less_or_equal([], []) -> less_or_equal([], []) ->
true; true;
less_or_equal([], _Any) ->
true;
less_or_equal(_Any, []) ->
false;
less_or_equal([Left| Rl], [Right| Rr]) -> less_or_equal([Left| Rl], [Right| Rr]) ->
case {Left < Right, Left == Right} of case {Left < Right, Left == Right} of
{true, _} -> {true, _} ->
@ -4396,7 +4404,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by ejabberd $as_me community, which was This file was extended by ejabberd $as_me community 13.12-119-g47a39ce, which was
generated by GNU Autoconf 2.67. Invocation command line was generated by GNU Autoconf 2.67. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -4449,7 +4457,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\ ac_cs_version="\\
ejabberd config.status community ejabberd config.status community 13.12-119-g47a39ce
configured by $0, generated by GNU Autoconf 2.67, configured by $0, generated by GNU Autoconf 2.67,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"

File diff suppressed because it is too large Load Diff

View File

@ -68,6 +68,7 @@
\newcommand{\modannounce}{\module{mod\_announce}} \newcommand{\modannounce}{\module{mod\_announce}}
\newcommand{\modblocking}{\module{mod\_blocking}} \newcommand{\modblocking}{\module{mod\_blocking}}
\newcommand{\modcaps}{\module{mod\_caps}} \newcommand{\modcaps}{\module{mod\_caps}}
\newcommand{\modcarboncopy}{\module{mod\_carboncopy}}
\newcommand{\modconfigure}{\module{mod\_configure}} \newcommand{\modconfigure}{\module{mod\_configure}}
\newcommand{\moddisco}{\module{mod\_disco}} \newcommand{\moddisco}{\module{mod\_disco}}
\newcommand{\modecho}{\module{mod\_echo}} \newcommand{\modecho}{\module{mod\_echo}}
@ -92,6 +93,7 @@
\newcommand{\modsharedroster}{\module{mod\_shared\_roster}} \newcommand{\modsharedroster}{\module{mod\_shared\_roster}}
\newcommand{\modsharedrosterldap}{\module{mod\_shared\_roster\_ldap}} \newcommand{\modsharedrosterldap}{\module{mod\_shared\_roster\_ldap}}
\newcommand{\modsic}{\module{mod\_sic}} \newcommand{\modsic}{\module{mod\_sic}}
\newcommand{\modsip}{\module{mod\_sip}}
\newcommand{\modstats}{\module{mod\_stats}} \newcommand{\modstats}{\module{mod\_stats}}
\newcommand{\modtime}{\module{mod\_time}} \newcommand{\modtime}{\module{mod\_time}}
\newcommand{\modvcard}{\module{mod\_vcard}} \newcommand{\modvcard}{\module{mod\_vcard}}
@ -318,6 +320,7 @@ To compile \ejabberd{} on a `Unix-like' operating system, you need:
\begin{itemize} \begin{itemize}
\item GNU Make \item GNU Make
\item GCC \item GCC
\item pkg-config
\item Libexpat 1.95 or higher \item Libexpat 1.95 or higher
\item Erlang/OTP R15B or higher. \item Erlang/OTP R15B or higher.
\item Libyaml 1.4 or higher \item Libyaml 1.4 or higher
@ -869,7 +872,7 @@ The available modules, their purpose and the options allowed by each one are:
\begin{description} \begin{description}
\titem{\texttt{ejabberd\_c2s}} \titem{\texttt{ejabberd\_c2s}}
Handles c2s connections.\\ Handles c2s connections.\\
Options: \texttt{access}, \texttt{certfile}, \texttt{ciphers}, Options: \texttt{access}, \texttt{certfile}, \texttt{ciphers}, \texttt{protocol\_options}
\texttt{max\_ack\_queue}, \texttt{max\_fsm\_queue}, \texttt{max\_ack\_queue}, \texttt{max\_fsm\_queue},
\texttt{max\_stanza\_size}, \texttt{resend\_on\_timeout}, \texttt{max\_stanza\_size}, \texttt{resend\_on\_timeout},
\texttt{resume\_timeout}, \texttt{shaper}, \texttt{resume\_timeout}, \texttt{shaper},
@ -884,6 +887,10 @@ The available modules, their purpose and the options allowed by each one are:
(as defined in the Jabber Component Protocol (\xepref{0114}).\\ (as defined in the Jabber Component Protocol (\xepref{0114}).\\
Options: \texttt{access}, \texttt{hosts}, \texttt{max\_fsm\_queue}, Options: \texttt{access}, \texttt{hosts}, \texttt{max\_fsm\_queue},
\texttt{service\_check\_from}, \texttt{shaper\_rule} \texttt{service\_check\_from}, \texttt{shaper\_rule}
\titem{\texttt{ejabberd\_sip}}
Handles SIP requests as defined in
\footahref{http://tools.ietf.org/html/rfc3261}{RFC 3261}.\\
Options: \texttt{certfile}, \texttt{tls}
\titem{\texttt{ejabberd\_stun}} \titem{\texttt{ejabberd\_stun}}
Handles STUN Binding requests as defined in Handles STUN Binding requests as defined in
\footahref{http://tools.ietf.org/html/rfc5389}{RFC 5389}.\\ \footahref{http://tools.ietf.org/html/rfc5389}{RFC 5389}.\\
@ -919,6 +926,10 @@ This is a detailed description of each option allowed by the listening modules:
To define a certificate file specific for a given domain, use the global option \term{domain\_certfile}. To define a certificate file specific for a given domain, use the global option \term{domain\_certfile}.
\titem{ciphers: Ciphers} OpenSSL ciphers list in the same format accepted by \titem{ciphers: Ciphers} OpenSSL ciphers list in the same format accepted by
`\verb|openssl ciphers|' command. `\verb|openssl ciphers|' command.
\titem{protocol\_options: ProtocolOpts} \ind{options!protocol\_options}
List of general options relating to SSL/TLS. These map to \verb|<a href="https://www.openssl.org/docs/ssl/SSL_CTX_set_options.html">OpenSSL's set_options()</a>|.
For a full list of options available in ejabberd, \verb|<a href="https://github.com/processone/tls/blob/master/c_src/options.h">see the source</a>|.
The default entry is: \verb|"no_sslv2"|
\titem{default\_host: undefined|HostName\}} \titem{default\_host: undefined|HostName\}}
If the HTTP request received by ejabberd contains the HTTP header \term{Host} If the HTTP request received by ejabberd contains the HTTP header \term{Host}
with an ambiguous virtual host that doesn't match any one defined in ejabberd (see \ref{hostnames}), with an ambiguous virtual host that doesn't match any one defined in ejabberd (see \ref{hostnames}),
@ -1095,6 +1106,10 @@ There are some additional global options that can be specified in the ejabberd c
Full path to the file containing the SSL certificate for a specific domain. Full path to the file containing the SSL certificate for a specific domain.
\titem{s2s\_ciphers: Ciphers} \ind{options!s2s\_ciphers} OpenSSL ciphers list \titem{s2s\_ciphers: Ciphers} \ind{options!s2s\_ciphers} OpenSSL ciphers list
in the same format accepted by `\verb|openssl ciphers|' command. in the same format accepted by `\verb|openssl ciphers|' command.
\titem{s2s\_protocol\_options: ProtocolOpts} \ind{options!s2s\_protocol\_options}
List of general options relating to SSL/TLS. These map to \verb|<a href="https://www.openssl.org/docs/ssl/SSL_CTX_set_options.html">OpenSSL's set_options()</a>|.
For a full list of options available in ejabberd, \verb|<a href="https://github.com/processone/tls/blob/protocol_options/c_src/options.h">see the source</a>|.
The default entry is: \verb|"no_sslv2"|
\titem{outgoing\_s2s\_families: [Family, ...]} \ind{options!outgoing\_s2s\_families} \titem{outgoing\_s2s\_families: [Family, ...]} \ind{options!outgoing\_s2s\_families}
Specify which address families to try, in what order. Specify which address families to try, in what order.
By default it first tries connecting with IPv4, if that fails it tries using IPv6. By default it first tries connecting with IPv4, if that fails it tries using IPv6.
@ -1814,7 +1829,7 @@ The syntax is:
When a JID is checked to have access to \term{Accessname}, the server When a JID is checked to have access to \term{Accessname}, the server
sequentially checks if that JID matches any of the ACLs that are named in the sequentially checks if that JID matches any of the ACLs that are named in the
second elements of the tuples in the list. If it matches, the first element of first elements of the tuples in the list. If it matches, the second element of
the first matched tuple is returned, otherwise the value `\term{deny}' is the first matched tuple is returned, otherwise the value `\term{deny}' is
returned. returned.
@ -1982,7 +1997,7 @@ listen:
\ejabberd{} is able to act as a stand-alone STUN server \ejabberd{} is able to act as a stand-alone STUN server
(\footahref{http://tools.ietf.org/html/rfc5389}{RFC 5389}). Currently only Binding usage (\footahref{http://tools.ietf.org/html/rfc5389}{RFC 5389}). Currently only Binding usage
is supported. In that role \ejabberd{} helps clients with Jingle ICE (\xepref{0176}) support to discover their external addresses and ports. is supported. In that role \ejabberd{} helps clients with ICE (\footahref{http://tools.ietf.org/html/rfc5245}{RFC 5245}) or Jingle ICE (\xepref{0176}) support to discover their external addresses and ports.
You should configure \term{ejabberd\_stun} listening module as described in \ref{listened} section. You should configure \term{ejabberd\_stun} listening module as described in \ref{listened} section.
If \option{certfile} option is defined, \ejabberd{} multiplexes TCP and If \option{certfile} option is defined, \ejabberd{} multiplexes TCP and
@ -2022,6 +2037,61 @@ _stun._tcp IN SRV 0 0 3478 stun.example.com.
_stuns._tcp IN SRV 0 0 5349 stun.example.com. _stuns._tcp IN SRV 0 0 5349 stun.example.com.
\end{verbatim} \end{verbatim}
\makesubsection{sip}{SIP}
\ind{options!sip}\ind{sip}
\ejabberd{} has built-in SIP support. In order to activate it you need to add
listeners for it, configure DNS properly and enable \modsip{} for
the desired virtual host.
To add a listener you should configure \term{ejabberd\_sip} listening module as
described in \ref{listened} section. If option \option{tls} is specified, option
\option{certfile} must be specified as well, otherwise incoming TLS connections would fail.
Example configuration with standard ports
(as per \footahref{http://tools.ietf.org/html/rfc3261}{RFC 3261}):
\begin{verbatim}
listen:
...
-
port: 5060
transport: udp
module: ejabberd_sip
-
port: 5060
module: ejabberd_sip
-
port: 5061
module: ejabberd_sip
tls: true
certfile: "/etc/ejabberd/server.pem"
...
\end{verbatim}
Note that there is no StartTLS support in SIP and \footahref{http://en.wikipedia.org/wiki/Server\_Name\_Indication}{SNI} support is somewhat tricky, so for TLS you have to configure
different virtual hosts on different ports if you have different certificate files for them.
Next you need to configure DNS SIP records for your virtual domains.
Refer to \footahref{http://tools.ietf.org/html/rfc3263}{RFC 3263} for the detailed explanation.
Simply put, you should add NAPTR and SRV records for your domains.
Skip NAPTR configuration if your DNS provider doesn't support this type of records.
It's not fatal, however, highly recommended.
Example configuration of NAPTR records:
\begin{verbatim}
example.com IN NAPTR 10 0 "s" "SIPS+D2T" "" _sips._tcp.example.com.
example.com IN NAPTR 20 0 "s" "SIP+D2T" "" _sip._tcp.example.com.
example.com IN NAPTR 30 0 "s" "SIP+D2U" "" _sip._udp.example.com.
\end{verbatim}
Example configuration of SRV records with standard ports
(as per \footahref{http://tools.ietf.org/html/rfc3261}{RFC 3261}):
\begin{verbatim}
_sip._udp IN SRV 0 0 5060 sip.example.com.
_sip._tcp IN SRV 0 0 5060 sip.example.com.
_sips._tcp IN SRV 0 0 5061 sip.example.com.
\end{verbatim}
\makesubsection{includeconfigfile}{Include Additional Configuration Files} \makesubsection{includeconfigfile}{Include Additional Configuration Files}
\ind{options!includeconfigfile}\ind{includeconfigfile} \ind{options!includeconfigfile}\ind{includeconfigfile}
@ -2551,8 +2621,7 @@ modules:
mod_echo: {} mod_echo: {}
\end{verbatim} \end{verbatim}
\item In the second example the modules \modecho{}, \modtime{}, and \item In the second example the modules \modecho{}, \modtime{}, and
\modversion{} are loaded without options. Remark that, besides the last entry, \modversion{} are loaded without options.
all entries end with a comma:
\begin{verbatim} \begin{verbatim}
modules: modules:
mod_echo: {} mod_echo: {}
@ -2575,6 +2644,7 @@ The following table lists all modules included in \ejabberd{}.
\hline \ahrefloc{modannounce}{\modannounce{}} & Manage announcements & recommends \modadhoc{} \\ \hline \ahrefloc{modannounce}{\modannounce{}} & Manage announcements & recommends \modadhoc{} \\
\hline \modblocking{} & Simple Communications Blocking (\xepref{0191}) & \modprivacy{} \\ \hline \modblocking{} & Simple Communications Blocking (\xepref{0191}) & \modprivacy{} \\
\hline \modcaps{} & Entity Capabilities (\xepref{0115}) & \\ \hline \modcaps{} & Entity Capabilities (\xepref{0115}) & \\
\hline \modcarboncopy{} & Message Carbons (\xepref{0280}) & \\
\hline \modconfigure{} & Server configuration using Ad-Hoc & \modadhoc{} \\ \hline \modconfigure{} & Server configuration using Ad-Hoc & \modadhoc{} \\
\hline \ahrefloc{moddisco}{\moddisco{}} & Service Discovery (\xepref{0030}) & \\ \hline \ahrefloc{moddisco}{\moddisco{}} & Service Discovery (\xepref{0030}) & \\
\hline \ahrefloc{modecho}{\modecho{}} & Echoes XMPP stanzas & \\ \hline \ahrefloc{modecho}{\modecho{}} & Echoes XMPP stanzas & \\
@ -2599,6 +2669,7 @@ The following table lists all modules included in \ejabberd{}.
\hline \ahrefloc{modsharedroster}{\modsharedroster{}} & Shared roster management & \modroster{} \\ \hline \ahrefloc{modsharedroster}{\modsharedroster{}} & Shared roster management & \modroster{} \\
\hline \ahrefloc{modsharedrosterldap}{\modsharedrosterldap{}} & LDAP Shared roster management & \modroster{} \\ \hline \ahrefloc{modsharedrosterldap}{\modsharedrosterldap{}} & LDAP Shared roster management & \modroster{} \\
\hline \ahrefloc{modsic}{\modsic{}} & Server IP Check (\xepref{0279}) & \\ \hline \ahrefloc{modsic}{\modsic{}} & Server IP Check (\xepref{0279}) & \\
\hline \ahrefloc{modsip}{\modsip{}} & SIP Registrar/Proxy (\footahref{http://tools.ietf.org/html/rfc3261}{RFC 3261}) & \term{ejabberd\_sip} \\
\hline \ahrefloc{modstats}{\modstats{}} & Statistics Gathering (\xepref{0039}) & \\ \hline \ahrefloc{modstats}{\modstats{}} & Statistics Gathering (\xepref{0039}) & \\
\hline \ahrefloc{modtime}{\modtime{}} & Entity Time (\xepref{0202}) & \\ \hline \ahrefloc{modtime}{\modtime{}} & Entity Time (\xepref{0202}) & \\
\hline \ahrefloc{modvcard}{\modvcard{}} & vcard-temp (\xepref{0054}) & \\ \hline \ahrefloc{modvcard}{\modvcard{}} & vcard-temp (\xepref{0054}) & \\
@ -4639,6 +4710,49 @@ Options:
\iqdiscitem{\ns{urn:xmpp:sic:0}} \iqdiscitem{\ns{urn:xmpp:sic:0}}
\end{description} \end{description}
\makesubsection{modsip}{\modsip{}}
\ind{modules!\modsip{}}
This module adds SIP proxy/registrar support for the corresponding virtual host.
Note that it is not enough to just load this module only. You should also configure
listeners and DNS records properly. See section \ref{sip} for the full explanation.
Example configuration:
\begin{verbatim}
modules:
...
mod_sip: {}
...
\end{verbatim}
Options:
\begin{description}
\titem{via: [\{type: Type, host: Host, port: Port\}]}\ind{options!via}With
this option for every \term{Type} you can specify \term{Host} and \term{Port}
to set in \term{Via} header of outgoing SIP messages, where \term{Type} can be
\term{udp}, \term{tcp} or \term{tls}. \term{Host} is a string and \term{Port} is
a non negative integer. This is useful if you're running your server in a non-standard
network topology. Example configuration:
\begin{verbatim}
modules:
...
mod_sip:
via:
-
type: tls
host: "sip-tls.example.com"
port: 5061
-
type: tcp
host: "sip-tcp.example.com"
port: 5060
-
type: udp
host: "sip-udp.example.com"
port: 5060
...
\end{verbatim}
\end{description}
\makesubsection{modstats}{\modstats{}} \makesubsection{modstats}{\modstats{}}
\ind{modules!\modstats{}}\ind{protocols!XEP-0039: Statistics Gathering}\ind{statistics} \ind{modules!\modstats{}}\ind{protocols!XEP-0039: Statistics Gathering}\ind{statistics}
@ -5031,6 +5145,9 @@ This can be used by other scripts to determine automatically
if a command succeeded or failed, if a command succeeded or failed,
for example using: \term{echo \$?} for example using: \term{echo \$?}
If you use Bash, you can get Bash completion by copying the file \term{tools/ejabberdctl.bc}
to the directory \term{/etc/bash\_completion.d/} (in Debian, Ubuntu, Fedora and maybe others).
\makesubsection{ectl-commands}{ejabberdctl Commands} \makesubsection{ectl-commands}{ejabberdctl Commands}
When \term{ejabberdctl} is executed without any parameter, When \term{ejabberdctl} is executed without any parameter,
@ -5992,7 +6109,7 @@ Thanks to all people who contributed to this guide:
\makechapter{copyright}{Copyright Information} \makechapter{copyright}{Copyright Information}
Ejabberd Installation and Operation Guide.\\ Ejabberd Installation and Operation Guide.\\
Copyright \copyright{} 2003 --- 2013 ProcessOne Copyright \copyright{} 2003 --- 2014 ProcessOne
This document is free software; you can redistribute it and/or This document is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License modify it under the terms of the GNU General Public License

View File

@ -128,6 +128,7 @@ Moreover, \ejabberd{} comes with a wide range of other state-of-the-art features
\item \txepref{0060}{Publish-Subscribe} component with support for \txepref{0163}{Personal Eventing via Pubsub}. \item \txepref{0060}{Publish-Subscribe} component with support for \txepref{0163}{Personal Eventing via Pubsub}.
\item Support for web clients: \txepref{0025}{HTTP Polling} and \txepref{0206}{HTTP Binding (BOSH)} services. \item Support for web clients: \txepref{0025}{HTTP Polling} and \txepref{0206}{HTTP Binding (BOSH)} services.
\item IRC transport. \item IRC transport.
\item SIP support.
\item Component support: interface with networks such as AIM, ICQ and MSN installing special tranports. \item Component support: interface with networks such as AIM, ICQ and MSN installing special tranports.
\end{itemize} \end{itemize}
\end{itemize} \end{itemize}

View File

@ -86,6 +86,12 @@ listen:
## ##
## certfile: "/path/to/ssl.pem" ## certfile: "/path/to/ssl.pem"
## starttls: true ## starttls: true
##
## Custom OpenSSL options
##
## protocol_options:
## - "no_sslv3"
## - "no_tlsv1"
max_stanza_size: 65536 max_stanza_size: 65536
shaper: c2s_shaper shaper: c2s_shaper
access: c2s access: c2s
@ -144,6 +150,12 @@ listen:
## ##
## s2s_certfile: "/path/to/ssl.pem" ## s2s_certfile: "/path/to/ssl.pem"
## Custom OpenSSL options
##
## s2s_protocol_options:
## - "no_sslv3"
## - "no_tlsv1"
## ##
## domain_certfile: Specify a different certificate for each served hostname. ## domain_certfile: Specify a different certificate for each served hostname.
## ##
@ -514,6 +526,7 @@ modules:
access: announce access: announce
mod_blocking: {} # requires mod_privacy mod_blocking: {} # requires mod_privacy
mod_caps: {} mod_caps: {}
mod_carboncopy: {}
mod_configure: {} # requires mod_adhoc mod_configure: {} # requires mod_adhoc
mod_disco: {} mod_disco: {}
## mod_echo: {} ## mod_echo: {}

View File

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -12,10 +12,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -12,10 +12,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -12,10 +12,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -12,10 +12,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -12,10 +12,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -12,10 +12,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -12,10 +12,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -12,10 +12,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -12,10 +12,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -12,10 +12,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -12,10 +12,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
-define(PRINT(Format, Args), io:format(Format, Args)). -define(PRINT(Format, Args), io:format(Format, Args)).

View File

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -12,10 +12,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
@ -59,6 +58,7 @@
voice_request_min_interval = 1800 :: non_neg_integer(), voice_request_min_interval = 1800 :: non_neg_integer(),
max_users = ?MAX_USERS_DEFAULT :: non_neg_integer() | none, max_users = ?MAX_USERS_DEFAULT :: non_neg_integer() | none,
logging = false :: boolean(), logging = false :: boolean(),
vcard = <<"">> :: boolean(),
captcha_whitelist = (?SETS):empty() :: gb_set() captcha_whitelist = (?SETS):empty() :: gb_set()
}). }).

View File

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -12,10 +12,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -2,7 +2,7 @@
%%% RFC 1928 constants. %%% RFC 1928 constants.
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -14,10 +14,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -12,10 +12,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -1,6 +1,6 @@
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -12,10 +12,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -13,12 +13,12 @@
%%% %%%
%%% %%%
%%% The Initial Developer of the Original Code is ProcessOne. %%% The Initial Developer of the Original Code is ProcessOne.
%%% Portions created by ProcessOne are Copyright 2006-2013, ProcessOne %%% Portions created by ProcessOne are Copyright 2006-2014, ProcessOne
%%% All Rights Reserved.'' %%% All Rights Reserved.''
%%% This software is copyright 2006-2013, ProcessOne. %%% This software is copyright 2006-2014, ProcessOne.
%%% %%%
%%% %%%
%%% copyright 2006-2013 ProcessOne %%% copyright 2006-2014 ProcessOne
%%% %%%
%%% This file contains pubsub types definition. %%% This file contains pubsub types definition.
%%% ==================================================================== %%% ====================================================================

File diff suppressed because it is too large Load Diff

View File

@ -43,6 +43,7 @@ HiPE = case lists:keysearch(hipe, 1, Cfg) of
end, end,
Includes = [{i, "include"}, Includes = [{i, "include"},
{i, filename:join(["deps", "esip", "include"])},
{i, filename:join(["deps", "p1_xml", "include"])}], {i, filename:join(["deps", "p1_xml", "include"])}],
SrcDirs = lists:foldl( SrcDirs = lists:foldl(
@ -56,6 +57,7 @@ Deps = [{p1_cache_tab, ".*", {git, "git://github.com/processone/cache_tab"}},
{p1_tls, ".*", {git, "git://github.com/processone/tls"}}, {p1_tls, ".*", {git, "git://github.com/processone/tls"}},
{p1_stringprep, ".*", {git, "git://github.com/processone/stringprep"}}, {p1_stringprep, ".*", {git, "git://github.com/processone/stringprep"}},
{p1_xml, ".*", {git, "git://github.com/processone/xml"}}, {p1_xml, ".*", {git, "git://github.com/processone/xml"}},
{esip, ".*", {git, "git://github.com/processone/p1_sip"}},
{p1_yaml, ".*", {git, "git://github.com/processone/p1_yaml"}}, {p1_yaml, ".*", {git, "git://github.com/processone/p1_yaml"}},
{xmlrpc, ".*", {git, "git://github.com/rds13/xmlrpc"}}], {xmlrpc, ".*", {git, "git://github.com/rds13/xmlrpc"}}],
@ -77,6 +79,7 @@ XMLFlags = lists:foldl(
PostHooks = [ConfigureCmd("p1_tls", ""), PostHooks = [ConfigureCmd("p1_tls", ""),
ConfigureCmd("p1_stringprep", ""), ConfigureCmd("p1_stringprep", ""),
ConfigureCmd("p1_yaml", ""), ConfigureCmd("p1_yaml", ""),
ConfigureCmd("esip", ""),
ConfigureCmd("p1_xml", XMLFlags)], ConfigureCmd("p1_xml", XMLFlags)],
CfgDeps = lists:flatmap( CfgDeps = lists:flatmap(

View File

@ -1,5 +1,5 @@
/* /*
* ejabberd, Copyright (C) 2002-2013 ProcessOne * ejabberd, Copyright (C) 2002-2014 ProcessOne
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as * modify it under the terms of the GNU General Public License as
@ -11,10 +11,9 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details. * General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License along
* along with this program; if not, write to the Free Software * with this program; if not, write to the Free Software Foundation, Inc.,
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
* 02111-1307 USA
* *
*/ */

View File

@ -1,5 +1,5 @@
/* /*
* ejabberd, Copyright (C) 2002-2013 ProcessOne * ejabberd, Copyright (C) 2002-2014 ProcessOne
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as * modify it under the terms of the GNU General Public License as
@ -11,10 +11,9 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details. * General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License along
* along with this program; if not, write to the Free Software * with this program; if not, write to the Free Software Foundation, Inc.,
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
* 02111-1307 USA
* *
*/ */

View File

@ -1,5 +1,5 @@
/* /*
* ejabberd, Copyright (C) 2002-2013 ProcessOne * ejabberd, Copyright (C) 2002-2014 ProcessOne
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as * modify it under the terms of the GNU General Public License as
@ -11,10 +11,9 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details. * General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License along
* along with this program; if not, write to the Free Software * with this program; if not, write to the Free Software Foundation, Inc.,
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
* 02111-1307 USA
* *
*/ */

View File

@ -1,5 +1,5 @@
-- --
-- ejabberd, Copyright (C) 2002-2013 ProcessOne -- ejabberd, Copyright (C) 2002-2014 ProcessOne
-- --
-- This program is free software; you can redistribute it and/or -- This program is free software; you can redistribute it and/or
-- modify it under the terms of the GNU General Public License as -- modify it under the terms of the GNU General Public License as
@ -11,10 +11,9 @@
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- General Public License for more details. -- General Public License for more details.
-- --
-- You should have received a copy of the GNU General Public License -- You should have received a copy of the GNU General Public License along
-- along with this program; if not, write to the Free Software -- with this program; if not, write to the Free Software Foundation, Inc.,
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-- 02111-1307 USA
-- --
CREATE TABLE users ( CREATE TABLE users (

View File

@ -1,5 +1,5 @@
-- --
-- ejabberd, Copyright (C) 2002-2013 ProcessOne -- ejabberd, Copyright (C) 2002-2014 ProcessOne
-- --
-- This program is free software; you can redistribute it and/or -- This program is free software; you can redistribute it and/or
-- modify it under the terms of the GNU General Public License as -- modify it under the terms of the GNU General Public License as
@ -11,10 +11,9 @@
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- General Public License for more details. -- General Public License for more details.
-- --
-- You should have received a copy of the GNU General Public License -- You should have received a copy of the GNU General Public License along
-- along with this program; if not, write to the Free Software -- with this program; if not, write to the Free Software Foundation, Inc.,
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-- 02111-1307 USA
-- --
CREATE TABLE users ( CREATE TABLE users (

View File

@ -5,7 +5,7 @@
%%% Created : 18 Jan 2003 by Alexey Shchepin <alexey@process-one.net> %%% Created : 18 Jan 2003 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
@ -237,6 +236,8 @@ normalize_spec(Spec) ->
{server_regexp, SR} -> {server_regexp, b(SR)}; {server_regexp, SR} -> {server_regexp, b(SR)};
{server_glob, S} -> {server_glob, b(S)}; {server_glob, S} -> {server_glob, b(S)};
{resource_glob, R} -> {resource_glob, b(R)}; {resource_glob, R} -> {resource_glob, b(R)};
{ip, {Net, Mask}} ->
{ip, {Net, Mask}};
{ip, S} -> {ip, S} ->
case parse_ip_netmask(b(S)) of case parse_ip_netmask(b(S)) of
{ok, Net, Mask} -> {ok, Net, Mask} ->
@ -263,9 +264,6 @@ match_rule(Host, Access, JID) ->
end, end,
case GAccess ++ LAccess of case GAccess ++ LAccess of
[] -> [] ->
?WARNING_MSG("Attempt to match against unspecified "
"access rule '~s' (scope: ~s)",
[Access, Host]),
deny; deny;
AccessList -> AccessList ->
Rules = lists:flatmap( Rules = lists:flatmap(

View File

@ -5,7 +5,7 @@
%%% Created : 31 Oct 2005 by Magnus Henoch <henoch@dtek.chalmers.se> %%% Created : 31 Oct 2005 by Magnus Henoch <henoch@dtek.chalmers.se>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 8 Mar 2003 by Alexey Shchepin <alexey@process-one.net> %%% Created : 8 Mar 2003 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -6,7 +6,7 @@
%%% Created : 23 Aug 2005 by Magnus Henoch <henoch@dtek.chalmers.se> %%% Created : 23 Aug 2005 by Magnus Henoch <henoch@dtek.chalmers.se>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -18,10 +18,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 11 Mar 2003 by Alexey Shchepin <alexey@sevcom.net> %%% Created : 11 Mar 2003 by Alexey Shchepin <alexey@sevcom.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 8 Mar 2003 by Alexey Shchepin <alexey@process-one.net> %%% Created : 8 Mar 2003 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 7 Aug 2011 by Stephen Röttger <stephen.roettger@googlemail.com> %%% Created : 7 Aug 2011 by Stephen Röttger <stephen.roettger@googlemail.com>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 16 Nov 2002 by Alexey Shchepin <alexey@process-one.net> %%% Created : 16 Nov 2002 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 7 May 2006 by Mickael Remond <mremond@process-one.net> %%% Created : 7 May 2006 by Mickael Remond <mremond@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%------------------------------------------------------------------- %%%-------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 31 Jan 2003 by Alexey Shchepin <alexey@process-one.net> %%% Created : 31 Jan 2003 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 23 Nov 2002 by Alexey Shchepin <alexey@process-one.net> %%% Created : 23 Nov 2002 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 17 Feb 2006 by Mickael Remond <mremond@process-one.net> %%% Created : 17 Feb 2006 by Mickael Remond <mremond@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 12 Dec 2004 by Alexey Shchepin <alexey@process-one.net> %%% Created : 12 Dec 2004 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
@ -173,7 +172,9 @@ remove_user(User, Server, Password) ->
get_cache_option(Host) -> get_cache_option(Host) ->
case ejabberd_config:get_option( case ejabberd_config:get_option(
{extauth_cache, Host}, {extauth_cache, Host},
fun(I) when is_integer(I), I > 0 -> I end) of fun(false) -> undefined;
(I) when is_integer(I), I >= 0 -> I
end) of
undefined -> false; undefined -> false;
CacheTime -> {true, CacheTime} CacheTime -> {true, CacheTime}
end. end.

View File

@ -5,7 +5,7 @@
%%% Created : 12 Dec 2004 by Alexey Shchepin <alexey@process-one.net> %%% Created : 12 Dec 2004 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 12 Dec 2004 by Alexey Shchepin <alexey@process-one.net> %%% Created : 12 Dec 2004 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 12 Dec 2004 by Alexey Shchepin <alexey@process-one.net> %%% Created : 12 Dec 2004 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
@ -213,6 +212,7 @@ is_user_exists(User, Server) ->
true; %% Account exists true; %% Account exists
{selected, [<<"password">>], []} -> {selected, [<<"password">>], []} ->
false; %% Account does not exist false; %% Account does not exist
{error, unknownhost} -> false;
{error, Error} -> {error, Error} {error, Error} -> {error, Error}
catch catch
_:B -> {error, B} _:B -> {error, B}

View File

@ -5,7 +5,7 @@
%%% Created : 5 Jul 2007 by Evgeniy Khramtsov <xram@jabber.ru> %%% Created : 5 Jul 2007 by Evgeniy Khramtsov <xram@jabber.ru>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%------------------------------------------------------------------- %%%-------------------------------------------------------------------
-module(ejabberd_auth_pam). -module(ejabberd_auth_pam).

View File

@ -5,7 +5,7 @@
%%% Created : 16 Nov 2002 by Alexey Shchepin <alexey@process-one.net> %%% Created : 16 Nov 2002 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
@ -118,7 +117,7 @@
mgmt_resend, mgmt_resend,
mgmt_stanzas_in = 0, mgmt_stanzas_in = 0,
mgmt_stanzas_out = 0, mgmt_stanzas_out = 0,
lang}). lang = <<"">>}).
%-define(DBGFSM, true). %-define(DBGFSM, true).
@ -288,11 +287,20 @@ init([{SockMod, Socket}, Opts]) ->
(_) -> false (_) -> false
end, end,
Opts), Opts),
TLSOpts2 = case proplists:get_bool(tls_compression, Opts) of TLSOpts2 = case lists:keysearch(protocol_options, 1, Opts) of
false -> [compression_none | TLSOpts1]; {value, {_, O}} ->
true -> TLSOpts1 [_|ProtocolOptions] = lists:foldl(
fun(X, Acc) -> X ++ Acc end, [],
[["|" | binary_to_list(Opt)] || Opt <- O, is_binary(Opt)]
),
[{protocol_options, iolist_to_binary(ProtocolOptions)} | TLSOpts1];
_ -> TLSOpts1
end, end,
TLSOpts = [verify_none | TLSOpts2], TLSOpts3 = case proplists:get_bool(tls_compression, Opts) of
false -> [compression_none | TLSOpts2];
true -> TLSOpts2
end,
TLSOpts = [verify_none | TLSOpts3],
StreamMgmtEnabled = proplists:get_value(stream_management, Opts, true), StreamMgmtEnabled = proplists:get_value(stream_management, Opts, true),
StreamMgmtState = if StreamMgmtEnabled -> inactive; StreamMgmtState = if StreamMgmtEnabled -> inactive;
true -> disabled true -> disabled
@ -617,8 +625,7 @@ wait_for_auth({xmlstreamelement, El}, StateData) ->
?INFO_MSG("(~w) Accepted legacy authentication for ~s by ~p", ?INFO_MSG("(~w) Accepted legacy authentication for ~s by ~p",
[StateData#state.socket, [StateData#state.socket,
jlib:jid_to_string(JID), AuthModule]), jlib:jid_to_string(JID), AuthModule]),
Conn = (StateData#state.sockmod):get_conn_type( Conn = get_conn_type(StateData),
StateData#state.socket),
Info = [{ip, StateData#state.ip}, {conn, Conn}, Info = [{ip, StateData#state.ip}, {conn, Conn},
{auth_module, AuthModule}], {auth_module, AuthModule}],
Res = jlib:make_result_iq_reply( Res = jlib:make_result_iq_reply(
@ -1353,14 +1360,19 @@ handle_info({send_text, Text}, StateName, StateData) ->
send_text(StateData, Text), send_text(StateData, Text),
ejabberd_hooks:run(c2s_loop_debug, [Text]), ejabberd_hooks:run(c2s_loop_debug, [Text]),
fsm_next_state(StateName, StateData); fsm_next_state(StateName, StateData);
handle_info(replaced, _StateName, StateData) -> handle_info(replaced, StateName, StateData) ->
Lang = StateData#state.lang, Lang = StateData#state.lang,
send_element(StateData, Xmlelement = ?SERRT_CONFLICT(Lang, <<"Replaced by new connection">>),
?SERRT_CONFLICT(Lang, handle_info({kick, replaced, Xmlelement}, StateName, StateData);
<<"Replaced by new connection">>)), handle_info(disconnect, StateName, StateData) ->
Lang = StateData#state.lang,
Xmlelement = ?SERRT_POLICY_VIOLATION(Lang, <<"has been kicked">>),
handle_info({kick, kicked_by_admin, Xmlelement}, StateName, StateData);
handle_info({kick, Reason, Xmlelement}, _StateName, StateData) ->
send_element(StateData, Xmlelement),
send_trailer(StateData), send_trailer(StateData),
{stop, normal, {stop, normal,
StateData#state{authenticated = replaced}}; StateData#state{authenticated = Reason}};
handle_info({route, _From, _To, {broadcast, Data}}, handle_info({route, _From, _To, {broadcast, Data}},
StateName, StateData) -> StateName, StateData) ->
?DEBUG("broadcast~n~p~n", [Data]), ?DEBUG("broadcast~n~p~n", [Data]),

View File

@ -6,7 +6,7 @@
%%% Created : 2 Nov 2007 by Mickael Remond <mremond@process-one.net> %%% Created : 2 Nov 2007 by Mickael Remond <mremond@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -18,10 +18,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 26 Apr 2008 by Evgeniy Khramtsov <xramtsov@gmail.com> %%% Created : 26 Apr 2008 by Evgeniy Khramtsov <xramtsov@gmail.com>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%------------------------------------------------------------------- %%%-------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 20 May 2008 by Badlop <badlop@process-one.net> %%% Created : 20 May 2008 by Badlop <badlop@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 14 Dec 2002 by Alexey Shchepin <alexey@process-one.net> %%% Created : 14 Dec 2002 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 11 Jan 2004 by Alexey Shchepin <alexey@process-one.net> %%% Created : 11 Jan 2004 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
@ -419,6 +418,7 @@ is_supported_args(Args) ->
fun({_Name, Format}) -> fun({_Name, Format}) ->
(Format == integer) (Format == integer)
or (Format == string) or (Format == string)
or (Format == binary)
end, end,
Args). Args).

View File

@ -5,7 +5,7 @@
%%% Created : 23 Aug 2006 by Alexey Shchepin <alexey@process-one.net> %%% Created : 23 Aug 2006 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 8 Aug 2004 by Alexey Shchepin <alexey@process-one.net> %%% Created : 8 Aug 2004 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 27 Feb 2004 by Alexey Shchepin <alexey@process-one.net> %%% Created : 27 Feb 2004 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
@ -51,7 +50,7 @@
request_auth, request_auth,
request_keepalive, request_keepalive,
request_content_length, request_content_length,
request_lang = "en", request_lang = <<"en">>,
%% XXX bard: request handlers are configured in %% XXX bard: request handlers are configured in
%% ejabberd.cfg under the HTTP service. For example, %% ejabberd.cfg under the HTTP service. For example,
%% to have the module test_web handle requests with %% to have the module test_web handle requests with

View File

@ -5,7 +5,7 @@
%%% Created : 4 Mar 2004 by Alexey Shchepin <alexey@process-one.net> %%% Created : 4 Mar 2004 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 16 Nov 2002 by Alexey Shchepin <alexey@process-one.net> %%% Created : 16 Nov 2002 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
@ -152,7 +151,20 @@ init_udp(PortIP, Module, Opts, SockOpts, Port, IPS) ->
{ok, Socket} -> {ok, Socket} ->
%% Inform my parent that this port was opened succesfully %% Inform my parent that this port was opened succesfully
proc_lib:init_ack({ok, self()}), proc_lib:init_ack({ok, self()}),
case erlang:function_exported(Module, udp_init, 2) of
false ->
udp_recv(Socket, Module, Opts); udp_recv(Socket, Module, Opts);
true ->
case catch Module:udp_init(Socket, Opts) of
{'EXIT', _} = Err ->
?ERROR_MSG("failed to process callback function "
"~p:~s(~p, ~p): ~p",
[Module, udp_init, Socket, Opts, Err]),
udp_recv(Socket, Module, Opts);
NewOpts ->
udp_recv(Socket, Module, NewOpts)
end
end;
{error, Reason} -> {error, Reason} ->
socket_error(Reason, PortIP, Module, SockOpts, Port, IPS) socket_error(Reason, PortIP, Module, SockOpts, Port, IPS)
end. end.
@ -161,8 +173,20 @@ init_tcp(PortIP, Module, Opts, SockOpts, Port, IPS) ->
ListenSocket = listen_tcp(PortIP, Module, SockOpts, Port, IPS), ListenSocket = listen_tcp(PortIP, Module, SockOpts, Port, IPS),
%% Inform my parent that this port was opened succesfully %% Inform my parent that this port was opened succesfully
proc_lib:init_ack({ok, self()}), proc_lib:init_ack({ok, self()}),
%% And now start accepting connection attempts case erlang:function_exported(Module, tcp_init, 2) of
accept(ListenSocket, Module, Opts). false ->
accept(ListenSocket, Module, Opts);
true ->
case catch Module:tcp_init(ListenSocket, Opts) of
{'EXIT', _} = Err ->
?ERROR_MSG("failed to process callback function "
"~p:~s(~p, ~p): ~p",
[Module, tcp_init, ListenSocket, Opts, Err]),
accept(ListenSocket, Module, Opts);
NewOpts ->
accept(ListenSocket, Module, NewOpts)
end
end.
listen_tcp(PortIP, Module, SockOpts, Port, IPS) -> listen_tcp(PortIP, Module, SockOpts, Port, IPS) ->
case ets:lookup(listen_sockets, PortIP) of case ets:lookup(listen_sockets, PortIP) of
@ -285,9 +309,10 @@ accept(ListenSocket, Module, Opts) ->
case gen_tcp:accept(ListenSocket) of case gen_tcp:accept(ListenSocket) of
{ok, Socket} -> {ok, Socket} ->
case {inet:sockname(Socket), inet:peername(Socket)} of case {inet:sockname(Socket), inet:peername(Socket)} of
{{ok, Addr}, {ok, PAddr}} -> {{ok, {Addr, Port}}, {ok, {PAddr, PPort}}} ->
?INFO_MSG("(~w) Accepted connection ~w -> ~w", ?INFO_MSG("(~w) Accepted connection ~s:~p -> ~s:~p",
[Socket, PAddr, Addr]); [Socket, inet_parse:ntoa(PAddr), PPort,
inet_parse:ntoa(Addr), Port]);
_ -> _ ->
ok ok
end, end,
@ -311,11 +336,11 @@ udp_recv(Socket, Module, Opts) ->
?ERROR_MSG("failed to process UDP packet:~n" ?ERROR_MSG("failed to process UDP packet:~n"
"** Source: {~p, ~p}~n" "** Source: {~p, ~p}~n"
"** Reason: ~p~n** Packet: ~p", "** Reason: ~p~n** Packet: ~p",
[Addr, Port, Reason, Packet]); [Addr, Port, Reason, Packet]),
_ ->
ok
end,
udp_recv(Socket, Module, Opts); udp_recv(Socket, Module, Opts);
NewOpts ->
udp_recv(Socket, Module, NewOpts)
end;
{error, Reason} -> {error, Reason} ->
?ERROR_MSG("unexpected UDP error: ~s", [format_error(Reason)]), ?ERROR_MSG("unexpected UDP error: ~s", [format_error(Reason)]),
throw({error, Reason}) throw({error, Reason})
@ -342,6 +367,7 @@ start_listener2(Port, Module, Opts) ->
%% But it doesn't hurt to attempt to start it for any listener. %% But it doesn't hurt to attempt to start it for any listener.
%% So, it's normal (and harmless) that in most cases this call returns: {error, {already_started, pid()}} %% So, it's normal (and harmless) that in most cases this call returns: {error, {already_started, pid()}}
maybe_start_stun(Module), maybe_start_stun(Module),
maybe_start_sip(Module),
start_module_sup(Port, Module), start_module_sup(Port, Module),
start_listener_sup(Port, Module, Opts). start_listener_sup(Port, Module, Opts).
@ -463,6 +489,11 @@ maybe_start_stun(ejabberd_stun) ->
maybe_start_stun(_) -> maybe_start_stun(_) ->
ok. ok.
maybe_start_sip(esip_socket) ->
ejabberd:start_app(esip);
maybe_start_sip(_) ->
ok.
%%% %%%
%%% Check options %%% Check options
%%% %%%
@ -642,7 +673,11 @@ prepare_ip(IP) when is_binary(IP) ->
prepare_mod(ejabberd_stun) -> prepare_mod(ejabberd_stun) ->
prepare_mod(stun); prepare_mod(stun);
prepare_mod(ejabberd_sip) ->
prepare_mod(sip);
prepare_mod(stun) -> prepare_mod(stun) ->
stun; stun;
prepare_mod(sip) ->
esip_socket;
prepare_mod(Mod) when is_atom(Mod) -> prepare_mod(Mod) when is_atom(Mod) ->
Mod. Mod.

View File

@ -5,7 +5,7 @@
%%% Created : 30 Nov 2002 by Alexey Shchepin <alexey@process-one.net> %%% Created : 30 Nov 2002 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -18,10 +18,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%%------------------------------------------------------------------- %%%-------------------------------------------------------------------
-module(ejabberd_logger). -module(ejabberd_logger).

View File

@ -5,7 +5,7 @@
%%% Created : 1 Nov 2006 by Alexey Shchepin <alexey@process-one.net> %%% Created : 1 Nov 2006 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 8 Dec 2004 by Alexey Shchepin <alexey@process-one.net> %%% Created : 8 Dec 2004 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
@ -141,9 +140,12 @@ sql_bloc(Host, F) -> sql_call(Host, {sql_bloc, F}).
sql_call(Host, Msg) -> sql_call(Host, Msg) ->
case get(?STATE_KEY) of case get(?STATE_KEY) of
undefined -> undefined ->
(?GEN_FSM):sync_send_event(ejabberd_odbc_sup:get_random_pid(Host), case ejabberd_odbc_sup:get_random_pid(Host) of
{sql_cmd, Msg, now()}, none -> {error, unknownhost};
?TRANSACTION_TIMEOUT); Pid ->
(?GEN_FSM):sync_send_event(Pid,{sql_cmd, Msg, now()},
?TRANSACTION_TIMEOUT)
end;
_State -> nested_op(Msg) _State -> nested_op(Msg)
end. end.

View File

@ -5,7 +5,7 @@
%%% Created : 22 Dec 2004 by Alexey Shchepin <alexey@process-one.net> %%% Created : 22 Dec 2004 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
@ -83,8 +82,10 @@ get_pids(Host) ->
[R#sql_pool.pid || R <- Rs]. [R#sql_pool.pid || R <- Rs].
get_random_pid(Host) -> get_random_pid(Host) ->
Pids = get_pids(Host), case get_pids(Host) of
lists:nth(erlang:phash(now(), length(Pids)), Pids). [] -> none;
Pids -> lists:nth(erlang:phash(now(), length(Pids)), Pids)
end.
add_pid(Host, Pid) -> add_pid(Host, Pid) ->
F = fun () -> F = fun () ->

View File

@ -9,7 +9,7 @@
%%% @doc %%% @doc
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -21,10 +21,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 31 Jan 2003 by Alexey Shchepin <alexey@process-one.net> %%% Created : 31 Jan 2003 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 10 Nov 2003 by Alexey Shchepin <alexey@process-one.net> %%% Created : 10 Nov 2003 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 8 Dec 2011 by Badlop %%% Created : 8 Dec 2011 by Badlop
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 27 Nov 2002 by Alexey Shchepin <alexey@process-one.net> %%% Created : 27 Nov 2002 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
@ -397,6 +396,7 @@ update_tables() ->
[domain, node, pid] -> mnesia:delete_table(route); [domain, node, pid] -> mnesia:delete_table(route);
[domain, pid] -> mnesia:delete_table(route); [domain, pid] -> mnesia:delete_table(route);
[domain, pid, local_hint] -> ok; [domain, pid, local_hint] -> ok;
[domain, pid, local_hint|_] -> mnesia:delete_table(route);
{'EXIT', _} -> ok {'EXIT', _} -> ok
end, end,
case lists:member(local_route, case lists:member(local_route,

View File

@ -5,7 +5,7 @@
%%% Created : 7 Dec 2002 by Alexey Shchepin <alexey@process-one.net> %%% Created : 7 Dec 2002 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
@ -38,7 +37,8 @@
incoming_s2s_number/0, outgoing_s2s_number/0, incoming_s2s_number/0, outgoing_s2s_number/0,
clean_temporarily_blocked_table/0, clean_temporarily_blocked_table/0,
list_temporarily_blocked_hosts/0, list_temporarily_blocked_hosts/0,
external_host_overloaded/1, is_temporarly_blocked/1]). external_host_overloaded/1, is_temporarly_blocked/1,
check_peer_certificate/3]).
%% gen_server callbacks %% gen_server callbacks
-export([init/1, handle_call/3, handle_cast/2, -export([init/1, handle_call/3, handle_cast/2,
@ -54,6 +54,14 @@
-include("ejabberd_commands.hrl"). -include("ejabberd_commands.hrl").
-include_lib("public_key/include/public_key.hrl").
-define(PKIXEXPLICIT, 'OTP-PUB-KEY').
-define(PKIXIMPLICIT, 'OTP-PUB-KEY').
-include("XmppAddr.hrl").
-define(DEFAULT_MAX_S2S_CONNECTIONS_NUMBER, 1). -define(DEFAULT_MAX_S2S_CONNECTIONS_NUMBER, 1).
-define(DEFAULT_MAX_S2S_CONNECTIONS_NUMBER_PER_NODE, 1). -define(DEFAULT_MAX_S2S_CONNECTIONS_NUMBER_PER_NODE, 1).
@ -208,6 +216,31 @@ try_register(FromTo) ->
dirty_get_connections() -> dirty_get_connections() ->
mnesia:dirty_all_keys(s2s). mnesia:dirty_all_keys(s2s).
check_peer_certificate(SockMod, Sock, Peer) ->
case SockMod:get_peer_certificate(Sock) of
{ok, Cert} ->
case SockMod:get_verify_result(Sock) of
0 ->
case idna:domain_utf8_to_ascii(Peer) of
false ->
{error, <<"Cannot decode remote server name">>};
AsciiPeer ->
case
lists:any(fun(D) -> match_domain(AsciiPeer, D) end,
get_cert_domains(Cert)) of
true ->
{ok, <<"Verification successful">>};
false ->
{error, <<"Certificate host name mismatch">>}
end
end;
VerifyRes ->
{error, p1_tls:get_cert_verify_string(VerifyRes, Cert)}
end;
error ->
{error, <<"Cannot get peer certificate">>}
end.
%%==================================================================== %%====================================================================
%% gen_server callbacks %% gen_server callbacks
%%==================================================================== %%====================================================================
@ -620,3 +653,121 @@ get_s2s_state(S2sPid) ->
{badrpc, _} -> [{status, error}] {badrpc, _} -> [{status, error}]
end, end,
[{s2s_pid, S2sPid} | Infos]. [{s2s_pid, S2sPid} | Infos].
get_cert_domains(Cert) ->
{rdnSequence, Subject} =
(Cert#'Certificate'.tbsCertificate)#'TBSCertificate'.subject,
Extensions =
(Cert#'Certificate'.tbsCertificate)#'TBSCertificate'.extensions,
lists:flatmap(fun (#'AttributeTypeAndValue'{type =
?'id-at-commonName',
value = Val}) ->
case 'OTP-PUB-KEY':decode('X520CommonName', Val) of
{ok, {_, D1}} ->
D = if is_binary(D1) -> D1;
is_list(D1) -> list_to_binary(D1);
true -> error
end,
if D /= error ->
case jlib:string_to_jid(D) of
#jid{luser = <<"">>, lserver = LD,
lresource = <<"">>} ->
[LD];
_ -> []
end;
true -> []
end;
_ -> []
end;
(_) -> []
end,
lists:flatten(Subject))
++
lists:flatmap(fun (#'Extension'{extnID =
?'id-ce-subjectAltName',
extnValue = Val}) ->
BVal = if is_list(Val) -> list_to_binary(Val);
true -> Val
end,
case 'OTP-PUB-KEY':decode('SubjectAltName', BVal)
of
{ok, SANs} ->
lists:flatmap(fun ({otherName,
#'AnotherName'{'type-id' =
?'id-on-xmppAddr',
value =
XmppAddr}}) ->
case
'XmppAddr':decode('XmppAddr',
XmppAddr)
of
{ok, D}
when
is_binary(D) ->
case
jlib:string_to_jid((D))
of
#jid{luser =
<<"">>,
lserver =
LD,
lresource =
<<"">>} ->
case
idna:domain_utf8_to_ascii(LD)
of
false ->
[];
PCLD ->
[PCLD]
end;
_ -> []
end;
_ -> []
end;
({dNSName, D})
when is_list(D) ->
case
jlib:string_to_jid(list_to_binary(D))
of
#jid{luser = <<"">>,
lserver = LD,
lresource =
<<"">>} ->
[LD];
_ -> []
end;
(_) -> []
end,
SANs);
_ -> []
end;
(_) -> []
end,
Extensions).
match_domain(Domain, Domain) -> true;
match_domain(Domain, Pattern) ->
DLabels = str:tokens(Domain, <<".">>),
PLabels = str:tokens(Pattern, <<".">>),
match_labels(DLabels, PLabels).
match_labels([], []) -> true;
match_labels([], [_ | _]) -> false;
match_labels([_ | _], []) -> false;
match_labels([DL | DLabels], [PL | PLabels]) ->
case lists:all(fun (C) ->
$a =< C andalso C =< $z orelse
$0 =< C andalso C =< $9 orelse
C == $- orelse C == $*
end,
binary_to_list(PL))
of
true ->
Regexp = ejabberd_regexp:sh_to_awk(PL),
case ejabberd_regexp:run(DL, Regexp) of
match -> match_labels(DLabels, PLabels);
nomatch -> false
end;
false -> false
end.

View File

@ -5,7 +5,7 @@
%%% Created : 6 Dec 2002 by Alexey Shchepin <alexey@process-one.net> %%% Created : 6 Dec 2002 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
@ -31,8 +30,7 @@
-behaviour(p1_fsm). -behaviour(p1_fsm).
%% External exports %% External exports
-export([start/2, start_link/2, match_domain/2, -export([start/2, start_link/2, socket_type/0]).
socket_type/0]).
%% gen_fsm callbacks %% gen_fsm callbacks
-export([init/1, wait_for_stream/2, -export([init/1, wait_for_stream/2,
@ -45,14 +43,6 @@
-include("jlib.hrl"). -include("jlib.hrl").
-include_lib("public_key/include/public_key.hrl").
-define(PKIXEXPLICIT, 'OTP-PUB-KEY').
-define(PKIXIMPLICIT, 'OTP-PUB-KEY').
-include("XmppAddr.hrl").
-define(DICT, dict). -define(DICT, dict).
-record(state, -record(state,
@ -182,9 +172,21 @@ init([{SockMod, Socket}, Opts]) ->
undefined -> TLSOpts1; undefined -> TLSOpts1;
Ciphers -> [{ciphers, Ciphers} | TLSOpts1] Ciphers -> [{ciphers, Ciphers} | TLSOpts1]
end, end,
TLSOpts3 = case ejabberd_config:get_option(
s2s_protocol_options,
fun (Options) ->
[_|O] = lists:foldl(
fun(X, Acc) -> X ++ Acc end, [],
[["|" | binary_to_list(Opt)] || Opt <- Options, is_binary(Opt)]
),
iolist_to_binary(O)
end) of
undefined -> TLSOpts2;
ProtocolOpts -> [{protocol_options, ProtocolOpts} | TLSOpts2]
end,
TLSOpts = case proplists:get_bool(tls_compression, Opts) of TLSOpts = case proplists:get_bool(tls_compression, Opts) of
false -> [compression_none | TLSOpts2]; false -> [compression_none | TLSOpts3];
true -> TLSOpts2 true -> TLSOpts3
end, end,
Timer = erlang:start_timer(?S2STIMEOUT, self(), []), Timer = erlang:start_timer(?S2STIMEOUT, self(), []),
{ok, wait_for_stream, {ok, wait_for_stream,
@ -213,34 +215,21 @@ wait_for_stream({xmlstreamstart, _Name, Attrs},
not StateData#state.authenticated -> not StateData#state.authenticated ->
send_text(StateData, send_text(StateData,
?STREAM_HEADER(<<" version='1.0'">>)), ?STREAM_HEADER(<<" version='1.0'">>)),
SASL = if StateData#state.tls_enabled -> Auth = if StateData#state.tls_enabled ->
case case jlib:nameprep(xml:get_attr_s(<<"from">>, Attrs)) of
(StateData#state.sockmod):get_peer_certificate(StateData#state.socket) From when From /= <<"">>, From /= error ->
of {Result, Message} =
{ok, Cert} -> ejabberd_s2s:check_peer_certificate(StateData#state.sockmod,
case StateData#state.socket,
(StateData#state.sockmod):get_verify_result(StateData#state.socket) From),
of {Result, From, Message};
0 -> _ ->
[#xmlel{name = <<"mechanisms">>, {error, <<"(unknown)">>,
attrs = [{<<"xmlns">>, ?NS_SASL}], <<"Got no valid 'from' attribute">>}
children = end;
[#xmlel{name = <<"mechanism">>,
attrs = [],
children =
[{xmlcdata,
<<"EXTERNAL">>}]}]}];
CertVerifyRes ->
case StateData#state.tls_certverify of
true -> true ->
{error_cert_verif, CertVerifyRes, {no_verify, <<"(unknown)">>,
Cert}; <<"TLS not (yet) enabled">>}
false -> []
end
end;
error -> []
end;
true -> []
end, end,
StartTLS = if StateData#state.tls_enabled -> []; StartTLS = if StateData#state.tls_enabled -> [];
not StateData#state.tls_enabled and not StateData#state.tls_enabled and
@ -256,26 +245,36 @@ wait_for_stream({xmlstreamstart, _Name, Attrs},
[#xmlel{name = <<"required">>, [#xmlel{name = <<"required">>,
attrs = [], children = []}]}] attrs = [], children = []}]}]
end, end,
case SASL of case Auth of
{error_cert_verif, CertVerifyResult, Certificate} -> {error, RemoteServer, CertError}
CertError = p1_tls:get_cert_verify_string(CertVerifyResult, when StateData#state.tls_certverify ->
Certificate),
RemoteServer = xml:get_attr_s(<<"from">>, Attrs),
?INFO_MSG("Closing s2s connection: ~s <--> ~s (~s)", ?INFO_MSG("Closing s2s connection: ~s <--> ~s (~s)",
[StateData#state.server, RemoteServer, CertError]), [StateData#state.server, RemoteServer, CertError]),
send_text(StateData, send_text(StateData,
xml:element_to_binary(?SERRT_POLICY_VIOLATION(<<"en">>, <<(xml:element_to_binary(?SERRT_POLICY_VIOLATION(<<"en">>,
CertError))), CertError)))/binary,
{atomic, Pid} = (?STREAM_TRAILER)/binary>>),
ejabberd_s2s:find_connection(jlib:make_jid(<<"">>,
Server, <<"">>),
jlib:make_jid(<<"">>,
RemoteServer,
<<"">>)),
ejabberd_s2s_out:stop_connection(Pid),
{stop, normal, StateData}; {stop, normal, StateData};
_ -> {VerifyResult, RemoteServer, Msg} ->
send_element(StateData, {SASL, NewStateData} = case VerifyResult of
ok ->
{[#xmlel{name = <<"mechanisms">>,
attrs = [{<<"xmlns">>, ?NS_SASL}],
children =
[#xmlel{name = <<"mechanism">>,
attrs = [],
children =
[{xmlcdata,
<<"EXTERNAL">>}]}]}],
StateData#state{auth_domain = RemoteServer}};
error ->
?DEBUG("Won't accept certificate of ~s: ~s",
[RemoteServer, Msg]),
{[], StateData};
no_verify ->
{[], StateData}
end,
send_element(NewStateData,
#xmlel{name = <<"stream:features">>, attrs = [], #xmlel{name = <<"stream:features">>, attrs = [],
children = children =
SASL ++ SASL ++
@ -284,7 +283,7 @@ wait_for_stream({xmlstreamstart, _Name, Attrs},
Server, [], Server, [],
[Server])}), [Server])}),
{next_state, wait_for_feature_request, {next_state, wait_for_feature_request,
StateData#state{server = Server}} NewStateData#state{server = Server}}
end; end;
{<<"jabber:server">>, _, Server, true} {<<"jabber:server">>, _, Server, true}
when StateData#state.authenticated -> when StateData#state.authenticated ->
@ -319,7 +318,7 @@ wait_for_stream(closed, StateData) ->
wait_for_feature_request({xmlstreamelement, El}, wait_for_feature_request({xmlstreamelement, El},
StateData) -> StateData) ->
#xmlel{name = Name, attrs = Attrs, children = Els} = El, #xmlel{name = Name, attrs = Attrs} = El,
TLS = StateData#state.tls, TLS = StateData#state.tls,
TLSEnabled = StateData#state.tls_enabled, TLSEnabled = StateData#state.tls_enabled,
SockMod = SockMod =
@ -365,39 +364,11 @@ wait_for_feature_request({xmlstreamelement, El},
{?NS_SASL, <<"auth">>} when TLSEnabled -> {?NS_SASL, <<"auth">>} when TLSEnabled ->
Mech = xml:get_attr_s(<<"mechanism">>, Attrs), Mech = xml:get_attr_s(<<"mechanism">>, Attrs),
case Mech of case Mech of
<<"EXTERNAL">> -> <<"EXTERNAL">> when StateData#state.auth_domain /= <<"">> ->
Auth = jlib:decode_base64(xml:get_cdata(Els)), AuthDomain = StateData#state.auth_domain,
AuthDomain = jlib:nameprep(Auth),
AuthRes = case
(StateData#state.sockmod):get_peer_certificate(StateData#state.socket)
of
{ok, Cert} ->
case
(StateData#state.sockmod):get_verify_result(StateData#state.socket)
of
0 ->
case AuthDomain of
error -> false;
_ ->
case
idna:domain_utf8_to_ascii(AuthDomain)
of
false -> false;
PCAuthDomain ->
lists:any(fun (D) ->
match_domain(PCAuthDomain,
D)
end,
get_cert_domains(Cert))
end
end;
_ -> false
end;
error -> false
end,
AllowRemoteHost = ejabberd_s2s:allow_host(<<"">>, AllowRemoteHost = ejabberd_s2s:allow_host(<<"">>,
AuthDomain), AuthDomain),
if AuthRes andalso AllowRemoteHost -> if AllowRemoteHost ->
(StateData#state.sockmod):reset_stream(StateData#state.socket), (StateData#state.sockmod):reset_stream(StateData#state.socket),
send_element(StateData, send_element(StateData,
#xmlel{name = <<"success">>, #xmlel{name = <<"success">>,
@ -409,8 +380,7 @@ wait_for_feature_request({xmlstreamelement, El},
jlib:make_jid(<<"">>, AuthDomain, <<"">>)), jlib:make_jid(<<"">>, AuthDomain, <<"">>)),
{next_state, wait_for_stream, {next_state, wait_for_stream,
StateData#state{streamid = new_id(), StateData#state{streamid = new_id(),
authenticated = true, authenticated = true}};
auth_domain = AuthDomain}};
true -> true ->
send_element(StateData, send_element(StateData,
#xmlel{name = <<"failure">>, #xmlel{name = <<"failure">>,
@ -727,125 +697,6 @@ is_key_packet(#xmlel{name = Name, attrs = Attrs,
xml:get_attr_s(<<"id">>, Attrs), xml:get_cdata(Els)}; xml:get_attr_s(<<"id">>, Attrs), xml:get_cdata(Els)};
is_key_packet(_) -> false. is_key_packet(_) -> false.
get_cert_domains(Cert) ->
{rdnSequence, Subject} =
(Cert#'Certificate'.tbsCertificate)#'TBSCertificate'.subject,
Extensions =
(Cert#'Certificate'.tbsCertificate)#'TBSCertificate'.extensions,
lists:flatmap(fun (#'AttributeTypeAndValue'{type =
?'id-at-commonName',
value = Val}) ->
case 'OTP-PUB-KEY':decode('X520CommonName', Val) of
{ok, {_, D1}} ->
D = if is_binary(D1) -> D1;
is_binary(D1) -> (D1);
true -> error
end,
if D /= error ->
case jlib:string_to_jid(D) of
#jid{luser = <<"">>, lserver = LD,
lresource = <<"">>} ->
[LD];
_ -> []
end;
true -> []
end;
_ -> []
end;
(_) -> []
end,
lists:flatten(Subject))
++
lists:flatmap(fun (#'Extension'{extnID =
?'id-ce-subjectAltName',
extnValue = Val}) ->
BVal = if is_binary(Val) -> iolist_to_binary(Val);
is_binary(Val) -> Val;
true -> Val
end,
case 'OTP-PUB-KEY':decode('SubjectAltName', BVal)
of
{ok, SANs} ->
lists:flatmap(fun ({otherName,
#'AnotherName'{'type-id' =
?'id-on-xmppAddr',
value =
XmppAddr}}) ->
case
'XmppAddr':decode('XmppAddr',
XmppAddr)
of
{ok, D}
when
is_binary(D) ->
case
jlib:string_to_jid((D))
of
#jid{luser =
<<"">>,
lserver =
LD,
lresource =
<<"">>} ->
case
idna:domain_utf8_to_ascii(LD)
of
false ->
[];
PCLD ->
[PCLD]
end;
_ -> []
end;
_ -> []
end;
({dNSName, D})
when is_binary(D) ->
case
jlib:string_to_jid(D)
of
#jid{luser = <<"">>,
lserver = LD,
lresource =
<<"">>} ->
[LD];
_ -> []
end;
(_) -> []
end,
SANs);
_ -> []
end;
(_) -> []
end,
Extensions).
match_domain(Domain, Domain) -> true;
match_domain(Domain, Pattern) ->
DLabels = str:tokens(Domain, <<".">>),
PLabels = str:tokens(Pattern, <<".">>),
match_labels(DLabels, PLabels).
match_labels([], []) -> true;
match_labels([], [_ | _]) -> false;
match_labels([_ | _], []) -> false;
match_labels([DL | DLabels], [PL | PLabels]) ->
case lists:all(fun (C) ->
$a =< C andalso C =< $z orelse
$0 =< C andalso C =< $9 orelse
C == $- orelse C == $*
end,
binary_to_list(PL))
of
true ->
Regexp = ejabberd_regexp:sh_to_awk(PL),
case ejabberd_regexp:run(DL, Regexp) of
match -> match_labels(DLabels, PLabels);
nomatch -> false
end;
false -> false
end.
fsm_limit_opts(Opts) -> fsm_limit_opts(Opts) ->
case lists:keysearch(max_fsm_queue, 1, Opts) of case lists:keysearch(max_fsm_queue, 1, Opts) of
{value, {_, N}} when is_integer(N) -> [{max_queue, N}]; {value, {_, N}} when is_integer(N) -> [{max_queue, N}];

View File

@ -5,7 +5,7 @@
%%% Created : 6 Dec 2002 by Alexey Shchepin <alexey@process-one.net> %%% Created : 6 Dec 2002 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
@ -70,6 +69,7 @@
use_v10 = true :: boolean(), use_v10 = true :: boolean(),
tls = false :: boolean(), tls = false :: boolean(),
tls_required = false :: boolean(), tls_required = false :: boolean(),
tls_certverify = false :: boolean(),
tls_enabled = false :: boolean(), tls_enabled = false :: boolean(),
tls_options = [connect] :: list(), tls_options = [connect] :: list(),
authenticated = false :: boolean(), authenticated = false :: boolean(),
@ -161,8 +161,8 @@ stop_connection(Pid) -> p1_fsm:send_event(Pid, closed).
init([From, Server, Type]) -> init([From, Server, Type]) ->
process_flag(trap_exit, true), process_flag(trap_exit, true),
?DEBUG("started: ~p", [{From, Server, Type}]), ?DEBUG("started: ~p", [{From, Server, Type}]),
{TLS, TLSRequired} = case {TLS, TLSRequired, TLSCertverify} =
ejabberd_config:get_option( case ejabberd_config:get_option(
s2s_use_starttls, s2s_use_starttls,
fun(true) -> true; fun(true) -> true;
(false) -> false; (false) -> false;
@ -172,16 +172,15 @@ init([From, Server, Type]) ->
end) end)
of of
UseTls UseTls
when (UseTls == undefined) or when (UseTls == undefined) or (UseTls == false) ->
(UseTls == false) -> {false, false, false};
{false, false};
UseTls UseTls
when (UseTls == true) or (UseTls == optional) -> when (UseTls == true) or (UseTls == optional) ->
{true, false}; {true, false, false};
UseTls required ->
when (UseTls == required) or {true, true, false};
(UseTls == required_trusted) -> required_trusted ->
{true, true} {true, true, true}
end, end,
UseV10 = TLS, UseV10 = TLS,
TLSOpts1 = case TLSOpts1 = case
@ -196,13 +195,25 @@ init([From, Server, Type]) ->
undefined -> TLSOpts1; undefined -> TLSOpts1;
Ciphers -> [{ciphers, Ciphers} | TLSOpts1] Ciphers -> [{ciphers, Ciphers} | TLSOpts1]
end, end,
TLSOpts3 = case ejabberd_config:get_option(
s2s_protocol_options,
fun (Options) ->
[_|O] = lists:foldl(
fun(X, Acc) -> X ++ Acc end, [],
[["|" | binary_to_list(Opt)] || Opt <- Options, is_binary(Opt)]
),
iolist_to_binary(O)
end) of
undefined -> TLSOpts2;
ProtocolOpts -> [{protocol_options, ProtocolOpts} | TLSOpts2]
end,
TLSOpts = case ejabberd_config:get_option( TLSOpts = case ejabberd_config:get_option(
{s2s_tls_compression, From}, {s2s_tls_compression, From},
fun(true) -> true; fun(true) -> true;
(false) -> false (false) -> false
end, true) of end, true) of
false -> [compression_none | TLSOpts2]; false -> [compression_none | TLSOpts3];
true -> TLSOpts2 true -> TLSOpts3
end, end,
{New, Verify} = case Type of {New, Verify} = case Type of
{new, Key} -> {Key, false}; {new, Key} -> {Key, false};
@ -212,9 +223,9 @@ init([From, Server, Type]) ->
Timer = erlang:start_timer(?S2STIMEOUT, self(), []), Timer = erlang:start_timer(?S2STIMEOUT, self(), []),
{ok, open_socket, {ok, open_socket,
#state{use_v10 = UseV10, tls = TLS, #state{use_v10 = UseV10, tls = TLS,
tls_required = TLSRequired, tls_options = TLSOpts, tls_required = TLSRequired, tls_certverify = TLSCertverify,
queue = queue:new(), myname = From, server = Server, tls_options = TLSOpts, queue = queue:new(), myname = From,
new = New, verify = Verify, timer = Timer}}. server = Server, new = New, verify = Verify, timer = Timer}}.
%%---------------------------------------------------------------------- %%----------------------------------------------------------------------
%% Func: StateName/2 %% Func: StateName/2
@ -334,35 +345,57 @@ open_socket2(Type, Addr, Port) ->
wait_for_stream({xmlstreamstart, _Name, Attrs}, wait_for_stream({xmlstreamstart, _Name, Attrs},
StateData) -> StateData) ->
{CertCheckRes, CertCheckMsg, NewStateData} =
if StateData#state.tls_certverify, StateData#state.tls_enabled ->
{Res, Msg} =
ejabberd_s2s:check_peer_certificate(ejabberd_socket,
StateData#state.socket,
StateData#state.server),
?DEBUG("Certificate verification result for ~s: ~s",
[StateData#state.server, Msg]),
{Res, Msg, StateData#state{tls_certverify = false}};
true ->
{no_verify, <<"Not verified">>, StateData}
end,
case {xml:get_attr_s(<<"xmlns">>, Attrs), case {xml:get_attr_s(<<"xmlns">>, Attrs),
xml:get_attr_s(<<"xmlns:db">>, Attrs), xml:get_attr_s(<<"xmlns:db">>, Attrs),
xml:get_attr_s(<<"version">>, Attrs) == <<"1.0">>} xml:get_attr_s(<<"version">>, Attrs) == <<"1.0">>}
of of
_ when CertCheckRes == error ->
send_text(NewStateData,
<<(xml:element_to_binary(?SERRT_POLICY_VIOLATION(<<"en">>,
CertCheckMsg)))/binary,
(?STREAM_TRAILER)/binary>>),
?INFO_MSG("Closing s2s connection: ~s -> ~s (~s)",
[NewStateData#state.myname,
NewStateData#state.server,
CertCheckMsg]),
{stop, normal, NewStateData};
{<<"jabber:server">>, <<"jabber:server:dialback">>, {<<"jabber:server">>, <<"jabber:server:dialback">>,
false} -> false} ->
send_db_request(StateData); send_db_request(NewStateData);
{<<"jabber:server">>, <<"jabber:server:dialback">>, {<<"jabber:server">>, <<"jabber:server:dialback">>,
true} true}
when StateData#state.use_v10 -> when NewStateData#state.use_v10 ->
{next_state, wait_for_features, StateData, ?FSMTIMEOUT}; {next_state, wait_for_features, NewStateData, ?FSMTIMEOUT};
%% Clause added to handle Tigase's workaround for an old ejabberd bug: %% Clause added to handle Tigase's workaround for an old ejabberd bug:
{<<"jabber:server">>, <<"jabber:server:dialback">>, {<<"jabber:server">>, <<"jabber:server:dialback">>,
true} true}
when not StateData#state.use_v10 -> when not NewStateData#state.use_v10 ->
send_db_request(StateData); send_db_request(NewStateData);
{<<"jabber:server">>, <<"">>, true} {<<"jabber:server">>, <<"">>, true}
when StateData#state.use_v10 -> when NewStateData#state.use_v10 ->
{next_state, wait_for_features, {next_state, wait_for_features,
StateData#state{db_enabled = false}, ?FSMTIMEOUT}; NewStateData#state{db_enabled = false}, ?FSMTIMEOUT};
{NSProvided, DB, _} -> {NSProvided, DB, _} ->
send_text(StateData, ?INVALID_NAMESPACE_ERR), send_text(NewStateData, ?INVALID_NAMESPACE_ERR),
?INFO_MSG("Closing s2s connection: ~s -> ~s (invalid " ?INFO_MSG("Closing s2s connection: ~s -> ~s (invalid "
"namespace).~nNamespace provided: ~p~nNamespac" "namespace).~nNamespace provided: ~p~nNamespac"
"e expected: \"jabber:server\"~nxmlns:db " "e expected: \"jabber:server\"~nxmlns:db "
"provided: ~p~nAll attributes: ~p", "provided: ~p~nAll attributes: ~p",
[StateData#state.myname, StateData#state.server, [NewStateData#state.myname, NewStateData#state.server,
NSProvided, DB, Attrs]), NSProvided, DB, Attrs]),
{stop, normal, StateData} {stop, normal, NewStateData}
end; end;
wait_for_stream({xmlstreamerror, _}, StateData) -> wait_for_stream({xmlstreamerror, _}, StateData) ->
send_text(StateData, send_text(StateData,
@ -559,15 +592,19 @@ wait_for_features({xmlstreamelement, El}, StateData) ->
if not SASLEXT and not StartTLS and if not SASLEXT and not StartTLS and
StateData#state.authenticated -> StateData#state.authenticated ->
send_queue(StateData, StateData#state.queue), send_queue(StateData, StateData#state.queue),
?INFO_MSG("Connection established: ~s -> ~s", ?INFO_MSG("Connection established: ~s -> ~s with "
[StateData#state.myname, StateData#state.server]), "SASL EXTERNAL and TLS=~p",
[StateData#state.myname, StateData#state.server,
StateData#state.tls_enabled]),
ejabberd_hooks:run(s2s_connect_hook, ejabberd_hooks:run(s2s_connect_hook,
[StateData#state.myname, [StateData#state.myname,
StateData#state.server]), StateData#state.server]),
{next_state, stream_established, {next_state, stream_established,
StateData#state{queue = queue:new()}}; StateData#state{queue = queue:new()}};
SASLEXT and StateData#state.try_auth and SASLEXT and StateData#state.try_auth and
(StateData#state.new /= false) -> (StateData#state.new /= false) and
(StateData#state.tls_enabled or
not StateData#state.tls_required) ->
send_element(StateData, send_element(StateData,
#xmlel{name = <<"auth">>, #xmlel{name = <<"auth">>,
attrs = attrs =
@ -725,8 +762,8 @@ wait_for_starttls_proceed({xmlstreamelement, El},
tls_options = TLSOpts}, tls_options = TLSOpts},
send_text(NewStateData, send_text(NewStateData,
io_lib:format(?STREAM_HEADER, io_lib:format(?STREAM_HEADER,
[StateData#state.myname, [NewStateData#state.myname,
StateData#state.server, NewStateData#state.server,
<<" version='1.0'">>])), <<" version='1.0'">>])),
{next_state, wait_for_stream, NewStateData, {next_state, wait_for_stream, NewStateData,
?FSMTIMEOUT}; ?FSMTIMEOUT};

View File

@ -5,7 +5,7 @@
%%% Created : 6 Dec 2002 by Alexey Shchepin <alexey@process-one.net> %%% Created : 6 Dec 2002 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 24 Nov 2002 by Alexey Shchepin <alexey@process-one.net> %%% Created : 24 Nov 2002 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
@ -40,6 +39,7 @@
bounce_offline_message/3, bounce_offline_message/3,
disconnect_removed_user/2, disconnect_removed_user/2,
get_user_resources/2, get_user_resources/2,
get_user_present_resources/2,
set_presence/7, set_presence/7,
unset_presence/6, unset_presence/6,
close_session_unset_presence/5, close_session_unset_presence/5,
@ -54,9 +54,11 @@
connected_users/0, connected_users/0,
connected_users_number/0, connected_users_number/0,
user_resources/2, user_resources/2,
disconnect_user/2,
get_session_pid/3, get_session_pid/3,
get_user_info/3, get_user_info/3,
get_user_ip/3, get_user_ip/3,
get_max_user_sessions/2,
is_existing_resource/3 is_existing_resource/3
]). ]).
@ -174,6 +176,20 @@ get_user_resources(User, Server) ->
[element(3, S#session.usr) || S <- clean_session_list(Ss)] [element(3, S#session.usr) || S <- clean_session_list(Ss)]
end. end.
-spec get_user_present_resources(binary(), binary()) -> [tuple()].
get_user_present_resources(LUser, LServer) ->
US = {LUser, LServer},
case catch mnesia:dirty_index_read(session, US,
#session.us)
of
{'EXIT', _Reason} -> [];
Ss ->
[{S#session.priority, element(3, S#session.usr)}
|| S <- clean_session_list(Ss),
is_integer(S#session.priority)]
end.
-spec get_user_ip(binary(), binary(), binary()) -> ip(). -spec get_user_ip(binary(), binary(), binary()) -> ip().
get_user_ip(User, Server, Resource) -> get_user_ip(User, Server, Resource) ->
@ -677,20 +693,6 @@ clean_session_list([S1, S2 | Rest], Res) ->
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
get_user_present_resources(LUser, LServer) ->
US = {LUser, LServer},
case catch mnesia:dirty_index_read(session, US,
#session.us)
of
{'EXIT', _Reason} -> [];
Ss ->
[{S#session.priority, element(3, S#session.usr)}
|| S <- clean_session_list(Ss),
is_integer(S#session.priority)]
end.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% On new session, check if some existing connections need to be replace %% On new session, check if some existing connections need to be replace
check_for_sessions_to_replace(User, Server, Resource) -> check_for_sessions_to_replace(User, Server, Resource) ->
LUser = jlib:nodeprep(User), LUser = jlib:nodeprep(User),
@ -807,8 +809,14 @@ commands() ->
tags = [session], tags = [session],
desc = "List user's connected resources", desc = "List user's connected resources",
module = ?MODULE, function = user_resources, module = ?MODULE, function = user_resources,
args = [{user, string}, {host, string}], args = [{user, binary}, {host, binary}],
result = {resources, {list, {resource, string}}}}]. result = {resources, {list, {resource, string}}}},
#ejabberd_commands{name = disconnect_user,
tags = [session],
desc = "Disconnect user's active sessions",
module = ?MODULE, function = disconnect_user,
args = [{user, binary}, {host, binary}],
result = {num_resources, integer}}].
-spec connected_users() -> [binary()]. -spec connected_users() -> [binary()].
@ -825,6 +833,14 @@ user_resources(User, Server) ->
Resources = get_user_resources(User, Server), Resources = get_user_resources(User, Server),
lists:sort(Resources). lists:sort(Resources).
disconnect_user(User, Server) ->
Resources = get_user_resources(User, Server),
lists:foreach(
fun(Resource) ->
PID = get_session_pid(User, Server, Resource),
PID ! disconnect
end, Resources),
length(Resources).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Update Mnesia tables %%% Update Mnesia tables
@ -834,6 +850,7 @@ update_tables() ->
[ur, user, node] -> mnesia:delete_table(session); [ur, user, node] -> mnesia:delete_table(session);
[ur, user, pid] -> mnesia:delete_table(session); [ur, user, pid] -> mnesia:delete_table(session);
[usr, us, pid] -> mnesia:delete_table(session); [usr, us, pid] -> mnesia:delete_table(session);
[usr, us, sid, priority, info] -> mnesia:delete_table(session);
[sid, usr, us, priority] -> [sid, usr, us, priority] ->
mnesia:delete_table(session); mnesia:delete_table(session);
[sid, usr, us, priority, info] -> ok; [sid, usr, us, priority, info] -> ok;

View File

@ -5,7 +5,7 @@
%%% Created : 23 Aug 2006 by Alexey Shchepin <alexey@process-one.net> %%% Created : 23 Aug 2006 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 31 Jan 2003 by Alexey Shchepin <alexey@process-one.net> %%% Created : 31 Jan 2003 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 21 Mar 2007 by Alexey Shchepin <alexey@process-one.net> %%% Created : 21 Mar 2007 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%------------------------------------------------------------------- %%%-------------------------------------------------------------------
@ -245,9 +244,8 @@ s2s_out_info(Pid) ->
[<<"Process type: s2s_out">>, [<<"Process type: s2s_out">>,
case FromTo of case FromTo of
[{From, To}] -> [{From, To}] ->
<<"\n", list_to_binary(io_lib:format("\nS2S connection: from ~s to ~s",
(io_lib:format("S2S connection: from ~s to ~s", [From, To]));
[From, To]))/binary>>;
_ -> <<"">> _ -> <<"">>
end, end,
check_send_queue(Pid), <<"\n">>, check_send_queue(Pid), <<"\n">>,

View File

@ -5,7 +5,7 @@
%%% Created : 18 Jul 2003 by Alexey Shchepin <alexey@process-one.net> %%% Created : 18 Jul 2003 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 27 Jan 2006 by Alexey Shchepin <alexey@process-one.net> %%% Created : 27 Jan 2006 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%------------------------------------------------------------------- %%%-------------------------------------------------------------------

View File

@ -6,7 +6,7 @@
%%% Created : 28 Feb 2004 by Alexey Shchepin <alexey@process-one.net> %%% Created : 28 Feb 2004 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -18,10 +18,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 9 Apr 2004 by Alexey Shchepin <alexey@process-one.net> %%% Created : 9 Apr 2004 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
@ -341,7 +340,7 @@ make_xhtml(Els, Host, Node, Lang, JID) ->
?XAE(<<"div">>, [{<<"id">>, <<"copyrightouter">>}], ?XAE(<<"div">>, [{<<"id">>, <<"copyrightouter">>}],
[?XAE(<<"div">>, [{<<"id">>, <<"copyright">>}], [?XAE(<<"div">>, [{<<"id">>, <<"copyright">>}],
[?XC(<<"p">>, [?XC(<<"p">>,
<<"ejabberd (c) 2002-2013 ProcessOne">>)])])])]}}. <<"ejabberd (c) 2002-2014 ProcessOne">>)])])])]}}.
get_base_path(global, cluster) -> <<"/admin/">>; get_base_path(global, cluster) -> <<"/admin/">>;
get_base_path(Host, cluster) -> get_base_path(Host, cluster) ->
@ -1138,7 +1137,7 @@ string_to_spec2(ACLName, Val) ->
jlib:string_to_jid(Val), jlib:string_to_jid(Val),
case U of case U of
<<"">> -> {ACLName, S}; <<"">> -> {ACLName, S};
_ -> {ACLName, U, S} _ -> {ACLName, {U, S}}
end. end.
acl_parse_delete(ACLs, Query) -> acl_parse_delete(ACLs, Query) ->
@ -2183,7 +2182,7 @@ get_node(global, Node, [<<"update">>], Query, Lang) ->
?XCT(<<"h3">>, <<"Update script">>), FmtScript, ?XCT(<<"h3">>, <<"Update script">>), FmtScript,
?XCT(<<"h3">>, <<"Low level update script">>), ?XCT(<<"h3">>, <<"Low level update script">>),
FmtLowLevelScript, ?XCT(<<"h3">>, <<"Script check">>), FmtLowLevelScript, ?XCT(<<"h3">>, <<"Script check">>),
?XC(<<"pre">>, (iolist_to_binary(Check))), ?XC(<<"pre">>, (jlib:atom_to_binary(Check))),
?BR, ?BR,
?INPUTT(<<"submit">>, <<"update">>, <<"Update">>)])]; ?INPUTT(<<"submit">>, <<"update">>, <<"Update">>)])];
get_node(Host, Node, NPath, Query, Lang) -> get_node(Host, Node, NPath, Query, Lang) ->

View File

@ -345,14 +345,18 @@ build_fault_response(Code, ParseString, ParseArgs) ->
do_command(AccessCommands, Auth, Command, AttrL, ArgsF, do_command(AccessCommands, Auth, Command, AttrL, ArgsF,
ResultF) -> ResultF) ->
ArgsFormatted = format_args(AttrL, ArgsF), ArgsFormatted = format_args(AttrL, ArgsF),
{UserT, ServerT, PasswordT} = Auth, AuthBin = convert_auth(Auth),
AuthBin = {list_to_binary(UserT), list_to_binary(ServerT), list_to_binary(PasswordT)},
Result = Result =
ejabberd_commands:execute_command(AccessCommands, AuthBin, ejabberd_commands:execute_command(AccessCommands, AuthBin,
Command, ArgsFormatted), Command, ArgsFormatted),
ResultFormatted = format_result(Result, ResultF), ResultFormatted = format_result(Result, ResultF),
{command_result, ResultFormatted}. {command_result, ResultFormatted}.
convert_auth(noauth) ->
noauth;
convert_auth({UserT, ServerT, PasswordT}) ->
{list_to_binary(UserT), list_to_binary(ServerT), list_to_binary(PasswordT)}.
%%----------------------------- %%-----------------------------
%% Format arguments %% Format arguments
%%----------------------------- %%-----------------------------
@ -424,7 +428,11 @@ format_arg({array, Elements}, {list, ElementsDef})
format_arg(Arg, integer) when is_integer(Arg) -> Arg; format_arg(Arg, integer) when is_integer(Arg) -> Arg;
format_arg(Arg, binary) when is_list(Arg) -> list_to_binary(Arg); format_arg(Arg, binary) when is_list(Arg) -> list_to_binary(Arg);
format_arg(Arg, binary) when is_binary(Arg) -> Arg; format_arg(Arg, binary) when is_binary(Arg) -> Arg;
format_arg(Arg, string) when is_binary(Arg) -> Arg. format_arg(Arg, string) when is_list(Arg) -> list_to_binary(Arg);
format_arg(Arg, string) when is_binary(Arg) -> Arg;
format_arg(Arg, Format) ->
?ERROR_MSG("don't know how to format Arg ~p for format ~p", [Arg, Format]),
throw({error_formatting_argument, Arg, Format}).
%% ----------------------------- %% -----------------------------
%% Result %% Result

View File

@ -5,7 +5,7 @@
%%% Created : 22 Aug 2005 by Alexey Shchepin <alexey@process-one.net> %%% Created : 22 Aug 2005 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -18,9 +18,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
%%% GNU General Public License for more details. %%% GNU General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% Modified by Sean Hinde <shinde@iee.org> 7th Dec 2000 %%% Modified by Sean Hinde <shinde@iee.org> 7th Dec 2000
%%% Turned into gen_fsm, made non-blocking, added timers etc to support this. %%% Turned into gen_fsm, made non-blocking, added timers etc to support this.

View File

@ -6,7 +6,7 @@
%%% Author: Evgeniy Khramtsov <ekhramtsov@process-one.net> %%% Author: Evgeniy Khramtsov <ekhramtsov@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -18,10 +18,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------
-module(eldap_filter). -module(eldap_filter).

View File

@ -5,7 +5,7 @@
%%% Created : 12 Nov 2006 by Evgeniy Khramtsov <xram@jabber.ru> %%% Created : 12 Nov 2006 by Evgeniy Khramtsov <xram@jabber.ru>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%------------------------------------------------------------------- %%%-------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 12 Oct 2006 by Mickael Remond <mremond@process-one.net> %%% Created : 12 Oct 2006 by Mickael Remond <mremond@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 30 Jul 2004 by Leif Johansson <leifj@it.su.se> %%% Created : 30 Jul 2004 by Leif Johansson <leifj@it.su.se>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 22 Jan 2003 by Alexey Shchepin <alexey@process-one.net> %%% Created : 22 Jan 2003 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -6,7 +6,7 @@
%%% Created : 24 Jan 2003 by Alexey Shchepin <alexey@process-one.net> %%% Created : 24 Jan 2003 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -18,10 +18,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -11,12 +11,12 @@
%%% under the License. %%% under the License.
%%% %%%
%%% The Initial Developer of the Original Code is ProcessOne. %%% The Initial Developer of the Original Code is ProcessOne.
%%% Portions created by ProcessOne are Copyright 2006-2013, ProcessOne %%% Portions created by ProcessOne are Copyright 2006-2014, ProcessOne
%%% All Rights Reserved.'' %%% All Rights Reserved.''
%%% This software is copyright 2006-2013, ProcessOne. %%% This software is copyright 2006-2014, ProcessOne.
%%% %%%
%%% %%%
%%% @copyright 2006-2013 ProcessOne %%% @copyright 2006-2014 ProcessOne
%%% @author Christophe Romain <christophe.romain@process-one.net> %%% @author Christophe Romain <christophe.romain@process-one.net>
%%% [http://www.process-one.net/] %%% [http://www.process-one.net/]
%%% @version {@vsn}, {@date} {@time} %%% @version {@vsn}, {@date} {@time}

View File

@ -11,12 +11,12 @@
%%% under the License. %%% under the License.
%%% %%%
%%% The Initial Developer of the Original Code is ProcessOne. %%% The Initial Developer of the Original Code is ProcessOne.
%%% Portions created by ProcessOne are Copyright 2006-2013, ProcessOne %%% Portions created by ProcessOne are Copyright 2006-2014, ProcessOne
%%% All Rights Reserved.'' %%% All Rights Reserved.''
%%% This software is copyright 2006-2013, ProcessOne. %%% This software is copyright 2006-2014, ProcessOne.
%%% %%%
%%% %%%
%%% @copyright 2006-2013 ProcessOne %%% @copyright 2006-2014 ProcessOne
%%% @author Christophe Romain <christophe.romain@process-one.net> %%% @author Christophe Romain <christophe.romain@process-one.net>
%%% [http://www.process-one.net/] %%% [http://www.process-one.net/]
%%% @version {@vsn}, {@date} {@time} %%% @version {@vsn}, {@date} {@time}

View File

@ -5,7 +5,7 @@
%%% Created : 10 Apr 2004 by Alexey Shchepin <alexey@process-one.net> %%% Created : 10 Apr 2004 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 2 Feb 2003 by Alexey Shchepin <alexey@process-one.net> %%% Created : 2 Feb 2003 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 23 Nov 2002 by Alexey Shchepin <alexey@process-one.net> %%% Created : 23 Nov 2002 by Alexey Shchepin <alexey@process-one.net>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
%%% Created : 15 Nov 2005 by Magnus Henoch <henoch@dtek.chalmers.se> %%% Created : 15 Nov 2005 by Magnus Henoch <henoch@dtek.chalmers.se>
%%% %%%
%%% %%%
%%% ejabberd, Copyright (C) 2002-2013 ProcessOne %%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%% %%%
%%% This program is free software; you can redistribute it and/or %%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as %%% modify it under the terms of the GNU General Public License as
@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details. %%% General Public License for more details.
%%% %%%
%%% You should have received a copy of the GNU General Public License %%% You should have received a copy of the GNU General Public License along
%%% along with this program; if not, write to the Free Software %%% with this program; if not, write to the Free Software Foundation, Inc.,
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA %%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%% 02111-1307 USA
%%% %%%
%%%---------------------------------------------------------------------- %%%----------------------------------------------------------------------

Some files were not shown because too many files have changed in this diff Show More