GNU Thales
----------
by Lucas Nussbaum <lucas@lucas-nussbaum.net>

-- Introduction --

GNU Thales is a IRC-to-MySQL gateway. It connects to your IRC network as a
server (like other services), and store everything it receives in a MySQL
database. It doesn't build stats itself, it just fills 5 MySQL tables called
user, server, chan, ison and maxvalues. You can then query the database with
SQL queries to retrieve the information you need.

To see examples of how to use Thales, please refer to the contrib/ dir.

-- Installation --

Please read the INSTALL file.

-- Upgrade --

When upgrading from an older version of thales, you might want to keep the data
stored in the maxvalues table. If you reload the database structure, you will
overwrite it. To prevent that, you must dump the table data before the upgrade,
and put it back after the upgrade.
Dumping the table data :
run mysqldump --no-defaults --user=<your_username> --password --complete-insert
--no-create-info <your_database> maxvalues > maxvalues.sql
<your_username> and <your_database> must be replaced by what looks appropriate.
then, proceed with the table structure upgrade, and end with :
mysql --user=<your_username> --password <your_database> < maxvalues.sql
to insert the data back into the table.

-- Important Notes --

1. Assumptions about the protocol
Thales uses the database very intensively. To prevent an enormous increase of
its usage, it makes asumptions about the validity of the data sent by the IRC
server. For example, when it receives a JOIN, it doesn't check if the user is
already on the channel.
The problem is that most servers make the same assumptions about the information
they receive. A bogus server could then crash Thales. If Thales crashes on your
network, please run it with the -v option (IRC protocol info will be logged),
and provide me with a log of the problem. (use contrib/logfilter/)

2. Why is named Thales ?
Thales was first developped to be used on the Langochat.net IRC network.
Another stats service, based on eggdrop and stats.mod, already existed and was
called Euclide. So we decided to go on with famous mathematicians, and
Eratosthene was such a difficult word ...

-- Comments/Contact/Help --

This is my first real Open Source project. I just hope you users will act not
to make it be my last one ;)
You can contact me at lucas@lucas-nussbaum.net .

A mailing list has been created. To be subscribed, mail
majordomo@ox.lucas-nussbaum.net with "subscribe thales" in the body. A
confirmation will be sent.

-- Bug reports --

If you experience problems, please send a complete description of the problem
with the output of :
gcc -v
uname -a
mysql -V
...
If you reproduce the bug, please run thales with the -v option to generate a
more verbose log.

-- Credits --

Much code is based on Epona's <http://www.epona.org>, written by lara. Epona is
itself based on IRCServices, so some code probably comes from
IRCServices too.

Many people helped me :
I would like to thank Jollino <jollino@sogno.net> : He helped me a lot with
Unreal support.
I would like to thank Partizanu <partizanu@netchat.ro> for his contribs and his
help.
I would like to thank Virginie (admin on Kewl.Org IRC network) for providing me
a good occasion to laugh. She didn't want me to test Thales on Kewl.Org because
she though I would be able to get passwords this way. She also told me she knew
the IRC protocol.
