#!/usr/bin/perl

use strict;
use warnings;
use open ':std', ':encoding(UTF-8)';

use JSON::XS;
use FileHandle;
use Text::CSV::Easy(qw/csv_build csv_parse/);

use lib '/app/tools/common/lib';
use Common::Session;
use Common::RunCommand;

my $dbx = Common::Session::getdbx('report01');

my $rset = $dbx->resultset('Report::SysAwsSftpUser')->search( { 'admin_user' => \'IS NULL' } );
while ( my $row = $rset->next ) {
    my $username = $row->username;
    logMessage( 'info', "Testing $username" );

    my $sshPrivateFile = "/home/ec2-user/.ssh/rsafiles/id_rsa." . $username;
    if ( -f $sshPrivateFile ) {
        Common::RunCommand::execute_die("ssh-add -k $sshPrivateFile");

        use Net::SFTP::Foreign;
        my $sftp = Net::SFTP::Foreign->new(
            'transfer.royaltyshare.com',
            'user' => $username,
            'more' => [ '-q', '-i' => $sshPrivateFile, '-o' => 'IdentitiesOnly=yes' ]
        );
        $sftp->error and die "unable to connect to remote host: " . $sftp->error;
        if ( $sftp->stat('.keepme') ) {
            logMessage( 'info2', "$username connected to " . $sftp->cwd );
        }
        Common::RunCommand::execute_die("ssh-add -d $sshPrivateFile");
    } else {
        logMessage( 'error2', "$sshPrivateFile not found" );
    }
}
