diff options
Diffstat (limited to 'news_wizard/scripts/Newsconf.pm')
-rw-r--r-- | news_wizard/scripts/Newsconf.pm | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/news_wizard/scripts/Newsconf.pm b/news_wizard/scripts/Newsconf.pm new file mode 100644 index 00000000..a0968891 --- /dev/null +++ b/news_wizard/scripts/Newsconf.pm @@ -0,0 +1,78 @@ +#!/usr/bin/perl + +package Newsconf; +require "__WIZ_HOME__/common/scripts/Vareqval.pm"; +use MDK::Common; +use strict; + +sub normalize_freq { + my ($freq) = @_; + + if ($freq =~ /(\d*)/) { + $freq = $1; + } + if ($freq <= 0) { + $freq = 0; + } + if ($freq >= 24) { + $freq = 24; + } + $freq; +} + +sub normalize_server { + my ($server) = @_; + + $server; +} + +sub do_it { + defined $ENV{wiz_news_freq} and my $freq = normalize_freq($ENV{wiz_news_freq}) or + die "freq not defined: $!"; + defined $ENV{wiz_news_server} and my $server = normalize_server($ENV{wiz_news_server}) or + die "server not defined: $!"; + my %mdk = Vareqval->get("/etc/sysconfig/mdk_serv"); + $mdk{wiz_news_freq} = $freq; + $mdk{wiz_news_server} = $server; + Vareqval->commit("/etc/sysconfig/mdk_serv", \%mdk); + my $file = "/etc/leafnode/config"; + if (! -f $file) { die "$file not found: $!"}; + my $tmp = `mktemp /tmp/Newsconf.XXXXXX` + or die "can't make a temp file: $!"; + open(OLD, "< __WIZ_HOME__/news_wizard/scripts/config.default") + or die "can't open default: $!"; + open(NEW, "> $tmp") + or die "can't open $tmp: $!"; + while (<OLD>) { + s|__server__|$server|g; + print NEW $_; + } + close(OLD); + close(NEW); + chomp($tmp); + system("mv $tmp $file"); + $file = "/var/spool/cron/news"; + if (-f $file) { + MDK::Common::cp_af($file, "/etc/leafnode/crontab"); + } + $file = "/etc/leafnode/crontab"; + MDK::Common::cp_af($file, $file . ".orig"); + my $file = "/etc/leafnode/crontab"; + my $tmp = `mktemp /tmp/Newsconf.XXXXXX` + or die "can't make a temp file: $!"; + open(OLD, "< __WIZ_HOME__/news_wizard/scripts/news.cron") + or die "can't open default: $!"; + open(NEW, "> $tmp") + or die "can't open $tmp: $!"; + while (<OLD>) { + s|__freq__|$freq|g; + print NEW $_; + } + close(OLD); + close(NEW); + chomp($tmp); + system("mv $tmp $file"); + print "hello\n"; + system("crontab -u news /etc/leafnode/crontab"); + print "hello\n"; +} |