X-Git-Url: https://defaria.com/gitweb/?a=blobdiff_plain;f=clearadm%2Fsetup.pl;h=094f8adcbefa7415065bb794ef1cae919878779c;hb=HEAD;hp=77249921aae47727fc36b5fa5e8861aa9f78593d;hpb=020a4a5ea2be725b155cae3a2cadc9aba3911b9b;p=clearscm.git diff --git a/clearadm/setup.pl b/clearadm/setup.pl index 7724992..094f8ad 100755 --- a/clearadm/setup.pl +++ b/clearadm/setup.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl =pod @@ -73,12 +73,12 @@ use Utils; my $VERSION = '$Revision: 1.1 $'; ($VERSION) = ($VERSION =~ /\$Revision: (.*) /); -sub SetupAgent () { +sub SetupAgent() { verbose 'Setting up Agent...'; my ($status, @output, $cmd); - if ($ARCH eq 'cygwin') { + if ($ARCHITECTURE eq 'cygwin') { verbose '[Cygwin] Creating up Clearagent Service'; $cmd = 'cygrunsrv -I clearagent -p C:/Cygwin/bin/perl '; @@ -86,7 +86,7 @@ sub SetupAgent () { ($status, @output) = Execute "$cmd 2>&1"; - error "Unable to execute $cmd (Status: $status)\n" . join ("\n", @output), 1 + error "Unable to execute $cmd (Status: $status)\n" . join("\n", @output), $status if $status; verbose '[Cygwin] Starting Clearagent Service'; @@ -94,65 +94,88 @@ sub SetupAgent () { $cmd .= 'net start clearagent'; ($status, @output) = Execute "$cmd 2>&1"; - error "Unable to execute $cmd (Status: $status)\n" . join ("\n", @output), 1 + error "Unable to execute $cmd (Status: $status)\n" . join("\n", @output), $status if $status; } else { - my $Arch = ucfirst $ARCH; + my $Arch = ucfirst $ARCHITECTURE; verbose 'Creating clearagent user'; $cmd = 'useradd -Mr clearagent'; + $cmd = 'useradd clearagent' if $ARCHITECTURE eq 'solaris'; ($status, @output) = Execute "$cmd 2>&1"; if ($status == 9) { warning "The user clearagent already exists"; + } elsif ($status == 2304) { + # Stupid Solaris... } elsif ($status != 0) { - error "Unable to execute $cmd (Status: $status)\n" . join ("\n", @output), 1; + error "Unable to execute $cmd (Status: $status)\n" . join("\n", @output), $status; } # if verbose 'Setting permissions on log and var directories'; - - $cmd = "chmod 777 $Clearadm::CLEAROPTS{CLEARADM_BASE}/var;"; - $cmd .= "chmod 777 $Clearadm::CLEAROPTS{CLEARADM_BASE}/var/run;"; - $cmd .= "chmod 777 $Clearadm::CLEAROPTS{CLEARADM_BASE}/log"; - - ($status, @output) = Execute "$cmd 2>&1"; - - error "Unable to execute $cmd (Status: $status)\n" . join ("\n", @output), 1 - if $status; + for (qw(var var/run log)) { + $cmd = "mkdir -p $Clearadm::CLEAROPTS{CLEARADM_BASE}/$_"; + + ($status, @output) = Execute "$cmd 2>&1"; + + error "Unable to execute $cmd (Status: $status)\n" . join("\n", @output), $status if $status; + + $cmd = "chmod 777 $Clearadm::CLEAROPTS{CLEARADM_BASE}/$_"; + + ($status, @output) = Execute "$cmd 2>&1"; + + error "Unable to execute $cmd (Status: $status)\n" . join("\n", @output), $status + if $status; + } # for + verbose "[$Arch] Setting up clearagent daemon"; # Symlink $CLEARADM/etc/conf.d/clearadm -> /etc/init.d my $confdir = '/etc/init.d'; - error "Cannot find conf.d directory ($confdir)", 1 - unless -d $confdir; + error "Cannot find conf.d directory ($confdir)", 1 unless -d $confdir; - unless (-e "$confdir/clearadm") { - $cmd = "ln -s $FindBin::Bin/etc/init.d/clearadm $confdir"; + unless (-e "$confdir/clearagent") { + $cmd = "ln -s $FindBin::Bin/etc/init.d/clearagent $confdir"; ($status, @output) = Execute "$cmd 2>&1"; - error "Unable to execute $cmd (Status: $status)\n" . join ("\n", @output), 1 + error "Unable to execute $cmd (Status: $status)\n" . join("\n", @output), $status if $status; } # unless # Setup runlevel links - $cmd = 'update-rc.d clearagent defaults'; + if ($ARCHITECTURE eq 'solaris') { + $cmd = "ln -s /etc/init.d/clearagent /etc/rc2.d/S90clearagent"; + + ($status, @output) = Execute "$cmd 2>&1"; + + error "Unable to execute $cmd (Status: $status)\n" . join("\n", @output), $status if $status; + + verbose 'Starting clearagent'; - ($status, @output) = Execute "$cmd 2>&1"; + $cmd = '/etc/init.d/clearagent'; + + ($status, @output) = Execute "$cmd 2>&1"; - error "Unable to execute $cmd (Status: $status)\n" . join ("\n", @output), 1 - if $status; - - verbose 'Starting clearagent'; + error "Unable to execute $cmd (Status: $status)\n" . join("\n", @output), $status if $status; + } else { + $cmd = 'update-rc.d clearagent defaults'; - $cmd = 'service clearagent start'; + ($status, @output) = Execute "$cmd 2>&1"; - error "Unable to execute $cmd (Status: $status)\n" . join ("\n", @output), 1 - if $status; + error "Unable to execute $cmd (Status: $status)\n" . join("\n", @output), $status if $status; + + verbose 'Starting clearagent'; + + $cmd = 'service clearagent start'; + + error "Unable to execute $cmd (Status: $status)\n" . join("\n", @output), $status + if $status; + } # if } # if verbose "Done"; @@ -160,7 +183,7 @@ sub SetupAgent () { return; } # SetupAgent -sub SetupTasks () { +sub SetupTasks() { my ($status, @output, $cmd); verbose 'Setting up Tasks...'; @@ -168,16 +191,14 @@ sub SetupTasks () { # Symlink $CLEARADM/etc/conf.d/cleartasks -> /etc/init.d my $confdir = '/etc/init.d'; - error "Cannot find conf.d directory ($confdir)", 1 - unless -d $confdir; + error "Cannot find conf.d directory ($confdir)", 1 unless -d $confdir; unless (-e "$confdir/clearadm") { $cmd = "ln -s $FindBin::Bin/etc/init.d/cleartasks $confdir"; ($status, @output) = Execute "$cmd 2>&1"; - error "Unable to execute $cmd (Status: $status)\n" . join ("\n", @output), 1 - if $status; + error "Unable to execute $cmd (Status: $status)\n" . join("\n", @output), $status if $status; } # unless # Setup runlevel links @@ -185,8 +206,7 @@ sub SetupTasks () { ($status, @output) = Execute "$cmd 2>&1"; - error "Unable to execute $cmd (Status: $status)\n" . join ("\n", @output), 1 - if $status; + error "Unable to execute $cmd (Status: $status)\n" . join("\n", @output), $status if $status; verbose 'Starting cleartasks'; @@ -194,15 +214,14 @@ sub SetupTasks () { ($status, @output) = Execute "$cmd 2>&1"; - error "Unable to execute $cmd (Status: $status)\n" . join ("\n", @output), 1 - if $status; + error "Unable to execute $cmd (Status: $status)\n" . join("\n", @output), $status if $status; verbose 'Done'; return; } # SetupTasks -sub SetupWeb () { +sub SetupWeb() { verbose 'Setting up Web...'; my ($status, @output, $cmd); @@ -210,19 +229,18 @@ sub SetupWeb () { # Symlink $CLEARADM/etc/conf.d/clearadm -> /etc/apache2/conf.d my $confdir = '/etc/apache2/conf.d'; - error "Cannot find Apache 2 conf.d directory ($confdir)", 1 - unless -d $confdir; + error "Cannot find Apache 2 conf.d directory ($confdir)", 1 unless -d $confdir; unless (-e "$confdir/clearadm") { $cmd = "ln -s $FindBin::Bin/etc/conf.d/clearadm $confdir"; ($status, @output) = Execute "$cmd 2>&1"; - error "Unable to execute $cmd (Status: $status)\n" . join ("\n", @output), 1 + error "Unable to execute $cmd (Status: $status)\n" . join("\n", @output), $status if $status; } # unless - if ($ARCH eq 'cygwin') { + if ($ARCHITECTURE eq 'cygwin') { $cmd = 'net stop apache2; net start apache2'; } else { $cmd = '/etc/init.d/apache2 restart'; @@ -230,7 +248,7 @@ sub SetupWeb () { ($status, @output) = Execute "$cmd 2>&1"; - error "Unable to execute $cmd (Status: $status)\n" . join ("\n", @output), 1 + error "Unable to execute $cmd (Status: $status)\n" . join("\n", @output), $status if $status; verbose 'Done'; @@ -238,7 +256,7 @@ sub SetupWeb () { return; } # SetupWeb -sub SetupDatabase () { +sub SetupDatabase() { verbose 'Setting up Database'; my ($status, @output, $cmd); @@ -249,8 +267,7 @@ sub SetupDatabase () { ($status, @output) = Execute "$cmd 2>&1"; - error "Unable to execute $cmd (Status: $status)\n" . join ("\n", @output), 1 - if $status; + error "Unable to execute $cmd (Status: $status)\n" . join("\n", @output), $status if $status; verbose 'Setting up database users'; @@ -258,8 +275,7 @@ sub SetupDatabase () { ($status, @output) = Execute "$cmd 2>&1"; - error "Unable to execute $cmd (Status: $status)\n" . join ("\n", @output), 1 - if $status; + error "Unable to execute $cmd (Status: $status)\n" . join("\n", @output), $status if $status; verbose 'Setting up predefined tasks'; @@ -267,8 +283,7 @@ sub SetupDatabase () { ($status, @output) = Execute "$cmd 2>&1"; - error "Unable to execute $cmd (Status: $status)\n" . join ("\n", @output), 1 - if $status; + error "Unable to execute $cmd (Status: $status)\n" . join("\n", @output), $status if $status; verbose 'Done'; @@ -277,22 +292,21 @@ sub SetupDatabase () { # Main error "Cannot setup Clearadm when using Windows - hint try using Cgywin", 1 - if $ARCH eq 'windows'; + if $ARCHITECTURE eq 'windows'; Usage 'You must be root' - unless $> == 0 or $ARCH eq 'cygwin'; + unless $> == 0 or $ARCHITECTURE eq 'cygwin'; my $package = 'all'; -GetOptions ( +GetOptions( usage => sub { Usage }, verbose => sub { set_verbose }, debug => sub { set_debug }, 'package=s' => \$package, ) or Usage "Invalid parameter"; -Usage 'Extraneous options: ' . join ' ', @ARGV - if @ARGV; +Usage 'Extraneous options: ' . join ' ', @ARGV if @ARGV; # Announce ourselves verbose "$FindBin::Script V$VERSION"; @@ -326,4 +340,4 @@ if ($lcpackage eq 'all') { SetupWeb; } # if -=pod \ No newline at end of file +=pod