summaryrefslogtreecommitdiffstats
path: root/modules/xml.pl
diff options
context:
space:
mode:
authorLibravatarWilliam Heimbigner <william.heimbigner@gmail.com>2007-06-28 21:13:35 +0000
committerLibravatarWilliam Heimbigner <william.heimbigner@gmail.com>2007-06-28 21:13:35 +0000
commit7ea23cad4c72904b02ad5c359f5edfab8328268d (patch)
treea0973bfe2aaa8d4d7c0e35c09f2466ed9410e56a /modules/xml.pl
parentd944892a0c4d04c056a8697fc0aee54b5b01ff88 (diff)
memleak fix, better nick tracking, new commands, major security exploit fix
Diffstat (limited to 'modules/xml.pl')
-rw-r--r--modules/xml.pl31
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 {