1#!/usr/local/bin/perl 2# 3# $Id: admin-save.pl,v 1.3 2004/10/23 16:59:41 mrsam Exp $ 4# 5# Copyright 2001 Double Precision, Inc. See COPYING for 6# distribution information. 7 8my $fh=new FileHandle; 9 10my $pid; 11 12die $cgi->header("text/plain") . "Cannot start process: $!\n" 13 unless (defined $fh) && (defined ($pid=open($fh, "-|"))); 14 15if (! $pid) 16{ 17 my $errflag=0; 18 19 open(STDERR, ">&STDOUT"); 20 21 foreach (ReadDirList("added")) 22 { 23 24 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, 25 $atime,$mtime,$ctime,$blksize,$blocks) 26 = stat("$sysconfdir/webadmin/added/$_"); 27 28 next unless $mode; 29 30 print "Creating $_...\n"; 31 mkdir("$sysconfdir/$_", $mode); 32 } 33 unlink("$sysconfdir/webadmin/subdirs-added"); 34 35 foreach (ReadConfigFiles()) 36 { 37 if ( -f "$sysconfdir/webadmin/added/$_" ) 38 { 39 print "Installing $_...\n"; 40 41 my $newfilename="$sysconfdir/$_"; 42 43 $newfilename=$authdaemonrc if $newfilename eq "$sysconfdir/authdaemonrc"; 44 $newfilename=$authldaprc if $newfilename eq "$sysconfdir/authldaprc"; 45 $newfilename=$authmysqlrc if $newfilename eq "$sysconfdir/authmysqlrc"; 46 $newfilename=$authpgsqlrc if $newfilename eq "$sysconfdir/authpgsqlrc"; 47 48 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, 49 $atime,$mtime,$ctime,$blksize,$blocks) 50 = stat($newfilename); 51 52 if ($mode) 53 { 54 chmod ($mode, "$sysconfdir/webadmin/added/$_"); 55 chown ($uid, $gid, "$sysconfdir/webadmin/added/$_"); 56 } 57 ($errflag=1, print "ERROR: $!\n") 58 if ! rename ("$sysconfdir/webadmin/added/$_", $newfilename); 59 } 60 61 if ( -f "$sysconfdir/webadmin/removed/$_" ) 62 { 63 print "Deleting $_...\n"; 64 ($errflag=1, print "ERROR: $!\n") 65 if ! unlink ("$sysconfdir/webadmin/removed/$_", 66 "$sysconfdir/$_"); 67 } 68 } 69 70 foreach (ReadDirList("removed")) 71 { 72 print "Removing $_...\n"; 73 rmdir("$sysconfdir/$_"); 74 } 75 unlink("$sysconfdir/webadmin/subdirs-removed"); 76 77 $fh=new FileHandle "$sysconfdir/webadmin/changed"; 78 79 if (defined $fh) 80 { 81 my $line; 82 83 while (defined($line=<$fh>)) 84 { 85 next if $errflag; 86 87 chomp $line; 88 next unless $line =~ /(.+)/; 89 90 $line=$1; 91 92 print "Executing $line...\n"; 93 $errflag=1 if system($line) != 0; 94 } 95 close($fh); 96 } 97 98 my @leftovers=ReadConfigFiles(); 99 100 unlink ("$sysconfdir/webadmin/changed") 101 if $#leftovers < 0 && $errflag == 0; 102 103 exit 0; 104} 105 106my $output=htmlescape(join("", <$fh>)); 107close($fh); 108 109display_form("admin-save.html", 110 { 111 "OUTPUT" => $output 112 } 113 ); 114exit 0 115