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