Matt Ullman
66769bc1f8
More cleanup
2016-03-23 00:11:26 -04:00
Matt Ullman
e23126c83b
Cleanup warnings
2016-03-21 22:28:41 -04:00
William Pitcock
032ef5ef9e
modules: more GET_SS_FAMILY() checking
2016-03-20 04:46:50 -05:00
William Pitcock
c0949eb003
extensions/m_webirc: win32 fixes
2016-03-20 02:26:30 -05:00
Elizabeth Myers
503727d1ee
More bool conversions
2016-03-09 02:19:31 -06:00
Elizabeth Myers
3c7d6fcce7
Message handlers should return void.
...
Also fix up some return values and stuff to use bool (or void if
nothing). I just did it whilst I was here.
According to jilles, the return value used to signify whether or not the
client had exited. This was error-prone and was fixed a long, long time
ago, but the return value was left int for historical reasons.
Since the return type is not used (and has no clear use case anyway),
it's safe to just get rid of it.
2016-03-09 01:37:03 -06:00
Elizabeth Myers
eeabf33a7c
Move module description headers to the top
...
This is cleaner.
Note this was broken out of a much larger piece of work I did, so if
there's any problems, I apologise!
2016-03-09 01:29:41 -06:00
Max Teufel
54d8925ed4
extensions: add umode_noctcp extension
2016-03-07 18:48:14 +01:00
Elizabeth Myers
a278a4fc68
AV2 descriptions: forgot these
2016-03-07 04:11:58 -06:00
Elizabeth Myers
3bde01a819
Update extensions/spy_* with AV2 descriptions.
2016-03-07 04:09:14 -06:00
Elizabeth Myers
84b4c05888
Add AV2 descriptions for extensions/sno_*
2016-03-07 04:02:27 -06:00
Elizabeth Myers
3fd3d7e176
Port some more extensions to AV2 and add descriptions
2016-03-07 03:50:03 -06:00
Elizabeth Myers
8699801ca2
Compensate for my obviously diminished faculties.
2016-03-07 03:42:43 -06:00
Elizabeth Myers
02369fa767
Give all extensions/m_* modules AV2 descriptions
2016-03-07 03:40:51 -06:00
Elizabeth Myers
dacd2aa8c2
Bump some extensions to AV2 and add descriptions
2016-03-07 03:08:40 -06:00
Elizabeth Myers
de2b673f5a
example_module: forgot a stupid semicolon.
2016-03-07 01:35:35 -06:00
Elizabeth Myers
4d552723ee
example_module: update for AV2.
2016-03-07 01:27:57 -06:00
William Pitcock
c81afd1580
extensions: add AV2 description strings to a few modules
2016-03-07 00:32:01 -06:00
Elizabeth Myers
1bb809cb30
Remove m_42 from README.
2016-03-06 23:58:32 -06:00
Elizabeth Myers
d40217b4f6
Bye m_42.
...
Mostly a useless hybrid relic that nobody had used for years.
2016-03-06 23:57:50 -06:00
Elizabeth Myers
04f832b778
Bump all extensions to AV2
...
Most do not yet have descriptions, but that's trivial.
2016-03-06 23:57:10 -06:00
Elizabeth Myers
581dad19a4
Update chm_* modules to AV2
2016-03-06 23:48:27 -06:00
Elizabeth Myers
216d70e91d
modules: tag origin at load time.
2016-03-06 18:57:05 -06:00
Elizabeth Myers
c63aeb44e9
modules: add origin field to V2
2016-03-06 17:52:49 -06:00
Elizabeth Myers
c168ef1864
m_remove: use new AV2 MAPI
2016-03-06 17:27:02 -06:00
Elizabeth Myers
a4bf26dd34
Move irc_* data structures to librb.
...
This makes the base ircd less cluttered up with data structures that can
go elsewhere.
2016-03-06 14:17:19 -06:00
Elizabeth Myers
fe037171d6
Change all leftover libratbox stuff to librb.
2016-03-06 03:49:27 -06:00
Elizabeth Myers
c6d81c6d59
m_echotags: Oops...
2016-03-06 02:49:16 -06:00
Elizabeth Myers
cbeab4bc34
Remove $Id tags from everything.
...
These are obsolete and none have changed since 10 years gao...
2016-03-06 02:47:27 -06:00
William Pitcock
c83f2f5e12
rename libratbox to librb, since its pretty modified anyway
2016-03-06 02:30:20 -06:00
Elizabeth Myers
1d91de8100
Remove old .indent.pro files
...
These have been unused since dinosaurs roamed the earth and are mostly
smelly old Hybrid relics.
2016-03-05 21:21:36 -06:00
William Pitcock
9ea48ec30a
remove presupplied autotools files
2016-03-05 17:47:48 -06:00
William Pitcock
63b9db9675
capability: allow attaching capability-owner data to a capability token, to enable extended data for client capabilities
2016-02-26 23:55:43 -06:00
William Pitcock
c678fbc08b
ircd: remove broken USE_IODEBUG_HOOKS knob and related code
2016-02-20 12:02:49 -06:00
William Pitcock
7baa37a9ef
msg: remove last vestiges of the fakelag system. charybdis has never supported fakelag.
2016-02-19 16:43:39 -06:00
William Pitcock
ca45daba73
extensions: add m_echotags extension to echo back your tags in NOTICE form
2016-02-10 21:00:27 -06:00
William Pitcock
760bafdac3
extensions: update for API change
2016-02-10 20:14:22 -06:00
Valerii Iatsko
5203cba5ce
Remove libratbox's snprintf.c, update related ircd code
2016-02-10 02:25:32 +01:00
William Pitcock
c4e9deaef9
extensions: add chm_insecure, which has the opposite effect of chm_sslonly.
...
This module makes SSL required to join any channels except for ones specifically marked insecure.
It is meant to be used in a migration path away from plaintext IRC.
2016-01-29 22:26:41 -05:00
Jilles Tjoelker
58855a9f2c
extensions/helpops: Do not use oper:hidden.
...
If +H is a separate umode and privilege, there is no reason to have
oper:hidden, which did not work properly anyway since it is not propagated
to other servers.
2016-01-16 15:23:32 +01:00
William Pitcock
103a1bfd34
extensions/override: disable false positive modehack notice
2016-01-16 02:28:49 -06:00
William Pitcock
f69d7febc7
extensions/override: improve KICK override messages
2016-01-16 02:04:01 -06:00
William Pitcock
161ac1c8d5
extensions/helpops: implement DEHELPER command
2016-01-14 15:16:29 -06:00
William Pitcock
4d21f1e8e0
extensions/helpops: new module, implementing a helpops system.
...
if loaded, this module takes over /stats p, and displays people who are umode +H.
to get umode +H, one must have the "usermode:helpops" permission.
2016-01-14 08:08:40 -06:00
William Pitcock
3ee43bcf29
ircd: get_channel_access(): do not derive channel pointer from membership
2016-01-13 22:16:44 -06:00
William Pitcock
e118f2d431
extensions/chm_operpeace: new module which disallows kicking of operators on select channels
2016-01-13 16:52:56 -06:00
William Pitcock
88c48be58c
extensions/sno_globalnickchange: import from ircd-seven
2016-01-12 07:10:39 -06:00
William Pitcock
a4721f5e9f
ircd: implement EXTENDCHANS, based on ircd-seven (with some improvements from chatircd)
2016-01-11 23:32:23 -06:00
William Pitcock
b870a5f8e9
extensions/override: display mode-change string in override messages
2016-01-11 22:40:32 -06:00
William Pitcock
e4603e3d27
parse: implement reconstruct_parv()
2016-01-11 22:28:55 -06:00
William Pitcock
49c12c23f9
extensions/m_remove: simplify the reason building code, pointed out by mniip
2016-01-10 22:27:28 -06:00
Doug Freed
a69c4f8c56
extensions/m_remove: quote user part messages
...
Quote user part messages like freenode/ircd-seven so that users can't
fake a channel op using /remove. This only applies when this module is
loaded.
2016-01-10 12:51:28 -08:00
William Pitcock
46be39faab
ircd: hash: use an irc_radixtree for storing resv's
2016-01-09 04:59:02 -06:00
William Pitcock
9e45a5ca19
buildsystem: further cleanup
2016-01-08 07:01:00 -06:00
William Pitcock
a886cb82fb
buildsystem: more LTDLINCL fixes
2016-01-08 06:57:45 -06:00
William Pitcock
f0718c93d5
configure: use correct path for libltdl
2016-01-08 06:50:01 -06:00
William Pitcock
5164a68650
buildsystem: update Makefile.in's
2016-01-08 05:20:32 -06:00
Aaron Jones
d8c4154da2
Fix LTDL conditional, remove some unnecessary and/or ugly configure tests
2016-01-07 17:15:55 +00:00
Aaron Jones
eec2776c6c
Fix some autotools discrepancies, disable SQLite threading code
2016-01-07 16:58:28 +00:00
William Pitcock
03906030a3
extensions: import sno_channelcreate from ircd-seven
2016-01-06 02:03:06 -06:00
William Pitcock
2a19fc3f57
general: remove last vestiges of static modules support (this hasn't ever actually worked...)
2016-01-06 01:28:20 -06:00
William Pitcock
46fded53d4
update buildsystem artifacts
2016-01-06 01:16:49 -06:00
William Pitcock
ff12cc9479
rename src to ircd, libcore to libircd
2016-01-06 01:16:08 -06:00
William Pitcock
bc38c72ced
buildsystem: build ircd itself as a library to allow removal of -undefined suppress on OS X
2016-01-05 21:31:21 -06:00
William Pitcock
c52df12552
buildsystem: convert to automake + libtool
2016-01-05 21:20:25 -06:00
William Pitcock
947d2bba47
extb_oper: allow matching $o:<privset> as well as $o:<permission> as in 3.4
2016-01-05 19:12:38 -06:00
William Pitcock
32d5702869
extensions: add the ability to hide uncommon channels in WHOIS, like in ircd-seven ( closes #6 )
2016-01-05 18:45:07 -06:00
William Pitcock
340b2512d4
sno_whois: fix resource leak, pointed out by mniip
2015-12-27 17:08:57 -06:00
William Pitcock
a2bc8af8c5
extb_combi: relax recursion and complexity limits now that bancache for unjoined users is fixed
2015-12-13 11:38:27 -06:00
William Pitcock
2749c37c43
extb_combi: tighten up recursion depth
2015-12-13 11:22:47 -06:00
William Pitcock
9145dc0956
extb_combi: allow up to 5 children nodes
2015-12-13 11:09:15 -06:00
William Pitcock
5984986bcf
extb_combi: if there are more nodes than allowed, return EXTBAN_INVALID
2015-12-13 11:06:04 -06:00
William Pitcock
2e548a8a04
extb_combi: try limiting the number of allowed nodes per depth to 3
2015-12-13 10:58:05 -06:00
William Pitcock
d63f3f80f0
extb_combi: implement a recursion guard
2015-12-13 07:50:02 -06:00
Jilles Tjoelker
2d28539c68
Reduce clean_nick() code duplication further.
...
Side effect: hurt and monitor now allow nicks starting with a digit.
2015-12-13 00:22:21 +01:00
William Pitcock
72dee03d50
clean up some code duplication when checking nicks for validity
2015-12-12 08:41:09 -06:00
William Pitcock
e2a9fa9cab
extenions: add a $m: extban (ref #74 )
2015-12-10 02:25:22 -06:00
William Pitcock
4ef511ebb8
import marienz's extb_combi module (ref #74 )
2015-12-10 02:20:58 -06:00
William Pitcock
202d496644
override: only engage override code if we're needing to authorize a WRITE to a channel's state ( closes #65 )
2015-12-10 01:00:32 -06:00
Jail Bird
29c92cf95f
Spring cleaning redux:
...
- Implemented changes suggested by Jilles
- Remove some unused parameters in functions
- Remove some unused ssl procs
- 63-bit time_t support in TS deltas
- const char * vs char * cleanup
- struct alignment (void *) casts
- signed vs unsigned fixes
- bad memset() call
- Bad LT_MAIN in libratbox
- char -> unsigned char casts for isdigit/isspace/etc calls
Thanks Jilles!
2015-04-20 00:55:20 -05:00
Jilles Tjoelker
3bfac098f7
extensions/extb_channel: Allow the channel itself as target even if +s/+p.
2014-07-19 20:14:14 +02:00
Jilles Tjoelker
83aa910fb9
extensions/chm_sslonly: Use some 4xx numeric for the join failure.
2014-07-19 20:14:14 +02:00
Keith Buck
55abcbb20a
Remove trailing whitespace from all .c and .h files.
...
3134 bytes were removed.
2014-03-03 04:25:47 +00:00
Jilles Tjoelker
b222b6a05a
findforwards: Don't compare array to NULL as this is always true.
2014-03-02 21:47:36 +01:00
Jilles Tjoelker
f9960c0262
extensions/mkpasswd: Do not leak /dev/random fd.
2014-02-23 22:18:44 +01:00
Jilles Tjoelker
a6b29d3ed4
extensions/roleplay: Fix memory leak on every use.
2014-02-23 22:01:04 +01:00
Jilles Tjoelker
0391874cc7
webirc: Check validity of given IP.
2014-02-23 21:14:09 +01:00
Andrew
46b55df60b
Fix grammatical error
2013-12-12 04:08:12 +00:00
Jilles Tjoelker
e5c254d7d1
override: Remove umode +p when deopering.
2013-10-25 17:49:58 +02:00
Keith Buck
0137d36122
Revert "Add m_override.c - an improved override module."
...
This reverts commit f00a55e9a1
.
2013-10-25 05:39:55 +00:00
Keith Buck
f00a55e9a1
Add m_override.c - an improved override module.
2013-10-24 06:36:22 +00:00
Keith Buck
77d3d2dbaf
Remove s_assert definition from ircd_defs.h and add it to its own header.
...
s_assert requires some higher-level functionality that shouldn't be
present in ircd_defs.h. ircd_defs.h is used by ssld, which has no notion
of logging or sending IRC messages. Additionally, some of the headers
s_assert depends on result in conflicting definitions in ssld.c.
This change also fixes the compile when using --enable-assert=soft.
2013-09-10 06:10:14 +00:00
Alex Iadicicco
e03fc000a2
extensions/m_roleplay: Properly transmit source name.
2013-08-23 20:11:22 -07:00
Jilles Tjoelker
0ef5377a36
Rename m_nokillservices.so to no_kill_services.so per the naming scheme.
2013-04-27 17:00:10 +02:00
Jilles Tjoelker
ee45698302
nokillservices: Use ircu numeric instead of a notice.
2013-04-27 16:55:26 +02:00
Elizabeth Myers
4f253f11a2
Forgot this -.-
2013-04-27 05:07:04 -05:00
Elizabeth Myers
06c3a3191c
Fix minor comment munging from sed being a piece of shit
2013-04-27 04:59:57 -05:00
Elizabeth Myers
bd0d352f12
Include messages.h for macro form_str in select extensions
2013-04-27 04:57:44 -05:00
Elizabeth Myers
a6adeaad20
Fix format string generation
2013-04-27 04:57:31 -05:00
William Pitcock
960833fed6
Merge pull request #20 from quora-wings/master
...
Makefile.in updated
2013-04-20 20:24:25 -07:00
Quora
4dda34a0aa
Makefile.in updated
2013-04-20 20:18:51 -07:00
Elizabeth Myers
be8f778945
Remove last vestige of halfops from this module.
...
How this was in here for this long is well beyond me. This must be old
hybrid code or something.
2013-04-20 21:23:27 -05:00
Quora
cec9e96f75
Removed redundant and buggy code that caused segmentation faults. Also deprecated by operspy support for LIST. Referencing commit Ponychat/shadowircd@162195279a
2013-04-20 13:59:27 -07:00
Elizabeth Myers
9d745dbd21
Implement kill-cancelling hook.
...
With this comes an example module to block the killing of services.
NOTE: this will not cancel remote kills. Those are still accepted, per
the TS 6 specification.
2013-04-20 01:07:55 -05:00
Jilles Tjoelker
e69375f3ac
Cope with rb_crypt() returning NULL.
2013-02-02 00:54:32 +01:00
William Pitcock
4cbed3b849
extensions/m_roleplay: merge in darkmyst changes
2012-11-04 03:35:58 +00:00
William Pitcock
e5149d6169
Add module which restricts unauthenticated users from doing anything as channel op.
2012-11-01 06:48:40 +00:00
Keith Buck
0d0f34c322
chm_nonotice: Ignore CTCP and send ERR_CANNOTSENDTOCHAN if a message is being blocked.
2012-07-31 06:37:33 +00:00
Douglas Freed
9f409b6333
extensions/ip_cloaking*: Fix a bug accidentally introduced in 29d224a1
where the cloaking module would change your cloak locally, but not correctly broadcast this to the network, and fail to tell you correctly in the RPL_HOSTHIDDEN reply
2012-05-24 11:06:20 +00:00
Jilles Tjoelker
b97e1bf66c
extensions/roleplay: Fix "No such channel" message.
2012-04-14 01:11:40 +02:00
Jilles Tjoelker
23485ebe3a
extensions/roleplay: End floodgrace because this is sent to other users.
2012-04-14 01:07:43 +02:00
William Pitcock
b181432121
extensions/chm_nonotice: fix typo
2012-04-02 14:07:25 -05:00
William Pitcock
359407245d
extensions/chm_nonotice: reject NOTICEs to channels mode
...
Same thing as +T in unrealircd, inspircd and shadowircd.
2012-03-31 22:56:14 -05:00
William Pitcock
dd2654fadb
Merge branch 'master' of git.atheme.org:/gitroot/charybdis
2012-03-04 17:25:17 -06:00
William Pitcock
c918eb5799
m_remove: Don't use capability_require().
2012-03-04 17:25:01 -06:00
Nathan Phillip Brink
c74836dc4a
Add explicit support for being installed into a system triggered with --enable-fhs-paths.
...
Add two mechanism for avoiding name-collisions in a system-wide
installation of charybdis. The ssld and bandb daemons, intended to be
directly used by ircd and not the user, install into libexec when
--enable-fhs-paths is set. For binaries which are meant to be in PATH
(bindir), such as ircd and viconf, there is now an option
--with-program-prefix=progprefix inspired by automake. If the user
specifies --with-program-prefix=charybdis, the ircd binary is named
charybdisircd when installed.
Add support for saving the pidfile to a rundir and storing the ban
database in localstatedir instead of in sysconfdir. This is, again,
conditional on --enable-fhs-paths.
Fix(?) genssl.sh to always write created SSL key/certificate/dh
parameters to the sysconfdir specified during ./configure. The
previous behavior was to assume that the user ran genssl.sh after
ensuring that his current working directory was either sysconfdir or a
sibling directory of sysconfdir.
2012-03-01 02:41:09 +00:00
Nathan Phillip Brink
f02e3a2628
Use LDFLAGS when compiling extensions or modules.
2012-02-28 04:36:00 +00:00
Keith Buck
29d224a1f8
ip_cloaking*: Do qjm locally too.
2012-02-18 05:16:03 +00:00
William Pitcock
deee7b4388
m_remove: fix parameter order on PART message
2012-02-04 18:49:46 -06:00
Jilles Tjoelker
63dd387b13
Require all modes to be set for + part in $m extban.
...
This is like the - part requiring none of the modes to be set and is more
useful because the old behaviour can be emulated with multiple bans.
2012-02-04 15:02:26 +01:00
William Pitcock
925c50efea
Add implementation of /REMOVE, based on ircd-seven implementation.
2012-02-04 02:20:56 -06:00
Keith Buck
4862f41a02
extban : Correct logic for matching against permissions.
2012-01-24 17:13:32 +00:00
JD Horelick
a8eae73002
extb_usermode should declare itself as what it actually is.
2012-01-22 13:56:25 -05:00
William Pitcock
655e7dee45
extban $o: add support for matching against specific permissions.
...
Syntax: $o:oper:admin (match against the oper:admin permission)
2012-01-22 04:05:34 -06:00
William Pitcock
11f2e78727
extb_usermode: should use EXTBAN_INVALID if no modestring is provided
2012-01-22 03:58:32 -06:00
William Pitcock
0b18e32cad
Add extban target for matching against a user's modes.
...
Syntax: $m:+o (require usermode +o)
Syntax: $m:+o-a (require usermode +o but do not allow +a)
Syntax: $m:+a (require usermode +a)
Syntax: $m:-h (require user disables cloaking to enter)
2012-01-22 03:46:08 -06:00
Elizabeth Jennifer Myers
765d839d3c
Port ircd-seven banfowards to charybdis.
...
nenolod gave the thumbs-up to port ircd-seven banfowards to charybdis to spb
for a while, and people have asked about it. Might as well do it since it's a
slow weekend.
Note that as a side effect use_forward is removed from the config and
unconditionally enabled!
2011-08-12 20:33:10 -04:00
Jilles Tjoelker
b4cdedaa2a
override: Send notice when overriding can_send.
...
Also ensure no session deadline is maintained for a remote client.
2011-08-07 22:10:12 +02:00
Elizabeth Jennifer Myers
89bfeb8fb1
Remove #define KEY from ip_cloaking modules.
...
I meant to do this 3 years ago when I rewrote the cloaking modules. I
never got around to it. Now I am. :p
Also add some basic comment headers whilst I'm here.
2011-07-25 23:38:56 -04:00
Jilles Tjoelker
0d165b5262
override: Apply floodcount to override sends.
...
This avoids strange behaviour where quieting an override
oper lets them send more, and matches ircd-seven.
2011-02-06 15:50:58 +01:00
Elizabeth Jennifer Myers
f924ea40a3
Overhaul extensions/m_mkpasswd. It now allows SHA256/SHA512 hashes. DES support is removed, as it is insecure and can be broken on my desktop in about 20 minutes.
2011-01-06 01:41:57 -05:00
Keith Buck
bb55ebebe9
Implement operspy for /LIST.
2011-01-05 18:57:27 -08:00
Jilles Tjoelker
6d61f90fd6
override: Provide an error message if +p may not be set.
2010-12-31 02:43:38 +01:00
William Pitcock
805cfa5ab2
Use send_channel_join().
2010-12-16 00:13:42 -06:00
B.Greenham
fb28c74187
extensions/roleplay: Fix NPCA/FACTION not showing up properly on some clients.
2010-12-15 15:43:35 -05:00
B.Greenham
6816e3387a
Make ENCAP ROLEPLAY originate from the user running the command, rather than just including the user in the message, as per jilles' suggestion.
...
This has the benefit of checking ROLEPLAY messages for fake direction.
2010-12-11 15:51:11 -05:00
B.Greenham
8ffa827529
Add extensions/m_roleplay, which provides various roleplay commands.
2010-12-09 18:44:24 -05:00
William Pitcock
5c3014d0eb
Clean up OverrideSession struct on client exit.
2010-12-07 00:27:00 -06:00
William Pitcock
9101dbcda2
override: Hack can_send().
2010-12-07 00:18:22 -06:00
William Pitcock
d307688122
override: Allow banwalking too.
2010-12-06 23:55:42 -06:00
William Pitcock
429cf1b74f
Add oper-override (modehacking only) as a module.
...
I think if you are going to kick someone from a channel.
2010-12-06 23:44:55 -06:00
Jilles Tjoelker
19716b9fd6
New custom channel mode API allowing reloading such modules.
...
Additionally, attempting to use too many modes or two times
the same letter is now detected and prevented.
Modules now request that a channel mode be added/orphaned,
instead of ugly manipulation from which that request had
to be guessed.
Slight changes are needed to modules that provide channel modes.
From the old API, one important function has been made static,
the other important function has been renamed, so loading old
modules should fail safely.
2010-04-01 01:16:16 +02:00
Jilles Tjoelker
27f616ddf5
Track who set a dline/kline/xline/resv as in ratbox3.
...
Like in ratbox3, there is no way to query this information
(other than bandb's tables, but they worked before this
commit).
2010-03-01 01:23:22 +01:00
William Pitcock
4cbfc368b4
Add ip_cloaking_4.0 module, which is the same cloaking as 3.2, but moves the usermode from +h to +x,
...
which allows us to start transitioning this usermode change.
2010-02-18 07:30:26 -06:00
William Pitcock
3ad21d7513
hurt: unbreak compile
2010-02-17 06:44:42 -06:00
Jilles Tjoelker
70ea02ebd6
Complete the move of xlines and resvs from aconf->name to aconf->host.
2010-01-08 18:46:29 +01:00
Jilles Tjoelker
161f040940
Update comments for parv[0] removal.
2009-01-18 18:22:43 +01:00
Jilles Tjoelker
3dfaa67120
Replace parv[0] with source_p->name.
2009-01-17 01:18:19 +01:00
Jilles Tjoelker
f85a5a3f20
m_webirc: use rb_crypt() instead of crypt()
2008-12-13 11:49:28 +01:00
Jilles Tjoelker
d9439a0eee
ip_cloaking: clarify logic
...
This also slightly changes mangled IPs but the
mangling is on the same level.
2008-09-20 00:30:35 +02:00