[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
ircd.conf considerations / XML
The configuration file of the IRC server is starting to get more and
more complicated and there are trouble trying to add new fields and
lines. As of now the format still works and probably will for a long
time so this might not even be an issue. Also this might not be the
way to deal with the problems - if that is the case then I guess the
thread will die quickly by itself.
This is an attempt to create a new configuration file for the IRC server
using XML. First a simple example of a configuranfile will be shown to
give a first hint on what it finaly might look like. Then all the valid
tags are shown to give a more accurate view on what could be done. Then
finally is an incomplete attempt to create a dtd file for it. Unfortunately
I'm no wizard at writing these so I'm sure there are plenty of errors in
there.
The structure in XML format, displaying all the different elements and
attributes, was put together by Christophe Kalt and myself, in an effort
to make a first draft covering all the lines and fields in the old version
of the configuration file. However, I'm sure a lot of it could be done in
a better way with the multitude of ideas that are still not spoken for,
also the naming should be conscidered and simplified if possible.
The main idea on how this attempt should continue is by creating a
preprocessor that takes an XML file and turns it into the old version of
the file, thus giving people the oppertunity to use both ways. I'm sure
a new format will be looked upon very suspisiously and will not easily
be accepeted (even I thinks it looks "odd" and unfamiliar right now).
This is also one reason why I'm not sure this draft should be put public
on mailinglists before the main objections are weeded out from people who
has worked with both the IRCD and XML. Also the dtd part should be
finished. Still, here it is...
Sincerely,
Magnus Tjernstrom
Simple Config
-------------
<?XML version='1.0' ?>
<!DOCTYPE CONFIG SYSTEM "config.dtd">
<CONFIG>
<ADMIN EMAIL="Magnus Tjernstrom and Jonas Stahre <irc@xxxxxxxxxxxx>" INFO="University of Lulea, Lulea, Sweden" NAME="Located at the Lulea University Academic Computer Society (Ludd)"/>
<CONNECTION NAME="*.fi" SERVERCLASS="10" COMPRESSION>
<CONNECT IP="ircd.funet.fi" PASSWORD="fiCPass"/>
<PERMIT IP="ircd.funet.fi" PASSWORD="fiNPass" STRIP="3"/>
<AUTOCONNECT PORT="6667"/>
</CONNECTION>
<DISALLOW REASON="Clones & robots are not tolerated." USERHOST="*@*.dialup.se"/>
<HUB ALLOW="*" BEHIND="*.fi"/>
<PORT NR="6667"/>
<PORT NR="6668"/>
<SERVER LOCATION="Top of the world, Lulea, Sweden" NAME="irc.ludd.luth.se"/>
<SERVERCLASS CONNFREQ="180" MAXLINKS="1" NR="10" PINGFREQ="180" SENDQ="2000000"/>
<USERCLASS NR="20" MAXLINKS="100" PINGFREQ="120" SENDQ="100000">
<CLIENT RESOLV USERHOST="*@*.se"/>
<OPERATOR NICKNAME="Core" PASSWORD="secret" TYPE="global" USERHOST="irc@xxxxxxxxxxxxxxxx"/>
</USERCLASS>
</CONFIG>
XML
---
<?XML version='1.0' ?>
<!DOCTYPE CONFIG SYSTEM "config.dtd">
<CONFIG>
<ADMIN EMAIL="" INFO="" NAME=""/>
<CLIENT PASSWORD="" RESOLV RESTRICT USERCLASS="" USERIP="" USERHOST=""/>
<CONNECTION NAME="" SERVERCLASS="" COMPRESSION>
<CONNECT IP="" PASSWORD=""/>
<PERMIT IP="" PASSWORD="" STRIP=""/>
<AUTOCONNECT PORT=""/>
</CONNECTION>
<DISALLOW BETWEEN="" CLASS="" PORT="" REASON="" USERHOST=""/>
<HUB ALLOW="" BEHIND="" DISALLOW="" MAXDEPTH=""/>
<PORT HOST="" NR="" SOCKET=""/>
<QUARANTINE REASON="" SERVER=""/>
<RESTRICT PROGRAM="" USERHOST=""/>
<SERVER IP="" LOCATION="" NAME="" UDP=""/>
<SERVERCLASS CONNFREQ="" MAXLINKS="" NR="" PINGFREQ="" SENDQ=""/>
<UPLINK PASSWORD="" SERVER=""/>
<USERCLASS NR="" MAXLINKS="" PINGFREQ="" SENDQ="">
<CONCURRENCY GLOBAL HOST="" LOCAL USERHOST=""/>
<CLIENT PASSWORD="" RESOLV RESTRICT USERCLASS="" USERHOST="" USERIP=""/>
<OPERATOR NICKNAME="" PASSWORD="" TYPE="" USERHOST="" USERIP=""/>
<SERVICE NAME="" PASSWORD="" TYPE="" USERHOST=""/>
</USERCLASS>
<VERSION DEFINES="" MASK="" NR=""/>
</CONFIG>
XML DTD (Document Type Definitions)
-----------------------------------
<!-- The configuration file -->
<!ELEMENT CONFIG ( ADMIN & CLIENT* & CONNECTION* & DISALLOW* & HUB* & PORT+ & QUARANTINE* & RESTRICT* & SERVER & SERVERCLASS* & USERCLASS* & UPLINK? & VERSION* )>
<!-- The A-line -->
<!ELEMENT SERVER EMPTY>
<!ATTLIST SERVER EMAIL CDATA>
<!ATTLIST SERVER INFO CDATA>
<!ATTLIST SERVER NAME CDATA>
<!-- The I-line -->
<!ELEMENT CLIENT EMPTY>
<!ATTLIST CLIENT PASSWORD CDATA>
<!ATTLIST CLIENT RESOLV ( "no"| "yes" ) "yes">
<!ATTLIST CLIENT RESTRICT ( "no"| "yes" ) "no">
<!ATTLIST CLIENT USERCLASS IDREF ...>
<!ATTLIST CLIENT USERIP CDATA "NOMATCH">
<!ATTLIST CLIENT USERHOST CDATA "NOMATCH">
<!-- Most of the C-line -->
<!ELEMENT CONNECT EMPTY>
<!ATTLIST CONNECT IP CDATA #REQUIRED>
<!ATTLIST CONNECT PASSWORD CDATA #REQUIRED>
<!-- The autoconnect part of the C-line -->
<!ELEMENT AUTOCONNECT EMPTY>
<!ATTLIST AUTOCONNECT PORT CDATA #REQUIRED>
<!-- Most of the N-line -->
<!ELEMENT PERMIT EMPTY>
<!ATTLIST PERMIT IP CDATA #REQUIRED>
<!ATTLIST PERMIT PASSWORD CDATA #REQUIRED>
<!ATTLIST PERMIT STRIP CDATA "0">
<!-- The C/N lines -->
<!ELEMENT CONNECTION ( AUTOCONNECT? & CONNECT & PERMIT )>
<!ATTLIST CONNECTION CLASS IDREF ... #REQUIRED>
<!ATTLIST CONNECTION COMPRESSION ( "no" | "yes" ) "yes">
<!ATTLIST CONNECTION NAME CDATA #REQUIRED>
<!-- The H-line -->
<!ELEMENT HUB EMPTY>
<!ATTLIST HUB ALLOW CDATA>
<!ATTLIST HUB BEHIND CDATA>
<!ATTLIST HUB DISALLOW CDATA>
<!ATTLIST HUB MAXDEPTH CDATA>
<!-- The I-line -->
<!ELEMENT CLIENT EMPTY>
<!ATTLIST CLIENT PASSWORD CDATA>
<!ATTLIST CLIENT RESOLV ( "no"| "yes" ) "yes">
<!ATTLIST CLIENT RESTRICT ( "no"| "yes" ) "no">
<!ATTLIST CLIENT USERCLASS IDREF ...>
<!ATTLIST CLIENT USERIP CDATA "NOMATCH">
<!ATTLIST CLIENT USERHOST CDATA "NOMATCH">
<!-- The K-line -->
<!ELEMENT DISALLOW EMPTY>
<!ATTLIST DISALLOW BETWEEN CDATA>
<!ATTLIST DISALLOW CLASS CDATA>
<!ATTLIST DISALLOW PORT CDATA>
<!ATTLIST DISALLOW REASON CDATA>
<!ATTLIST DISALLOW USERHOST CDATA>
<!-- The M-line -->
<!ELEMENT SERVER EMPTY>
<!ATTLIST SERVER IP CDATA>
<!ATTLIST SERVER LOCATION CDATA>
<!ATTLIST SERVER NAME CDATA #REQUIRED>
<!ATTLIST SERVER UDP CDATA>
<!-- The server related parts of the Y-line -->
<!ELEMENT SERVERCLASS EMPTY>
<!ATTLIST SERVERCLASS CONNFREQ CDATA>
<!ATTLIST SERVERCLASS MAXLINKS CDATA>
<!ATTLIST SERVERCLASS NR CDATA #REQUIRED>
<!ATTLIST SERVERCLASS PINGFREQCDATA>
<!ATTLIST SERVERCLASS SENDQ CDATA>
<!-- The P-line -->
<!ELEMENT PORT EMPTY>
<!ATTLIST PORT HOST CDATA>
<!ATTLIST PORT NR CDATA>
<!ATTLIST PORT SOCKET CDATA>
<!-- The Q-line -->
<!ELEMENT QUARANTINE EMPTY>
<!ATTLIST QUARANTINE REASON CDATA #REQUIRED>
<!ATTLIST QUARANTINE SERVER CDATA #REQUIRED>
<!-- The R-line -->
<!ELEMENT RESTRICT EMPTY>
<!ATTLIST RESTRICT PROGRAM CDATA #REQUIRED>
<!ATTLIST RESTRICT USERHOST CDATA #REQUIRED>
<!-- The U-line -->
<!ELEMENT UPLINK EMPTY>
<!ATTLIST UPLINK PASSWORD CDATA>
<!ATTLIST UPLINK SERVER CDATA #REQUIRED>
<!-- Part of th Y-line -->
<!ELEMENT CONCURRENCY EMPTY>
<!ATTLIST CONCURRENCY GLOBAL ( "activated" ) "activated">
<!ATTLIST CONCURRENCY HOST CDATA>
<!ATTLIST CONCURRENCY LOCAL ( "activated" ) "activated">
<!ATTLIST CONCURRENCY USERHOST CDATA>
<!-- The O-line -->
<!ELEMENT OPERATOR EMPTY>
<!ATTLIST OPERATOR NICKNAME CDATA #REQUIRED>
<!ATTLIST OPERATOR PASSWORD CDATA #REQUIRED>
<!ATTLIST OPERATOR TYPE CDATA ( "global" | "local" ) "global" #REQUIRED>
<!ATTLIST OPERATOR USERHOST CDATA>
<!ATTLIST OPERATOR USERIP CDATA>
<!-- The S-line -->
<!ELEMENT SERVICE EMPTY>
<!ATTLIST SERVICE NAME CDATA #REQUIRED>
<!ATTLIST SERVICE PASSWORD CDATA #REQUIRED>
<!ATTLIST SERVICE TYPE CDATA #REQUIRED>
<!ATTLIST SERVICE USERHOST CDATA #REQUIRED>
<!-- The client related parts of the Y-line, O-line, S-line and optionally I-lines -->
<!ELEMENT USERCLASS ( CONCURRENCY? & CLIENT* & OPERATOR* & SERVICE* )>
<!ATTLIST USERCLASS NR CDATA>
<!ATTLIST USERCLASS MAXLINKS CDATA>
<!ATTLIST USERCLASS PINGFREQ CDATA>
<!ATTLIST USERCLASS SENDQ CDATA>
<!-- The V-line -->
<!ELEMENT VERSION EMPTY>
<!ATTLIST VERSION DEFINES CDATA>
<!ATTLIST VERSION MASK CDATA>
<!ATTLIST VERSION NR CDATA>