File:  [Public] / rpm2html / search.php
Revision 1.23: download - view: text, annotated - select for diffs
Wed Feb 21 18:45:34 2001 UTC (23 years, 3 months ago) by veillard
Branches: MAIN
CVS tags: HEAD
Update, daniel

<?php 
   /*******
   header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Date in the past
   header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
   header ("Cache-Control: no-cache, must-revalidate");
   header ("Pragma: no-cache");
    *******/
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<?php
    $uri = $HTTP_GET_VARS[ "uri"];
    $host = getenv ("HTTP_HOST");
    if (!$host)
	$host = "rpmfind.net";
    if ($query) {
        echo "<title>RPM resource $query</title>";
    } else {
        echo "<title>Search the RPM repository on $host</title>";
    }
?>
<meta name="GENERATOR" content="rpm2html 1.5">
</head>
<body bgcolor="#ffffff" text="#000000">
<table border=5 cellspacing=5 cellpadding=5>
<tbody>
<tr>
<td><a href="/linux/RPM/index.html">Index</a></td>
<td><a href="/linux/RPM/Groups.html">index by Group</a></td>
<td><a href="/linux/RPM/Distribs.html">index by Distribution</a></td>
<td><a href="/linux/RPM/Vendors.html">index by Vendor</a></td>
<td><a href="/linux/RPM/ByDate.html">index by creation date</a></td>
<td><a href="/linux/RPM/ByName.html">index by Name</a></td>
<td><a href="http://rpmfind.net/linux/rpm2html/mirrors.html">Mirrors</a></td>
<td><a href="http://fr.rpmfind.net/linux/rpm2html/help.html">Help</a></td>
</tr>
</tbody></table>
<?php
    // We handle only the first argument so far
    $query = ltrim ($query);
    $list = explode (" ", $query);
    $query = $list[0];
    if (! $query) {
        echo "<h1 align='center'>Search the RPM repository on $host</h1>";
    }
    // TODO: the form entry does not work in lynx ... crap ...
?>
<p> The search service is very recent and definitely incomplete,
but it should find package by either name (<b>apache</b>),
provides(<b>webserver</b>), absolute file names (<b>/usr/bin/apache</b>),
binaries (<b>gprof</b>) or shared libraries (<b>libXm.so.2</b>) in
standard path. It does not support multiple arguments yet...
<p>
<form action="<?php echo "$PHP_SELF", "?query=", rawurlencode($query) ?>"
      enctype="application/x-www-form-urlencoded" method="GET">
  <input name="query" type="TEXT" size="60" value="<?php echo $query ?>">
  <input name=submit type=submit value="Search ...">
</form>
<?php
    if ($host == "fr.rpmfind.net") {
	echo "
        <p> The French mirror bandwidth is saturated, in case of troubles
	check <a href='http://fr2.rpmfind.net/linux/rpm2html/search.php'
	>fr2.rpmfind.net</a> mirror at INSA.";
    }
?>
<?php
    if (($query) && (strlen($query) <= 50)) {
        echo "<h1 align='center'>RPM resource $query</h1>";

	if (strstr ($query, '/')) {
	    // Assumes it's a file query
	    $file = $query;
	} else if (strstr ($query, '-')) {
	    // looks like one gonna have to cut this into
	    // package/version/release/arch strings
	    // TODO
	    $package = $query;
	} else {
	    $package=$query;
	}

	$link = mysql_connect ("localhost", "nobody");
	// pconnect was leading to
	// Warning: Unknown command in /serveur/WWW/public/linux/rpm2html/search.php
	// on line 66
	// Could not connect to the database: 
	// $link = mysql_pconnect ("localhost", "nobody");
	if (!$link) {
	    echo "<p> Could not connect to the database: ", mysql_error();
	} else {
	    mysql_select_db("rpmfind", $link);
	    $origquery = $query;
	    $j = 0;
	    if ($package) {
		$result = mysql_query ("SELECT Packages.ID,Packages.filename,Packages.Name,Packages.Version,Packages.Release,Packages.Arch,Packages.Summary,Distribs.Name,Distribs.Path,Distribs.color,Distribs.Directory,Distribs.HTML FROM Packages,Distribs WHERE Packages.Name='$package' and Packages.Dist=Distribs.ID  ORDER BY Packages.Name,Packages.Version,Packages.Release");
		if ($result) {
		    $j = mysql_num_rows($result);
		    if ($j == 0)
			mysql_free_result($result);
		} else {
		    echo "<p> Query for package $package failed\n";
		}
	    } 
	    if (($package) && ($j == 0))  {
		$result = mysql_query ("SELECT Packages.ID,Packages.filename,Packages.Name,Packages.Version,Packages.Release,Packages.Arch,Packages.Summary,Distribs.Name,Distribs.Path,Distribs.color,Distribs.Directory,Distribs.HTML FROM Provides,Packages,Distribs WHERE Provides.Resource='$package' and Packages.ID=Provides.ID and Packages.Dist=Distribs.ID  ORDER BY Packages.Name,Packages.Version,Packages.Release");
		if ($result) {
		    $j = mysql_num_rows($result);
		    if ($j == 0)
			mysql_free_result($result);
		} else {
		    echo "<p> Query for resource $package failed\n";
		}
	    }
	    if (($package) && ($j == 0)) {
		$result = mysql_query ("SELECT Packages.ID,Packages.filename,Packages.Name,Packages.Version,Packages.Release,Packages.Arch,Packages.Summary,Distribs.Name,Distribs.Path,Distribs.color,Distribs.Directory,Distribs.HTML FROM Packages,Distribs WHERE Packages.Name LIKE 'lib$package%' and Packages.Dist=Distribs.ID ");
		if ($result) {
		    $j = mysql_num_rows($result);
		    if ($j == 0)
			mysql_free_result($result);
		    else
		        $query="lib$package";
		} else {
		    echo "<p> Query for package $package failed\n";
		}
	    } 
	    if (($package) && ($j == 0)) {
		$result = mysql_query ("SELECT Packages.ID,Packages.filename,Packages.Name,Packages.Version,Packages.Release,Packages.Arch,Packages.Summary,Distribs.Name,Distribs.Path,Distribs.color,Distribs.Directory,Distribs.HTML FROM Packages,Distribs WHERE Packages.Name LIKE '$package%' and Packages.Dist=Distribs.ID");
		if ($result) {
		    $j = mysql_num_rows($result);
		    if ($j == 0)
			mysql_free_result($result);
		} else {
		    echo "<p> Query for package $package failed\n";
		}
	    } 
	    if (($package) && ($j == 0))  {
		$result = mysql_query ("SELECT Packages.ID,Packages.filename,Packages.Name,Packages.Version,Packages.Release,Packages.Arch,Packages.Summary,Distribs.Name,Distribs.Path,Distribs.color,Distribs.Directory,Distribs.HTML FROM Provides,Packages,Distribs WHERE Provides.Resource LIKE 'lib$package%' and Packages.ID=Provides.ID and Packages.Dist=Distribs.ID");
		if ($result) {
		    $j = mysql_num_rows($result);
		    if ($j == 0)
			mysql_free_result($result);
		    else
		        $query="lib$package";
		} else {
		    echo "<p> Query for resource $package failed\n";
		}
	    }
	    if (($package) && ($j == 0))  {
		$result = mysql_query ("SELECT Packages.ID,Packages.filename,Packages.Name,Packages.Version,Packages.Release,Packages.Arch,Packages.Summary,Distribs.Name,Distribs.Path,Distribs.color,Distribs.Directory,Distribs.HTML FROM Provides,Packages,Distribs WHERE Provides.Resource LIKE '$package%' and Packages.ID=Provides.ID and Packages.Dist=Distribs.ID");
		if ($result) {
		    $j = mysql_num_rows($result);
		    if ($j == 0)
			mysql_free_result($result);
		} else {
		    echo "<p> Query for resource $package failed\n";
		}
	    }
	    if (($package) && ($j == 0))  {
		$result = mysql_query ("SELECT Packages.ID,Packages.filename,Packages.Name,Packages.Version,Packages.Release,Packages.Arch,Packages.Summary,Distribs.Name,Distribs.Path,Distribs.color,Distribs.Directory,Distribs.HTML FROM Files,Packages,Distribs WHERE Files.Path='/bin/$package' and Packages.ID=Files.ID and Packages.Dist=Distribs.ID  ORDER BY Packages.Name,Packages.Version,Packages.Release");
		if ($result) {
		    $j = mysql_num_rows($result);
		    if ($j == 0)
			mysql_free_result($result);
		    else
			$query = "/bin/$package";
		} else {
		    echo "<p> Query for file /bin/$package failed\n";
		}
	    }
	    if (($package) && ($j == 0)) {
		$result = mysql_query ("SELECT Packages.ID,Packages.filename,Packages.Name,Packages.Version,Packages.Release,Packages.Arch,Packages.Summary,Distribs.Name,Distribs.Path,Distribs.color,Distribs.Directory,Distribs.HTML FROM Files,Packages,Distribs WHERE Files.Path='/usr/bin/$package' and Packages.ID=Files.ID and Packages.Dist=Distribs.ID  ORDER BY Packages.Name,Packages.Version,Packages.Release");
		if ($result) {
		    $j = mysql_num_rows($result);
		    if ($j == 0)
			mysql_free_result($result);
		    else
			$query = "/usr/bin/$package";
		} else {
		    echo "<p> Query for file /usr/bin/$package failed\n";
		}
	    }
	    if (($package) && ($j == 0)) {
		$result = mysql_query ("SELECT Packages.ID,Packages.filename,Packages.Name,Packages.Version,Packages.Release,Packages.Arch,Packages.Summary,Distribs.Name,Distribs.Path,Distribs.color,Distribs.Directory,Distribs.HTML FROM Files,Packages,Distribs WHERE Files.Path='/sbin/$package' and Packages.ID=Files.ID and Packages.Dist=Distribs.ID  ORDER BY Packages.Name,Packages.Version,Packages.Release");
		if ($result) {
		    $j = mysql_num_rows($result);
		    if ($j == 0)
			mysql_free_result($result);
		    else
			$query = "/sbin/$package";
		} else {
		    echo "<p> Query for file /sbin/$package failed\n";
		}
	    }
	    if (($package) && ($j == 0)) {
		$result = mysql_query ("SELECT Packages.ID,Packages.filename,Packages.Name,Packages.Version,Packages.Release,Packages.Arch,Packages.Summary,Distribs.Name,Distribs.Path,Distribs.color,Distribs.Directory,Distribs.HTML FROM Files,Packages,Distribs WHERE Files.Path='/usr/sbin/$package' and Packages.ID=Files.ID and Packages.Dist=Distribs.ID  ORDER BY Packages.Name,Packages.Version,Packages.Release");
		if ($result) {
		    $j = mysql_num_rows($result);
		    if ($j == 0)
			mysql_free_result($result);
		    else
			$query = "/usr/sbin/$package";
		} else {
		    echo "<p> Query for file /usr/sbin/$package failed\n";
		}
	    }
	    if (($package) && ($j == 0)) {
		$result = mysql_query ("SELECT Packages.ID,Packages.filename,Packages.Name,Packages.Version,Packages.Release,Packages.Arch,Packages.Summary,Distribs.Name,Distribs.Path,Distribs.color,Distribs.Directory,Distribs.HTML FROM Files,Packages,Distribs WHERE Files.Path='/opt/bin/$package' and Packages.ID=Files.ID and Packages.Dist=Distribs.ID  ORDER BY Packages.Name,Packages.Version,Packages.Release");
		if ($result) {
		    $j = mysql_num_rows($result);
		    if ($j == 0)
			mysql_free_result($result);
		    else
			$query = "/opt/bin/$package";
		} else {
		    echo "<p> Query for file /opt/bin/$package failed\n";
		}
	    }
	    if (($package) && ($j == 0)) {
		$result = mysql_query ("SELECT Packages.ID,Packages.filename,Packages.Name,Packages.Version,Packages.Release,Packages.Arch,Packages.Summary,Distribs.Name,Distribs.Path,Distribs.color,Distribs.Directory,Distribs.HTML FROM Files,Packages,Distribs WHERE Files.Path='/usr/X11R6/bin/$package' and Packages.ID=Files.ID and Packages.Dist=Distribs.ID  ORDER BY Packages.Name,Packages.Version,Packages.Release");
		if ($result) {
		    $j = mysql_num_rows($result);
		    if ($j == 0)
			mysql_free_result($result);
		    else
			$query = "/usr/X11R6/bin/$package";
		} else {
		    echo "<p> Query for file /usr/X11R6/bin/$package failed\n";
		}
	    }
	    if (($package) && ($j == 0)) {
		$result = mysql_query ("SELECT Packages.ID,Packages.filename,Packages.Name,Packages.Version,Packages.Release,Packages.Arch,Packages.Summary,Distribs.Name,Distribs.Path,Distribs.color,Distribs.Directory,Distribs.HTML FROM Files,Packages,Distribs WHERE Files.Path='/usr/lib/$package' and Packages.ID=Files.ID and Packages.Dist=Distribs.ID  ORDER BY Packages.Name,Packages.Version,Packages.Release");
		if ($result) {
		    $j = mysql_num_rows($result);
		    if ($j == 0)
			mysql_free_result($result);
		    else
			$query = "/usr/lib/$package";
		} else {
		    echo "<p> Query for file /usr/lib/$package failed\n";
		}
	    }
	    if (($package) && ($j == 0)) {
		$result = mysql_query ("SELECT Packages.ID,Packages.filename,Packages.Name,Packages.Version,Packages.Release,Packages.Arch,Packages.Summary,Distribs.Name,Distribs.Path,Distribs.color,Distribs.Directory,Distribs.HTML FROM Files,Packages,Distribs WHERE Files.Path='/lib/$package' and Packages.ID=Files.ID and Packages.Dist=Distribs.ID  ORDER BY Packages.Name,Packages.Version,Packages.Release");
		if ($result) {
		    $j = mysql_num_rows($result);
		    if ($j == 0)
			mysql_free_result($result);
		    else
			$query = "/lib/$package";
		} else {
		    echo "<p> Query for file /lib/$package failed\n";
		}
	    }
	    if (($package) && ($j == 0)) {
		$result = mysql_query ("SELECT Packages.ID,Packages.filename,Packages.Name,Packages.Version,Packages.Release,Packages.Arch,Packages.Summary,Distribs.Name,Distribs.Path,Distribs.color,Distribs.Directory,Distribs.HTML FROM Files,Packages,Distribs WHERE Files.Path='/opt/lib/$package' and Packages.ID=Files.ID and Packages.Dist=Distribs.ID  ORDER BY Packages.Name,Packages.Version,Packages.Release");
		if ($result) {
		    $j = mysql_num_rows($result);
		    if ($j == 0)
			mysql_free_result($result);
		    else
			$query = "/opt/lib/$package";
		} else {
		    echo "<p> Query for file /opt/lib/$package failed\n";
		}
	    }
	    if (($package) && ($j == 0)) {
		$result = mysql_query ("SELECT Packages.ID,Packages.filename,Packages.Name,Packages.Version,Packages.Release,Packages.Arch,Packages.Summary,Distribs.Name,Distribs.Path,Distribs.color,Distribs.Directory,Distribs.HTML FROM Files,Packages,Distribs WHERE Files.Path='/usr/X11R6/lib/$package' and Packages.ID=Files.ID and Packages.Dist=Distribs.ID  ORDER BY Packages.Name,Packages.Version,Packages.Release");
		if ($result) {
		    $j = mysql_num_rows($result);
		    if ($j == 0)
			mysql_free_result($result);
		    else
			$query = "/usr/X11R6/lib/$package";
		} else {
		    echo "<p> Query for file /usr/X11R6/lib/$package failed\n";
		}
	    }

	    if (($file) && ($j == 0)) {
		$result = mysql_query ("SELECT Packages.ID,Packages.filename,Packages.Name,Packages.Version,Packages.Release,Packages.Arch,Packages.Summary,Distribs.Name,Distribs.Path,Distribs.color,Distribs.Directory,Distribs.HTML FROM Files,Packages,Distribs WHERE Files.Path='$file' and Packages.ID=Files.ID and Packages.Dist=Distribs.ID  ORDER BY Packages.Name,Packages.Version,Packages.Release");
		if ($result) {
		    $j = mysql_num_rows($result);
		    if ($j == 0)
			mysql_free_result($result);
		} else {
		    echo "<p> Query for resource $file failed\n";
		}
	    }

	    if ($result) {
		if ($j > 0) {
		    printf("<h3 align='center'> Found %d RPM for $query\n</h3>", $j);

		    printf("<table><tbody>\n");
		    printf("<tr><td>Package</td><td>Summary</td><td>Distribution</td><td>Download</td></tr>\n");

		    $prevname="";
		    for ($i = $j - 1; $i >= 0; $i--) {
			$path = mysql_result($result, $i, 1);
			$name = mysql_result($result, $i, 2);
			$version = mysql_result($result, $i, 3);
			$release = mysql_result($result, $i, 4);
			$arch = mysql_result($result, $i, 5);
			$summary = mysql_result($result, $i, 6);
			$dist = mysql_result($result, $i, 7);
			$subdir = mysql_result($result, $i, 8);
			$color = mysql_result($result, $i, 9);
			$directory = mysql_result($result, $i, 10);
			$html = mysql_result($result, $i, 11);

                        if ($prevname != $name) {
			    if ($prevname != "")
				echo "</tbody></table> <br> <table><tbody>";
			    $prevname = $name;
			}

			echo "<tr bgcolor='$color'>";
			if (($subdir) && ($directory) && (!$html)) {
			    $rpmsubdir = substr($path, strlen($directory));
			    $pos = strpos($rpmsubdir, "$name-$version-$release");
			    if ($pos == false) {
			        $pos = strpos($rpmsubdir, "$name");
			    }
			    if ($pos == false) {
			        echo "<td></td>";
	                    } else {
				$rpmsubdir = substr($rpmsubdir, 0, $pos);
				echo "<td><a href='http://$host/linux/RPM/$subdir/$rpmsubdir/$name-$version-$release.$arch.html'>$name-$version-$release-$arch.html</a></td>";
			    }
			} else {
			    echo "<td></td>";
			}
			echo "<td>$summary</td>";
			echo "<td>$dist</td>";
			$url = strstr($path, '/linux');  
			if (!$url)
			    $url = strstr($path, '/pub');  
			if ($url) {
			    if (($host == "rpmfind.net") ||
			        ($host == "www.rpmfind.net"))
				echo "<td><a href='ftp://ftp.rpmfind.net$url'>$name-$version-$release-$arch.rpm</a></td>";
			    else
				echo "<td><a href='ftp://$host$url'>$name-$version-$release-$arch.rpm</a></td>";
			} else
			    echo "<td>$name-$version-$release-$arch.rpm</td>";
			echo "</tr>";
		    }

		    printf("</tbody></table>\n");
		    mysql_free_result($result);
		} else {
		    echo "<p> No package found of name $query\n";
		}
	    }
	    $result = mysql_query ("SELECT ID,Count,Results FROM Queries WHERE Value='$origquery'");
	    if ($result) {
		$i = mysql_num_rows($result);
		if ($i == 0) {
		    mysql_free_result($result);
		    
		    mysql_query ("INSERT INTO Queries (Value,Count,Results) VALUES ('$origquery',1,$j)");
		} else {
		    $id = mysql_result($result, 0, 0);
		    $count = mysql_result($result, 0, 1);
		    $results = mysql_result($result, 0, 2);
		    $count ++;
		    $results += $j;
		    mysql_query ("UPDATE Queries SET Count=$count,Results=$results WHERE ID=$id");
		}
	    }
	    mysql_close($link);
	}
    }
?>
<hr>
<p>Generated by <a href="http://rpmfind.net/linux/rpm2html/">rpm2html 1.5</a>
<p><a href="mailto:Daniel.Veillard@imag.fr">Daniel Veillard</a>

</body>
</html>


Webmaster