MOON
Server: Apache/2.2.31 (Unix) mod_ssl/2.2.31 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4
System: Linux csr818.wilogic.com 2.6.18-419.el5xen #1 SMP Fri Feb 24 22:50:37 UTC 2017 x86_64
User: digitals (531)
PHP: 5.4.45
Disabled: NONE
Upload Files
File: //proc/self/root/scripts.20110531.215904.25158/installpostgres
#!/usr/bin/perl
# cpanel - installpostgres                        Copyright(c) 2010 cPanel, Inc.
#                                                           All rights Reserved.
# copyright@cpanel.net                                         http://cpanel.net
# This code is subject to the cpanel license. Unauthorized copying is prohibited

BEGIN { unshift @INC, '/usr/local/cpanel'; }

use strict;
use Cpanel::SysPkgs         ();
use Cpanel::Sys::OS         ();
use Cpanel::Logger          ();
use Cpanel::SafeRun::Simple ();

if ( -e "/etc/gentoo-release" ) {
    my $syspkgobj = Cpanel::SysPkgs->new();
    if ( !$syspkgobj ) { die print "Could not create SysPkgs object\n"; }
    my @pkgs = ("postgresql");
    $syspkgobj->install( 'pkglist' => \@pkgs );
    print "You should now configure PostgreSQL from WHM!\n" x 4;
    exit();
}

my $system = $^O;

if ( $system =~ /freebsd/i ) {
    print "Please install PostgreSQL from ports\n";
    print "If you are using bsd packages you can do this as well:\n\n";
    print <<EOM;
/scripts/installpkg postgresql74-server
/scripts/installpkg postgresql74-client
/scripts/installpkg postgresql-server postgresql-client
echo postgresql_enable="YES" >> /etc/rc.conf
/usr/local/etc/rc.d/postgresql initdb
/usr/local/etc/rc.d/postgresql start
/scripts/makecpphp (freebsd 5.x+ only)
EOM
    exit();
}

if ( -d "/root/.cpupdates" ) {
    system("rm -f /root/.cpupdates/*");
}

print "This script will install PostgreSQL 7.3.x or later\n";
print "If you have an older version installed you wil need to\n";
print "Dump your databases to a file and then restore them\n";
print "after the install as 7.3.x is not backwards compatible.\n";
print "If you do not have any databases, you can just run:\n";
print "  mv /var/lib/pgsql /var/lib/pgsql.old\n";
print "  /sbin/service postgresql stop\n";
print "  /sbin/service postgresql start\n";
print "to force creating a 7.3.x style setup.  Do not do this if\n";
print "you have databases that you wish to keep!\n";
print "\n";
print "Are you sure you wish to proceed? ";

if ( $ARGV[0] !~ /\-\-yes/ ) {
    my $res = <STDIN>;
    if ( $res !~ /^y/i ) {
        print "Bailing out!\n";
        exit();
    }
}

my $version = '';
my $ises    = '';

if ( -e "/etc/redhat-release" ) {
    ( $version, $ises ) = Cpanel::Sys::OS::getversionfromfile('/etc/redhat-release');
}

my $syspkgobj = Cpanel::SysPkgs->new();
if ( !$syspkgobj ) { die print "Could not create SysPkgs object\n"; }

if ($ises) {
    my @pkgs = ( "rh-postgresql", "rh-postgresql-devel", "rh-postgresql-libs", "rh-postgresql-server", "postgresql", "postgresql-devel", "postgresql-libs", "postgresql-server" );
    $syspkgobj->install( 'pkglist' => \@pkgs );

}
else {    # used --no-mirrors option previously as @pkgs[0] , not sure what it really did..
    my @pkgs = ( "rh-postgresql", "rh-postgresql-devel", "rh-postgresql-libs", "rh-postgresql-server", "postgresql", "postgresql-devel", "postgresql-libs", "postgresql-server" );
    $syspkgobj->install( 'pkglist' => \@pkgs );
}

if ( !-e "/etc/rc.d/init.d/postgresql" && -e "/etc/rc.d/init.d/rhdb" ) {
    symlink( "rhdb", "/etc/rc.d/init.d/postgresql" );
}

#----------------------------------------------------------------------
my $logger = Cpanel::Logger->new();

if ( -x '/scripts/cpservice' ) {

    # Stop old process and restart new one

    Cpanel::SafeRun::Simple::saferun( '/scripts/cpservice', 'postgresql', 'stop' );

    Cpanel::SafeRun::Simple::saferun( 'killall',          '-TERM', 'postmaster' );
    Cpanel::SafeRun::Simple::saferun( 'killall',          '-9',    'postmaster' );
    Cpanel::SafeRun::Simple::saferun( '/scripts/killall', '-9',    'postmaster' );

    Cpanel::SafeRun::Simple::saferun( '/scripts/cpservice', 'postgresql', 'enable', '35' );
    Cpanel::SafeRun::Simple::saferun( '/scripts/cpservice', 'postgresql', 'start' );
}
else {
    $logger->warn("/scripts/cpservice is not available. Please check its status.");
}

#----------------------------------------------------------------------

print "Installing DBD::Pg\n";

fork_code(
    {
        wait => 1,
        dots => 1,
        code => sub {
            sleep(2);
            system( '/scripts/checkperlmodules', 'Bundle::DBD::Pg' );
        },
    }
);

print "You should now configure PostgreSQL from WHM!\n";

sub fork_code {
    my ($args) = @_;
    if ( ref( $args->{'code'} ) ne 'CODE' ) {
        print 'Argument not a code ref' . "\n";
        exit(1);
    }

    if ( ( exists $args->{'args'} ) && ( ref $args->{'args'} ne 'ARRAY' ) ) {
        print 'args must be an array ref.' . "\n";
        exit(1);
    }

    my $user   = $args->{'user'} || '';
    my $code   = $args->{'code'};
    my $wait   = $args->{'wait'} ? 1 : 0;
    my $dots   = $args->{'dots'} ? 1 : 0;
    my $stdout = $args->{'stdout'} ? $args->{'stdout'} : '/dev/null';
    my @args   = exists $args->{'args'} ? @{ $args->{'args'} } : ();

    my ( $uid, $gid ) = ( getpwnam($user) )[ 2, 3 ];

    my $pid;
    if ( $pid = fork() ) {
        my $dotcount = 5;
        if ($wait) {
            while ( waitpid( $pid, 1 ) != -1 ) {
                if ( $dotcount % 5 == 0 ) {
                    print "\t" . ".........\n" if $dots;
                }
                sleep(1);
                $dotcount++;
            }
        }
    }
    else {
        if ( defined $uid && $< == 0 ) {
            $< = int $uid;
            $> = int $uid;
            $( = int $gid;
            $) = "$gid $gid";
        }
        open( STDIN,  '<', '/dev/null' );
        open( STDOUT, '>', $stdout );
        open( STDERR, '>', '/dev/null' );

        $code->(@args);
        exit;
    }
}