diff options
| author | 2007-06-28 21:13:35 +0000 | |
|---|---|---|
| committer | 2007-06-28 21:13:35 +0000 | |
| commit | 7ea23cad4c72904b02ad5c359f5edfab8328268d (patch) | |
| tree | a0973bfe2aaa8d4d7c0e35c09f2466ed9410e56a /modules/xml.pl | |
| parent | d944892a0c4d04c056a8697fc0aee54b5b01ff88 (diff) | |
memleak fix, better nick tracking, new commands, major security exploit fix
Diffstat (limited to 'modules/xml.pl')
| -rw-r--r-- | modules/xml.pl | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/modules/xml.pl b/modules/xml.pl index 9e7e526..10158d0 100644 --- a/modules/xml.pl +++ b/modules/xml.pl @@ -3,47 +3,54 @@ use strict; use XML::Simple qw(:strict); -my $xs1 = XML::Simple->new( KeyAttr => ['id'], Cache => [ qw/storable memcopy/ ]); +$::xs1 = XML::Simple->new( KeyAttr => ['id'], Cache => [ qw/storable memcopy/ ]); sub readXML { my ( $p ) = $::cset; #@_; $p = 'default' if $p eq ''; $p = "config-$p"; - $::settings = $xs1->XMLin( "$p/settings.xml", ForceArray => [qw/host/], + $::settings = $::xs1->XMLin( "$p/settings.xml", ForceArray => [qw/host/], GroupTags => { altnicks => 'altnick', server => 'host', autojoins=> 'autojoin' }); - $::channels = $xs1->XMLin( "$p/channels.xml", ForceArray => [qw/event debug info low medium high/] ); - $::users = $xs1->XMLin( "$p/users.xml", ForceArray => 'person' ); + $::channels = $::xs1->XMLin( "$p/channels.xml", ForceArray => [qw/event debug info low medium high/] ); + $::users = $::xs1->XMLin( "$p/users.xml", ForceArray => 'person' ); $::xusers = $::users->{person}; - $::commands = $xs1->XMLin( "$p/commands.xml", ForceArray => [qw/command/]); - $::mysql = $xs1->XMLin( "$p/mysql.xml", ForceArray => [] ); + $::commands = $::xs1->XMLin( "$p/commands.xml", ForceArray => [qw/command/]); + $::mysql = $::xs1->XMLin( "$p/mysql.xml", ForceArray => [] ); } sub writeXML { my ( $p ) = $::cset; #@_; $p = 'default' if $p eq ''; $p = "config-$p"; - $xs1->XMLout($::settings, RootName => 'settings', KeyAttr => ['id'], + $::xs1->XMLout($::settings, RootName => 'settings', KeyAttr => ['id'], GroupTags => { altnicks => 'altnick', server => 'host', autojoins => 'autojoin' }, ValueAttr => { debug => 'content', nick => 'content', port => 'content', realname => 'content', username => 'content', dir => 'content', zone => 'content', filefmt => 'content', timefmt => 'content'}) > io("$p/settings.xml"); - $xs1->XMLout($::channels, RootName => 'channels', KeyAttr => ['id']) > io("$p/channels.xml"); - $xs1->XMLout($::users, RootName => 'people', KeyAttr => ['id']) > io("$p/users.xml"); - $xs1->XMLout($::commands, RootName => 'commands', KeyAttr => ['id']) > io("$p/commands.xml"); + $::xs1->XMLout($::channels, RootName => 'channels', KeyAttr => ['id']) > io("$p/channels.xml"); + $::xs1->XMLout($::users, RootName => 'people', KeyAttr => ['id']) > io("$p/users.xml"); + $::xs1->XMLout($::commands, RootName => 'commands', KeyAttr => ['id']) > io("$p/commands.xml"); } sub writeChannels { my ( $p ) = $::cset; #@_; $p = 'default' if $p eq ''; $p = "config-$p"; - $xs1->XMLout($::channels, RootName => 'channels', KeyAttr => ['id']) > io("$p/channels.xml"); + $::xs1->XMLout($::channels, RootName => 'channels', KeyAttr => ['id']) > io("$p/channels.xml"); } sub writeUsers { my ( $p ) = $::cset; #@_; $p = 'default' if $p eq ''; $p = "config-$p"; - $xs1->XMLout($::users, RootName => 'people', KeyAttr => ['id']) > io("$p/users.xml"); + $::xs1->XMLout($::users, RootName => 'people', KeyAttr => ['id']) > io("$p/users.xml"); +} + +sub writeSettings { + my ( $p ) = $::cset; #@_; + $p = 'default' if $p eq ''; + $p = "config-$p"; + $::xs1->XMLout($::settings, RootName => 'settings', GroupTags => { altnicks => 'altnick', server => 'host', autojoins => 'autojoin' }, NoAttr => 1) > io("$p/settings.xml"); } sub Xml::killsub { |
