1 |
$Id: NEWS,v 1.1.1.1 2003/12/30 17:08:35 mbuna Exp $ |
2 |
|
3 |
2003-12-30 Stephane Thiell pxys v2 |
4 |
------------------------------------ |
5 |
|
6 |
Woohoo! I found the time to complete the pxys v2 software suite. I now call it |
7 |
software suite as it's no more a single program to run: tasks are separated. |
8 |
I will try to be brief and understandable as possible. |
9 |
|
10 |
Some things never change...and some things do (Ok... easy!). Well, almost |
11 |
all the work has been to improve the internal coding design, program |
12 |
architecture and efficiency. In the meantime, and you probably want to know |
13 |
first what's changing in practice from an administrative point of view and not |
14 |
too much from a developer one. So, some major things have changed: |
15 |
|
16 |
- There are two main programs now. First, the IRCU service server daemon, |
17 |
named pxyservd which links to the IRC network. It manages the remote clients, |
18 |
provides a virtual client and an oper commands interface, send glines, |
19 |
provides logs, etc. ok almost like in pxys v1. The difference is that pxyservd |
20 |
doesn't perform any scans. The scanner daemon is named pxyscand, it performs |
21 |
the scans, keeps IP caches, etc. and connects to pxyservd via a TCP socket |
22 |
(for now only TCP is available). It has been completely rewritten in C++. To |
23 |
communicate, they use a very cheap binary protocol I designed for the occasion, |
24 |
it's called OPAS protocol and I wrote a library (see the libopas directory) to |
25 |
implement it. When a client connects to the network, pxyservd sends a request |
26 |
to pxyscand which performs the scan (in not in cache) and then reply (like a |
27 |
DNS query). |
28 |
|
29 |
- Both programs now use XML configuration files (pxyservdconf.xml and |
30 |
pxyscandconf.xml) with the help of libxml2's standard XPath parsing (see |
31 |
http://www.w3.org/TR/xpath). Don't worry, it's very easy to edit them using |
32 |
a simple text editor (but if you use emacs, I recommend you the use of |
33 |
the nXML major mode, you can find it at the following URL: |
34 |
http://www.thaiopensource.com/download/, or another XML mode). This adds a |
35 |
constraint to pxys2's installation: the very portable libxml2 is required |
36 |
(you can find it at http://xmlsoft.org). It's not included to pxys v2 package |
37 |
as it's a very common library (available in FreeBSD's ports, etc.). |
38 |
|
39 |
- Another library I wrote is needed which however is not part of the pxys |
40 |
v2 package (it's under the BSD license). I almost wrote it especially for |
41 |
pxys. It's a original event library. You can find it at http://peak.sf.net. |
42 |
|
43 |
- The use of this event-based library and the new internal design of the |
44 |
scanner make it VERY efficient. No more 200 threads that take all the CPU time |
45 |
for context switch! 1 thread per CPU is configured for pxyscand. pxyservd, |
46 |
however, is limited to 1 thread as it's not useful (peak doesn't parallelize |
47 |
events on a single socket stream). |
48 |
|
49 |
- pxyservd now handles channels! For now, it's only a test and there is |
50 |
no real usage of this feature, but some will be rapidely possible: an oper |
51 |
will be able to ask for a rescan of a whole channel, if needed (proxies are so |
52 |
volatile these days...), or the scanner could detect if a channel is regularly |
53 |
joined by proxied users and report that to the console channel, for example. |
54 |
Channels management is possible thanks to another library: dbprim written by |
55 |
Kev. It will be a good test for his (cpu and memory) efficient library before |
56 |
it's integrated into Undernet IRCU itself. dbprim is included in pxys v2 |
57 |
package as a third party library for convenience. |
58 |
|
59 |
- pxyservd is only P10 n2k compatible. P9 and non n2k networks can't use it. |
60 |
|
61 |
- pxyscand can now use several IPs as scanning IP source (taken randomly). |
62 |
|
63 |
That's almost all for the visible part; IRC commands are still oper only |
64 |
and almost the same, mostly for stats/status purpose. If you are a pxys v1 |
65 |
user you will barely see the difference. |
66 |
|
67 |
Known limitation: libpeak only supports x86 and PowerPC processors at the |
68 |
moment. Sparc and several other processor types will be supported soon. |