#!/usr/bin/perl

# -----------------------------------------------------------------------------
#  Proxy script introduced due to security requirements
#  Performs database backup via pg_dump using "postgres" DB user account
#  Must be run by root
# -----------------------------------------------------------------------------
#  Author: Alexey Tsibulnik
#  Modified by: 
#  QA by:  
#  Copyright: videoNEXT Network solutions, Inc.
# -----------------------------------------------------------------------------

use strict;
use warnings;

my $APL = $ENV{APL};
my $DB_USER = $ENV{APL_DB_USR};
my $PG_DUMP = $^O =~ /darwin/i ? "$APL/imp/bin/pg_dump" : "/usr/bin/pg_dump";

my %DB;

my ($db, $path) = @ARGV;
my $errors = 0;

die "Must be run by root\n" unless $> == 0;
die "Environment not set\n" unless defined $APL and defined $DB_USER;
die "Database not specified" if not $db;
die "Invalid database. Must be one of [confdb,transdb]" if $db !~ /^(confdb|transdb|apl)$/;
die "Path to DB backup not specified" unless $path;

# Read DB conf
my $dbConfFile = "$ENV{APL}/etc/skm_master.db.conf";
open(DB_CONF_FILE, "<$dbConfFile")
	    or die "unable to open configuration file $dbConfFile";
%DB = map{/(^.+?)=(.*)/} grep {/^.+=.*/} <DB_CONF_FILE>;
close(DB_CONF_FILE);

my $ok = 1;
$ok &&= system("$PG_DUMP -h '$DB{host}' -U '$DB_USER' -n $db -F c $DB{name} > $path 2>/dev/null") == 0;
$ok &&= system("/bin/chown $ENV{APL_USR}:$ENV{APL_HTTPD_GRP} $path") == 0;

exit ($ok ? 0 : 1);
