diff options
Diffstat (limited to 'client_wizard/scripts/Clientconf.pm')
-rw-r--r-- | client_wizard/scripts/Clientconf.pm | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/client_wizard/scripts/Clientconf.pm b/client_wizard/scripts/Clientconf.pm new file mode 100644 index 00000000..6917eda3 --- /dev/null +++ b/client_wizard/scripts/Clientconf.pm @@ -0,0 +1,74 @@ +#!/usr/bin/perl + +package Clientconf; +require "__WIZ_HOME__/common/scripts/Vareqval.pm"; +use MDK::Common; +use strict; + +sub up_serial { + my ($file) = @_; + + my $serial_nbm = `date +%Y%m%d00` or die "date not found: $!"; + my $tmp = `mktemp /tmp/Dnsconf.XXXXXX` or die "can't make a temp file: $!"; + chomp($tmp); + open(OLD, "< $file") or die "can't open $file: $!"; + open(NEW, "> $tmp") or die "can't open $tmp: $!"; + while (<OLD>) { + if (/^([[:space:]]*)([0-9]*)([[:space:]]*;[[:space:]]*Serial.*)$/) { + my $serial_f = $2; + $serial_f++; + if ($serial_f <= $serial_nbm) { + $serial_f = $serial_nbm; + chomp($serial_f); + $_ = "$1$serial_f$3\n"; + } + } + print NEW $_; + } + close(OLD) or die "can't close $file: $!"; + close(NEW) or die "can't close $tmp: $!"; + MDK::Common::cp_af($tmp, $file); + MDK::Common::rm_rf($tmp); +} + +sub do_it { + my $date = `date`; + chomp($date); + my %mdk = Vareqval->get("/etc/sysconfig/mdk_serv"); + my $wiz_domain_name = $mdk{wiz_domain_name} if defined $mdk{wiz_domain_name} or + die "wiz_domain_name not in /etc/sysconfig/mdk_serv"; + my $wiz_device = $mdk{wiz_device} if defined $mdk{wiz_device} or + die "wiz_device not in /etc/sysconfig/mdk_serv"; + %mdk = Vareqval->get("/etc/sysconfig/network-scripts/ifcfg-".$wiz_device); + my $wiz_ip_net = $mdk{NETWORK} if defined $mdk{NETWORK} or + die "NETWORK not in /etc/sysconfig/network-scripts/ifcfg-".$wiz_device; + my $wiz_ip_server = $mdk{IPADDR} if defined $mdk{IPADDR} or + die "IPADDR not in /etc/sysconfig/network-scripts/ifcfg-".$wiz_device; + my $wiz_client_ip = $ENV{wiz_client_ip} if defined $ENV{wiz_client_ip} or + die "wiz_client_ip not in env"; + my $wiz_client_name = $ENV{wiz_client_name} if defined $ENV{wiz_client_name} or + die "wiz_client_name not in env"; + my $s_trunc = "$1.$2.$3" if $wiz_ip_net =~ /(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/ or + die "bad wiz_ip_net"; + my $ds = "$4" if $wiz_ip_server =~ /(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/ or + die "bad wiz_ip_server"; + my $dc = "$4" if $wiz_client_ip =~ /(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/ or + die "bad wiz_client_ip"; + + my $file="/var/named/$wiz_domain_name.db"; + MDK::Common::cp_af($file, $file.".orig"); + open(NEW, ">> $file") or die "can not open $file"; + print NEW "\n$wiz_client_name IN A $wiz_client_ip ; $date"; + close(NEW) or die "can not close $file"; + up_serial($file); + + my $file="/var/named/$s_trunc.rev"; + MDK::Common::cp_af($file, $file.".orig"); + open(NEW, ">> $file") or die "can not open $file"; + print NEW "\n$dc IN PTR $wiz_client_name. ; $date"; + close(NEW) or die "can not close $file"; + up_serial($file); + system("/etc/rc.d/init.d/named restart"); + 10; +} +1; |