]> git.pld-linux.org Git - projects/buildlogs.git/blame - index.php
i486 replaced with x32 (baggins?)
[projects/buildlogs.git] / index.php
CommitLineData
a7f1713c 1<?php
2ob_start("ob_gzhandler", 1);
3$buildlogs_server = "buildlogs.pld-linux.org";
a6cc6dd6 4$url = "index.php";
a7f1713c 5$fail_or_ok = array( "FAIL", "OK" );
6/*
9dcdc6b4 7$database = 'sqlite:/home/services/ftp/buildlogs2.db';
a7f1713c 8$root_directory = "/home/services/ftp/pub/pld-buildlogs";
9*/
10
11// $database, $root_directory and others are taken from buildlogs.inc
f27dac56 12include('buildlogs.inc');
a7f1713c 13
14/* It should be set */
15
16$langs["en_US"]["charset"]="ISO-8859-1";
17$langs["pl_PL"]["charset"]="ISO-8859-2";
18
19$lang="en_US";
20if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"]))
21{
22 $rows=explode(";",$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
23 $rows=explode(",",$rows[0]);
24 $lang_detected=rtrim($rows[0]);
25} else if (preg_match("/opera/i",$_SERVER["HTTP_USER_AGENT"]))
26{
27 $lang_detected=preg_replace("/.*\[(.*)\].*/i","\\1",$_SERVER["HTTP_USER_AGENT"]);
28}
29
30// FIXME - some array
31$lang_detected=preg_replace("/^pl$/i","pl_PL",$lang_detected);
32
33if (isset($lang_detected) && isset($langs[$lang_detected]))
34{
35 $lang=$lang_detected;
36}
37
38if (isset($_GET["lang"]))$_SESSION["lang"]=$_GET["lang"];
39if (isset($_SESSION["lang"]))$lang=$_SESSION["lang"];
40
41putenv("LANG=$lang");
42setlocale(LC_ALL,$lang);
43bindtextdomain("messages","locale");
44textdomain("messages");
45
46if (isset($_GET["dist"]) && isset($_GET["arch"]))
47{
48 $dist = basename($_GET["dist"]);
49 $arch = basename($_GET["arch"]);
50}
51
52if (isset($_POST["dist"])) $dist = basename($_POST["dist"]);
53if (isset($_POST["arch"])) $arch = basename($_POST["arch"]);
54
55if (isset($_GET["name"])) {
8f0e31ba 56 $name_url = urlencode($_GET["name"]);
a7f1713c 57 $name = basename($_GET["name"]);
58}
59if (isset($_GET["ok"]))$ok=(int)$_GET["ok"];
60else $ok="";
61if (isset($_GET["ns"]))$ns=(int)$_GET["ns"];
62else $ns="";
63if (isset($_GET["cnt"]))$cnt=(int)$_GET["cnt"];
64else $cnt = 50;
65if (isset($_GET["action"]))$action=$_GET["action"];
66else $action="";
67if (isset($_GET["off"]))$off=(int)$_GET["off"];
68else $off = 0;
69if (isset($_GET["id"]))$id=$_GET["id"];
70
71if (isset($_POST["str"]))$str=$_POST["str"];
72if (isset($_POST["action"]))$action=$_POST["action"];
73
dbb4d4ae
AM
74if ($arch == "src")
75 $arch = "SRPMS";
76
a7f1713c 77function myheader()
78{
79echo '<' . '?xml version="1.0" encoding="' . _("ISO-8859-1") .'"?' . ">\n";
80echo '<' . '?xml-stylesheet href="#internalStyle" type="text/css"?' . ">\n";
81?>
82<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
83 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
84<html xmlns="http://www.w3.org/1999/xhtml">
85 <head>
86 <title>PLD Build Logs</title>
87 <?php echo '<meta http-equiv="Content-type" content="text/html; charset=' . _("ISO-8859-1") .'"/>' ."\n";?>
88 <style type="text/css"><!--
89A { text-decoration: none; }
90A:hover { text-decoration: underline; }
2ba2cc91
ER
91H1 { font-family: arial,helvetica,sans-serif;
92 font-size: 20pt;
a7f1713c 93 font-weight: bold;}
2ba2cc91
ER
94H2 { font-family: arial,helvetica,sans-serif;
95 font-size: 18pt;
a7f1713c 96 font-weight: bold;}
2ba2cc91 97BODY,TD { font-family: arial,helvetica,sans-serif;
a7f1713c 98 font-size: 13pt; }
2ba2cc91
ER
99TH { font-family: arial,helvetica,sans-serif;
100 font-size: 13pt;
a7f1713c 101 font-weight: bold; }
2ba2cc91
ER
102/* error lines from build logs */
103.error {
104 background-color: #b00;
105}
e926de50
ER
106.verbose {
107 color: #886;
108}
109.section {
110 color: #111;
111 background-color: #161;
112}
d9365f95
ER
113.changelog a {
114 color: #fff;
115}
a7f1713c 116//-->
117</style>
118 </head>
119 <!-- Diffrent color for visited link doesn't make much sense here...
120 this page is autogenerated and it might be misleading after some
121 build log changes. -->
122 <body bgcolor="#ffffff" text="#000000" link="#5f26cd" vlink="#5f26cd">
123<?php
124}
125
126function start_pre()
127{
128 echo "<table cellpadding=\"10\"><tr><td bgcolor=\"#000000\">".
05eb5093 129 "<font color=\"#cccccc\"><pre style=\"white-space: pre-line; word-break: break-all;\">";
a7f1713c 130}
131
132function end_pre()
133{
134 echo "</pre></font></td></tr></table>\n";
135}
136
137function trailer()
138{
139 echo "</body></html>";
140}
141
142
143function mydie($msg)
144{
145 echo "Fatal error: $msg";
146}
147
148
149
150function list_logs()
151{
152 global $database;
153 global $arch, $dist, $ok;
154 global $big_url, $ns;
155 global $off, $cnt, $root_directory, $url;
156
157 $big_url = "$url?dist=$dist&amp;arch=$arch&amp;ok=$ok&amp;ns=$ns&amp;cnt=$cnt";
158
159 if ($ok == 1) {
160 echo "<h1>"._("Listing of")." $dist/$arch/OK "
161 ."(<a href=\"$big_url&amp;ok=0\">"._("fail")."</a>)</h1>\n";
162 } else {
163 echo "<h1>"._("Listing of")." $dist/$arch/FAIL "
164 ."(<a href=\"$big_url&amp;ok=1\">"._("ok")."</a>)</h1>\n";
165 }
166
167 echo "<div align=\"center\"><table cols=\"4\" border=\"0\" cellspacing=\"1\" ".
168 "cellpadding=\"3\" bgcolor=\"#000000\" width=\"90%\">\n";
169 echo "<tr><th bgcolor=\"#CCCCFF\" align=\"right\" width=\"1%\">"._("No.")."</th>".
170 "<th bgcolor=\"#CCCCFF\" align=\"left\" width=\"80%\">"._("Log File").
171 "[<a href=\"$big_url&amp;ns=1\">"._("sort")."</a>]</th>".
172 "<th bgcolor=\"#CCCCFF\" align=\"right\" width=\"15%\">"._("Size")."</th> ".
173 "<th bgcolor=\"#CCCCFF\" align=\"left\">"._("Age").
174 "[<a href=\"$big_url&amp;ns=0\">"._("sort")."</a>]</th>".
175 "</tr>";
176
177 if ($ns != 1) $ns = 0;
178 if (!isset($ok)) $ok = 0;
179// if (!isset($off)) $off = 0;
180// if (!isset($cnt)) $cnt = 50;
181 if ($ns == 0) $order = "mtime DESC";
182 else $order = "name";
183
184 $query = "SELECT log_id, dist, arch, ok, name, mtime, size, id FROM logs WHERE "
185 . "dist = '$dist' AND arch = '$arch' AND ok = $ok ORDER BY $order LIMIT $cnt OFFSET $off";
186
187 try {
188 $dbh = new PDO("$database");
189 } catch (PDOException $e) {
190 mydie("new PDO: " . $e->getMessage());
191 }
192 $now = time();
193 $i = $off;
194 foreach ($dbh->query("$query") as $row) {
8f0e31ba 195 $name = $row["name"];
196 $id = $row["id"];
197 $dist = $row["dist"];
198 $arch = $row["arch"];
199 $f = $name;
200 $name_url = urlencode($name);
a7f1713c 201 $t = $now - $row["mtime"];
202 $s = $row["size"];
203 $h = $row["log_id"];
204
205 $t /= 60;
206 if ($t >= 60) {
207 $t /= 60;
208 if ($t >= 24) {
209 $t /= 24;
210 $t = round($t);
211 $t = $t . "&nbsp;" . ngettext("day","days",$t);
212 } else {
213 $t = round($t);
214 $t = $t . "&nbsp;" . ngettext("hour","hours",$t);
215 }
216 } else {
217 $t = round($t);
218 $t = $t . "&nbsp;" . ngettext("minute","minutes",$t);
219 }
8f0e31ba 220 $u = "$url?dist=$dist&amp;arch=$arch&amp;ok=$ok&amp;name=$name_url&amp;id=$id";
a7f1713c 221 echo "<tr><td bgcolor=\"#CCCCCC\" align=\"right\">".($i+1).".</td>".
222 "<td bgcolor=\"#CCCCCC\"><a href=\"$u\">$f</a> ".
223 "[<a href=\"$u&amp;action=text\">"._("text")."</a> | ".
224 "<a href=\"$u&amp;action=tail\">"._("tail")."</a>]".
225 "</td><td bgcolor=\"#CCCCCC\" align=\"right\">".
226 "$s</td><td bgcolor=\"#CCCCCC\">$t</td></tr>\n";
227 $i++;
228 }
229 $count = $i - $off;
230 echo "</table></div>\n";
231
232 $backarr = "&lt;&lt;&lt;&nbsp;";
233 $back = _("Page back");
234 $forward = _("Page forward");
235 $forwardarr = "&nbsp;&gt;&gt;&gt;";
236
237 echo "<p><table width=\"90%\" align=\"center\"><tr><td align=\"left\" width=\"1%\">";
238
239 if ($off > 0) {
240 $noff = $off - $count;
241 if ($noff < 0)
242 $noff = 0;
243 $hrefurl = "<a href=\"$big_url&amp;off=$noff\">";
244 echo "$hrefurl$backarr</a></td><td align=\"left\">$hrefurl$back</a>";
245 } else {
246 echo "$backarr</td><td align=\"left\">$back";
247 }
248
249 echo "</td>\n<td align=\"center\">";
250
251 if (isset($dist) && isset($arch)) {
252 echo "[<a href=\"$big_url&amp;action=qa\">"._("View <quot>rpm&nbsp;-qa</quot> of builder")."</a>]";
253 } else {
254 echo "&nbsp;";
255 }
256
257 echo "</td>\n<td align=right>";
258 if ($cnt == $count) {
259 $noff = $off + $cnt;
260 if ($noff < 0)
261 $noff = 0;
262 $hrefurl = "<a href=\"$big_url&amp;off=$noff\">";
263 echo "$hrefurl$forward</a></td><td align=right width=1%>$hrefurl$forwardarr</a>";
264 } else {
265 echo "$forward</td><td align=right width=1%>$forwardarr";
266 }
267 echo "</td>\n</tr></table></p>";
268}
269
270function file_name()
271{
8f0e31ba 272 global $ok, $dist, $arch, $name, $name_url, $id;
a7f1713c 273
274 if (isset($name) && isset($ok) && isset($arch) && isset($dist)) {
275 if (isset($id) && $id != '') {
276 $name = $name . ",$id";
277 }
278 $w = $ok ? "OK" : "FAIL";
279 return "$dist/$arch/$w/$name.bz2";
280 }
281}
282
283function dump_log($tail)
284{
8f0e31ba 285 global $ok, $url, $dist, $arch, $name, $name_url;
a7f1713c 286 global $root_directory, $big_url, $ns, $id, $cnt, $off;
287 global $buildlogs_server;
288
289 $f = file_name();
290
291 if ($f == false)
292 return;
293
294 $df = preg_replace("/.*\/([^\/]*)$/", "\\1", $f);
295 $df = preg_replace("/\.(bz2|gz)$/", "", $df);
296
297 echo "<h1>$df</h1>";
298
d9365f95 299 echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"1\" bgcolor=\"#000000\" width=\"100%\">";
a7f1713c 300
301 function one_item($h, $t) {
302 echo "<tr><td bgcolor=\"#ccccff\">$h:</td>".
303 "<td bgcolor=\"#cccccc\">$t</td></tr>";
304 }
305
306 function href($h, $c) {
307 return "<a href=\"$h\">$c</a>";
308 }
309
2ba2cc91
ER
310 one_item(_("Status"), ($ok == 1 ?
311 "<font color=\"green\"><b>"._("OK")."</b></font>" :
a7f1713c 312 "<font color=\"red\"><b>"._("Failed")."</b></a>"));
2ba2cc91
ER
313 one_item(_("Source URL"),
314 href("ftp://$buildlogs_server/$f",
a7f1713c 315 "ftp://$buildlogs_server/$f"));
316
317 $big_url = "$url?dist=$dist&amp;arch=$arch&amp;ok=$ok&amp;ns=$ns&amp;cnt=$cnt";
318 $bu = "$big_url&amp;off=$off";
319
2ba2cc91 320 one_item(_("text/plain URL"),
8f0e31ba 321 href("$bu&amp;name=$name_url&amp;id=$id&amp;action=text",
a7f1713c 322 _("View!")));
323 if ($tail) {
2ba2cc91 324 one_item(_("full text"),
8f0e31ba 325 href("$bu&amp;name=$name_url&amp;id=$id",
a7f1713c 326 _("View!")));
327 }
328
329 if (isset($dist) && isset($arch)) {
330 one_item(_("rpm -qa of builder"), href("$bu&amp;action=qa", _("View!")));
331 } else {
332 one_item(_("rpm -qa of builder"), _("Not available"));
333 }
35a4c15e 334 one_item("Date", date("Y/m/d H:i:s", filemtime("$root_directory/$f")));
a7f1713c 335 /*
2ba2cc91 336 echo "<tr><td>Here:</td><td>" .
a7f1713c 337 "<a href=\"$url?idx=$idx&amp;ok=$ok&amp;id=$id\">".
338 "http://" . getenv("SERVER_NAME") .
339 getenv("SCRIPT_NAME") . "?idx=$idx&amp;ok=$ok&amp;id=$id</a>" .
340 "</td></tr>"; */
341
a7f1713c 342
343
344 # what can I say beside PHP suxx? how the fuck should I create
345 # bidirectional pipe? gotta use wget
346
347 if (preg_match("/\.bz2$/", $f)) {
348 $filter = "bzcat";
349 } elseif (preg_match("/\.gz$/", $f)) {
350 $filter = "zcat";
351 } else {
352 $filter = "cat";
353 }
354
8f0e31ba 355 $cmd = "$filter '$root_directory/$f'";
a7f1713c 356 $fd = popen($cmd, "r");
e926de50 357 $toc = array();
e69f53b7 358 $err = array();
4a2b3f54
AM
359 $first_cut = false;
360 $first_cut_done = false;
b530f30e 361 $time = "";
e69f53b7 362 $out_buf = array();
77aded7c 363 $out_buf_size = 0;
a7f1713c 364 while (($s = fgets($fd, 102400)) != false) {
015d7b6a 365
e69f53b7
AM
366 $toc_elem = false;
367 $err_elem = false;
368
a7f1713c 369 $s = htmlspecialchars($s);
2ba2cc91 370 // highlight errors
1c26089b 371 if (preg_match("/(?:fail|error(s|\sCS\d+)?):/i", $s)) {
4a2b3f54 372 $first_cut = true;
283f4590 373 $err_count++;
e69f53b7
AM
374 $toc_elem = "error $err_count";
375 $err_elem = $s;
376 $s = "<span class=error id=error-$err_count>$s</span>";
3aa6202c 377 } elseif (preg_match("/(?:undefined reference to|recipe for target '.*?' failed)/i", $s)) {
4a2b3f54 378 $first_cut = true;
e69f53b7
AM
379 $err_count++;
380 $toc_elem = "error $err_count";
381 $err_elem = $s;
98e99288 382 $s = "<span class=error id=error-$err_count>$s</span>";
1c26089b
ER
383 } elseif (preg_match("#^\+ /usr/bin/make\b.*\b(?P<target>check)\b#", $s, $m)) {
384 // rpm build section
e69f53b7
AM
385 $toc_elem = "make {$m['target']}";
386 $err_elem = $s;
1c26089b 387 $s = "<span class=line id=make-{$m['target']}>$s</span>";
d9365f95
ER
388 } elseif (preg_match('/^(?P<line>- For complete changelog see:) (?P<link>.+)$/', $s, $m)) {
389 // rpm changelog link
390 $link = "<a href=\"{$m['link']}\">{$m['link']}</a>";
391 $s = "<span class=changelog>{$m['line']} $link<br/></span>";
392 } elseif (preg_match('/^(?P<line>\* \w{3} \w{3} [ \d]{2} \d{4} .*?) (?P<hash>[a-z0-9]{7})$/', $s, $m)) {
393 // rpm changelogs
394 $url = "http://git.pld-linux.org/?p=packages/{$name_url}.git;a=commitdiff;h={$m['hash']}";
395 $link = "<a href=\"$url\">{$m['hash']}</a>";
396 $s = "<span class=changelog>{$m['line']} $link<br/></span>";
e926de50
ER
397 } elseif (substr($s, 0, 2) == "+ ") {
398 // shell verbose
399 $s = "<span class=verbose>$s</span>";
400 } elseif (preg_match("/^Executing\(%(?P<section>\w+)\)/", $s, $m)) {
401 // rpm build section
e69f53b7
AM
402 $toc_elem = $m['section'];
403 $err_elem = $s;
98e99288 404 $s = "<span class=section id={$m['section']}>$s</span>";
901abf2c 405 } elseif (preg_match("/^Processing files: (?P<pkg>(?P<name>.+)-[^-]+-[^-]+)/", $s, $m)) {
4a2b3f54 406 $first_cut = true;
901abf2c 407 // processing files
e69f53b7
AM
408 $toc_elem = "files ".$m['name'];
409 $err_elem = $s;
98e99288 410 $s = "<span class=section id=files-{$m['name']}>$s</span>";
b530f30e
ER
411 } elseif (preg_match("/^ended at: (?P<date>.+), done in (?P<time>[\d:.]+)/", $s, $m)) {
412 $time = $m['time'];
2ba2cc91 413 }
e69f53b7 414
4a2b3f54 415 $out_buf[] = $s;
77aded7c 416 $out_buf_size++;
015d7b6a
AM
417
418 // if error/processing found truncate early but keep last 100 lines before error
4a2b3f54 419 if ($tail && $first_cut && !$first_cut_done && $out_buf_size > 100) {
015d7b6a
AM
420 array_splice($out_buf, 0, $out_buf_size - 100);
421 $out_buf_size = 100;
4a2b3f54 422 $first_cut_done = true;
015d7b6a
AM
423 }
424
e69f53b7 425 // if (not in tail mode) or (in tail mode but we have an error)
4a2b3f54 426 if (!$tail || $first_cut) {
e69f53b7
AM
427 if ($toc_elem)
428 $toc[] = $toc_elem;
429 if ($err_elem)
430 $err[] = $err_elem;
e69f53b7 431 }
a7f1713c 432 }
a7f1713c 433 pclose($fd);
e69f53b7 434
015d7b6a 435 // no errors found, no processing found but we are in tail mode
4a2b3f54 436 if ($tail && !$first_cut_done && $out_buf_size > 100) {
015d7b6a
AM
437 array_splice($out_buf, 0, $out_buf_size - 100);
438 $out_buf_size = 100;
439 }
440
77aded7c 441 $code = join('', $out_buf);
e926de50 442
b530f30e
ER
443 if ($time) {
444 one_item(_("Runtime"), $time);
445 }
446
f43fc7b7
ER
447 echo "</table>";
448
e926de50
ER
449 if (!empty($toc)) {
450 echo "<h2>"._("Toc:")."</h2>";
451 echo "<ul class=toc>";
98e99288 452 foreach ($toc as $i => $section) {
901abf2c
ER
453 $id = str_replace(" ", "-", $section);
454 echo "<li><a href=#{$id}>{$section}</a></li>";
98e99288 455 echo "<code>{$err[$i]}</code>";
e926de50
ER
456 }
457 echo "</ul>";
458 }
459
460 echo "<h2>"._("Content:")."</h2>";
461
462 start_pre();
463 echo $code;
464 end_pre();
a7f1713c 465
466?>
467 <table width="100%">
468 <tr>
469 <td align=left>
470 [<a href="<?php echo $bu; ?>"><?=_("Back to list of logs")?></a>]
471 </td>
472 <td align=right>
2ba2cc91 473 [<a href="<?php echo "$bu&amp;action=qa"
a7f1713c 474 ?>"><?=_("View rpm -qa of builder")?></a>]
475 </td>
476 </tr>
477 </table>
478<?php
479
480}
481
482function dump_text()
483{
484 global $root_directory;
485 global $buildlogs_server;
486
487 header("Content-type: text/plain");
488
489 $f = file_name();
490 if ($f == false)
491 return;
492
493 echo "# src : ftp://$buildlogs_server/$f\n";
2ba2cc91 494 echo "# date : " .
a7f1713c 495 date("Y/m/d H:i:s", filemtime("$root_directory/$f")) . "\n";
496
497 if (preg_match("/\.bz2$/", $f)) {
82d6f6b1
AM
498 if (is_executable("/usr/bin/lbzcat"))
499 $filter = "lbzcat";
500 else
501 $filter = "bzcat";
a7f1713c 502 } elseif (preg_match("/\.gz$/", $f)) {
503 $filter = "zcat";
504 } else {
505 $filter = "cat";
506 }
507
8f0e31ba 508 $cmd = "$filter '$root_directory/$f'";
a7f1713c 509 $fd = popen($cmd, "r");
510 while (($s = fgets($fd, 1000)) != false) {
511 echo $s;
512 }
513 pclose($fd);
514}
515
516function list_archs()
517{
518 global $addr, $url, $cnt,$ok,$ns;
519
520 if (!isset($cnt))
521 $cnt = 50;
522
523 $big_url = "$url?ok=$ok&amp;ns=$ns&amp;cnt=$cnt";
524
525 echo "<table width=\"100%\" border=\"0\">\n";
526 echo "<tr><td bgcolor=\"#cccccc\" nowrap=\"nowrap\">"._("Failed")."</td><td bgcolor=\"#cccccc\">"._("Ok")."</td></tr>\n";
a918ff2f
AM
527 foreach ($addr as $dist => $ddist) {
528 echo "<tr><td colspan=2 nowrap=\"nowrap\"><hr/></td></tr>\n";
529 foreach ($ddist as $arch) {
530 echo "<tr><td nowrap=\"nowrap\">".
531 "<a href=\"$url?dist=$dist&amp;arch=$arch&amp;ok=0&amp;cnt=$cnt\">
532 $dist/$arch</a></td><td nowrap=\"nowrap\">".
533 "[<a href=\"$url?dist=$dist&amp;arch=$arch&amp;ok=1&amp;cnt=$cnt\">OK</a>]</td>".
534 #"<td>[<a href=\"$url?idx=$i&amp;action=qa\">qa</a>]</td>".
535 "</tr>\n";
536 }
537 }
a7f1713c 538 echo "</table><hr />\n";
539
540 echo "<div align=\"center\">";
541 echo "<a href=\"$big_url&amp;action=adv_search\">"._("Advanced Search")."</a><br />\n";
542
543 echo "<a href=\"$url\">main()</a><hr />\n";
544 echo "<a href=\"http://www.pld-linux.org/\"><img src=\"powpld.png\" ".
4a2b3f54 545 "alt=\""._("Powered by PLD Linux")."\" border=\"0\" /></a><br />\n" .
60845d0a 546 "<small>(c) 2002-". date("Y") . " ".
a7f1713c 547 "<a href=\"mailto:feedback@pld-linux.org\">PLD&nbsp;Team</a><br />\n".
82d6f6b1 548 '$Revision: 1.37 $'.
a7f1713c 549 "</small></div>\n";
550
551 # smile ;)
552 echo "<div align=\"center\"><small>";
553 $pow = array("vim", "php", "brain", "power", "electricity",
554 "coffee", "ufo", "penguin", "GNOME", "ELF", "DWARF",
555 "voodoo magic", "Linux", "x-files", "X", "foobar",
2ba2cc91 556 "/dev/null", "/dev/zero", "/dev/drzewo",
a7f1713c 557 "Leppe'", "matrix", "Neo", "PDP-11",
558 "Ken", "GNU antilope", "PDP-7", "ITS", "Multics",
2ba2cc91 559 "foobarbaz", "ed", "Joe", "Unix conspiracy",
a7f1713c 560 "overclock", "The Right Thing",
561 "The Bad Thing", "Star Treck", "NSA", "NASA",
562 "achelon", "VAX", "Real Programmer",
563 "Real Operating System", "Real Computer",
564 "computron", "bogon", "quantum bogodynamics",
565 "BOFH", "/dev/ill", "nasi tu byli",
566 "Paranoid Android", "Lunatic Corp", "Parallel thinking",
567 "sfistak", "Linus", "The Golden Path", "Dark Side of the Force",
568 "Przewodniczacego Lepper-a", "KDE", "Microsoft Windows 2003", "sqlite3",
3cf4f3e8 569 "synergy", "six Cray XMT Supercomputers"
a7f1713c 570 # feel free to add sth if you change this file ;)
571 );
572 echo _("Powered by")." ";
573 $max = 1;
574 for ($i = 0; $i < $max; $i++) {
575 $x = rand(0, count($pow) - 1);
576 if ($pow[$x] == "") $i--;
577 else echo $pow[$x] . ($i == $max - 1 ? "." : ", ");
578 $pow[$x] = "";
579 }
580 echo "</small></div>";
581
774eb927
AM
582 echo "<div align=\"center\"><small>";
583 echo "Your IP: " . $_SERVER['REMOTE_ADDR'];
584 echo "</small></div>";
585
a7f1713c 586 if (isset($dist) && isset($arch)) {
a6cc6dd6 587 echo "<form action=\"index.php\" method=\"post\">";
a7f1713c 588 echo "<input type=\"hidden\" name=\"dist\" value=\"$dist\" />";
589 echo "<input type=\"hidden\" name=\"arch\" value=\"$arch\" />";
590 echo "<input type=\"hidden\" name=\"action\" value=\"sqa\" />";
591 echo "<input type=\"text\" size=\"14\" name=\"str\" /><br />";
592 echo "<input type=\"submit\" name=\"submit\" value=\""._("Search rpmqa!")."\" />";
593 echo "</form>";
594 }
595}
596
597function get_qa()
598{
599 global $dist, $arch;
600
601 if (!isset($dist) || !isset($arch))
602 return false;
f0694a44 603 $addr = "http://ftp1.pld-linux.org/dists/$dist/.stat/builder/$dist/rpmqa-$arch.txt";
a7f1713c 604 return fopen("$addr", "r");
605}
606
607function search_qa()
608{
609 global $url, $str, $dist, $arch;
610
611 $f = get_qa();
612 echo "<h1>"._("Search results for")." '$str' "._("in")." $dist/$arch</h1>";
613
614 start_pre();
615
616 if ($f == 0) {
617 echo _("Sorry, cannot open.");
618 } else {
619 while (($s = fgets($f, 1000)) != false) {
ea35dacf
AM
620 if (stristr($s, "Query done at:")) {
621 echo "rpmqa database from " . strstr($s, ":") . "\n";
4a2b3f54 622 continue;
ea35dacf
AM
623 }
624
a7f1713c 625 if (stristr($s, $str))
626 echo $s;
627 }
ea35dacf 628 echo "\n/* EOF */";
a7f1713c 629 }
630 end_pre();
631}
632
633function dump_qa($plain)
634{
635 global $url, $dist, $arch;
636
637 $f = get_qa();
638
639 if ($plain) {
2ba2cc91 640 header("Content-type: text/plain");
a7f1713c 641 echo _("# rpm -qa of")." $dist/$arch\n";
642 } else {
643 echo "<h1>"._("rpm -qa of")." $a</h1>";
644 echo "<a href=\"$url?dist=$dist&amp;arch=$arch&amp;action=qatxt\">"._("text/plain version")."</a>";
645 start_pre();
646 }
647
648 if ($f == 0) {
649 echo _("Sorry, cannot open.");
650 } else {
651 while (($s = fgets($f, 1000)) != false) {
652 echo $s;
653 }
654 }
655
656 if (!$plain)
657 end_pre();
658}
659
660
661function adv_search()
662{
663 global $database, $addr, $fail_or_ok, $url, $_POST, $off, $cnt, $root_directory, $ok, $ns;
664
665 $big_url = "$url?ok=$ok&amp;ns=$ns&amp;cnt=$cnt";
666
667 echo "<script><!--\n".
668 "function checkboxToggle() {\n".
669 "for (var i=0;i<document.forms[0].elements.length;i++) {\n".
670 "var e = document.forms[0].elements[i];\n".
671 "if ((e.name != 'all') && (e.type=='checkbox'))\n".
672 "e.checked = document.forms[0].all.checked;\n".
673 "}\n }\n -->\n </script>\n";
674
675/* Shut up warnings */
8f0e31ba 676 if (!isset($_POST["n2"])) $_POST["n2"] = "";
a7f1713c 677 if (!isset($_POST["age1"])) $_POST["age1"] = "";
678 if (!isset($_POST["age2"])) $_POST["age2"] = "";
679 if (!isset($_POST["size1"])) $_POST["size1"] = "";
680 if (!isset($_POST["size2"])) $_POST["size2"] = "";
681
a6cc6dd6 682 echo "<form action=\"index.php?action=adv_search\" method=\"post\">";
a7f1713c 683
684 echo "<div align=\"center\">";
685 echo "<table border=\"0\">\n";
686 echo "<tr>\n";
687 echo "<td>"._("Package name")."</td>\n";
8f0e31ba 688 echo "<td><input type=\"text\" size=\"20\" name=\"n2\" value=\"". $_POST["name"] ."\"/></td>\n";
a7f1713c 689 echo "</tr>\n";
690
691 echo "<tr>\n";
692 echo "<td>"._("Days")."</td>\n";
693 echo "<td>"._("From").": <input type=\"text\" size=\"20\" name=\"age1\" value=\"". $_POST["age1"] ."\" /></td>\n";
694 echo "<td>"._("To").": <input type=\"text\" size=\"20\" name=\"age2\" value=\"". $_POST["age2"] ."\" /></td>\n";
695 echo "</tr>\n";
696
697 echo "<tr>\n";
698 echo "<td>"._("Size")."</td>\n";
699 echo "<td>"._("From").": <input type=\"text\" size=\"20\" name=\"size1\" value=\"". $_POST["size1"] ."\" /></td>\n";
700 echo "<td>"._("To").": <input type=\"text\" size=\"20\" name=\"size2\" value=\"". $_POST["size2"] ."\" /></td>\n";
701 echo "</tr>\n";
702
703 echo "<tr>\n";
704 echo "<td>"._("Search logs:")."</td>\n";
705 echo "</tr>\n";
706
707 echo "<tr>\n";
708 echo "<td>"._("Failed")."</td>\n";
709 echo "<td>"._("OK")."</td>\n";
710 echo "</tr>\n";
711
506bb488 712 $i = 1;
8f0e31ba 713 foreach ($addr as $dist => $ddist) {
506bb488 714 foreach ($ddist as $arch) {
a7f1713c 715 echo "<tr>\n";
716 $name="as0_".$i;
a7f1713c 717 if (!isset($_POST["$name"])) {
718 $check = " ";
719 } else {
1b44998a 720 $check=" checked='checked'";
a7f1713c 721 }
8f0e31ba 722 echo "<td><input name=\"$name\" id=\"$name\" type=\"checkbox\"$check /><label for=\"$name\">". "$dist/$arch" ."</label></td>\n";
a7f1713c 723 $name="as1_".$i;
8f0e31ba 724 if (!isset($_POST["$n2"])) {
a7f1713c 725 $check = " ";
726 } else {
1b44998a 727 $check=" checked='checked'";
a7f1713c 728 }
8f0e31ba 729 echo "<td><input name=\"$name\" id=\"$name\" type=\"checkbox\"$check /><label for=\"$name\">". "$dist/$arch" ."</label></td>\n";
a7f1713c 730 echo "</tr>\n";
506bb488 731 $i++;
732 }
a7f1713c 733 }
734
735 echo "<tr>\n";
8f0e31ba 736 echo "<td><label><input name=\"all\" type=\"checkbox\" checked=\"on\" onClick=\"checkboxToggle()\">"._("Toggle checkboxes")."</label>&nbsp;<input type=\"submit\" name=\"submit\" value=\""._("Search!")."\" /></td>";
a7f1713c 737 echo "</tr>\n";
738
739 echo "</table>\n";
740
741// if (isset($_POST["name"]) || isset($_POST["age1"]) || isset($_POST["age2"]) ||
742// isset($_POST["size1"]) || isset($_POST["size2"])
8f0e31ba 743 if (($_POST["n2"]!="") || ($_POST["age1"]!="") || ($_POST["age2"]!="") ||
a7f1713c 744 ($_POST["size1"]!="") || ($_POST["size2"]!=""))
745 {
746 $query = "SELECT log_id, dist, arch, ok, name, size, mtime, id FROM logs WHERE 1 ";
8f0e31ba 747 if ($_POST["n2"] != "") {
748 $n = addslashes($_POST["n2"]);
a7f1713c 749 $query .= "AND name LIKE '$n%' ";
750 }
751 $now = time();
752
753 if ($_POST["age1"] != "") {
754 $age = $now - (int)$_POST["age1"] * 24 * 3600;
755 $query .= "AND mtime > $age ";
756 }
757
758 if ($_POST["age2"] != "") {
759 $age = $now - (int)$_POST["age2"] * 24 * 3600;
760 $query .= "AND mtime < $age ";
761 }
762
763 if ($_POST["size1"] != "") {
764 $size = (int)$_POST["size1"];
765 $query .= "AND size > $size ";
766 }
767
768 if ($_POST["size2"] != "") {
769 $size = (int)$_POST["size2"];
770 $query .= "AND size < $size ";
771 }
772
773 $or = "AND (";
506bb488 774 $i = 1;
8f0e31ba 775 foreach ($addr as $dist => $ddist) {
506bb488 776 foreach ($ddist as $arch) {
777 for ($j = 0; $j < 2; $j++) {
778 if (isset($_POST["as" . $j . "_" .$i])) {
8f0e31ba 779 $query .= "$or (dist = '$dist' AND arch = '$arch' AND ok = $j)";
a7f1713c 780 $or = " OR ";
781 }
782 }
506bb488 783 $i++;
784 }
a7f1713c 785 }
786 if ($or == " OR ") $query .= ")";
787// if (!isset($cnt)) $cnt = 50;
788// if (!isset($off)) $off = 0;
789 if (!isset($ns)) $ns = 0;
790 switch ($ns) {
791 case 0:
792 $query .= " ORDER BY mtime DESC";
793 break;
794 case 1:
795 $query .= " ORDER BY name";
796 break;
797 case 2:
798 $query .= " ORDER BY dist, arch, name";
799 break;
800 }
801 $query .= " LIMIT $cnt OFFSET $off ";
2ba2cc91 802
a7f1713c 803 try {
804 $dbh = new PDO("$database");
805 } catch (PDOException $e) {
806 mydie("new PDO: " . $e->getMessage());
807 }
808 $result = $dbh->query("$query")->fetchAll();
809
810 if ($result == FALSE) {
811 echo _("Nothing found");
812 } else {
813 echo "<table border=\"0\" cellspacing=\"1\" ".
814 "cellpadding=3 bgcolor=\"#000000\" width=\"90%\">\n";
815 echo "<tr><th bgcolor=\"#CCCCFF\" align=\"left\" width=\"10%\">"._("Builder").
816 "[<a href=\"$big_url&amp;ns=2\">"._("sort")."</a>]</th>";
817 echo "<th bgcolor=\"#CCCCFF\" align=\"left\" width=\"60%\">"._("Log File").
818 "[<a href=\"$big_url&amp;ns=1\">"._("sort")."</a>]</th>".
819 "<th bgcolor=\"#CCCCFF\" align=\"right\" width=\"15%\">"._("Size")."</th> ".
820 "<th bgcolor=\"#CCCCFF\" align=\"left\">"._("Age").
821 "[<a href=\"$big_url&amp;ns=0\">"._("sort")."</a>]</th>".
822 "</th></tr>";
823 $i = $off;
824// for ($i = $off; $i < $off + $count; $i++) {
825 foreach ($result as $row) {
826 $dist = $row["dist"];
827 $arch = $row["arch"];
828 $name = $row["name"];
8f0e31ba 829 $name_url = urlencode($name);
a7f1713c 830 $id = $row["id"];
831 $f = $name;
a7f1713c 832 $t = $now - $row["mtime"];
833 $s = $row["size"];
834 $t /= 60;
835 if ($t >= 60) {
836 $t /= 60;
837 if ($t >= 24) {
838 $t /= 24;
839 $t = round($t);
840 $t = $t . "&nbsp;" . ngettext("day","days",$t);
841 } else {
842 $t = round($t);
843 $t = $t . "&nbsp;" . ngettext("hour","hours",$t);
844 }
845 } else {
846 $t = round($t);
847 $t = $t . "&nbsp;" . ngettext("minute","minutes",$t);
848 }
849
850// $big_url = "$url?idx=$i&amp;ok=$j&amp;ns=$ns&amp;cnt=$cnt";
851 $ok = $row["ok"];
8f0e31ba 852 $u = "$url?dist=$dist&amp;arch=$arch&amp;name=$name_url&amp;ok=$ok&amp;id=$id";
a7f1713c 853 $b = "$url?dist=$dist&amp;arch=$arch&amp;ok=$ok&amp;ns=$ns&amp;off=$off&amp;cnt=$cnt";
854
855 $builder = "$dist/$arch/". $fail_or_ok[$ok];
856 echo "<tr>";
857 echo "<td bgcolor=\"#CCCCCC\"><a href=\"$b\">$builder</a></td>";
858 echo "<td bgcolor=\"#CCCCCC\"><a href=\"$u\">$f</a> ".
859 "[<a href=\"$u&amp;action=text\">"._("text")."</a> | ".
860 "<a href=\"$u&amp;action=tail\">"._("tail")."</a>]".
861 "</td><td bgcolor=\"#CCCCCC\" align=\"right\">".
862 "$s</td><td bgcolor=\"#CCCCCC\">$t</td></tr>\n";
863 $i++;
864 }
865 echo "</table></div>\n";
866
867 $backarr = "&lt;&lt;&lt;&nbsp;";
868 $back = _("Page back");
869 $forward = _("Page forward");
870 $forwardarr = "&nbsp;&gt;&gt;&gt;";
871
872 }
873// FIXME
874/*
875 echo "<p><table width=\"90%\" align=\"center\"><tr><td align=left width=1%>";
876
877 if ($off > 0) {
878 $noff = $off - $cnt;
879 if ($noff < 0)
880 $noff = 0;
881 $hrefurl = "<a href=\"$big_url&amp;off=$noff\">";
882 echo "$hrefurl$backarr</a></td><td align=left>$hrefurl$back</a>";
883 } else {
884 echo "$backarr</td><td align=left>$back";
885 }
886
887 echo "</td>\n<td align=\"center\">";
888 echo "</td>\n<td align=\"right\">";
889
890 if ($off + $cnt < count($list))
891 {
892 $noff = $off + $cnt;
893 if ($noff < 0)
894 $noff = 0;
895 $hrefurl = "<a href=\"$big_url&amp;off=$noff\">";
896 echo "$hrefurl$forward</a></td><td align=\"right\" width=\"1%\">$hrefurl$forwardarr</a>";
897 }
898 else
899 {
900 echo "$forward</td><td align=\"right\" width=\"1%\">$forwardarr";
901 }
902
903 echo "</td>\n</tr></table></p>";
904*/
905 } else
906 {
907 echo _("Enter something!");
908 }
4086dafb 909 echo "</div></form>\n";
a7f1713c 910}
911
912function welcome()
913{
914?>
915<table border="0" width="100%"><tr><td width="20%">&nbsp;</td><td>
916<h1><?=_("Welcome!")?></h1>
917<p><?=_("Welcome to PLD Build Logs WWW interface.")?></p><p>
918<?=_("Feel free to email bug reports, complaints and feature requests ")?>
919<!-- ech... niech strace... -->
2ba2cc91 920<a href="mailto:feedback@pld-linux.org"><?=_("to us")?></a>. <?=_("Positive opinions are also")?>
a7f1713c 921<a href="mailto:feedback@pld-linux.org"><?=_("welcome")?></a> ;)</p>
82d6f6b1 922<p>Version: $Id: index.php,v 1.37 2014/10/20 12:59:06 glen Exp $</p>
a7f1713c 923</td><td width="20%">&nbsp;</td></tr>
924</table>
925<?php
926}
927
928header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
929header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
930header("Cache-Control: no-cache, must-revalidate");
931header("Pragma: no-cache");
932
933//phpinfo();
934if ($action == "text") {
935 dump_text();
936} else if ($action == "adv_search") {
937 myheader();
938 adv_search();
939 trailer();
940} else if ($action == "qatxt") {
941 dump_qa(1);
942} else {
943 myheader();
944 echo "<table cellpadding=\"10\" width=\"100%\"><tr><td valign=\"top\" width=\"10%\">";
945 list_archs();
946 echo "</td><td valign=\"top\">";
947 flush();
948 if ($action == "qa")
949 dump_qa(0);
950 else if ($action == "sqa")
951 search_qa();
952 else if (isset($id) || isset($name))
953 dump_log($action == "tail");
954 else if (isset($dist))
955 list_logs();
956 else
957 welcome();
958 echo "</td></tr></table>";
959 trailer();
960}
961?>
This page took 0.406794 seconds and 4 git commands to generate.