#!/usr/bin/perl ##################### # v211 FileManager # # Date ~ 2/08/2003 # # v211@msn.com # # Modified Drifter # # Date ~ 2003 # ##################### use CGI; use LWP::Simple; $q = new CGI; $style = ''; $Root = $ENV{'DOCUMENT_ROOT'} . '/'; $title = 'Joes File Manager'; $body = ""; $cd_color = ''; $rm_color = ''; $ed_color = ''; $ch_color = ''; $by_color = ''; $core_data_http = $data_http; $core_data_path = $data_path; $allowed_space = '200000'; # kilobytes $allowed_upload = '5000'; # kilobytes print "Content-type: text/html\n\n"; &list_dirs; ################################################ ### Script variables. DO NOT CHANGE ### ################################################ $ch_dir = $q->param('cd') if $q->param('cd'); $action = $q->param('action') if $q->param('action'); $operation = $q->param('operation') if $q->param('operation'); if (($ch_dir) && (!$action) && (!$operation)) { $done = "$ch_dir "; } # Check for allowed disk space $du = `du $core_data_path`; $du =~ s/\n/ /g; @terms = split(/\s+/,$du); $used_space = $terms[-2] / 2; $free_space = $allowed_space - $used_space; $allowed_upload = $free_space if ($free_space <= $allowed_upload); $delete_only = 'true' if ($free_space < 50); if ($delete_only eq 'true') { $disabled = "disabled"; $readonly = "readonly"; } ### location of file. and location of top directory $this_url = $ENV{'SCRIPT_NAME'}; $mgr = $this_url; @urls = split(/\//,$this_url); pop(@urls); $top_dir = $urls[$#urls]; if ($top_dir) { $top_dir = '/'.$top_dir; } $top_dir .= '/'; ### find out if we are in another directory if ($ch_dir) { $new_dir = "$ch_dir"; } else { $new_dir = '.'; } if ($ch_dir) { @ch_dirs = split(/\//,$ch_dir); pop(@ch_dirs); $up_dir = join("\/",@ch_dirs); } if ($up_dir) { $last_dir = "cd=$up_dir"; } ### directory we are in $this_dir = $top_dir.$ch_dir; $cur_loc = "


- Joes File Manager -

Free Space: $free_space kb

Current Directory: $ENV{HOME}$this_dir
"; ### read the contents of the directory if ($action eq "chmod") { &chmod; &read_dir; } elsif ($action) { $go = $action; &$go; &read_dir; } elsif ($operation) { &parse_input; if ($q->param('confirm')) { $go = $operation; &$go; &read_dir; } else { &confirm; } exit; } else { &read_dir; } exit; sub show_files { $_ = $done; if (!$_) { $_ = 'Root
'; } if ($new_dir ne '.') { $d = "\&cd=$new_dir"; } if ($done) { $p = "Previous Action: "; } print < $style $title $body $cur_loc
$p $_
EOM foreach (@dir_stats) { @stats = split(/\*/,$_); $dir_path = $stats[0]; @_ = split(/\//,$dir_path); $name = pop(@_); $cd = $stats[1]; $date = $stats[2]; $size = $stats[3]; $perm = $stats[4]; print < EOM } print "

\n"; foreach (@fil_stats) { @stats = split(/\*/,$_); $cd = $stats[0]; $file = $stats[1]; @_ = split(/\//,$file); $name = pop(@_); $file_name = $cd.$name; $date = $stats[2]; $size = $stats[3]; $perm = $stats[4]; $file_path = "$top_dir$file_name"; print <

EOM } print <
$name $by_color $size $ch_color $perm $rn_color Rename $rm_color Del
$name $ed_color Edit $by_color $size $ch_color $perm $rn_color rename $rm_color Del




Editing File: $edit



Search/Replace Replace

"; } print " $_ "; if ($operation ne "CHMOD" && $operation ne "Delete" && $operation ne "UnZip") { $show = $_; $new = "New File Path:"; $in = ""; } elsif ($operation eq "CHMOD") { $new = "CHMOD to:"; if ($_ =~ /\.cgi/ || $_ =~ /\.pl/) { $val = '755'; } else { $val = '644'; } $in = ""; } elsif ($operation eq "Delete") { if (!$g) { $new = "Caution: Deleted files $rm_color CANNOT be recovered."; $g = 1; } elsif ($operation eq "UnZip") { $new = ""; } } else { last; } print < $new $in EOM } print < New Name: $b_color

Beaming to: $ENV{HOME}$this_dir

Recall   Save   Bytes
EOM } else { return; } if ($type) { print < New $type Name: $b_color <noframes><noembed> EOM } return; } # Begin directory list. sub list_dirs { $ls = `ls -R $Root`; @pairs = split(/\n/,$ls); foreach (@pairs) { if (/$Root/) { $_ =~ s/$Root//; chop; push(@Dirs, $_); }} }