<commit_before>XMP3 - XMPP Proxy
=================

 * Author: <NAME> <<EMAIL>>
 * Copyright (c) 2012 <NAME>

Purpose
-------

XMP3 provides a lightweight (mostly) RFC compliant XMPP server.  The key
feature is the ability to hook into the server to receive/send XMPP stanzas.
This makes it easy to use XMP3 as a proxy to another system.  Otherwise XMP3
works well as a light weight XMPP server for general use, especially on
resource-constrained devices.

Most of this work is funded by the Naval Research Laboratory:
http://cs.itd.nrl.navy.mil/

Features
--------

 * Mostly RFC 6120, 6121 compliant XMPP implementation
 * Supports one-to-one messaging.
 * Supports XEP-0045 multi-user chat.
 * Pluggable authentication mechanisms:
    * See xmpp_server_set_auth_callback in xmpp_server.h

Planned Features
----------------

XMP3 does not currently, but should in a future version, support these
features:

 * Configurable roster implementations (file/database backed, etc).
 * Server dialback support.
 * RFC 6120 Server to Server communication.

Supported Platforms
-------------------

XMP3 is officially supported and tested on the following platforms:

 * Linux
    * Arch Linux kernel 3.3.2
    * Ubuntu 11.10
 * Mac OSX
    * 10.6 Snow Leopard
    * 10.7 Lion
 * Android
    * Android 2.3.3 - Cyanogenmod 7.1
        * LG Optimus V
        * HTC Nexus One
        * Samsung Galaxy Nexus
    * Android 4.0.3 - ASUS EEE Transformer

XMP3 has been tested with the following clients:

 * Pidgin 2.10.3 (libpurple 2.10.3)
 * iChat in OSX 10.6 and 10.7.
 * [Xabber][xabber] on Android

[xabber]: https://play.google.com/store/apps/details?id=com.xabber.android

Requirements
------------

XMP3 requires the following third-party libraries:

 * Expat - For XML parsing
    * http://expat.sourceforge.net/
    * Tested with version 2.1.0
 * OpenSSL - For TLS support
    * http://www.openssl.org/
    * Tested with version 1.0.1

Building XMP3 requires Python (versions 2.6, 2.7, and 3 work).

XMP3 and the tests can be built with gcc or clang.

Compiling
---------

To build the default optimized build, without unit tests, run:

    ./waf configure build

To build with no optimizations and debugging symbols:

    ./waf configure --debug build

To run the tests, run:

    ./waf test

Each build command will put output in the "build" directory.  To remove built
object files:

    ./waf clean

To completely remove all compiled files:

    ./waf distclean

See the help output of waf for more options:

    ./waf --help

To build the Doxygen documentation, just run "doxygen" in the root distribution
directory.

### Building on Android

To build on Android, first build its dependencies.  Inside the "deps"
directory, type:

    ./build_android.sh

Any arguments passed to the script are passed to make, so the "-j" flag is
useful to specify parallel jobs.  Also, edit the script in order to compile for
arm7 architectures instead of arm6.

Next, in the main directory, pass "--cross-android" to the configure command:

    ./waf configure --cross-android

By default, the script will look at the "ANDROID_NDK" environment variable to
find the paths to the compilers.  This can be overridden with the
"--cross-android-ndk" option.  See the help output for options to choose the
Android API level, and the architecture.

Running
-------

Waf will put the final binaries in the "build" directory.  By default, XMP3
will listen on localhost port 5222 for incoming connections.  It expects
OpenSSL keyfile and certificate to be in the current working directory, named
"server.pem" and "server.crt" respectively.  See the section "Generating
Certificates" for details.<commit_msg>Update README with changes about Android dependency script.<commit_after>XMP3 - XMPP Proxy
=================

 * Author: <NAME> <<EMAIL>>
 * Copyright (c) 2012 <NAME>

Purpose
-------

XMP3 provides a lightweight (mostly) RFC compliant XMPP server.  The key
feature is the ability to hook into the server to receive/send XMPP stanzas.
This makes it easy to use XMP3 as a proxy to another system.  Otherwise XMP3
works well as a light weight XMPP server for general use, especially on
resource-constrained devices.

Most of this work is funded by the Naval Research Laboratory:
http://cs.itd.nrl.navy.mil/

Features
--------

 * Mostly RFC 6120, 6121 compliant XMPP implementation
 * Supports one-to-one messaging.
 * Supports XEP-0045 multi-user chat.
 * Pluggable authentication mechanisms:
    * See xmpp_server_set_auth_callback in xmpp_server.h

Planned Features
----------------

XMP3 does not currently, but should in a future version, support these
features:

 * Configurable roster implementations (file/database backed, etc).
 * Server dialback support.
 * RFC 6120 Server to Server communication.

Supported Platforms
-------------------

XMP3 is officially supported and tested on the following platforms:

 * Linux
    * Arch Linux kernel 3.3.2
    * Ubuntu 11.10
 * Mac OSX
    * 10.6 Snow Leopard
    * 10.7 Lion
 * Android
    * Android 2.3.3 - Cyanogenmod 7.1
        * LG Optimus V
        * HTC Nexus One
        * Samsung Galaxy Nexus
    * Android 4.0.3 - ASUS EEE Transformer

XMP3 has been tested with the following clients:

 * Pidgin 2.10.3 (libpurple 2.10.3)
 * iChat in OSX 10.6 and 10.7.
 * [Xabber][xabber] on Android

[xabber]: https://play.google.com/store/apps/details?id=com.xabber.android

Requirements
------------

XMP3 requires the following third-party libraries:

 * Expat - For XML parsing
    * http://expat.sourceforge.net/
    * Tested with version 2.1.0
 * OpenSSL - For TLS support
    * http://www.openssl.org/
    * Tested with version 1.0.1

Building XMP3 requires Python (versions 2.6, 2.7, and 3 work).

XMP3 and the tests can be built with gcc or clang.

Compiling
---------

To build the default optimized build, without unit tests, run:

    ./waf configure build

To build with no optimizations and debugging symbols:

    ./waf configure --debug build

To run the tests, run:

    ./waf test

Each build command will put output in the "build" directory.  To remove built
object files:

    ./waf clean

To completely remove all compiled files:

    ./waf distclean

See the help output of waf for more options:

    ./waf --help

To build the Doxygen documentation, just run "doxygen" in the root distribution
directory.

### Building on Android

To build on Android, first build its dependencies.  Inside the "deps"
directory, type:

    ./build_android.sh [options]

See the output of "./build_android.sh -h" to see possible flags.  For example,
to run make with 4 parallel jobs, run:

    ./build_android,sh -m '-j5'

Currently, you need to edit the script in order to compile for arm7
architectures instead of arm6.

Next, in the main directory, pass "--cross-android" to the configure command:

    ./waf configure --cross-android

By default, the script will look at the "ANDROID_NDK" environment variable to
find the paths to the compilers.  This can be overridden with the
"--cross-android-ndk" option to waf.  See the help output for options to choose
the Android API level, and the architecture.

Running
-------

Waf will put the final binaries in the "build" directory.  By default, XMP3
will listen on localhost port 5222 for incoming connections.  It expects
OpenSSL keyfile and certificate to be in the current working directory, named
"server.pem" and "server.crt" respectively.  See the section "Generating
Certificates" for details.
{'fraction_non_alphanumeric': 0.09311957247828992, 'fraction_numerical': 0.022444889779559118, 'mean_word_length': 3.1290678433535577, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 2, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6141199', 'n_tokens_mistral': 2343, 'n_tokens_neox': 2148, 'n_words': 973}