AnonSec Team
Server IP : 82.165.83.148  /  Your IP : 216.73.217.100
Web Server : Apache
System : Linux info 3.0 #1337 SMP Tue Jan 01 00:00:00 CEST 2000 all GNU/Linux
User : u67745506 ( 4824611)
PHP Version : 7.0.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF
Directory (0755) :  /../lib/git-core/../git-core/../init/../file/../susshi/exec/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : //../lib/git-core/../git-core/../init/../file/../susshi/exec/restore
#!/usr/bin/perl

use warnings;
use strict;

use lib '/usr/lib/susshi/exec';
use Susshi;

use File::Temp qw( tempdir );
use IPC::Run qw( run timeout );

my ($tempdir);

my $susshi = Susshi->new( -read_input => 1 );
my ($backupdir, $filename) = $susshi->get_backuppath;

-f $filename
    or error_die "File does not exist: $filename\n";

my $database  = $susshi->get_database('database');
my $directory = $susshi->get_directory('directory');

if (! $database && ! $directory) {
    error_die "Please provide 'database' and/or 'directory' data.";
}

eval {
    my $old_umask = umask(0077);
    $tempdir = tempdir( '.restore.XXXX', CLEANUP => 1)
        or die;
    umask $old_umask;
};
if ($@) {
    error_die "Cannot create tempdir: $!";
}

# Build TAR command
my @tar_cmd = ('tar', '-C', $tempdir, '-xzf', $filename);

push @tar_cmd, 'database.dump' if $database;
push @tar_cmd, 'files/'        if $directory;

# Unpack the backup
eval {
    my $err='';
    run \@tar_cmd, '2>', \$err, timeout (3600) or die $err;
};
error_die "untarring $filename to $tempdir failed: $@" if $@;

if ($database) {
    my @cmd=( '/usr/bin/mysql', $database->get_mysql_args );

    eval {
        my $err='';
        run \@cmd, '<', $tempdir . '/database.dump', '2>', \$err, timeout (3600) or die $err;
    };
    unlink 'database.dump';
    error_die "restoring database failed: $@" if $@;
}

if ($directory) {
    rename $directory, $tempdir . '/old/';
    rename ($tempdir . '/files/', $directory)
        or error_die "Cannot move $tempdir/files/ to $directory\n";
}

info "Restored $filename";

exit 0;

AnonSec - 2021