rendered paste body<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>The Angstrom Distribution | Embedded power</title><meta http-equiv="Content-Style-Type" content="text/css" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><style type="text/css" media="all">@import "/misc/drupal.css";</style><link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.angstrom-distribution.org/blogapi/rsd" /><style type="text/css" media="all">@import "/themes/connections/style.css";</style><link rel="stylesheet" type="text/css" href="foo.css"/><body ><div id="page"><?php// (c) Koen Kooi 2006// (c) Marcin Juszkiewicz 2006/* This php script is intended to do the following: * o have searchable webfronted for the feed like packages.ubuntu.com * o provide feed-management functionality * o allow uploading of new software */error_reporting(E_ALL);$db_name = "/home/hrw/public_html/repo/feeds.db";$db = sqlite_open($db_name);//initialiaze dbif (db_table_exists ($db, 'packages') == "FALSE"){ print("creating packages table<br>\n"); sqlite_query ($db, "CREATE TABLE packages ( p_name varchar(50), p_version varchar(10), p_arch varchar(12), p_depends varchar(50), p_maintainer varchar(50), p_homepage varchar(100), p_section varchar(20), p_replaces varchar(50), p_provides varchar(50), p_conflicts varchar(50), p_size int(10), p_md5 char(32), p_source varchar(500), p_feed varchar(20), p_file varchar(100), p_desc varchar(1000) )");}if (db_table_exists ($db, 'feeds') == "FALSE"){ print("creating feeds table<br>\n"); sqlite_query ($db, "CREATE TABLE feeds ( f_name varchar(20), f_uri varchar(100), f_comments varchar(500) )"); test_insert_ipkgs ($db) ;}//close the dbsqlite_close($db);$action = '';if(isset($_GET['action'])){ $action = $_GET['action'];}switch($action){ case "details": $ipkgoutput = pkgdetails ($_GET['pnm']); break; case "package": $edit = $_POST['edit']; $searchword = $edit['searchword']; $ipkgoutput = searchpkg ("%$searchword%"); break; case "section": $ipkgoutput = searchsection($_GET['section']); break; case "letter": $letter = $_GET['g']; $ipkgoutput = searchletter ($letter); break; default: $ipkgoutput = searchletter ("a"); break;}print $ipkgoutput;print("</div></body></html>\n");function db_table_exists ($db, $mytable){ if($query = sqlite_query ($db, "SELECT name FROM sqlite_master WHERE type='table'")) { $tables = sqlite_fetch_all ($query, SQLITE_ASSOC); if (!$tables) { return ("FALSE"); } else { foreach ($tables as $table) { if ($table['name'] == $mytable) { return ("TRUE"); } } } } // function which is expected to return something need to return something always return ("FALSE");}function get_archs_fromdb(){ return db_query("SELECT DISTINCT p_arch FROM packagess ORDER BY p_arch");}function db_query($query){ $result = FALSE; $db_name = "/home/hrw/public_html/repo/feeds.db"; if($db_h = sqlite_open($db_name)) { if($query_h = sqlite_query ($db_h, $query)) { $result = sqlite_fetch_all ($query_h, SQLITE_ASSOC); } sqlite_close($db_h); } return ($result);}function test_insert_ipkgs ($db) { sqlite_query($db, "INSERT INTO feeds (f_name, f_uri) VALUES ('unstable-base', 'http://www.angstrom-distribution.org/unstable/feed/base/') "); sqlite_query($db, "INSERT INTO feeds (f_name, f_uri) VALUES ('unstable-perl', 'http://www.angstrom-distribution.org/unstable/feed/perl/') "); sqlite_query($db, "INSERT INTO feeds (f_name, f_uri) VALUES ('unstable-python', 'http://www.angstrom-distribution.org/unstable/feed/python/') "); sqlite_query($db, "INSERT INTO feeds (f_name, f_uri) VALUES ('unstable-debug', 'http://www.angstrom-distribution.org/unstable/feed/debug/') "); sqlite_query($db, "INSERT INTO feeds (f_name, f_uri) VALUES ('unstable-gstreamer', 'http://www.angstrom-distribution.org/unstable/feed/gstreamer/') "); if ($handle = opendir('/var/www/angstrom/unstable/feed/machine/')) { while (false !== ($file = readdir($handle))) { if($file != ".." && $file != ".") { sqlite_query($db, "INSERT INTO feeds (f_name, f_uri) VALUES ('unstable-machine-$file', 'http://www.angstrom-distribution.org/unstable/feed/machine/$file/') "); } } closedir($handle); }}function searchletter($searchletter){ $ipkgoutput = "<center>"; $alfabet = array('a','b','c','d','e','f','g','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y'); foreach($alfabet as $letter) { if($letter == $searchletter) { $ipkgoutput .= sprintf(" %s |", $letter ); } else { $ipkgoutput .= sprintf(" <a href='?action=letter&g=%s'>%s</a> |", $letter, $letter ); } } $ipkgoutput .= " <a href='?action=letter&g=z'>z</a></center>\n"; if(isset($searchletter)) { $ipkgoutput .= searchpkg("$searchletter%"); } return $ipkgoutput;}function searchpkg ($searchword){ $result = db_query("SELECT DISTINCT p_name,p_desc,p_section FROM packages WHERE p_name LIKE '$searchword' ORDER BY p_name ASC;"); $ipkgoutput = "<p><p><table border=0>\n"; $ipkgoutput .="<tr><td><b>Package</b></td><td><b>  Section</b></td><td><b>  Description</b></td>\n"; foreach($result as $package) { if (!strstr ($package['p_name'], 'locale')) { if(strlen($package['p_desc'])> 40) $package['p_desc'] = substr($package['p_desc'], 0, 40) . '...'; $ipkgoutput .= sprintf ("<tr><td valign='top'><a href='?action=details&pnm=%s'>%s</a></td><td valign='top'>  <a href=\"?action=section§ion=%s\">%s</a></td><td>  %s</td>\n", urlencode($package['p_name']), $package['p_name'], $package['p_section'], $package['p_section'], $package['p_desc']); } } $ipkgoutput .= '</table>'; return $ipkgoutput;}function searchsection($section){ $result= db_query("SELECT DISTINCT p_name,p_desc,p_section FROM packages WHERE p_section like '$section%' order by p_section asc, p_name asc;"); $ipkgoutput = "<p><p><table border=0>\n"; $ipkgoutput .= "<tr><td><b>Package</b></td><td><b>  Section</b></td><td><b>  Description</b></td>"; foreach($result as $package) { if (!strstr ($package['p_name'], 'locale')) { if(strlen($package['p_desc'])> 40) { $package['p_desc'] = substr($package['p_desc'],0,40)."..."; } $ipkgoutput .= sprintf ("<tr><td valign='top'><a href='?action=details&pnm=%s'>%s</a></td><td valign='top'> <a href=\"?action=section§ion=%s\">%s</a></td><td>  %s</td>", urlencode($package['p_name']), $package['p_name'], $package['p_section'], $package['p_section'], $package['p_desc']); }//if strstr } $ipkgoutput .= "</table>\n"; return $ipkgoutput;}function pkgdetails ($package){ $details = ""; $result = db_query("SELECT * FROM packages,feeds WHERE packages.p_name='$package' AND feeds.f_name = packages.p_feed"); // display first result if ($result[0]['packages.p_file'] != '') { $package = $result[0]; $details .= sprintf("<p><h2>Package details for %s %s</h2>\n", $package['packages.p_name'], $package['packages.p_version']); $details .= sprintf ("<p>\n<p>\n<table><td>%s</td></table>", $package['packages.p_desc']); $details .= "<p>\n<p>\n<table border=0>\n"; $maintainer = $package['packages.p_maintainer']; if (strpos ($maintainer, '@') !== false) { $emailstart = strpos ($maintainer, '<'); $emailend = strrpos ($maintainer, '>'); if (!(($emailstart == false) or ($emailend == false))) { $email = substr ($maintainer, $emailstart + 1, $emailend - $emailstart - 1); $email = ereg_replace ('@', ' () ', $email); $maintainer = substr ($maintainer, 0, $emailstart + 1).$email. substr ($maintainer, $emailend, count ($maintainer)); $maintainer = str_replace ('<', '<', $maintainer); $maintainer = str_replace ('\>', '>', $maintainer); } } $details .= sprintf ("\n<tr><td><b>Maintainer: </b></td><td>%s</td>", $maintainer); $details .= sprintf ("\n<tr><td><b>Homepage: </b></td><td>%s</td>",$package['packages.p_homepage']); $details .= sprintf ("\n<tr><td><b>Section:</b></td><td><a href='?action=section§ion=%s'>%s</td>", $package['packages.p_section'],$package['packages.p_section']); $details .= sprintf ("\n<tr><td valign='top'><b>Depends:</b></td><td>%s</td>", addlinks ($package['packages.p_depends'])); $details .= sprintf ("\n<tr><td><b>Replaces:</b></td><td>%s</td>", addlinks ($package['packages.p_replaces'])); $details .= sprintf ("\n<tr><td><b>Provides:</b></td><td>%s</td>", addlinks ($package['packages.p_provides'])); $details .= sprintf ("\n<tr><td><b>Conflicts:</b></td><td>%s</td>", addlinks ($package['packages.p_conflicts'])); $size = $package['packages.p_size']; if(strlen($size) > 6) { $size = sprintf("%02.2f Megabytes", $size / (1024 * 1024)); } if(strlen($size) > 3 && strlen($size) < 7) { $size = sprintf("%02.2f Kilobytes", $size / (1024 )); } if(strlen($size) < 4) { $size = sprintf("%s Bytes", $size); } $details .= sprintf ("\n<tr><td><b>Size:</b></td><td>%s</td></tr></table>", $size); $sourcearray = explode (" ", $package['packages.p_source']); $details .= "\n<p><b>Source:</b></p><ul>"; foreach ($sourcearray as $key => $source_url) { if (substr ($source_url, 0, 4) == "http" || substr ($source_url, 0, 3) == "ftp") { $url_parts = parse_url($source_url); $details .= sprintf ("<li><a href='%s'>%s</a></li>", $source_url, array_pop(explode('/', $url_parts['path']))); } else { $details .= sprintf ("<li>%s</li>", $source_url); } } $details .= "</ul>\n<p><b>Available versions and architectures:</b></p><ul>\n"; foreach($result as $packages_a) { $details .= sprintf("\n<li><a href='%s'>%s %s</a> for %s</li>\n", $packages_a['feeds.f_uri'].$packages_a['packages.p_file'], $packages_a['packages.p_name'], $packages_a['packages.p_version'], $packages_a['packages.p_arch']); } $details .= "</ul>\n"; } else { $details = "<h3>Sorry, package not found\n</h3><a href='/repo/repo.php'>return</a>\n"; } return $details;}function addlinks ($input){ // split input elements up $elements = preg_split ('/[\s,]+/', $input); $offset = 0; foreach ($elements as $element) { // skip version information and empty elements (shouldn't happend) if (!eregi('^([0-9a-z\-]*)$', $element) OR empty($element)) { continue; } // do we have this package in the db? $result = db_query ("SELECT DISTINCT p_name FROM packages WHERE p_name='{$element}'"); if($result[0]['p_name']) { // find position of string in line $pos = strpos ($input, $element, $offset); $link = sprintf("<a href=\"?action=details&pnm=%s\">$element</a>", urlencode ($element)); // replace element with a link $input = substr_replace ($input, $link, $pos, strlen ($element)); // update offset $offset = ($pos + strlen ($link)); } else { $offset += strlen ($element); } } return $input;} // add_links?>