### run backup command ###
my @system_params = ( "-o", "log/nix_backup_wrap", "$var{username}", "./backup_run.plX" );
my $pid = open my $cmd, "-|", './nix_backup_wrap', @system_params or warn "$!\n";
my $backup_process_status = $? >> 8;
my @backup_status_message;
print "BACKUP PROCESS STATUS: $backup_process_status\n";
if ( $backup_process_status == 0 ) {
$msglog->write( "Success starting backup process!" );
push @backup_status_message, "Success starting backup process!";
open 'PID', '>', $PID_FILE or die "Status $var{status}: Tried to open $PID_FILE $!\n";
print PID "$pid\n";
close PID;
} else {
$err_msglog->write( "Error starting backup process!" );
push @backup_status_message, "Error starting backup process!";
}
$jsonObject = {
msgdata => "BACKUP STATUS MESSAGE: @backup_status_message with PID: $pid",
pid => $pid,
lposition => $var{lposition},
count => $var{count},
segment => $var{segment},
status => $var{status},
backup_process_status => $backup_process_status
};
my $jsonEncoded = encode_json $jsonObject;
print WB_OUT $cgi->header(-type => "application/json", -charset => "utf-8");
print WB_OUT $jsonEncoded;
####
eval {
alarm 5;
$msglog->write( "/usr/bin/rsync -avz $var{username}\@$IP:/tmp/$var{username}/test /tmp/ | tee -a $TMPLOG" );
exec( "/usr/bin/rsync -avz $var{username}\@$IP:/tmp/$var{username}/test /tmp/ | tee -a $TMPLOG")
or $err_msglog->write( "STATUS: $var{status}: Couldn't initiate backup $!\n" );
alarm 0;
};
####
/* Set UID to user */
setuid( new_uid );
_user = custom_command( command_whoami );
printf("User after setuid(%d): %s\n", new_uid,_user);
/* Now run the actual ".cgi" file */
strcpy( _HOME, "HOME=/home/e-smith/files/users/" );
strcat( _HOME, username );
strcpy( _LOGNAME, "LOGNAME=" );
strcat( _LOGNAME, username );
int ret;
char *cmd[] = { script_name, username, (char *)0 };
char *env[] = { _HOME, _LOGNAME, "SHELL=/bin/bash", "SSH_TTY=/dev/pts/1", (char *)0 };
ret = execve (script_name, cmd, env);
return(0);
}