#!/usr/bin/perl
#
#  findrpm.cgi
#  by Michael Dahl
#
#  display matching rpms


use CGI qw(:standard);
$query = new CGI;
#use CGI::Carp qw(fatalsToBrowser);

print $query->header;
print $query->start_html("findrpm");
print '<body bgcolor="#FFFFFF" TEXT="#000000" ';
print ' LINK="#0000FF" ALINK="#FFFF00" VLINK="#C00A0F"> ';


$input = $query->param('input');
$release = $query->param('release');
$search = $query->param('search');

# first time through set defaults to ''
$search=$release='' unless $input eq "y";
$release="9" unless $input eq "y";
$search="ncftp|vsftp" unless $input eq "y";

#if ($input eq 'y') {
#if ($input ne 'y') {

@l = `/bin/gunzip < ../redhat.list.gz`;
if ($release eq "All")  {
   	@result=grep (/$search/i, @l);
} else  {
   	@result=grep (/$search/i, grep (/^$release/,@l));
}
foreach $match (@result) {
    ($ver,$rpm) = split /:/,$match;
    next if $rpm =~ /SRPMS/;	# discard source RPMs
    SWITCH: for ( substr $ver,-1 ) {
	/e/ && do { 	$type = "source" ; 	# rawhide

		$t="redhat/linux/rawhide/SRPMS/SRPMS/";
		$r1="ftp://carroll.cac.psu.edu/pub/linux/distributions/redhat/$t";
		$r2="ftp://redhat.newaol.com/pub/$t";
		$r3="ftp://ftp.redhat.com/pub/$t";

	    	$l1 = "<a href=$r1$rpm>carroll</a>"; 
		$l2 = "<a href=$r2$rpm>buffalo</a>";
	    	$l3 = "<a href=$r3$rpm>redhat</a>"; 
		chomp $rpm;
		push @list, "$r1$rpm";
			last; };

	/d/ && do { 	$type = "binary"; $ver = "rawhide"; 	# rpmfind
		$f1="ftp://carroll.cac.psu.edu/pub/linux/distributions/redhat/redhat/linux/rawhide/i386/RedHat/RPMS/";
	    	$l1 = "<a href=$f1$rpm>Carroll</a>"; 
		$l2 = "-";
		$l3 = "-";
		chomp $rpm;
		push @list, "$f1$rpm";
			last; };

	/u/ && do { 	$type = "update" ; $ver =~ s/u$//;  # updates

$u1="ftp://carroll.cac.psu.edu/pub/linux/distributions/redhat/redhat/linux/updates/$ver/en/os/";
$u2="ftp://ftp.cse.buffalo.edu/pub/Linux/redhat/updates.redhat.com/$ver/en/os/";
$u3="ftp://ftp.cse.buffalo.edu/pub/Linux/redhat/updates.redhat.com/$ver/en/os/";

		$l1 = "<a href=$u1$rpm>carroll</a>"; 
	    	$l2 = "<a href=$u2$rpm>buffalo</a>";
	    	#$l3 = "<a href=$u3$rpm>newaol</a>"; 
	    	$l3 = "-";
		chomp $rpm;
		push @list, "$u1$rpm";
			last; };

	# default - distributions
	$type = "dist" ;

		$t="redhat/linux/$ver/en/os/i386/RedHat/RPMS/";
		$d1="ftp://carroll.cac.psu.edu/pub/linux/distributions/redhat/$t";
		$d2="ftp://ftp.cse.buffalo.edu/pub/Linux/redhat/$t";
		$d3="ftp://redhat.newaol.com/pub/$t";

	    	$l1 = "<a href=$d1$rpm>carroll</a>"; 
		$l2 = "<a href=$d2$rpm>buffalo</a>";
	    	$l3 = "<a href=$d3$rpm>newaol</a>"; 
		chomp $rpm;
		push @list, "$d1$rpm";
}  
$cwd .= 
  "<tr align=center><td>$l1<td>$l2<td>$l3<td>$ver<td>$type<td align=left>$rpm";
}

if ($cwd) {
	$cwd .= "</table><table><tr><td>wget " . join " ", @list
		if ($#list > 0 && $#list < 11);
} else {
	$cwd = "<tr><td>No Match";
}

#$table="<tr><td>$release<tr><td>$search<tr><td>table goes here<tr><td align=left>$cwd";
#$table="<tr><td align=left>$cwd";
$table="$cwd";


foreach $r ("9","8.0","7.3","7.2","7.1","7.0","6.2","rpmfind","rawhide","All"){
	if ($r eq $release) {
	  $s .= "<option selected>$r\n";
	} else { $s .= "<option>$r\n";}
}

$select = "<select name=release>$s</select>\n";

print "
  <CENTER>
  <FONT SIZE=5>findrpm</FONT><BR>
  <BR>
  <form action=findrpm.cgi method=get name=findrpm>
    <b>Search for RedHat RPMs:</b>
  <P>
    <table>
      <td>$select
        <b>Search for:</b>
      <td><input type=text name=search value=$search>
      <td><input type=submit value=search align=middle> 
    </table>
    <input type=hidden name=input value=y>
  <P>
  <TABLE cellpadding=4 cellspacing=3 BORDER=1>
    $table
  </TABLE>

<!---
  --->

"



