#!/usr/local/bin/perl 

require "cgi-lib.pl";
## require "cgi-utils.pl";
binmode STDIN;
&ReadParse(*input);

$num_dir=0;
$num_files=0;

$remote_host=$ENV{'REMOTE_HOST'};
if ($remote_host =~/sdsc\.edu/) {
   print "Content-type: text/html\n\n";
##   print "<B>Status: 200 OK, You are from SDSC's domain.</B><BR><P>\n";
}
else {
   print "Content-type: text/html\n\n";
   print "<B>Status 400 Bad Request, You must be part of SDSC's domain.</B>\n";
   print "remote_host is $remote_host\n";
   exit(0);
}


@stuff= split(/&/,$input);
@input1 = split(/=/, $stuff[0]);

# convert hex characters passed in directory value
 for $i (0..$#input1)
 { 
        # convert hex versions of :,/,\ to ascii
        $input1[$i] =~s/%(..)/pack("c",hex($1))/ge;
   }

$direct = $input1[1];
$direct_in=$direct;

if ($direct=~/\.\./) {
   print "<B>Sorry, You have entered invalid characters into the path.</B><BR><P>\n";
   print "Please check your specification and try again.\n";
   exit(0);
}

@input2 = split(/=/, $stuff[1]);
$filena = $input2[1];
$webdir = "/misc/www/users/damartin/cgi-bin/temp/";
$topdir = "/projects/us/bio2/PWT/demo/qry/";
$direct = $topdir.$direct_in;


# name of the output file for keeping track of state
$outfilename = $webdir."temp.info";


chdir("$direct");
opendir(ROOT, "$direct");
@files = readdir(ROOT);

if ("$filena") {
     # check to see if file is in the directory
     for $i (0..$#files){
	$temp = $files[$i];
	if ($filena eq $temp) {
     	    # print contents of the file
	    # write directory and file information to info
	    # file for later use. Info file is uniquely identified
	    # by using client ID

#-------------------------------------------------------------
# start creating output file
#-------------------------------------------------------------
	   if ( !open(OUTFILE,"> $outfilename") ) {
		print "Error opening an output file $outfilename: $!\n";
		print "Bailing out..\n";
		exit(1);
	   }
	   print OUTFILE "directory $direct/\n";
	   print OUTFILE "subdirectory $direct_in/\n";
	   print OUTFILE "file $filena\n";
	   close OUTFILE;  
#-------------------------------------------------------------
# display query file
#-------------------------------------------------------------

	    open(FILE,$filena);
	    print "<PRE>";
     	    while($input=<FILE>)
	     {
	   	print "$input<BR>";
	     }
	    print "</PRE>";
	$isafile = 1;
	} # end if ($filena eq $temp) 
     }  # end for $i (0..$#files)

    if (!$isafile) { 
	print "<HEAD><TITLE>Query Results</TITLE></HEAD>\n";
	print "<BODY><H1><STRONG> Could not find file: </STRONG>", $filena, "</H1><P>\n";
	print "</BODY>\n";
    } 

} # end if ("$filena")

else {
     print "<HEAD><TITLE>Query Results</TITLE></HEAD>\n";
     print "<BODY><H2><STRONG>Directory: </STRONG>", $direct, "</H2><P><PRE>\n";
     for $i (0..$#files)
     {
        if (-d $files[$i]) { 
	   if (($files[$i] ne ".") && ($files[$i] ne "..")) {
	   	$num_dir++;
	   	$key="dir"."_$num_dir";
	   	$dir_name{$key}=$files[$i];
	   }
	}
	elsif ($files[$i]=~ /\.qry/) {
	   $num_file++;
	   $key="file"."_$num_file";
	   $file_name{$key}=$files[$i];
	}
     }
if ($num_dir!=0) {
   print "<STRONG><EM> (Directories)</EM></STRONG>\n";
}
for ($i=1; $i<=$num_dir; $i++) {
    $key="dir"."_$i";
    $dir=$dir_name{$key};
    print "<FORM METHOD=\"POST\" ACTION=\"http://www.sdsc.edu/~damartin/cgi-bin/filemgr.pl\">";
    print "<INPUT TYPE=\"hidden\" NAME=\"directory\" VALUE=\"$dir\"
>";
    print "<INPUT TYPE=\"SUBMIT\" VALUE=\"$dir\">\n";
    print "</FORM>\n";
}

if ($num_file) {
   print "<BR><P>\n<BR><STRONG><EM> (Files)</EM></STRONG><BR>\n";
}

for ($i=1; $i<=$num_file; $i++) {
    $key="file"."_$i";
    $file=$file_name{$key};
    print "<FORM METHOD=\"POST\" ACTION=\"http://www.sdsc.edu/~damartin/cgi-bin/filemgr.pl\">";
    print "<INPUT TYPE=\"hidden\" NAME=\"directory\" VALUE=\"$direct_in\"
>";
    print "<INPUT TYPE=\"hidden\" NAME=\"file\" VALUE=\"$file\">";
    print "<INPUT TYPE=\"SUBMIT\" VALUE=\"$file\">\n";
    print "</FORM>\n";
        }
print "</PRE></BODY>\n";

}

