• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

data/H03-May-2022-1,1731,028

examples/H03-May-2022-965499

src/H03-May-2022-5,3523,927

tools/H03-May-2022-16077

COPYINGH A D05-Jul-200317.6 KiB341281

ChangeLogH A D09-May-20047.5 KiB160154

INSTALLH A D26-Apr-200410.6 KiB263199

Makefile.amH A D06-May-2004229 106

Makefile.inH A D09-May-200410.7 KiB357280

NeedMaintainersH A D16-Jan-2004512 119

READMEH A D25-Mar-20043.4 KiB8869

README.codersH A D30-Apr-20041.4 KiB4636

ReportUsage.shH A D06-May-20041.7 KiB6758

TODOH A D05-Jul-2003431 1510

UnrealModulesH A D02-May-2004557 1310

acinclude.m4H A D08-May-2004702 2827

aclocal.m4H A D08-May-200437.8 KiB1,007965

config.guessH A D09-Jan-200441.9 KiB1,4331,234

config.subH A D09-Jan-200430.2 KiB1,5381,397

configureH A D08-May-2004213.1 KiB7,1666,075

configure.inH A D08-May-20047.6 KiB250226

install-shH A D05-Jul-20035.5 KiB252153

missingH A D05-Jul-20038.6 KiB284224

mkinstalldirsH A D05-Jul-2003725 4123

README

1GNU Thales
2----------
3by Lucas Nussbaum <lucas@lucas-nussbaum.net>
4
5-- Introduction --
6
7GNU Thales is a IRC-to-MySQL gateway. It connects to your IRC network as a
8server (like other services), and store everything it receives in a MySQL
9database. It doesn't build stats itself, it just fills 5 MySQL tables called
10user, server, chan, ison and maxvalues. You can then query the database with
11SQL queries to retrieve the information you need.
12
13To see examples of how to use Thales, please refer to the contrib/ dir.
14
15-- Installation --
16
17Please read the INSTALL file.
18
19-- Upgrade --
20
21When upgrading from an older version of thales, you might want to keep the data
22stored in the maxvalues table. If you reload the database structure, you will
23overwrite it. To prevent that, you must dump the table data before the upgrade,
24and put it back after the upgrade.
25Dumping the table data :
26run mysqldump --no-defaults --user=<your_username> --password --complete-insert
27--no-create-info <your_database> maxvalues > maxvalues.sql
28<your_username> and <your_database> must be replaced by what looks appropriate.
29then, proceed with the table structure upgrade, and end with :
30mysql --user=<your_username> --password <your_database> < maxvalues.sql
31to insert the data back into the table.
32
33-- Important Notes --
34
351. Assumptions about the protocol
36Thales uses the database very intensively. To prevent an enormous increase of
37its usage, it makes asumptions about the validity of the data sent by the IRC
38server. For example, when it receives a JOIN, it doesn't check if the user is
39already on the channel.
40The problem is that most servers make the same assumptions about the information
41they receive. A bogus server could then crash Thales. If Thales crashes on your
42network, please run it with the -v option (IRC protocol info will be logged),
43and provide me with a log of the problem. (use contrib/logfilter/)
44
452. Why is named Thales ?
46Thales was first developped to be used on the Langochat.net IRC network.
47Another stats service, based on eggdrop and stats.mod, already existed and was
48called Euclide. So we decided to go on with famous mathematicians, and
49Eratosthene was such a difficult word ...
50
51-- Comments/Contact/Help --
52
53This is my first real Open Source project. I just hope you users will act not
54to make it be my last one ;)
55You can contact me at lucas@lucas-nussbaum.net .
56
57A mailing list has been created. To be subscribed, mail
58majordomo@ox.lucas-nussbaum.net with "subscribe thales" in the body. A
59confirmation will be sent.
60
61-- Bug reports --
62
63If you experience problems, please send a complete description of the problem
64with the output of :
65gcc -v
66uname -a
67mysql -V
68...
69If you reproduce the bug, please run thales with the -v option to generate a
70more verbose log.  Before sending the log, please use
71tools/logfilter/logfilter.sh to filter & gzip the logfile.
72
73-- Credits --
74
75Much code is based on Epona's <http://www.epona.org>, written by lara. Epona is
76itself based on IRCServices, so some code probably comes from
77IRCServices too.
78
79Many people helped me :
80I would like to thank Jollino <jollino@sogno.net> : He helped me a lot with
81Unreal support.
82I would like to thank Partizanu <partizanu@netchat.ro> for his contribs and his
83help.
84I would like to thank Virginie (admin on Kewl.Org IRC network) for providing me
85a good occasion to laugh. She didn't want me to test Thales on Kewl.Org because
86she though I would be able to get passwords this way. She also told me she knew
87the IRC protocol.
88

README.coders

1GNU Thales structures :
2=======================
3
4If you are interested in improving thales, you might want to read the following
5about thales structure.
6
7IRC messages handling, and database handling, are done in :
8- messages.*
9- actions.*
10- db.*
11
12messages.* handles the basic IRC commands, like PING, MOTD, etc ... using m_*
13functions.  When a command requires to query the database, it is forwarded to
14the corresponding do_* function in actions.*.  do_* use db_* functions (in
15db.*) to query the database.
16
17Patches :
18
19If you want to send a patch, please use diff -burN, and review your patch by
20hand. I particularly dislikes reading patches which include your config.log,
21makefiles, etc ... :)
22
23IRCD modes :
24
25Here are the modes for the ircds supported by thales :
26Ultimate 3.0 :
27  channels :
28    include/struct.h:1164
29    src/channel.c:1405
30  nicks :
31    src/s_user.c:78
32
33Unreal 3.2 :
34   channels :
35      src/channel.c:129
36   users :
37      src/umodes.c:120
38      grep UmodeAdd umodes.c |grep UMODE | grep -v UMODE_LOCAL | grep -E "[a-z]'" | sed "s/^.*NULL, '\(.\)', UMODE.*$/\1/" | sort | tr -d '\n'
39      grep UmodeAdd umodes.c |grep UMODE | grep -v UMODE_LOCAL | grep -E "[A-Z]'" | sed "s/^.*NULL, '\(.\)', UMODE.*$/\1/" | sort | tr -d '\n'
40
41You should also grep for stuff like that :
42	req.paracount = 0;
43	req.is_ok = extcmode_default_requirechop;
44	req.flag = 'T';
45	CmodeAdd(NULL, req, &EXTMODE_NONOTICE);
46