#!/usr/bin/perl
use strict;
use warnings;
my $tlUrl = "https://the-eye.eu/public/";
my %currentPageRef;
my $pageNest;
my $curl = `which curl`;
chomp $curl;
if ( $curl eq "" || ! defined $curl ) {
print "No curl, exiting...\n";
exit 1;
}
sub dumpPage {
my $page = shift;
my @pageContent = split("\n", `$curl -s $page`);
if ($page =~ m/public\/(.*)$/) {
$pageNest = $1;
}
if ( $pageNest =~ m/\.\.\/$/ ) {
# Need to lop off old nested dir
$pageNest =~ s/\/([^\/]*\/\.\.\/)$//g;
}
if ( $pageNest !~ m/\/$/ ) {
$pageNest .= "/";
}
my $count = 0;
foreach my $line (@pageContent) {
if ($line =~ m/text\/javascript/ || $line =~ m/\/div/ || $line =~ m/\/i/ || $line =~ m/img\ src/ || $line =~ m/\/script/) {
next;
}
#if ($line =~ m/\"(.*\/)\"\>(.*)\</) {
if ($line =~ m/\"(.*)\"\>(.*)\</) {
my $link = $1;
$link = $pageNest . $link;
my $name = $2;
if ($name =~ m/>/) {
$name =~ s/>/>/g;
}
print "$count : $name\n";
$currentPageRef{$count} = $link;
$count++;
}
}
}
sub pageReturn {
my $choice = shift;
my $newPage = $tlUrl . $currentPageRef{$choice};
return $newPage;
}
sub download {
my $link = shift;
system("wget $link");
}
sub printHelp {
my $help = <<EOF
* Basic usage:
Type the number that corresponds with the link you'd like to browse to to browse there.
( Beware selecting a binary file will dump the output to your term )
* Commands:
** top
Return to the docroot of browseable files ( /public/ )
** download
Type 'download' followed by the selection number to download the file
** search
Type 'search' followed by a term to search the current dir tree
If doing a multiword search, wrap the query in quotes like "search terms here"
** file
Type file followed by the selection number to get the full link path
EOF
;
print "$help";
}
if ( defined $ARGV[0] && $ARGV[0] =~ /h/ ) {
printHelp();
exit 0;
}
print "The Eye CLI Browser\n";
dumpPage($tlUrl);
while () {
print "Enter a selection: ";
my $input = <STDIN>;
chomp $input;
if ($input =~ m/download/) {
my @inputs = split(" ", $input);
my $dlLink = $currentPageRef{$inputs[1]};
$dlLink = $tlUrl . $dlLink;
download($dlLink);
next;
}
if ($input =~ m/file/) {
my @inputs = split(" ", $input);
my $queryLink = $currentPageRef{$inputs[1]};
$queryLink = $tlUrl . $queryLink;
print "File is: $queryLink\n";
next;
}
if ($input =~ m/quit/||$input =~ /exit/) {
print "Exiting..\n";
exit 0;
}
if ($input =~ m/search/) {
my @inputs = split(" ", $input);
shift(@inputs);
my $searchTerm = join(" ", @inputs);
#my $searchTerm = $inputs[1];
if ( $searchTerm =~ m/\"(.*)\"/ ) {
$searchTerm = $1;
$searchTerm =~ s/\ /%20/g;
}
foreach my $key ( keys %currentPageRef ) {
if ( $currentPageRef{$key} =~ m/$searchTerm/i ) {
my $printLine = $currentPageRef{$key};
$printLine =~ s/%20/\ /g;
$printLine =~ s/%2C/,/g;
$printLine =~ s/%26/&/g;
print "$key : $printLine\n";
}
}
next;
}
my $newPage;
if ($input eq "top") {
$newPage = $tlUrl;
} else {
$newPage = pageReturn($input);
#print "Your next request is: $newPage\n";
}
%currentPageRef = ();
dumpPage($newPage);
}