]>
Commit | Line | Data |
---|---|---|
2a73daad MM |
1 | <?php |
2 | $buildlogs_server = "buildlogs.pld.org.pl"; | |
2a73daad MM |
3 | $url = "index.php"; |
4 | $addr = array( | |
a8cafede | 5 | "/nest/athlon", |
2a73daad MM |
6 | "/nest/i386", |
7 | "/nest/i586", | |
8 | "/nest/i686", | |
e86d1be4 | 9 | "/nest/ppc", |
2a73daad MM |
10 | "/ra/i386", |
11 | "/ra/i586", | |
12 | "/ra/i686", | |
13 | "/ra/alpha", | |
8fdf8843 AM |
14 | "/ra/sparc", |
15 | "/ra/ppc" | |
2a73daad | 16 | ); |
b018fce6 MM |
17 | $qa_base = "http://ftp.pld.org.pl/.stat/builder"; |
18 | $qa_addr = array( | |
a8cafede | 19 | "", |
b018fce6 MM |
20 | "/kenny/rpmqa-nest-i386.txt", |
21 | "/kenny/rpmqa-nest-i586.txt", | |
22 | "/kenny/rpmqa-nest-i686.txt", | |
23 | "", | |
24 | "/ep/rpmqa-ra-i386.txt", | |
25 | "/ep/rpmqa-ra-i586.txt", | |
26 | "/ep/rpmqa-ra-i686.txt", | |
861fb048 | 27 | "/mifgate/rpmqa-ra-alpha.txt", |
f93aa6bf | 28 | "/team/rpmqa-ra-sparc.txt", |
b018fce6 MM |
29 | "" |
30 | ); | |
e86d1be4 | 31 | $local = 1; /* $local=0 for FTP */ |
8154e1aa | 32 | $root_directory = "/home/services/ftp/pub/logs"; |
c8c26d5e | 33 | $ftp_conn = 0; |
e86d1be4 | 34 | /* It should be set */ |
35 | ||
d304116f | 36 | $langs["en_US"]["charset"]="ISO-8859-1"; |
37 | $langs["pl_PL"]["charset"]="ISO-8859-2"; | |
38 | ||
39 | $lang="en_US"; | |
40 | if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])) | |
41 | { | |
42 | $rows=explode(";",$_SERVER["HTTP_ACCEPT_LANGUAGE"]); | |
43 | $rows=explode(",",$rows[0]); | |
44 | $lang_detected=rtrim($rows[0]); | |
45 | } else if (preg_match("/opera/i",$_SERVER["HTTP_USER_AGENT"])) | |
46 | { | |
47 | $lang_detected=preg_replace("/.*\[(.*)\].*/i","\\1",$_SERVER["HTTP_USER_AGENT"]); | |
48 | } | |
49 | ||
50 | // FIXME - some array | |
51 | $lang_detected=preg_replace("/^pl$/i","pl_PL",$lang_detected); | |
52 | ||
53 | if (isset($lang_detected) && isset($langs[$lang_detected])) | |
54 | { | |
55 | $lang=$lang_detected; | |
56 | } | |
57 | ||
58 | if (isset($_GET["lang"]))$_SESSION["lang"]=$_GET["lang"]; | |
59 | if (isset($_SESSION["lang"]))$lang=$_SESSION["lang"]; | |
60 | ||
61 | putenv("LANG=$lang"); | |
62 | setlocale(LC_ALL,$lang); | |
63 | bindtextdomain("messages","locale"); | |
64 | textdomain("messages"); | |
65 | ||
23f2f6e7 | 66 | if (isset($_GET["idx"]))$idx=$_GET["idx"]; |
67 | if (isset($_GET["ok"]))$ok=$_GET["ok"]; | |
68 | if (isset($_GET["ns"]))$ns=$_GET["ns"]; | |
69 | if (isset($_GET["cnt"]))$cnt=$_GET["cnt"]; | |
70 | if (isset($_GET["action"]))$action=$_GET["action"]; | |
ab1439e7 | 71 | if (isset($_GET["off"]))$off=$_GET["off"]; |
72 | if (isset($_GET["id"]))$id=$_GET["id"]; | |
23f2f6e7 | 73 | |
f47b2a29 | 74 | if (isset($_POST["str"]))$str=$_POST["str"]; |
75 | if (isset($_POST["idx"]))$idx=$_POST["idx"]; | |
23f2f6e7 | 76 | if (isset($_POST["action"]))$action=$_POST["action"]; |
2a73daad MM |
77 | |
78 | function myheader() | |
79 | { | |
80 | ?> | |
81 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | |
82 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |
83 | <html xmlns="http://www.w3.org/1999/xhtml"> | |
84 | <head> | |
85 | <title>PLD Build Logs</title> | |
86 | <style TYPE="text/css"><!-- | |
87 | A { text-decoration: none; } | |
88 | A:hover { text-decoration: underline; } | |
89 | H1 { font-family: arial,helvetica,sans-serif; | |
90 | font-size: 20pt; | |
91 | font-weight: bold;} | |
92 | H2 { font-family: arial,helvetica,sans-serif; | |
93 | font-size: 18pt; | |
94 | font-weight: bold;} | |
95 | BODY,TD { font-family: arial,helvetica,sans-serif; | |
96 | font-size: 13pt; } | |
97 | TH { font-family: arial,helvetica,sans-serif; | |
98 | font-size: 13pt; | |
99 | font-weight: bold; } | |
100 | //--> | |
101 | </style> | |
102 | </head> | |
103 | <!-- Diffrent color for visited link doesn't make much sense here... | |
104 | this page is autogenerated and it might be misleading after some | |
105 | build log changes. --> | |
106 | <body bgcolor="#ffffff" text="#000000" link="#5f26cd" vlink="#5f26cd"> | |
107 | <?php | |
108 | } | |
109 | ||
110 | function start_pre() | |
111 | { | |
112 | echo "<table cellpadding=10><tr><td bgcolor=\"#000000\">". | |
113 | "<font color=\"#cccccc\"><pre>"; | |
114 | } | |
115 | ||
116 | function end_pre() | |
117 | { | |
118 | echo "</pre></font></td></tr></table>\n"; | |
119 | } | |
120 | ||
121 | function trailer() | |
122 | { | |
123 | echo "</body></html>"; | |
124 | } | |
125 | ||
126 | ||
127 | function mydie($msg) | |
128 | { | |
129 | echo "Fatal error: $msg"; | |
130 | } | |
131 | ||
58c74097 | 132 | function open_ftp($pidx="", $pok="") |
2a73daad MM |
133 | { |
134 | global $idx, $addr, $buildlogs_server, $ok; | |
135 | global $ftp_conn, $big_url, $url, $ns; | |
ca0f7067 | 136 | global $off, $cnt; |
58c74097 | 137 | |
138 | if ($pidx==="")$pidx=$idx; | |
139 | if ($pok==="")$pok=$ok; | |
c8c26d5e | 140 | |
58c74097 | 141 | if (!isset($pidx) || !isset($addr[$pidx])) |
2a73daad | 142 | return false; |
c8c26d5e | 143 | |
58c74097 | 144 | if ($pok != 1) |
145 | $pok = 0; | |
2a73daad MM |
146 | if ($ns != 1) |
147 | $ns = 0; | |
c8c26d5e | 148 | |
58c74097 | 149 | if ($pok == 1) { |
150 | $a = "$addr[$pidx]/OK"; | |
2a73daad | 151 | } else { |
58c74097 | 152 | $a = "$addr[$pidx]/FAIL"; |
2a73daad | 153 | } |
c8c26d5e | 154 | |
ca0f7067 MM |
155 | if (!isset($off)) |
156 | $off = 0; | |
157 | if (!isset($cnt)) | |
158 | $cnt = 16; | |
c8c26d5e | 159 | |
29209fb4 | 160 | $big_url = "$url?idx=$idx&ok=$ok&ns=$ns&cnt=$cnt"; |
c8c26d5e | 161 | |
2a73daad | 162 | $ftp = ftp_connect($buildlogs_server); |
c8c26d5e | 163 | |
2a73daad | 164 | if ($ftp == false) { |
d304116f | 165 | mydie(_("cannot connect to")." $buildlogs_server"); |
2a73daad MM |
166 | return false; |
167 | } | |
168 | ||
169 | if (ftp_login($ftp, "anonymous", | |
2050e923 | 170 | "buildlogs-iface@pld.org.pl") == false) { |
2a73daad | 171 | ftp_quit($ftp); |
d304116f | 172 | mydie(_("cannot ftp login to")." $buildlogs_server"); |
2a73daad MM |
173 | return false; |
174 | } | |
175 | ||
176 | $list = ftp_nlist($ftp, $a); | |
177 | if ($list == false) { | |
178 | ftp_quit($ftp); | |
d304116f | 179 | mydie(_("cannot list")." $a"); |
2a73daad MM |
180 | return false; |
181 | } | |
182 | ||
183 | $ftp_conn = $ftp; | |
c8c26d5e | 184 | |
2a73daad MM |
185 | return $list; |
186 | } | |
187 | ||
58c74097 | 188 | function directory_list($pidx="",$pok="") |
e86d1be4 | 189 | { |
190 | global $idx, $addr, $buildlogs_server, $ok; | |
191 | global $root_directory, $big_url, $url, $ns; | |
192 | global $off, $cnt; | |
c8c26d5e | 193 | |
58c74097 | 194 | if ($pidx==="")$pidx=$idx; |
195 | if ($pok==="")$pok=$ok; | |
196 | if (!isset($pidx) || !isset($addr[$pidx])) | |
e86d1be4 | 197 | return false; |
c8c26d5e | 198 | |
58c74097 | 199 | if ($pok != 1) |
200 | $pok = 0; | |
e86d1be4 | 201 | if ($ns != 1) |
202 | $ns = 0; | |
c8c26d5e | 203 | |
58c74097 | 204 | if ($pok == 1) { |
205 | $a = "$addr[$pidx]/OK"; | |
e86d1be4 | 206 | } else { |
58c74097 | 207 | $a = "$addr[$pidx]/FAIL"; |
e86d1be4 | 208 | } |
c8c26d5e | 209 | |
e86d1be4 | 210 | if (!isset($off)) |
211 | $off = 0; | |
212 | if (!isset($cnt)) | |
213 | $cnt = 16; | |
c8c26d5e | 214 | |
29209fb4 | 215 | $big_url = "$url?idx=$idx&ok=$ok&ns=$ns&cnt=$cnt"; |
c8c26d5e | 216 | |
e86d1be4 | 217 | $dir = opendir("$root_directory$a"); |
218 | $i = 0; | |
219 | while ($file = readdir($dir)) { | |
220 | if (($file != ".") && ($file != "..")) { | |
221 | $list[$i] = "$a/$file"; | |
222 | $i++; | |
223 | } | |
224 | } | |
225 | closedir($dir); | |
226 | return $list; | |
227 | } | |
228 | ||
2a73daad MM |
229 | function list_logs() |
230 | { | |
231 | global $idx, $addr, $ok; | |
c8c26d5e | 232 | global $ftp_conn, $big_url, $ns, $qa_addr; |
233 | global $off, $cnt, $local, $root_directory; | |
2a73daad | 234 | |
c8c26d5e | 235 | if ($local) { |
236 | $list = directory_list(); | |
237 | } else { | |
238 | $list = open_ftp(); | |
239 | } | |
2a73daad MM |
240 | if ($list == false) |
241 | return; | |
c8c26d5e | 242 | |
2a73daad | 243 | if ($ok == 1) { |
d304116f | 244 | echo "<h1>"._("Listing of")." $addr[$idx]/OK " |
245 | ."(<a href=\"$big_url&ok=0\">"._("fail")."</a>)</h1>"; | |
2a73daad | 246 | } else { |
d304116f | 247 | echo "<h1>"._("Listing of")." $addr[$idx]/FAIL " |
248 | ."(<a href=\"$big_url&ok=1\">"._("ok")."</a>)</h1>"; | |
2a73daad | 249 | } |
c8c26d5e | 250 | |
2a73daad MM |
251 | echo "<div align=center><table border=0 cellspacing=1 ". |
252 | "cellpadding=3 bgcolor=#000000 width=90%>\n"; | |
d304116f | 253 | echo "<tr><th bgcolor=#CCCCFF align=left width=60%>"._("Log File"). |
254 | "[<a href=\"$big_url&ns=1\">"._("sort")."</a>]</th>". | |
255 | "<th bgcolor=#CCCCFF align=right width=15%>"._("Size")."</th> ". | |
256 | "<th bgcolor=#CCCCFF align=left>"._("Age"). | |
257 | "[<a href=\"$big_url&ns=0\">"._("sort")."</a>]</th>". | |
2a73daad | 258 | "</th></tr>"; |
2a73daad | 259 | |
c8c26d5e | 260 | function cmp($f1, $f2) { |
261 | global $ftp_conn, $root_directory, $local; | |
262 | if ($local) | |
263 | return filemtime("$root_directory$f2") - filemtime("$root_directory$f1"); | |
2a73daad MM |
264 | return ftp_mdtm($ftp_conn, $f2) - ftp_mdtm($ftp_conn, $f1); |
265 | } | |
266 | ||
267 | if ($ns != 1) { | |
268 | $ns = 0; | |
269 | usort($list, cmp); | |
ca0f7067 MM |
270 | } else { |
271 | sort($list); | |
2a73daad | 272 | } |
c8c26d5e | 273 | |
2a73daad | 274 | $now = time(); |
ca0f7067 MM |
275 | for ($i = $off; $i < $cnt + $off; $i++) { |
276 | if (!isset($list[$i])) | |
277 | continue; | |
2a73daad MM |
278 | $h = bin2hex(mhash(MHASH_MD5, $list[$i])); |
279 | $f = preg_replace("/.*\/([^\/]*)$/", "\\1", $list[$i]); | |
280 | $f = preg_replace("/\.(bz2|gz)$/", "", $f); | |
c8c26d5e | 281 | if ($local) { |
282 | $s = filesize("$root_directory$list[$i]"); | |
283 | $t = $now - filemtime("$root_directory$list[$i]"); | |
2a73daad | 284 | } else { |
c8c26d5e | 285 | $s = ftp_size($ftp_conn, $list[$i]); |
286 | $t = $now - ftp_mdtm($ftp_conn, $list[$i]); | |
2a73daad | 287 | } |
e86d1be4 | 288 | $t /= 60; |
289 | if ($t >= 60) { | |
290 | $t /= 60; | |
291 | if ($t >= 24) { | |
292 | $t /= 24; | |
8abba06f | 293 | $t = round($t); |
d304116f | 294 | $t = $t . ngettext(" day"," days",$t); |
e86d1be4 | 295 | } else { |
8abba06f | 296 | $t = round($t); |
d304116f | 297 | $t = $t . ngettext(" hour"," hours",$t); |
e86d1be4 | 298 | } |
299 | } else { | |
8abba06f | 300 | $t = round($t); |
d304116f | 301 | $t = $t . ngettext(" minute"," minutes",$t); |
e86d1be4 | 302 | } |
29209fb4 | 303 | $u = "$big_url&off=$off&id=$h"; |
e86d1be4 | 304 | echo "<tr><td bgcolor=#CCCCCC><a ". |
305 | "href=\"$u\">". | |
306 | "$f</a> ". | |
d304116f | 307 | "[<a href=\"$u&action=text\">"._("text")."</a> | ". |
308 | "<a href=\"$u&action=tail\">"._("tail")."</a>]". | |
e86d1be4 | 309 | "</td><td bgcolor=#CCCCCC align=right>". |
310 | "$s</td><td bgcolor=#CCCCCC>$t</td></tr>\n"; | |
311 | } | |
312 | echo "</table></div>\n"; | |
313 | ||
d326cd64 | 314 | $backarr = "<<< "; |
d304116f | 315 | $back = _("Page back"); |
316 | $forward = _("Page forward"); | |
d326cd64 | 317 | $forwardarr = " >>>"; |
e86d1be4 | 318 | |
d326cd64 | 319 | echo "<p><table width=90% align=center><tr><td align=left width=1%>"; |
e86d1be4 | 320 | |
321 | if ($off > 0) { | |
322 | $noff = $off - $cnt; | |
323 | if ($noff < 0) | |
324 | $noff = 0; | |
d326cd64 | 325 | $hrefurl = "<a href=\"$big_url&off=$noff\">"; |
326 | echo "$hrefurl$backarr</a></td><td align=left>$hrefurl$back</a>"; | |
e86d1be4 | 327 | } else { |
d326cd64 | 328 | echo "$backarr</td><td align=left>$back"; |
e86d1be4 | 329 | } |
f93aa6bf | 330 | |
d326cd64 | 331 | echo "</td>\n<td align=center>"; |
f93aa6bf | 332 | |
bb3ae015 | 333 | if ($qa_addr[$idx] != "") { |
d304116f | 334 | echo "[<a href=\"$big_url&action=qa\">"._("View <quot>rpm -qa</quot> of builder")."</a>]"; |
f93aa6bf | 335 | } else { |
336 | echo " "; | |
c8c26d5e | 337 | } |
338 | ||
d326cd64 | 339 | echo "</td>\n<td align=right>"; |
e86d1be4 | 340 | if ($off + $cnt < count($list)) { |
341 | $noff = $off + $cnt; | |
342 | if ($noff < 0) | |
343 | $noff = 0; | |
d326cd64 | 344 | $hrefurl = "<a href=\"$big_url&off=$noff\">"; |
345 | echo "$hrefurl$forward</a></td><td align=right width=1%>$hrefurl$forwardarr</a>"; | |
e86d1be4 | 346 | } else { |
d326cd64 | 347 | echo "$forward</td><td align=right width=1%>$forwardarr"; |
e86d1be4 | 348 | } |
d326cd64 | 349 | echo "</td>\n</tr></table></p>"; |
c8c26d5e | 350 | if ($local == 0) { |
2a73daad | 351 | ftp_quit($ftp_conn); |
c8c26d5e | 352 | $ftp_conn = 0; |
2a73daad | 353 | } |
2a73daad MM |
354 | } |
355 | ||
c8c26d5e | 356 | function file_name() |
e86d1be4 | 357 | { |
358 | global $idx, $addr, $ok; | |
c8c26d5e | 359 | global $ftp_conn, $root_directory, $big_url, $ns, $id; |
360 | global $buildlogs_server, $local; | |
e86d1be4 | 361 | |
362 | if (!isset($id)) | |
363 | return false; | |
c8c26d5e | 364 | if ($local) { |
365 | $list = directory_list(); | |
366 | } else { | |
367 | $list = open_ftp(); | |
368 | } | |
e86d1be4 | 369 | if ($list == false) |
370 | return false; | |
371 | ||
372 | $f = false; | |
373 | for ($i = 0; $i < count($list); $i++) { | |
374 | $h = bin2hex(mhash(MHASH_MD5, $list[$i])); | |
375 | if ($h == $id) { | |
376 | $f = $list[$i]; | |
377 | } | |
378 | } | |
379 | ||
380 | if ($f == false) { | |
d304116f | 381 | mydie(_("cannot find specified file:")." $id"); |
c8c26d5e | 382 | if ($local == 0) |
383 | ftp_quit($ftp_conn); | |
e86d1be4 | 384 | return false; |
385 | } | |
386 | ||
387 | return $f; | |
388 | } | |
389 | ||
ca0f7067 | 390 | function dump_log($tail) |
2a73daad MM |
391 | { |
392 | global $idx, $addr, $ok, $url; | |
c8c26d5e | 393 | global $ftp_conn, $root_directory, $big_url, $ns, $id, $cnt, $off; |
394 | global $buildlogs_server, $local, $qa_addr; | |
2a73daad MM |
395 | |
396 | $f = file_name(); | |
397 | ||
398 | if ($f == false) | |
399 | return; | |
400 | ||
401 | $df = preg_replace("/.*\/([^\/]*)$/", "\\1", $f); | |
402 | $df = preg_replace("/\.(bz2|gz)$/", "", $df); | |
c8c26d5e | 403 | |
2a73daad MM |
404 | echo "<h1>$df</h1>"; |
405 | ||
406 | echo "<table border=0 cellpadding=3 cellspacing=1 bgcolor=#000000>"; | |
407 | ||
408 | function one_item($h, $t) { | |
409 | echo "<tr><td bgcolor=#ccccff>$h:</td>". | |
410 | "<td bgcolor=#cccccc>$t</td></tr>"; | |
411 | } | |
412 | ||
413 | function href($h, $c) { | |
414 | return "<a href=\"$h\">$c</a>"; | |
415 | } | |
c8c26d5e | 416 | |
58c74097 | 417 | one_item(_("Status"), ($ok == 1 ? |
d304116f | 418 | "<font color=green><b>"._("OK")."</b></font>" : |
419 | "<font color=red><b>"._("Failed")."</b></a>")); | |
58c74097 | 420 | one_item(_("Source URL"), |
2a73daad MM |
421 | href("ftp://$buildlogs_server$f", |
422 | "ftp://$buildlogs_server$f")); | |
ca0f7067 | 423 | |
29209fb4 | 424 | $bu = "$big_url&off=$off"; |
c8c26d5e | 425 | |
58c74097 | 426 | one_item(_("text/plain URL"), |
ca0f7067 | 427 | href("$bu&id=$id&action=text", |
58c74097 | 428 | _("View!"))); |
ca0f7067 | 429 | if ($tail) { |
58c74097 | 430 | one_item(_("full text"), |
ca0f7067 MM |
431 | href("$bu&&id=$id", |
432 | "View!")); | |
433 | } | |
f93aa6bf | 434 | |
d381dfdf | 435 | if ($qa_addr[$idx] != "") { |
d304116f | 436 | one_item(_("rpm -qa of builder"), href("$bu&action=qa", _("View!"))); |
f93aa6bf | 437 | } else { |
d304116f | 438 | one_item(_("rpm -qa of builder"), _("Not available")); |
f93aa6bf | 439 | } |
c8c26d5e | 440 | if ($local) { |
441 | one_item("Data", date("Y/m/d H:i:s", filemtime("$root_directory$f"))); | |
442 | } else { | |
443 | one_item("Data", date("Y/m/d H:i:s", ftp_mdtm($ftp_conn, $f))); | |
444 | } | |
2a73daad MM |
445 | /* |
446 | echo "<tr><td>Here:</td><td>" . | |
447 | "<a href=\"$url?idx=$idx&ok=$ok&id=$id\">". | |
448 | "http://" . getenv("SERVER_NAME") . | |
449 | getenv("SCRIPT_NAME") . "?idx=$idx&ok=$ok&id=$id</a>" . | |
450 | "</td></tr>"; */ | |
451 | ||
d304116f | 452 | echo "</table><h2>"._("Content:")."</h2>"; |
2a73daad | 453 | |
c8c26d5e | 454 | if ($local == 0) { |
455 | ftp_quit($ftp_conn); | |
456 | $ftp_conn = 0; | |
e86d1be4 | 457 | } |
e86d1be4 | 458 | |
e86d1be4 | 459 | |
e86d1be4 | 460 | # what can I say beside PHP suxx? how the fuck should I create |
461 | # bidirectional pipe? gotta use wget | |
c8c26d5e | 462 | |
e86d1be4 | 463 | if (preg_match("/\.bz2$/", $f)) { |
c8c26d5e | 464 | $filter = "bzcat"; |
e86d1be4 | 465 | } elseif (preg_match("/\.gz$/", $f)) { |
c8c26d5e | 466 | $filter = "zcat"; |
e86d1be4 | 467 | } else { |
c8c26d5e | 468 | $filter = "cat"; |
e86d1be4 | 469 | } |
470 | ||
c8c26d5e | 471 | if ($local) { |
472 | $cmd = "$filter $root_directory$f"; | |
473 | } else { | |
474 | $cmd = "wget -q -O - ftp://$buildlogs_server$f 2>&1 | $filter 2>&1"; | |
475 | } | |
e86d1be4 | 476 | if ($tail) |
477 | $cmd = "$cmd | tail -n 100"; | |
478 | $fd = popen($cmd, "r"); | |
479 | start_pre(); | |
480 | while (($s = fgets($fd, 1000)) != false) { | |
481 | $s = htmlspecialchars($s); | |
482 | echo $s; | |
483 | } | |
484 | end_pre(); | |
485 | pclose($fd); | |
486 | ||
487 | ?> | |
488 | <table width=100%> | |
489 | <tr> | |
490 | <td align=left> | |
d304116f | 491 | [<a href="<?php echo $bu; ?>"><?=_("Back to list of logs")?></a>] |
e86d1be4 | 492 | </td> |
493 | <td align=right> | |
494 | [<a href="<?php echo "$bu&action=qa" | |
d304116f | 495 | ?>"><?=_("View rpm -qa of builder")?></a>] |
e86d1be4 | 496 | </td> |
497 | </tr> | |
51aa6406 | 498 | </table> |
e86d1be4 | 499 | <?php |
500 | ||
501 | } | |
502 | ||
2a73daad MM |
503 | function dump_text() |
504 | { | |
c8c26d5e | 505 | global $ftp_conn, $root_directory; |
506 | global $buildlogs_server, $local; | |
507 | ||
2a73daad MM |
508 | header("Content-type: text/plain"); |
509 | ||
510 | $f = file_name(); | |
511 | ||
512 | if ($f == false) | |
513 | return; | |
514 | ||
515 | echo "# src : ftp://$buildlogs_server$f\n"; | |
c8c26d5e | 516 | if ($local) { |
517 | echo "# date : " . | |
518 | date("Y/m/d H:i:s", filemtime("$root_directory$f")) . "\n"; | |
2a73daad | 519 | } else { |
c8c26d5e | 520 | echo "# date : " . |
521 | date("Y/m/d H:i:s", ftp_mdtm($ftp_conn, $f)) . "\n"; | |
522 | ftp_quit($ftp_conn); | |
523 | $ftp_conn = 0; | |
2a73daad | 524 | } |
e86d1be4 | 525 | |
526 | if (preg_match("/\.bz2$/", $f)) { | |
c8c26d5e | 527 | $filter = "bzcat"; |
e86d1be4 | 528 | } elseif (preg_match("/\.gz$/", $f)) { |
c8c26d5e | 529 | $filter = "zcat"; |
e86d1be4 | 530 | } else { |
c8c26d5e | 531 | $filter = "cat"; |
e86d1be4 | 532 | } |
533 | ||
c8c26d5e | 534 | if ($local) { |
535 | $cmd = "$filter $root_directory$f"; | |
536 | } else { | |
537 | $cmd = "wget -q -O - ftp://$buildlogs_server$f 2>&1 | $filter 2>&1"; | |
538 | } | |
539 | $fd = popen($cmd, "r"); | |
e86d1be4 | 540 | while (($s = fgets($fd, 1000)) != false) { |
541 | echo $s; | |
542 | } | |
543 | pclose($fd); | |
544 | } | |
545 | ||
2a73daad MM |
546 | function list_archs() |
547 | { | |
38299f63 | 548 | global $addr, $url, $idx; |
2a73daad | 549 | |
d304116f | 550 | $big_url = "$url?idx=$idx&ok=$ok&ns=$ns&cnt=$cnt"; |
551 | ||
2a73daad | 552 | echo "<table width=100% border=0>\n"; |
d304116f | 553 | echo "<tr><td bgcolor=#cccccc nowrap=1>"._("Failed")."</td><td bgcolor=#cccccc>"._("Ok")."</td></tr>\n"; |
2a73daad MM |
554 | for ($i = 0; $i < count($addr); $i++) |
555 | echo "<tr><td nowrap=1>". | |
e2dff542 | 556 | "<a href=\"$url?idx=$i&ok=0\">$addr[$i]</a></td><td nowrap=1>". |
2a73daad MM |
557 | "[<a href=\"$url?idx=$i&ok=1\">OK</a>]</td>". |
558 | #"<td>[<a href=\"$url?idx=$i&action=qa\">qa</a>]</td>". | |
559 | "</tr>\n"; | |
560 | echo "</table><hr />\n"; | |
58c74097 | 561 | |
562 | echo "<div align=\"center\">"; | |
f0f4086d | 563 | echo "<a href=\"$big_url&action=adv_search\">"._("Advanced Search")."</a><br>\n"; |
58c74097 | 564 | |
565 | echo "<a href=\"$url\">main()</a><hr />\n"; | |
2050e923 | 566 | echo "<a href=\"http://www.pld.org.pl/\"><img src=powpld.png ". |
d304116f | 567 | "alt=\""._("Powered by PLD Linux")."\" border=0></a><br />\n" . |
2a73daad MM |
568 | "<small>(c) 2002 ". |
569 | "<a href=\"mailto:feedback@pld.org.pl\">PLD Team</a>\n". | |
570 | "</small></div>\n"; | |
c8c26d5e | 571 | |
2a73daad MM |
572 | # smile ;) |
573 | echo "<div align=center><small>"; | |
574 | $pow = array("vim", "php", "brain", "power", "electricity", | |
51aa6406 | 575 | "coffee", "ufo", "penguin", "GNOME", "ELF", "DWARF", |
2a73daad MM |
576 | "voodoo magic", "Linux", "x-files", "X", "foobar", |
577 | "/dev/null", "/dev/zero", "/dev/drzewo", | |
578 | "Leppe'", "matrix", "Neo", "PDP-11", | |
579 | "Ken", "GNU antilope", "PDP-7", "ITS", "Multics", | |
51aa6406 | 580 | "foobarbaz", "ed", "Joe", "Unix conspiracy", |
2a73daad MM |
581 | "overclock", "The Right Thing", |
582 | "The Bad Thing", "Star Treck", "NSA", "NASA", | |
583 | "achelon", "VAX", "Real Programmer", | |
584 | "Real Operating System", "Real Computer", | |
585 | "computron", "bogon", "quantum bogodynamics", | |
e86d1be4 | 586 | "BOFH", "/dev/ill", "nasi tu byli", |
587 | "Paranoid Android", "Lunatic Corp" | |
2a73daad MM |
588 | # feel free to add sth if you change this file ;) |
589 | ); | |
d304116f | 590 | echo _("Powered by")." "; |
2a73daad MM |
591 | $max = 1; |
592 | for ($i = 0; $i < $max; $i++) { | |
593 | $x = rand(0, count($pow) - 1); | |
594 | if ($pow[$x] == "") $i--; | |
595 | else echo $pow[$x] . ($i == $max - 1 ? "." : ", "); | |
596 | $pow[$x] = ""; | |
597 | } | |
2a73daad | 598 | echo "</small></div>"; |
c8c26d5e | 599 | |
38299f63 MM |
600 | global $qa_addr; |
601 | ||
602 | if ($qa_addr[$idx] != "") { | |
603 | echo "<form action=\"index.php\" method=\"post\">"; | |
604 | echo "<input type=hidden name=idx value=$idx />"; | |
605 | echo "<input type=hidden name=action value=sqa />"; | |
f0f4086d | 606 | echo "<input type=text size=14 name=str /><br>"; |
d304116f | 607 | echo "<input type=submit name=submit value=\""._("Search rpmqa!")."\" />"; |
38299f63 MM |
608 | echo "</form>"; |
609 | } | |
2a73daad MM |
610 | } |
611 | ||
38299f63 | 612 | function get_qa() |
2a73daad | 613 | { |
38299f63 | 614 | global $idx, $qa_addr, $qa_base; |
c8c26d5e | 615 | |
b018fce6 | 616 | if (!isset($idx) || !isset($qa_addr[$idx])) |
2a73daad MM |
617 | return false; |
618 | ||
b018fce6 | 619 | $a = $qa_addr[$idx]; |
c8c26d5e | 620 | |
38299f63 MM |
621 | if ($qa_addr[$idx] == "") |
622 | return false; | |
623 | else | |
624 | return fopen("$qa_base$qa_addr[$idx]", "r"); | |
625 | } | |
626 | ||
627 | function search_qa() | |
628 | { | |
629 | global $url, $idx, $qa_addr, $str; | |
630 | ||
631 | $f = get_qa(); | |
d304116f | 632 | echo "<h1>"._("Search results for")." '$str' "._("in")." $qa_addr[$idx]</h1>"; |
38299f63 MM |
633 | |
634 | start_pre(); | |
635 | ||
636 | if ($f == 0) { | |
d304116f | 637 | echo _("Sorry, cannot open."); |
38299f63 MM |
638 | } else { |
639 | while (($s = fgets($f, 1000)) != false) { | |
640 | if (stristr($s, $str)) | |
641 | echo $s; | |
642 | } | |
643 | echo "/* EOF */"; | |
644 | } | |
645 | end_pre(); | |
646 | } | |
647 | ||
648 | function dump_qa($plain) | |
649 | { | |
650 | global $url, $idx, $qa_addr; | |
c8c26d5e | 651 | |
38299f63 MM |
652 | $a = $qa_addr[$idx]; |
653 | ||
654 | $f = get_qa(); | |
c8c26d5e | 655 | |
2a73daad MM |
656 | if ($plain) { |
657 | header("Content-type: text/plain"); | |
d304116f | 658 | echo _("# rpm -qa of")." $a\n"; |
2a73daad | 659 | } else { |
d304116f | 660 | echo "<h1>"._("rpm -qa of")." $a</h1>"; |
661 | echo "<a href=\"$url?idx=$idx&action=qatxt\">"._("text/plain version")."</a>"; | |
2a73daad MM |
662 | start_pre(); |
663 | } | |
664 | ||
38299f63 | 665 | if ($f == 0) { |
d304116f | 666 | echo _("Sorry, cannot open."); |
b018fce6 | 667 | } else { |
38299f63 MM |
668 | while (($s = fgets($f, 1000)) != false) { |
669 | echo $s; | |
670 | } | |
2a73daad | 671 | } |
c8c26d5e | 672 | |
2a73daad MM |
673 | if (!$plain) |
674 | end_pre(); | |
675 | } | |
676 | ||
58c74097 | 677 | |
678 | function adv_search() | |
679 | { | |
ecba143e | 680 | global $addr, $url, $local, $_POST, $off, $cnt; |
58c74097 | 681 | |
ecba143e | 682 | $big_url = "$url?idx=$idx&ok=$ok&ns=$ns&cnt=$cnt"; |
58c74097 | 683 | |
684 | echo "<form action=\"index.php?action=adv_search\" method=\"post\">"; | |
685 | ||
686 | echo "<div align=center>"; | |
687 | echo "<table border=0>\n"; | |
688 | echo "<tr>\n"; | |
689 | echo "<td>"._("Package name")."</td>\n"; | |
690 | echo "<td><input type=\"text\" size=\"20\" name=\"name\" value=\"".$_POST[name]."\"/></td>\n"; | |
691 | echo "</tr>\n"; | |
692 | ||
693 | echo "<tr>\n"; | |
694 | echo "<td>"._("Days")."</td>\n"; | |
695 | echo "<td>"._("From").": <input type=\"text\" size=\"20\" name=\"age1\" value=\"".$_POST["age1"]."\" /></td>\n"; | |
696 | echo "<td>"._("To").": <input type=\"text\" size=\"20\" name=\"age2\" value=\"".$_POST["age2"]."\" /></td>\n"; | |
697 | echo "</tr>\n"; | |
698 | ||
699 | echo "<tr>\n"; | |
700 | echo "<td>"._("Size")."</td>\n"; | |
701 | echo "<td>"._("From").": <input type=\"text\" size=\"20\" name=\"size1\" value=\"".$_POST["size1"]."\" /></td>\n"; | |
702 | echo "<td>"._("To").": <input type=\"text\" size=\"20\" name=\"size2\" value=\"".$_POST["size2"]."\" /></td>\n"; | |
703 | echo "</tr>\n"; | |
704 | ||
705 | echo "<tr>\n"; | |
706 | echo "<td>"._("Search logs:")."</td>\n"; | |
707 | echo "</tr>\n"; | |
708 | ||
709 | echo "<tr>\n"; | |
710 | echo "<td>"._("OK")."</td>\n"; | |
711 | echo "<td>"._("Failed")."</td>\n"; | |
712 | echo "</tr>\n"; | |
713 | ||
714 | for ($i = 0; $i < count($addr); $i++) | |
715 | { | |
716 | echo "<tr>\n"; | |
717 | $name="as0_".$i; | |
718 | $check=" checked=\"on\""; | |
719 | echo "<td><input name=$name type=\"checkbox\"$check>".$addr[$i]."</input></td>\n"; | |
720 | $name="as1_".$i; | |
721 | $check=" checked=\"on\""; | |
722 | echo "<td><input name=$name type=\"checkbox\"$check>".$addr[$i]."</input></td>\n"; | |
723 | echo "</tr>\n"; | |
724 | } | |
725 | ||
726 | echo "<tr>\n"; | |
727 | echo "<td><input type=submit name=submit value=\""._("Search!")."\" /></td>"; | |
728 | echo "</tr>\n"; | |
729 | ||
730 | echo "</table>\n"; | |
731 | ||
732 | // if (isset($_POST["name"]) || isset($_POST["age1"]) || isset($_POST["age2"]) || | |
733 | // isset($_POST["size1"]) || isset($_POST["size2"])) | |
734 | if (($_POST["name"]!="") || ($_POST["age1"]!="") || ($_POST["age2"]!="") || | |
735 | ($_POST["size1"]!="") || ($_POST["size2"]!="")) | |
736 | { | |
737 | unset($list); | |
738 | $now = time(); | |
739 | for ($i = 0; $i < count($addr); $i++) | |
740 | ||
741 | for ($j=0;$j<2;$j++) | |
742 | { | |
743 | unset($tmp_list); | |
744 | if (isset($_POST["as".$j."_".$i])) | |
745 | { | |
746 | if ($local) { | |
747 | $tmp_list = directory_list($i,$j); | |
748 | } else { | |
749 | $tmp_list = open_ftp($i,$j); | |
750 | } | |
751 | if (is_array($tmp_list)) | |
752 | { | |
753 | while (list($k,$name)=each($tmp_list)) | |
754 | { | |
755 | $s = filesize("$root_directory$name"); | |
756 | $t = $now - filemtime("$root_directory$name"); | |
757 | $t/=(24*3600); | |
758 | if (($_POST["name"]!="") && (!preg_match("/".$_POST["name"]."/i",$name)))continue; | |
759 | if (($_POST["age1"]) && ($_POST["age1"]>$t))continue; | |
760 | if (($_POST["age2"]) && ($_POST["age2"]<$t))continue; | |
761 | ||
762 | if (($_POST["size1"]) && ($_POST["size1"]>$s))continue; | |
763 | if (($_POST["size2"]) && ($_POST["size2"]<$s))continue; | |
764 | ||
765 | $list[$i."_".$j."_".$k]=$name; | |
766 | } | |
767 | } | |
768 | } | |
769 | } | |
770 | ||
771 | if (sizeof($list)==0) | |
772 | { | |
773 | echo _("Nothing found"); | |
ecba143e | 774 | } else |
775 | { | |
58c74097 | 776 | |
777 | echo "<table border=0 cellspacing=1 ". | |
778 | "cellpadding=3 bgcolor=#000000 width=90%>\n"; | |
779 | echo "<tr><th bgcolor=#CCCCFF align=left width=10%>"._("Builder"). | |
780 | "[<a href=\"$big_url&ns=2\">"._("sort")."</a>]</th>"; | |
781 | echo "<th bgcolor=#CCCCFF align=left width=60%>"._("Log File"). | |
782 | "[<a href=\"$big_url&ns=1\">"._("sort")."</a>]</th>". | |
783 | "<th bgcolor=#CCCCFF align=right width=15%>"._("Size")."</th> ". | |
784 | "<th bgcolor=#CCCCFF align=left>"._("Age"). | |
785 | "[<a href=\"$big_url&ns=0\">"._("sort")."</a>]</th>". | |
786 | "</th></tr>"; | |
787 | ||
788 | function cmp1($f1, $f2) { | |
789 | global $ftp_conn, $root_directory, $local; | |
790 | if ($local) | |
791 | return filemtime("$root_directory$f2") - filemtime("$root_directory$f1"); | |
792 | return ftp_mdtm($ftp_conn, $f2) - ftp_mdtm($ftp_conn, $f1); | |
793 | } | |
794 | ||
795 | function cmp2($f1, $f2) { | |
796 | list($p11,$p12,$p13)=explode("_",$f1); | |
797 | list($p21,$p22,$p23)=explode("_",$f2); | |
798 | return strcmp($f2,$f1); | |
799 | } | |
800 | ||
801 | if ($ns == 1) | |
802 | { | |
803 | usort($list, "cmp1"); | |
804 | // } else if ($ns == 2) | |
805 | // { | |
806 | // uksort($list, "cmp2"); | |
807 | } else | |
808 | { | |
809 | asort($list); | |
810 | } | |
811 | ||
812 | $counter=0; | |
813 | while (list($k,$name)=each($list)) | |
814 | { | |
815 | if (($counter<$off) || ($counter>$off+$cnt-1)) | |
816 | { | |
817 | $counter++; | |
818 | continue; | |
819 | } | |
820 | ||
821 | $counter++; | |
822 | list($i,$j,$k)=explode("_",$k); | |
823 | ||
824 | $h = bin2hex(mhash(MHASH_MD5, $name)); | |
825 | $f = preg_replace("/.*\/([^\/]*)$/", "\\1", $name); | |
826 | $f = preg_replace("/\.(bz2|gz)$/", "", $f); | |
827 | if ($local) { | |
828 | $s = filesize("$root_directory$name"); | |
829 | $t = $now - filemtime("$root_directory$name"); | |
830 | } else { | |
831 | $s = ftp_size($ftp_conn, $list[$i]); | |
832 | $t = $now - ftp_mdtm($ftp_conn, $list[$i]); | |
833 | } | |
834 | $t /= 60; | |
835 | if ($t >= 60) { | |
836 | $t /= 60; | |
837 | if ($t >= 24) { | |
838 | $t /= 24; | |
839 | $t = round($t); | |
840 | $t = $t . ngettext(" day"," days",$t); | |
841 | } else { | |
842 | $t = round($t); | |
843 | $t = $t . ngettext(" hour"," hours",$t); | |
844 | } | |
845 | } else { | |
846 | $t = round($t); | |
847 | $t = $t . ngettext(" minute"," minutes",$t); | |
848 | } | |
ecba143e | 849 | $big_url = "$url?idx=$i&ok=$j&ns=$ns&cnt=$cnt"; |
58c74097 | 850 | $u = "$big_url&off=$off&id=$h"; |
ecba143e | 851 | |
f0f4086d | 852 | $builder=$addr[$i]."/".(($j=="1")?"OK":"FAIL"); |
58c74097 | 853 | echo "<tr>"; |
854 | echo "<td bgcolor=#CCCCCC><a href=\"$u\">$builder</a></td>"; | |
855 | echo "<td bgcolor=#CCCCCC><a href=\"$u\">$f</a> ". | |
856 | "[<a href=\"$u&action=text\">"._("text")."</a> | ". | |
857 | "<a href=\"$u&action=tail\">"._("tail")."</a>]". | |
858 | "</td><td bgcolor=#CCCCCC align=right>". | |
859 | "$s</td><td bgcolor=#CCCCCC>$t</td></tr>\n"; | |
860 | } | |
861 | echo "</table></div>\n"; | |
862 | ||
863 | $backarr = "<<< "; | |
864 | $back = _("Page back"); | |
865 | $forward = _("Page forward"); | |
866 | $forwardarr = " >>>"; | |
867 | ||
868 | // FIXME | |
869 | /* | |
870 | echo "<p><table width=90% align=center><tr><td align=left width=1%>"; | |
871 | ||
872 | if ($off > 0) { | |
873 | $noff = $off - $cnt; | |
874 | if ($noff < 0) | |
875 | $noff = 0; | |
876 | $hrefurl = "<a href=\"$big_url&off=$noff\">"; | |
877 | echo "$hrefurl$backarr</a></td><td align=left>$hrefurl$back</a>"; | |
878 | } else { | |
879 | echo "$backarr</td><td align=left>$back"; | |
880 | } | |
881 | ||
882 | echo "</td>\n<td align=center>"; | |
883 | echo "</td>\n<td align=right>"; | |
884 | ||
885 | if ($off + $cnt < count($list)) | |
886 | { | |
887 | $noff = $off + $cnt; | |
888 | if ($noff < 0) | |
889 | $noff = 0; | |
890 | $hrefurl = "<a href=\"$big_url&off=$noff\">"; | |
891 | echo "$hrefurl$forward</a></td><td align=right width=1%>$hrefurl$forwardarr</a>"; | |
892 | } | |
893 | else | |
894 | { | |
895 | echo "$forward</td><td align=right width=1%>$forwardarr"; | |
896 | } | |
897 | ||
898 | echo "</td>\n</tr></table></p>"; | |
899 | */ | |
ecba143e | 900 | } |
58c74097 | 901 | if ($local == 0) |
902 | { | |
903 | ftp_quit($ftp_conn); | |
904 | $ftp_conn = 0; | |
905 | } | |
906 | } else | |
907 | { | |
908 | echo _("Enter something!"); | |
909 | } | |
910 | echo "</form>\n"; | |
911 | } | |
912 | ||
2a73daad MM |
913 | function welcome() |
914 | { | |
915 | ?> | |
916 | <table border=0 width=100%><tr><td width=20%> </td><td> | |
d304116f | 917 | <h1><?=_("Welcome!")?></h1> |
918 | <p><?=_("Welcome to PLD Build Logs WWW interface.")?></p><p> | |
919 | <?=_("Feel free to email bug reports, complaints and feature requests ")?> | |
ca0f7067 | 920 | <!-- ech... niech strace... --> |
58c74097 | 921 | <a href="mailto:feedback@pld.org.pl"><?=_("to us")?></a>. <?=_("Positive opinions are also")?> |
922 | <a href="mailto:feedback@pld.org.pl"><?=_("welcome")?></a> ;)</p> | |
ecba143e | 923 | <p>Version: $Id: index.php,v 1.24 2002/10/07 11:04:22 ggodlewski Exp $</p> |
2a73daad MM |
924 | </td><td width=20%> </td></tr> |
925 | </table> | |
926 | <?php | |
927 | } | |
928 | ||
929 | header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); | |
930 | header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); | |
931 | header("Cache-Control: no-cache, must-revalidate"); | |
932 | header("Pragma: no-cache"); | |
933 | ||
934 | //phpinfo(); | |
e86d1be4 | 935 | if ($local) { |
936 | if ($action == "text") { | |
c8c26d5e | 937 | dump_text(); |
58c74097 | 938 | } else if ($action == "adv_search") { |
939 | myheader(); | |
940 | adv_search(); | |
941 | trailer(); | |
e86d1be4 | 942 | } else if ($action == "qatxt") { |
943 | dump_qa(1); | |
944 | } else { | |
945 | myheader(); | |
946 | echo "<table cellpadding=10 width=100%><tr><td valign=top width=10%>"; | |
947 | list_archs(); | |
948 | echo "</td><td valign=top>"; | |
949 | flush(); | |
950 | if ($action == "qa") | |
951 | dump_qa(0); | |
38299f63 MM |
952 | else if ($action == "sqa") |
953 | search_qa(); | |
e86d1be4 | 954 | else if (isset($id)) |
c8c26d5e | 955 | dump_log($action == "tail"); |
e86d1be4 | 956 | else if (isset($idx)) |
c8c26d5e | 957 | list_logs(); |
e86d1be4 | 958 | else |
959 | welcome(); | |
51aa6406 | 960 | echo "</td></tr></table>"; |
e86d1be4 | 961 | trailer(); |
962 | } | |
963 | } | |
964 | else { | |
2a73daad | 965 | |
e86d1be4 | 966 | if ($action == "text") { |
967 | dump_text(); | |
968 | } else if ($action == "qatxt") { | |
969 | dump_qa(1); | |
970 | } else { | |
971 | myheader(); | |
972 | echo "<table cellpadding=10 width=100%><tr><td valign=top width=10%>"; | |
973 | list_archs(); | |
974 | echo "</td><td valign=top>"; | |
975 | flush(); | |
976 | if ($action == "qa") | |
977 | dump_qa(0); | |
978 | else if (isset($id)) | |
979 | dump_log($action == "tail"); | |
980 | else if (isset($idx)) | |
981 | list_logs(); | |
982 | else | |
983 | welcome(); | |
51aa6406 | 984 | echo "</td></tr></table>"; |
e86d1be4 | 985 | trailer(); |
986 | } | |
2a73daad MM |
987 | } |
988 | ?> |