From JaWiki (Jabber/XMPP wiki)
Installation and operation guide for J2J (Jabber-to-Jabber) gateway.
 Installation and configuring
For J2J you will need:
- Python >=2.3
- Twisted >=10.2.0 (patch http://twistedmatrix.com/trac/attachment/ticket/4771/twisted-ticket-4771.patch is needed for 10.2.0)
- PostgreSQL >=8.2
- PyGreSQL >=3.8
- PyOpenSSL >=0.6
- Any Jabber-server (for example ejabberd, jabberd2 or Openfire), that supports:
 Source code downloads
svn co svn://svn.jrudevels.org/j2j/trunk j2j/
 Database setup
You need to setup a database to work with J2J:
Let's create a database for J2J:
mysql -h localhost -u root -p -e "CREATE DATABASE j2j;"
Let's create a DB user:
createuser -P j2j
A -P key means, that user is created with a password-prompt. Store it, because it will be needed for next steps. Same with yourpassword in mysql:
mysql -h localhost -u root -p -e "GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON j2j.* TO 'j2j'@'localhost' IDENTIFIED BY 'yourpassword';"
And import a database structure:
psql -U j2j j2j \i pgsql.schema
mysql -h localhost -u root -p -e "use j2j; \. mysql.schema"
 Gateway configuration
Configuration file is needed for J2J. Default search paths for it is: ./j2j.conf, ~/.j2j/j2j.conf and /etc/j2j/j2j.conf; also you can use "-c /path/j2j.conf" in main.py, see later. Let's copy example of this and edit it:
cp j2j.conf.example j2j.conf nano -w j2j.conf
- Section component
- JID - JID of gateway. For example,
- Host - IP or domain-name of your Jabber-server. For example,
- Port - port on Jabber-server to which J2J will be connected. It must be the same as it specified in your Jabber-server's configuration.
- Password - password on Jabber-server to which J2J will be connected.
- Section database
- Host - IP or Domain-name of your database server. Leave it blank to use postgres' UNIX-socket.
- Type - Type of your database server: postgres or mysql
- User - Database username (in our example is j2j)
- Name - Database name (in our example is j2j)
- Password - Password for this database username.
- Prefix - pass it as is.
- Section admins
- List - a list of JIDs, for a notifications of new users registrations. For example,
- Section debug
- Pass it as is. If you will get errors in J2J's work try to turn on logging in it section.
Let's start the gateway:
it should spit "Connected", see also your jabber server log.
- If you see:
Exception exceptions.AttributeError: "database instance has no attribute 'dbCursor'" in <bound method database.__del__ of <database.database instance at 0x85f1bec>> ignored
Check if you have installed python db access support ( i.e. python-pygresql, python-mysqldb in debian) and if it is up to date. Otherwise, is postgresql/mysql rdbms accesible with the parameters in [database] section in your j2j.conf? is it up?
- If you see :
Traceback (most recent call last): File "/usr/src//j2j/main.py", line 11, in ? import j2j File "/usr/src/j2j/j2j.py", line 14, in ? from client import Client File "/usr/src/j2j/client.py", line 10, in ? from twisted.names.error import DNSNameError ImportError: No module named error
In debian etch twisted is too old: required twisted 8.01 is in etch+1; ubuntu 8.04 is ok too. And with FreeBSD you need also py-twistedNames, it's not installed with twisted.
- Sometimes main.py doesn't spit nothing, check your jabber server log, maybe there is an authentication password problem so recheck [component] section in j2j.conf
- In j2j.conf are declared some paths to log files, do these files exist? do they have write permissions?
 Command line options
Start J2J with the --help key to get help about command-line options.