[Perl] FTP Manager 0.2

Iniciado por BigBear, 22 Abril 2012, 05:03 AM

0 Miembros y 1 Visitante están viendo este tema.

BigBear

Nueva version de un cliente FTP que hice en Perl , en esta version se le arreglo varias cosas.

El codigo

Código (perl) [Seleccionar]

#!usr/bin/perl
#FTP Manager 0.2
#Coded By Doddy H

use Net::FTP;

&head;

print "\n\n[FTP Server] : ";
chomp( my $ftp = <stdin> );
print "\n[User] : ";
chomp( my $user = <stdin> );
print "\n[Pass] : ";
chomp( my $pass = <stdin> );

if ( my $socket = Net::FTP->new($ftp) ) {
    if ( $socket->login( $user, $pass ) ) {

        print "\n\n[+] Enter of the server FTP\n";

      menu:

        print "\n\n>>";
        chomp( my $cmd = <stdin> );
        print "\n\n";

        if ( $cmd =~ /help/ ) {
            print q(
[+] Commands

[++] help : show information
[++] cd : change directory <dir>
[++] dir : list a directory
[++] mkdir : create a directory <dir>
[++] rmdir : delete a directory <dir>
[++] pwd : directory 
[++] del : delete a file <file>
[++] rename : change name of the a file <file1> <file2>
[++] size : size of the a file <file>
[++] put : upload a file <file>
[++] get : download a file <file>
[++] cdup : change dir <dir>
);
        }

        if ( $cmd eq "dir" ) {
            if ( my @files = $socket->dir() ) {

                my @files_found;
                my @dirs_found;

                for my $fil (@files) {
                    my @to = split( " ", $fil );
                    my ( $dir, $file ) = @to[ 0, 8 ];
                    if ( $dir =~ /^d/ ) {
                        push( @dirs_found, $file );
                    }
                    else {
                        push( @files_found, $file );
                    }
                }

                print "[++] Directory Found : " . int(@dirs_found) . "\n";
                print "\n[+] Files Found : " . int(@files_found) . "\n\n";

                for my $dires (@dirs_found) {
                    print "[++] : $dires\n";
                }

                for my $filex (@files_found) {
                    print "[+] : $filex\n";
                }

            }
            else {
                print "[-] Error\n\n";
            }
        }

        if ( $cmd =~ /pwd/ig ) {
            print "[+] Path : " . $socket->pwd() . "\n";
        }

        if ( $cmd =~ /cd (.*)/ig ) {
            if ( $socket->cwd($1) ) {
                print "[+] Directory changed\n";
            }
            else {
                print "[-] Error\n\n";
            }
        }

        if ( $cmd =~ /cdup/ig ) {
            if ( my $dir = $socket->cdup() ) {
                print "[+] Directory changed\n\n";
            }
            else {
                print "[-] Error\n\n";
            }
        }

        if ( $cmd =~ /del (.*)/ig ) {
            if ( $socket->delete($1) ) {
                print "[+] File deleted\n";
            }
            else {
                print "[-] Error\n\n";
            }
        }

        if ( $cmd =~ /rename (.*) (.*)/ig ) {
            if ( $socket->rename( $1, $2 ) ) {
                print "[+] File Updated\n";
            }
            else {
                print "[-] Error\n\n";
            }
        }

        if ( $cmd =~ /mkdir (.*)/ig ) {
            if ( $socket->mkdir($1) ) {
                print "[+] Directory created\n";
            }
            else {
                print "[-] Error\n\n";
            }
        }

        if ( $cmd =~ /rmdir (.*)/ig ) {
            if ( $socket->rmdir($1) ) {
                print "[+] Directory deleted\n";
            }
            else {
                print "[-] Error\n\n";
            }
        }

        if ( $cmd =~ /size (.*)/ig ) {
            print "[+] Size : " . $socket->size($1) . "\n\n";
        }

        if ( $cmd =~ /exit/ig ) {
            copyright();
            exit(1);
        }

        if ( $cmd =~ /get (.*)/ig ) {
            print "[+] Downloading file\n\n";
            if ( $socket->get($1) ) {
                print "[+] Download completed";
            }
            else {
                print "[-] Error\n\n";
            }
        }

        if ( $cmd =~ /put (.*)/ig ) {
            print "[+] Uploading file\n\n";
            if ( $socket->put($1) ) {
                print "[+] Upload completed";
            }
            else {
                print "[-] Error\n\n";
            }
        }

        goto menu;

    }
    else {
        print "\n\n[-] Failed the login\n\n";
    }

}
else {
    print "\n\n[-] Error\n\n";
}

sub head {
    print "\n\n -- == FTP Manager 0.2 == --\n\n";
}

sub copyright {
    print "\n\n(C) Doddy Hackman 2012\n\n";
}

# The End ?