smeserver-php/root/etc/e-smith/events/actions/php-pool-dirs

53 lines
1.6 KiB
Perl

#!/usr/bin/perl -w
use strict;
use warnings;
use esmith::AccountsDB;
use File::Path qw(make_path remove_tree);
use esmith::util;
my $a = esmith::AccountsDB->open_ro || die "Couldn't open the accounts database\n";
my $event = shift;
my $apool = shift;
my @pools = (defined $apool && $a->get($apool) ) ? map { $a->get($_); } $apool : ( $a->get_all_by_prop(type => "ibay" ) , $a->get_all_by_prop(type => "share" ));# unless $acc;
foreach my $acc (@pools){
my $pool = $acc->key;
my $type = $acc->prop('type');
my $dyn = 'disabled';
if ( $type eq "ibay") {
$dyn = $acc->prop('CgiBin') || 'disabled';
}
else {
$dyn = $acc->prop('DynamicContent') || 'disabled';
}
if ($dyn =~ m/^enabled|on|1|yes$/ && $event ne 'share-delete' && $event ne 'ibay-delete'){
my @dirs = ( "/var/log/php/$pool",
"/var/lib/php/$pool/session",
"/var/lib/php/$pool/wsdlcache",
"/var/lib/php/$pool/opcache",
"/var/lib/php/$pool/tmp" );
# create dir if does not exist; set owner and group if create it
# does not change ownership if folder already exists
for (@dirs){
esmith::util::chownFile("root", "www", $_) if -e $_;
make_path( $_, {
owner => 'root',
group => 'www'
}) unless -e $_;
}
chmod 0770, @dirs;
}
}
if ( defined $event && defined $apool && ($event eq 'share-delete' || $event eq 'ibay-delete') ) {
my $acc = $a->get($apool);
die "$apool not found in the account database\n" unless $acc;
remove_tree( "/var/log/php/$apool",
"/var/lib/php/$apool" );
}