]> git.pld-linux.org Git - projects/buildlogs.git/blame - index.php
- fix html typo; add links to rpm changelogs
[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>";
377 } elseif (preg_match("/(?:undefined reference to)/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)) {
498 $filter = "bzcat";
499 } elseif (preg_match("/\.gz$/", $f)) {
500 $filter = "zcat";
501 } else {
502 $filter = "cat";
503 }
504
8f0e31ba 505 $cmd = "$filter '$root_directory/$f'";
a7f1713c 506 $fd = popen($cmd, "r");
507 while (($s = fgets($fd, 1000)) != false) {
508 echo $s;
509 }
510 pclose($fd);
511}
512
513function list_archs()
514{
515 global $addr, $url, $cnt,$ok,$ns;
516
517 if (!isset($cnt))
518 $cnt = 50;
519
520 $big_url = "$url?ok=$ok&amp;ns=$ns&amp;cnt=$cnt";
521
522 echo "<table width=\"100%\" border=\"0\">\n";
523 echo "<tr><td bgcolor=\"#cccccc\" nowrap=\"nowrap\">"._("Failed")."</td><td bgcolor=\"#cccccc\">"._("Ok")."</td></tr>\n";
a918ff2f
AM
524 foreach ($addr as $dist => $ddist) {
525 echo "<tr><td colspan=2 nowrap=\"nowrap\"><hr/></td></tr>\n";
526 foreach ($ddist as $arch) {
527 echo "<tr><td nowrap=\"nowrap\">".
528 "<a href=\"$url?dist=$dist&amp;arch=$arch&amp;ok=0&amp;cnt=$cnt\">
529 $dist/$arch</a></td><td nowrap=\"nowrap\">".
530 "[<a href=\"$url?dist=$dist&amp;arch=$arch&amp;ok=1&amp;cnt=$cnt\">OK</a>]</td>".
531 #"<td>[<a href=\"$url?idx=$i&amp;action=qa\">qa</a>]</td>".
532 "</tr>\n";
533 }
534 }
a7f1713c 535 echo "</table><hr />\n";
536
537 echo "<div align=\"center\">";
538 echo "<a href=\"$big_url&amp;action=adv_search\">"._("Advanced Search")."</a><br />\n";
539
540 echo "<a href=\"$url\">main()</a><hr />\n";
541 echo "<a href=\"http://www.pld-linux.org/\"><img src=\"powpld.png\" ".
4a2b3f54 542 "alt=\""._("Powered by PLD Linux")."\" border=\"0\" /></a><br />\n" .
60845d0a 543 "<small>(c) 2002-". date("Y") . " ".
a7f1713c 544 "<a href=\"mailto:feedback@pld-linux.org\">PLD&nbsp;Team</a><br />\n".
d9365f95 545 '$Revision: 1.36 $'.
a7f1713c 546 "</small></div>\n";
547
548 # smile ;)
549 echo "<div align=\"center\"><small>";
550 $pow = array("vim", "php", "brain", "power", "electricity",
551 "coffee", "ufo", "penguin", "GNOME", "ELF", "DWARF",
552 "voodoo magic", "Linux", "x-files", "X", "foobar",
2ba2cc91 553 "/dev/null", "/dev/zero", "/dev/drzewo",
a7f1713c 554 "Leppe'", "matrix", "Neo", "PDP-11",
555 "Ken", "GNU antilope", "PDP-7", "ITS", "Multics",
2ba2cc91 556 "foobarbaz", "ed", "Joe", "Unix conspiracy",
a7f1713c 557 "overclock", "The Right Thing",
558 "The Bad Thing", "Star Treck", "NSA", "NASA",
559 "achelon", "VAX", "Real Programmer",
560 "Real Operating System", "Real Computer",
561 "computron", "bogon", "quantum bogodynamics",
562 "BOFH", "/dev/ill", "nasi tu byli",
563 "Paranoid Android", "Lunatic Corp", "Parallel thinking",
564 "sfistak", "Linus", "The Golden Path", "Dark Side of the Force",
565 "Przewodniczacego Lepper-a", "KDE", "Microsoft Windows 2003", "sqlite3",
3cf4f3e8 566 "synergy", "six Cray XMT Supercomputers"
a7f1713c 567 # feel free to add sth if you change this file ;)
568 );
569 echo _("Powered by")." ";
570 $max = 1;
571 for ($i = 0; $i < $max; $i++) {
572 $x = rand(0, count($pow) - 1);
573 if ($pow[$x] == "") $i--;
574 else echo $pow[$x] . ($i == $max - 1 ? "." : ", ");
575 $pow[$x] = "";
576 }
577 echo "</small></div>";
578
774eb927
AM
579 echo "<div align=\"center\"><small>";
580 echo "Your IP: " . $_SERVER['REMOTE_ADDR'];
581 echo "</small></div>";
582
a7f1713c 583 if (isset($dist) && isset($arch)) {
a6cc6dd6 584 echo "<form action=\"index.php\" method=\"post\">";
a7f1713c 585 echo "<input type=\"hidden\" name=\"dist\" value=\"$dist\" />";
586 echo "<input type=\"hidden\" name=\"arch\" value=\"$arch\" />";
587 echo "<input type=\"hidden\" name=\"action\" value=\"sqa\" />";
588 echo "<input type=\"text\" size=\"14\" name=\"str\" /><br />";
589 echo "<input type=\"submit\" name=\"submit\" value=\""._("Search rpmqa!")."\" />";
590 echo "</form>";
591 }
592}
593
594function get_qa()
595{
596 global $dist, $arch;
597
598 if (!isset($dist) || !isset($arch))
599 return false;
f0694a44 600 $addr = "http://ftp1.pld-linux.org/dists/$dist/.stat/builder/$dist/rpmqa-$arch.txt";
a7f1713c 601 return fopen("$addr", "r");
602}
603
604function search_qa()
605{
606 global $url, $str, $dist, $arch;
607
608 $f = get_qa();
609 echo "<h1>"._("Search results for")." '$str' "._("in")." $dist/$arch</h1>";
610
611 start_pre();
612
613 if ($f == 0) {
614 echo _("Sorry, cannot open.");
615 } else {
616 while (($s = fgets($f, 1000)) != false) {
ea35dacf
AM
617 if (stristr($s, "Query done at:")) {
618 echo "rpmqa database from " . strstr($s, ":") . "\n";
4a2b3f54 619 continue;
ea35dacf
AM
620 }
621
a7f1713c 622 if (stristr($s, $str))
623 echo $s;
624 }
ea35dacf 625 echo "\n/* EOF */";
a7f1713c 626 }
627 end_pre();
628}
629
630function dump_qa($plain)
631{
632 global $url, $dist, $arch;
633
634 $f = get_qa();
635
636 if ($plain) {
2ba2cc91 637 header("Content-type: text/plain");
a7f1713c 638 echo _("# rpm -qa of")." $dist/$arch\n";
639 } else {
640 echo "<h1>"._("rpm -qa of")." $a</h1>";
641 echo "<a href=\"$url?dist=$dist&amp;arch=$arch&amp;action=qatxt\">"._("text/plain version")."</a>";
642 start_pre();
643 }
644
645 if ($f == 0) {
646 echo _("Sorry, cannot open.");
647 } else {
648 while (($s = fgets($f, 1000)) != false) {
649 echo $s;
650 }
651 }
652
653 if (!$plain)
654 end_pre();
655}
656
657
658function adv_search()
659{
660 global $database, $addr, $fail_or_ok, $url, $_POST, $off, $cnt, $root_directory, $ok, $ns;
661
662 $big_url = "$url?ok=$ok&amp;ns=$ns&amp;cnt=$cnt";
663
664 echo "<script><!--\n".
665 "function checkboxToggle() {\n".
666 "for (var i=0;i<document.forms[0].elements.length;i++) {\n".
667 "var e = document.forms[0].elements[i];\n".
668 "if ((e.name != 'all') && (e.type=='checkbox'))\n".
669 "e.checked = document.forms[0].all.checked;\n".
670 "}\n }\n -->\n </script>\n";
671
672/* Shut up warnings */
8f0e31ba 673 if (!isset($_POST["n2"])) $_POST["n2"] = "";
a7f1713c 674 if (!isset($_POST["age1"])) $_POST["age1"] = "";
675 if (!isset($_POST["age2"])) $_POST["age2"] = "";
676 if (!isset($_POST["size1"])) $_POST["size1"] = "";
677 if (!isset($_POST["size2"])) $_POST["size2"] = "";
678
a6cc6dd6 679 echo "<form action=\"index.php?action=adv_search\" method=\"post\">";
a7f1713c 680
681 echo "<div align=\"center\">";
682 echo "<table border=\"0\">\n";
683 echo "<tr>\n";
684 echo "<td>"._("Package name")."</td>\n";
8f0e31ba 685 echo "<td><input type=\"text\" size=\"20\" name=\"n2\" value=\"". $_POST["name"] ."\"/></td>\n";
a7f1713c 686 echo "</tr>\n";
687
688 echo "<tr>\n";
689 echo "<td>"._("Days")."</td>\n";
690 echo "<td>"._("From").": <input type=\"text\" size=\"20\" name=\"age1\" value=\"". $_POST["age1"] ."\" /></td>\n";
691 echo "<td>"._("To").": <input type=\"text\" size=\"20\" name=\"age2\" value=\"". $_POST["age2"] ."\" /></td>\n";
692 echo "</tr>\n";
693
694 echo "<tr>\n";
695 echo "<td>"._("Size")."</td>\n";
696 echo "<td>"._("From").": <input type=\"text\" size=\"20\" name=\"size1\" value=\"". $_POST["size1"] ."\" /></td>\n";
697 echo "<td>"._("To").": <input type=\"text\" size=\"20\" name=\"size2\" value=\"". $_POST["size2"] ."\" /></td>\n";
698 echo "</tr>\n";
699
700 echo "<tr>\n";
701 echo "<td>"._("Search logs:")."</td>\n";
702 echo "</tr>\n";
703
704 echo "<tr>\n";
705 echo "<td>"._("Failed")."</td>\n";
706 echo "<td>"._("OK")."</td>\n";
707 echo "</tr>\n";
708
506bb488 709 $i = 1;
8f0e31ba 710 foreach ($addr as $dist => $ddist) {
506bb488 711 foreach ($ddist as $arch) {
a7f1713c 712 echo "<tr>\n";
713 $name="as0_".$i;
a7f1713c 714 if (!isset($_POST["$name"])) {
715 $check = " ";
716 } else {
1b44998a 717 $check=" checked='checked'";
a7f1713c 718 }
8f0e31ba 719 echo "<td><input name=\"$name\" id=\"$name\" type=\"checkbox\"$check /><label for=\"$name\">". "$dist/$arch" ."</label></td>\n";
a7f1713c 720 $name="as1_".$i;
8f0e31ba 721 if (!isset($_POST["$n2"])) {
a7f1713c 722 $check = " ";
723 } else {
1b44998a 724 $check=" checked='checked'";
a7f1713c 725 }
8f0e31ba 726 echo "<td><input name=\"$name\" id=\"$name\" type=\"checkbox\"$check /><label for=\"$name\">". "$dist/$arch" ."</label></td>\n";
a7f1713c 727 echo "</tr>\n";
506bb488 728 $i++;
729 }
a7f1713c 730 }
731
732 echo "<tr>\n";
8f0e31ba 733 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 734 echo "</tr>\n";
735
736 echo "</table>\n";
737
738// if (isset($_POST["name"]) || isset($_POST["age1"]) || isset($_POST["age2"]) ||
739// isset($_POST["size1"]) || isset($_POST["size2"])
8f0e31ba 740 if (($_POST["n2"]!="") || ($_POST["age1"]!="") || ($_POST["age2"]!="") ||
a7f1713c 741 ($_POST["size1"]!="") || ($_POST["size2"]!=""))
742 {
743 $query = "SELECT log_id, dist, arch, ok, name, size, mtime, id FROM logs WHERE 1 ";
8f0e31ba 744 if ($_POST["n2"] != "") {
745 $n = addslashes($_POST["n2"]);
a7f1713c 746 $query .= "AND name LIKE '$n%' ";
747 }
748 $now = time();
749
750 if ($_POST["age1"] != "") {
751 $age = $now - (int)$_POST["age1"] * 24 * 3600;
752 $query .= "AND mtime > $age ";
753 }
754
755 if ($_POST["age2"] != "") {
756 $age = $now - (int)$_POST["age2"] * 24 * 3600;
757 $query .= "AND mtime < $age ";
758 }
759
760 if ($_POST["size1"] != "") {
761 $size = (int)$_POST["size1"];
762 $query .= "AND size > $size ";
763 }
764
765 if ($_POST["size2"] != "") {
766 $size = (int)$_POST["size2"];
767 $query .= "AND size < $size ";
768 }
769
770 $or = "AND (";
506bb488 771 $i = 1;
8f0e31ba 772 foreach ($addr as $dist => $ddist) {
506bb488 773 foreach ($ddist as $arch) {
774 for ($j = 0; $j < 2; $j++) {
775 if (isset($_POST["as" . $j . "_" .$i])) {
8f0e31ba 776 $query .= "$or (dist = '$dist' AND arch = '$arch' AND ok = $j)";
a7f1713c 777 $or = " OR ";
778 }
779 }
506bb488 780 $i++;
781 }
a7f1713c 782 }
783 if ($or == " OR ") $query .= ")";
784// if (!isset($cnt)) $cnt = 50;
785// if (!isset($off)) $off = 0;
786 if (!isset($ns)) $ns = 0;
787 switch ($ns) {
788 case 0:
789 $query .= " ORDER BY mtime DESC";
790 break;
791 case 1:
792 $query .= " ORDER BY name";
793 break;
794 case 2:
795 $query .= " ORDER BY dist, arch, name";
796 break;
797 }
798 $query .= " LIMIT $cnt OFFSET $off ";
2ba2cc91 799
a7f1713c 800 try {
801 $dbh = new PDO("$database");
802 } catch (PDOException $e) {
803 mydie("new PDO: " . $e->getMessage());
804 }
805 $result = $dbh->query("$query")->fetchAll();
806
807 if ($result == FALSE) {
808 echo _("Nothing found");
809 } else {
810 echo "<table border=\"0\" cellspacing=\"1\" ".
811 "cellpadding=3 bgcolor=\"#000000\" width=\"90%\">\n";
812 echo "<tr><th bgcolor=\"#CCCCFF\" align=\"left\" width=\"10%\">"._("Builder").
813 "[<a href=\"$big_url&amp;ns=2\">"._("sort")."</a>]</th>";
814 echo "<th bgcolor=\"#CCCCFF\" align=\"left\" width=\"60%\">"._("Log File").
815 "[<a href=\"$big_url&amp;ns=1\">"._("sort")."</a>]</th>".
816 "<th bgcolor=\"#CCCCFF\" align=\"right\" width=\"15%\">"._("Size")."</th> ".
817 "<th bgcolor=\"#CCCCFF\" align=\"left\">"._("Age").
818 "[<a href=\"$big_url&amp;ns=0\">"._("sort")."</a>]</th>".
819 "</th></tr>";
820 $i = $off;
821// for ($i = $off; $i < $off + $count; $i++) {
822 foreach ($result as $row) {
823 $dist = $row["dist"];
824 $arch = $row["arch"];
825 $name = $row["name"];
8f0e31ba 826 $name_url = urlencode($name);
a7f1713c 827 $id = $row["id"];
828 $f = $name;
a7f1713c 829 $t = $now - $row["mtime"];
830 $s = $row["size"];
831 $t /= 60;
832 if ($t >= 60) {
833 $t /= 60;
834 if ($t >= 24) {
835 $t /= 24;
836 $t = round($t);
837 $t = $t . "&nbsp;" . ngettext("day","days",$t);
838 } else {
839 $t = round($t);
840 $t = $t . "&nbsp;" . ngettext("hour","hours",$t);
841 }
842 } else {
843 $t = round($t);
844 $t = $t . "&nbsp;" . ngettext("minute","minutes",$t);
845 }
846
847// $big_url = "$url?idx=$i&amp;ok=$j&amp;ns=$ns&amp;cnt=$cnt";
848 $ok = $row["ok"];
8f0e31ba 849 $u = "$url?dist=$dist&amp;arch=$arch&amp;name=$name_url&amp;ok=$ok&amp;id=$id";
a7f1713c 850 $b = "$url?dist=$dist&amp;arch=$arch&amp;ok=$ok&amp;ns=$ns&amp;off=$off&amp;cnt=$cnt";
851
852 $builder = "$dist/$arch/". $fail_or_ok[$ok];
853 echo "<tr>";
854 echo "<td bgcolor=\"#CCCCCC\"><a href=\"$b\">$builder</a></td>";
855 echo "<td bgcolor=\"#CCCCCC\"><a href=\"$u\">$f</a> ".
856 "[<a href=\"$u&amp;action=text\">"._("text")."</a> | ".
857 "<a href=\"$u&amp;action=tail\">"._("tail")."</a>]".
858 "</td><td bgcolor=\"#CCCCCC\" align=\"right\">".
859 "$s</td><td bgcolor=\"#CCCCCC\">$t</td></tr>\n";
860 $i++;
861 }
862 echo "</table></div>\n";
863
864 $backarr = "&lt;&lt;&lt;&nbsp;";
865 $back = _("Page back");
866 $forward = _("Page forward");
867 $forwardarr = "&nbsp;&gt;&gt;&gt;";
868
869 }
870// FIXME
871/*
872 echo "<p><table width=\"90%\" align=\"center\"><tr><td align=left width=1%>";
873
874 if ($off > 0) {
875 $noff = $off - $cnt;
876 if ($noff < 0)
877 $noff = 0;
878 $hrefurl = "<a href=\"$big_url&amp;off=$noff\">";
879 echo "$hrefurl$backarr</a></td><td align=left>$hrefurl$back</a>";
880 } else {
881 echo "$backarr</td><td align=left>$back";
882 }
883
884 echo "</td>\n<td align=\"center\">";
885 echo "</td>\n<td align=\"right\">";
886
887 if ($off + $cnt < count($list))
888 {
889 $noff = $off + $cnt;
890 if ($noff < 0)
891 $noff = 0;
892 $hrefurl = "<a href=\"$big_url&amp;off=$noff\">";
893 echo "$hrefurl$forward</a></td><td align=\"right\" width=\"1%\">$hrefurl$forwardarr</a>";
894 }
895 else
896 {
897 echo "$forward</td><td align=\"right\" width=\"1%\">$forwardarr";
898 }
899
900 echo "</td>\n</tr></table></p>";
901*/
902 } else
903 {
904 echo _("Enter something!");
905 }
4086dafb 906 echo "</div></form>\n";
a7f1713c 907}
908
909function welcome()
910{
911?>
912<table border="0" width="100%"><tr><td width="20%">&nbsp;</td><td>
913<h1><?=_("Welcome!")?></h1>
914<p><?=_("Welcome to PLD Build Logs WWW interface.")?></p><p>
915<?=_("Feel free to email bug reports, complaints and feature requests ")?>
916<!-- ech... niech strace... -->
2ba2cc91 917<a href="mailto:feedback@pld-linux.org"><?=_("to us")?></a>. <?=_("Positive opinions are also")?>
a7f1713c 918<a href="mailto:feedback@pld-linux.org"><?=_("welcome")?></a> ;)</p>
d9365f95 919<p>Version: $Id: index.php,v 1.36 2014/10/18 10:30:03 arekm Exp $</p>
a7f1713c 920</td><td width="20%">&nbsp;</td></tr>
921</table>
922<?php
923}
924
925header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
926header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
927header("Cache-Control: no-cache, must-revalidate");
928header("Pragma: no-cache");
929
930//phpinfo();
931if ($action == "text") {
932 dump_text();
933} else if ($action == "adv_search") {
934 myheader();
935 adv_search();
936 trailer();
937} else if ($action == "qatxt") {
938 dump_qa(1);
939} else {
940 myheader();
941 echo "<table cellpadding=\"10\" width=\"100%\"><tr><td valign=\"top\" width=\"10%\">";
942 list_archs();
943 echo "</td><td valign=\"top\">";
944 flush();
945 if ($action == "qa")
946 dump_qa(0);
947 else if ($action == "sqa")
948 search_qa();
949 else if (isset($id) || isset($name))
950 dump_log($action == "tail");
951 else if (isset($dist))
952 list_logs();
953 else
954 welcome();
955 echo "</td></tr></table>";
956 trailer();
957}
958?>
This page took 0.209309 seconds and 4 git commands to generate.