#!/opt/casp/tools/bin/linux2/perl5/bin/perl -I/opt/casp/tools/bin/linux2/perl5/lib -I/opt/casp use INSTALL::common; use INSTALL::global; use INSTALL::parameter; use strict; umask 0; my $CONST_Package = "fpctl - main"; STDOUT->autoflush(1); #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Internal functions #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ my $pParameters = \%INSTALL::parameter::variables; #============================================================================== #------------------------ Default global values #============================================================================== my $fp_dir = "/usr/local/frontpage"; $pParameters->{fphome} = $fp_dir; if (-d $fp_dir) { my %VERSION_MAP = ( 4 => "bin/fpsrvadm.exe", 5 => "bin/owsadm.exe" ); local *FP_DIR; unless(opendir(FP_DIR,$fp_dir)) { exit(not error("Unable to open FrontPage directory '$fp_dir'")); } # Locate the 'best' version of FrontPage that we support, in the $fp_dir. my $version_dir; my $version = 0.0; foreach my $file (readdir(FP_DIR)) { my $path = "$fp_dir/$file"; if ((-d $path) && ($file =~ /^version([0-9\.]+)/)) { if (($version < $1) && (exists $VERSION_MAP{int($1)})) { $version = $1; $version_dir = $path; } } } closedir(FP_DIR); if (exists $VERSION_MAP{int($version)}) { my $exe = "$version_dir/$VERSION_MAP{$version}"; unless(-x $exe) { error("Missing '$exe' executable."); note("FrontPage $version Server Extensions must have this executable."); exit(1); } $pParameters->{fpsrvadm} = $exe; } else { exit(not error("Unsupported FrontPage version '$version' detected.")); } } else { error("Unable to locate any valid FrontPage Server Extensions"); note("Search directory was:", $fp_dir); } sub usage { print STDERR ("Usage: $0 port=... [status|auth-enable|auth-disable|auth-status]\n"); exit(1); } my @VALID_DIRECTIVES = ("status","auth-disable","auth-enable","auth-status"); my $directives_pattern = join("|",@VALID_DIRECTIVES); my %PARAM_REQUIREMENTS = ( REQUIRED => [ 'port', $directives_pattern], ); if ((not @ARGV) || boolean_value($pParameters->{'--help'})) { usage(); } unless(INSTALL::parameter::verify(%PARAM_REQUIREMENTS)) { exit(1); } #------------------------------------------------------------------------------ # Check if frontpage is installed for the given port # Returns 1 if frontpage is installed #------------------------------------------------------------------------------ sub is_installed { if ((not -f "$pParameters->{fphome}/we$pParameters->{port}.cnf") || (not -x "$pParameters->{fpsrvadm}")) { return(0); } return(1); } #------------------------------------------------------------------------------ # Enables authoring for the frontpage extension on $pParameters->{port} # Returns 1 on error #------------------------------------------------------------------------------ sub auth_enable { if (not is_installed) { return(1); } return(system("$pParameters->{fpsrvadm} -o enable -p $pParameters->{port} > /dev/null")); } #------------------------------------------------------------------------------ # Disables authoring for the frontpage extension on $pParameters->{port} # Returns 1 on error #------------------------------------------------------------------------------ sub auth_disable { if (not is_installed) { return(1); } return(system("$pParameters->{fpsrvadm} -o disable -p $pParameters->{port} > /dev/null")); } #------------------------------------------------------------------------------ # Checks authoring status for frontpage extension on $pParameters->{port} # Returns 1 for enabled and 0 for disabled #------------------------------------------------------------------------------ sub auth_status { if (not is_installed) { return(1); } return(not system("grep 'authoring:enabled' $pParameters->{fphome}/we$pParameters->{port}.cnf > /dev/null")); } my $result = 1; my @directives = grep { /^(?:$directives_pattern)$/ } @ARGV; unless(@directives) { error("At least one directive must be specified."); report("Valid directives: ",join(", ",@VALID_DIRECTIVES)); exit(1); } foreach (@directives) { /^status$/ && do { $result &= not is_installed; last; }; /^auth-disable$/ && do { $result &= auth_disable; last; }; /^auth-enable$/ && do { $result &= auth_enable; last; }; /^auth-status$/ && do { $result &= not auth_status; last; }; } exit($result);