-#!/usr/bin/perl
+#!/usr/bin/env perl
=pod
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 ';
($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';
$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";
return;
} # SetupAgent
-sub SetupTasks () {
+sub SetupTasks() {
my ($status, @output, $cmd);
verbose 'Setting up Tasks...';
# 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
($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';
($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);
# 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';
($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';
return;
} # SetupWeb
-sub SetupDatabase () {
+sub SetupDatabase() {
verbose 'Setting up Database';
my ($status, @output, $cmd);
($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';
($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';
($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';
# 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";
SetupWeb;
} # if
-=pod
\ No newline at end of file
+=pod