App-Yabsm

 view release on metacpan or  search on metacpan

lib/App/Yabsm/Command/Config.pm  view on Meta::CPAN


sub print_ssh_backups {
    @_ == 0 or die usage();
    my $config_ref = parse_config_or_die();
    say for all_ssh_backups($config_ref);
}

sub print_local_backups {
    @_ == 0 or die usage();
    my $config_ref = parse_config_or_die();
    say for all_local_backups($config_ref);
}

sub print_backups {
    @_ == 0 or die usage();
    my $config_ref = parse_config_or_die();
    my @ssh_backups = all_ssh_backups($config_ref);
    my @local_backups = all_local_backups($config_ref);
    say for sort @ssh_backups, @local_backups;
}

sub print_yabsm_dir {
    @_ == 0 or die usage();
    my $config_ref = parse_config_or_die();
    my $yabsm_dir = yabsm_dir($config_ref);
    say $yabsm_dir;
}

sub print_yabsm_user_home {
    @_ == 0 or die usage();
    my $config_ref = parse_config_or_die();
    my $yabsm_user_home = yabsm_user_home($config_ref);
    say $yabsm_user_home;
}

sub check_ssh_backup {

    # This is mostly just a wrapper around
    # &App::Yabsm::Backup::SSH::check_ssh_backup_config_or_die.

    @_ == 1 or die usage();

    die 'yabsm: error: permission denied'."\n" unless i_am_root();

    my $ssh_backup = shift;

    my $config_ref = parse_config_or_die();

    unless (ssh_backup_exists($ssh_backup, $config_ref)) {
        die "yabsm: error: no such ssh_backup named '$ssh_backup'\n";
    }

    unless (App::Yabsm::Command::Daemon::yabsm_user_exists()) {
        die q(yabsm: error: cannot find user named 'yabsm')."\n";
    }

    unless (App::Yabsm::Command::Daemon::yabsm_group_exists()) {
        die q(yabsm: error: cannot find group named 'yabsm')."\n";
    }

    POSIX::setgid(scalar(getgrnam 'yabsm'));
    POSIX::setuid(scalar(getpwnam 'yabsm'));

    App::Yabsm::Backup::SSH::check_ssh_backup_config_or_die(undef, $ssh_backup, $config_ref);

    say 'all good';
}

sub print_yabsm_user_ssh_key {

    # Print the yabsm users public key to STDOUT.

    @_ == 0 or die usage();

    die 'yabsm: error: permission denied'."\n" unless i_am_root();

    my $config_ref = parse_config_or_die();

    my $yabsm_user_ssh_dir = yabsm_user_home($config_ref) . '/.ssh';

    my $priv_key = "$yabsm_user_ssh_dir/id_ed25519";
    my $pub_key  = "$yabsm_user_ssh_dir/id_ed25519.pub";

    unless (-f $priv_key) {
        die "yabsm: error: could not find user 'yabsm' users SSH private key '$priv_key'\n";
    }

    unless (-f $pub_key) {
        die "yabsm: error: could not find user 'yabsm' users SSH public key '$pub_key'\n";
    }

    open my $fh, '<', $pub_key
      or die "yabsm: internal error: could not open '$pub_key' for reading\n";

    print <$fh>;

    close $fh
}

1;



( run in 2.724 seconds using v1.01-cache-2.11-cpan-ceb78f64989 )