display support for signatures
[pharext/replicator.pharext.org] / public / html.php
1 <?php
2 const INCLUDED = __FILE__;
3
4 require_once "index.php";
5
6 ob_start($res);
7
8 ?>
9 <!doctype html>
10 <html>
11 <head>
12 <meta charset="utf-8">
13 <title>Replicator</title>
14 <link rel="stylesheet" href="concise/css/concise.min.css">
15 <link href="//fonts.googleapis.com/css?family=Droid+Sans" rel="stylesheet" type="text/css">
16 <meta name="viewport" content="width=device-width, initial-scale=1">
17 <style>
18 body {
19 padding-bottom: 2em;
20 padding-top: 7em;
21 }
22 .header {
23 top: 0;
24 width: 100%;
25 }
26 .footer {
27 bottom: 0;
28 width: 100%;
29 text-align: center;
30 font-size: .9em;
31 }
32 .header, .footer {
33 position: fixed;
34 box-shadow: 0px 0px .8em .4em #89a;
35 background: #62B3E7;
36 padding: .5em 0;
37 }
38 .header h1 {
39 font-weight: bold;
40 }
41 .header h1 a, .footer a:hover {
42 text-decoration: none;
43 }
44 .header h1 a:hover {
45 text-decoration: underline;
46 }
47 .header h1 big {
48 /* normalize browser difference */
49 font-size: 1.3em;
50 }
51 .header h1 big, .footer, .footer a {
52 color: #fdfdfd;
53 text-shadow: grey 0 0 .1em;
54 }
55 .header h1 small {
56 color: #666;
57 font-size: 1.3rem;
58 text-shadow: white 0 0 .2em;
59 }
60 li {
61 list-style-type: circle;
62 }
63 pre.publickey {
64 font-size: .8rem;
65 line-height: 1rem;
66 word-wrap: none;
67 }
68 code {
69 background: #EEE;
70 padding: .1rem;
71 border-radius: 4px;
72 }
73 pre.code {
74 background: #333;
75 color: #62B3E7;
76 padding: 1em;
77 border-radius: 4px;
78 margin-right: 2em;
79 }
80 pre.code code {
81 background: transparent;
82 }
83 </style>
84 </head>
85 <body>
86 <div class="header">
87 <header>
88 <h1 class="container">
89 <a href="?"><big>Replicator</big></a><br>
90 <small>Replicating PECL releases as pharext packages since 2015</small>
91 </h1>
92 <a href="https://github.com/m6w6/replicator"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/652c5b9acfaddf3a9c326fa6bde407b87f7be0f4/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6f72616e67655f6666373630302e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png"></a>
93 </header>
94 </div>
95 <div class="container">
96
97 <?php if (!empty($package)) : ?>
98
99 <h2><?= htmlspecialchars($package) ?></h2>
100 <table class="table table-full">
101 <thead>
102 <tr>
103 <th class="text-left" colspan="4">Package</th>
104 <th class="text-left">Date</th>
105 <th class="text-right">Pharext</th>
106 </tr>
107 </thead>
108 <tbody>
109
110 <?php foreach (array_reverse(package_versions($package)) as $version => $phars) : ?>
111
112 <tr>
113 <td class="text-left">
114 <?= htmlspecialchars($package) ?>
115 <?= htmlspecialchars($version) ?>
116 </td>
117
118 <?php foreach (array_map("array_values", $phars) as $ext => list($phar, $date, $size, $pharext)) : ?>
119 <td class="text-left">
120 &#10507;&nbsp;<a href="<?= htmlspecialchars($phar) ?>"
121 download>ext.phar<?= htmlspecialchars($ext) ?></a>&nbsp;<small>(<?= human_size($size) ?>)</small><br>
122
123 <?php foreach (SIGS as $typ => $sig) : ?>
124 <small>#&nbsp;<a href="<?= sigof($phar, $sig) ?>" download><?= "$typ.$sig" ?></a></small>
125 <?php endforeach; ?>
126 </td>
127 <?php endforeach; ?>
128 <?php for($i = 0; $i < 3-count($phars); ++$i) : ?>
129
130 <td></td>
131 <?php endfor; ?>
132
133 <td class="text-left">
134 <?= human_date($date); ?>
135
136 </td>
137 <td class="text-right <?= version_compare($pharext, "3.0.1", "<") ? "color-red":"" ?>">
138 v<?= $pharext ?>
139 </td>
140 </tr>
141 <?php endforeach; ?>
142
143 </tbody>
144 </table>
145 <?php else: ?>
146
147 <h2>Available Packages</h2>
148 <ul class="list-inline">
149 <?php foreach (array_map("htmlspecialchars", $packages) as $index => $package) : ?>
150 <?php $next = strtolower($package{0}); ?>
151 <?php if (isset($prev) && $next != $prev) : ?>
152
153 </ul>
154 <ul class="list-inline">
155 <?php endif; ?>
156
157 <li><a href="?<?= $package ?>"><?= $package ?></a></li>
158 <?php $prev = $next; ?>
159 <?php endforeach; ?>
160
161 </ul>
162 <?php endif; ?>
163 </div>
164 <div class="container">
165 <h3>Public Keys</h3>
166 <div class="column-8">
167 <h4>RSA <small><a href="replicator.pub" download>replicator.pub</a></small></h4>
168 <p>Verify with:</p>
169 <pre class="code"><code># openssl dgst \
170 -verify replicator.pub \
171 -signature <?= isset($phar) ? htmlspecialchars(basename($phar)).".sig" : "apfd-1.0.1.ext.phar.sig" ?> \
172 <?= isset($phar) ? htmlspecialchars(basename($phar)): "apfd-1.0.1.ext.phar" ?></code></pre>
173 <pre class="publickey">
174 -----BEGIN PUBLIC KEY-----
175 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnzsDXNox5V0V9GLcnXEu
176 kxnhFs9+/AMm//1qJAoNwP6sgmYShuyI3NDZzCmT7tOIcpqW0I4P8D1Psrftyqbt
177 spedAvyOLCLZXaOuE130aMlvfqEiO+s8ZVZL8aHLE/orLbpOexEs33a1j6shl5C6
178 MoojzK3uYccL4XJfj0t2nrC+XMfWE9oQGvyLZv3tNCzH4Oy7knWVVy10EKbKgPft
179 izCFR+0mPYw35RN3gAGrug+khnVRMRNpS7B0uZ6E29Bgsrud9l91mVbrL+DaoaSa
180 IFGeYuFGe2ZpHUfxf16S0w7ybPrrJJsD6cYOtwXjRZo+4ux6PdKZ+m3hnKWoj9IF
181 OwIDAQAB
182 -----END PUBLIC KEY-----</pre>
183 </div>
184 <div class="column-8">
185 <h4>OpenPGP <small><a href="4093AEF6.pub" download>4093AEF6.pub</a></small></h4>
186 <p>Verify with:</p>
187 <pre class="code"><code># gpg --import 4093AEF6.pub
188
189 # gpg --verify <?= isset($phar) ? htmlspecialchars(basename($phar)).".asc" : "apfd-1.0.1.ext.phar.asc" ?> \
190 <?= isset($phar) ? htmlspecialchars(basename($phar)): "apfd-1.0.1.ext.phar" ?></code></pre>
191 </p>
192 <pre class="publickey">
193 -----BEGIN PGP PUBLIC KEY BLOCK-----
194
195 mQENBFcBXgsBCACfOwNc2jHlXRX0YtydcS6TGeEWz378Ayb//WokCg3A/qyCZhKG
196 7Ijc0NnMKZPu04hympbQjg/wPU+yt+3Kpu2yl50C/I4sItldo64TXfRoyW9+oSI7
197 6zxlVkvxocsT+istuk57ESzfdrWPqyGXkLoyiiPMre5hxwvhcl+PS3aesL5cx9YT
198 2hAa/Itm/e00LMfg7LuSdZVXLXQQpsqA9+2LMIVH7SY9jDflE3eAAau6D6SGdVEx
199 E2lLsHS5noTb0GCyu532X3WZVusv4NqhpJogUZ5i4UZ7ZmkdR/F/XpLTDvJs+usk
200 mwPpxg63BeNFmj7i7Ho90pn6beGcpaiP0gU7ABEBAAG0K1BIQVJleHQgUmVwbGlj
201 YXRvciA8cmVwbGljYXRvckBwaGFyZXh0Lm9yZz6JATcEEwEKACEFAlcBXgsCGwMF
202 CwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQZJhrlUCTrvbYGAgAi120YHruidld
203 uPTUS05/ZLoSn3orKkmkskOsjBrUqJvQHx1s8mqJpNJdbIrgPIxQPHauiE6Fj72q
204 uv6TsVRxM+7VjiCHTbHmDheP5Zcyac7Nd/e62DsCYP7LAAx7MHbQvki6XQg4EsQZ
205 cXMKRYuuizJxNGVUeZpusY5WXmc5PRIigsI4eh/2l96IK/eqTDSZiDUwv9ze+HMf
206 JxOunBZVebYUQ3RYEWx1NseInxbiAnEdGM7phZH43jkohxPLROr3nWBmrJbBqULn
207 m6M5fRucJoldU8VIzMdy0xxu+3PuX8aug96njK448r53wjb7yRf6WLonwjlFqTWq
208 0tZzZR3Nd4kBHAQTAQoABgUCVwFehAAKCRBIDj4UsKTHx8iNB/0dl+8T8zp0Pksc
209 jGo8WBA8sfdnMqaE/NkUCbMhT5wkAk+4JRlv/DUfokB6cF87yQCC/IjVAapPT2xS
210 h31QubsjfnfrqSiF4ls8JCTLp/xkafx+tFsJKJOEgCsoeFCOeZBfvhhLPwLyhHLZ
211 ZIsHmYX8YEeku+gsbQIVnWC06WJbJ5HuKByr8VEpgGBig4eRRMcDTJShgDQhn476
212 VLKah3xplnU6bgOzsLn1Ssv095DOouh7tZabkS4jtvDAQK/1g2VQ/d0sOrbKAugQ
213 IHEcyAQedGERU0JqXrXW9WdOqs1AZTl/YGWe94kZqJ1XSWibTSq1TUNCtTcrW558
214 yImBVgJx
215 =nFzc
216 -----END PGP PUBLIC KEY BLOCK-----</pre>
217 </div>
218 <div style="clear:both"></div>
219 </div>
220 <div class="footer">
221 <footer>
222 &copy; 2015 <a href="https://m6w6.name">m6w6</a>, Michael Wallner &mdash; Powered by <a href="//github.com/m6w6/pharext">pharext
223 <?php
224 require_once "../vendor/autoload.php";
225 printf("v%s\n", pharext\Metadata::version());
226 ?>
227 </a>
228 </footer>
229 </div>
230 </body>
231 </html>
232 <?php
233 $res->send();
234 ?>