1 |
<?php |
2 |
|
3 |
$SOURCES="/srv/andrew.net.au/changelogs/Sources"; |
4 |
$URL_STUB="http://packages.debian.org/changelogs/"; |
5 |
$HTTP_CODES="/srv/andrew.net.au/changelogs/http_codes.ini"; |
6 |
|
7 |
header("Pragma: no-cache"); |
8 |
header("Content-Type: text/html; charset=utf-8"); |
9 |
list(, $package) = explode("/", $HTTP_SERVER_VARS["REQUEST_URI"]); |
10 |
$handle = popen("grep-dctrl -sDirectory -sVersion -P $package -X -n $SOURCES", 'r'); |
11 |
|
12 |
$directory = chop(fgets($handle, 1024)); |
13 |
$version = chop(fgets($handle, 1024)); |
14 |
|
15 |
pclose($handle); |
16 |
|
17 |
$version = ereg_replace("^[[:digit:]]+\:", "", $version); |
18 |
|
19 |
if (!strlen($directory) || !strlen($version)) { |
20 |
header("HTTP/1.1 404 Not Found"); ?> |
21 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
22 |
"http://www.w3.org/TR/html4/loose.dtd"> |
23 |
<HTML> |
24 |
<HEAD> |
25 |
<TITLE>Debian source package changelog viewer</TITLE> |
26 |
</HEAD> |
27 |
<LINK rel="stylesheet" type="text/css" href="default.css"> |
28 |
<BODY> |
29 |
<H1>Debian source package changelog viewer</H1> |
30 |
<H2>Error: No such package</H2> |
31 |
The package name you provided, <B><?php echo $package ?></B>, does not seem to exist in the Sources file (for main). |
32 |
<HR> |
33 |
<DIV class="footer">changelogs.debian.net <a href="http://www.debian.org/"><img alt="Powered by Debian" height="30" width="88" src="logos/button-k1.png"></a> Made by Andrew Pollock</DIV> |
34 |
</BODY> |
35 |
</HTML> |
36 |
|
37 |
<?php } else { |
38 |
$URL = $URL_STUB . $directory . "/" .$package . "_" . $version . "/changelog"; |
39 |
|
40 |
$ch = curl_init($URL); |
41 |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); |
42 |
curl_setopt($ch, CURLOPT_REFERER, "http://changelogs.debian.net/"); |
43 |
curl_setopt($ch, CURLOPT_USERAGENT, "changelogs.debian.net"); |
44 |
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); |
45 |
|
46 |
$result = curl_exec($ch); |
47 |
if (curl_errno($ch) == 0 && curl_getinfo($ch, CURLINFO_HTTP_CODE) == "200") { |
48 |
if (ereg("text/html", $_SERVER["HTTP_ACCEPT"])) { |
49 |
|
50 |
# Delouse |
51 |
$result = htmlentities($result, ENT_COMPAT); |
52 |
|
53 |
# Turn URLs into hyperlinks |
54 |
$result = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"\\0\">\\0</a>", $result); |
55 |
|
56 |
# Turn bug IDs into BTS hyperlinks |
57 |
$result = ereg_replace("#([[:digit:]]{1,6})", "#<a href=\"http://bugs.debian.org/\\1\" class=\"bts\" title=\"View bug #\\1 in the BTS\">\\1</a>", $result); |
58 |
|
59 |
foreach (explode("\n", $result) as $line) { |
60 |
if (ereg("\((.*)\) (unstable|stable|testing|experimental); urgency=", $line, $matches)) { |
61 |
$line = "<a name=\"" . $matches[1] . "\"><span class=\"header\">" . $line . "</span></a>"; |
62 |
} |
63 |
if (ereg("^ --",$line)) { |
64 |
$line = ereg_replace("-- (.*) <(.*)>", "-- \\1 <<a href=\"http://qa.debian.org/developer.php?login=\\2\" class=\"ddpo\" title=\"View the Debian Developer Package Overview for \\1\">\\2</a>>", $line); |
65 |
$line = "<span class=\"footer\">" . $line . "</span>"; |
66 |
} |
67 |
$fixed_result .= $line . "\n"; |
68 |
} |
69 |
?> |
70 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
71 |
"http://www.w3.org/TR/html4/loose.dtd"> |
72 |
<HTML> |
73 |
<HEAD> |
74 |
<META http-equiv="Content-Type" content="text/html; charset=utf-8"> |
75 |
<META name="generator" content="changelogs.debian.net"> |
76 |
<LINK rel="stylesheet" href="default.css" type="text/css"> |
77 |
<LINK rel="made" href="mailto:apollock@debian.org" TITLE="changelogs.debian.net feedback"> |
78 |
<LINK rel="icon" href="/favicon.ico"> |
79 |
<LINK rel="shortcut icon" href="/favicon.ico"> |
80 |
<TITLE>Changelog for <?php echo $package?></TITLE> |
81 |
</HEAD> |
82 |
<BODY> |
83 |
<PRE> |
84 |
<?php echo $fixed_result ?> |
85 |
</PRE> |
86 |
<HR> |
87 |
<DIV class="footer">changelogs.debian.net <a href="http://www.debian.org/"><img alt="Powered by Debian" height="30" width="88" src="logos/button-k1.png"></a> Made by Andrew Pollock</DIV> |
88 |
</BODY> |
89 |
<?php } else { |
90 |
Header("Content-Type: text/plain"); |
91 |
echo $result; |
92 |
} |
93 |
} else { |
94 |
$http_code = parse_ini_file($HTTP_CODES); |
95 |
header("HTTP/1.1 503 $http_code[500]"); ?> |
96 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
97 |
"http://www.w3.org/TR/html4/loose.dtd"> |
98 |
<HTML> |
99 |
<HEAD> |
100 |
<TITLE>Debian source package changelog viewer</TITLE> |
101 |
<LINK rel="stylesheet" type="text/css" href="default.css"> |
102 |
</HEAD> |
103 |
<BODY> |
104 |
<H1>Debian source package changelog viewer</H1> |
105 |
<H2>Error: <?php echo (curl_errno($ch) != 0) ? (curl_error($ch)) : (curl_getinfo($ch, CURLINFO_HTTP_CODE) . " " . $http_code[curl_getinfo($ch, CURLINFO_HTTP_CODE)]) ?></H2> |
106 |
There was an error retrieving <a href="<?php echo $URL ?>"><?php echo $URL ?></a> |
107 |
<HR> |
108 |
<DIV class="footer">changelogs.debian.net <a href="http://www.debian.org/"><img alt="Powered by Debian" height="30" width="88" src="logos/button-k1.png"></a> Made by Andrew Pollock</DIV> |
109 |
</BODY> |
110 |
</HTML><?php |
111 |
} |
112 |
curl_close($ch); |
113 |
|
114 |
} ?> |