keyoxide-web/index.php

158 lines
6.5 KiB
PHP
Raw Normal View History

2020-06-26 09:00:22 -06:00
<?php
include_once __DIR__ . '/vendor/autoload.php';
use Pagerange\Markdown\MetaParsedown;
include_once 'server/functions.php';
2020-06-26 09:00:22 -06:00
// Init router
$router = new AltoRouter();
// Init templating
$templates = new League\Plates\Engine('views');
2020-06-26 09:00:22 -06:00
// Router mapping
$router->map('GET', '/', function() {}, 'index');
2020-06-28 16:12:44 -06:00
$router->map('GET', '/guides', function() {}, 'guides');
$router->map('GET', '/guides/[:id]', function() {}, 'guideId');
2020-07-22 06:54:56 -06:00
$router->map('GET', '/util/qrfp/[:fp]', function() {}, 'util_qrfp');
$router->map('GET', '/util/qr/[:txt]', function() {}, 'util_qr');
$router->map('GET', '/util/[:id]', function() {}, 'util');
2020-06-28 16:12:44 -06:00
$router->map('GET', '/faq', function() {}, 'faq');
2020-06-26 09:00:22 -06:00
$router->map('GET', '/verify', function() {}, 'verify');
$router->map('GET', '/encrypt', function() {}, 'encrypt');
$router->map('GET', '/proofs', function() {}, 'proofs');
2020-06-28 15:58:31 -06:00
$router->map('GET', '/verify/hkp/[**:uid]', function() {}, 'verifyHKP');
2020-06-28 15:57:55 -06:00
$router->map('GET', '/verify/wkd/[**:uid]', function() {}, 'verifyWKD');
2020-07-05 07:04:12 -06:00
$router->map('GET', '/verify/keybase/[:uid]/[:fp]', function() {}, 'verifyKeybase');
$router->map('GET', '/verify/[**:uid]', function() {}, 'verifyAUTO');
2020-07-05 07:04:12 -06:00
$router->map('GET', '/encrypt/hkp/[**:uid]', function() {}, 'encryptHKP');
$router->map('GET', '/encrypt/wkd/[**:uid]', function() {}, 'encryptWKD');
$router->map('GET', '/encrypt/keybase/[:uid]/[:fp]', function() {}, 'encryptKeybase');
$router->map('GET', '/encrypt/[**:uid]', function() {}, 'encryptAUTO');
2020-07-05 07:04:12 -06:00
$router->map('GET', '/proofs/hkp/[**:uid]', function() {}, 'proofsHKP');
$router->map('GET', '/proofs/wkd/[**:uid]', function() {}, 'proofsWKD');
$router->map('GET', '/proofs/[**:uid]', function() {}, 'proofsAUTO');
2020-06-28 16:14:21 -06:00
$router->map('GET', '/hkp/[**:uid]', function() {}, 'profileHKP');
2020-06-28 16:09:31 -06:00
$router->map('GET', '/wkd/[**:uid]', function() {}, 'profileWKD');
2020-07-05 07:04:12 -06:00
$router->map('GET', '/keybase/[:uid]/[:fp]', function() {}, 'profileKeybase');
2020-06-28 16:12:44 -06:00
$router->map('GET', '/[**:uid]', function() {}, 'profile');
2020-06-26 09:00:22 -06:00
// Router matching
$match = $router->match();
// Render the appropriate route
if(is_array($match) && is_callable($match['target'])) {
switch ($match['name']) {
case 'index':
echo $templates->render('index');
2020-06-26 09:00:22 -06:00
break;
case 'verify':
echo $templates->render('verify', ['title' => 'Verify — ', 'mode' => 'auto']);
break;
case 'verifyAUTO':
echo $templates->render('verify', ['title' => 'Verify — ', 'mode' => 'auto', 'auto_input' => $match['params']['uid']]);
break;
case 'verifyHKP':
echo $templates->render('verify', ['title' => 'Verify — ', 'mode' => 'hkp', 'hkp_input' => $match['params']['uid']]);
break;
case 'verifyWKD':
echo $templates->render('verify', ['title' => 'Verify — ', 'mode' => 'wkd', 'wkd_input' => $match['params']['uid']]);
2020-06-26 09:00:22 -06:00
break;
2020-07-05 07:04:12 -06:00
case 'verifyKeybase':
echo $templates->render('verify', ['title' => 'Verify — ', 'mode' => 'keybase', 'keybase_username' => htmlspecialchars($match['params']['uid']), 'keybase_fingerprint' => htmlspecialchars($match['params']['fp'])]);
break;
2020-06-26 09:00:22 -06:00
case 'encrypt':
echo $templates->render('encrypt', ['title' => 'Encrypt — ', 'mode' => 'auto']);
break;
case 'encryptAUTO':
echo $templates->render('encrypt', ['title' => 'Encrypt — ', 'mode' => 'auto', 'auto_input' => $match['params']['uid']]);
break;
case 'encryptHKP':
echo $templates->render('encrypt', ['title' => 'Encrypt — ', 'mode' => 'hkp', 'hkp_input' => $match['params']['uid']]);
break;
case 'encryptWKD':
echo $templates->render('encrypt', ['title' => 'Encrypt — ', 'mode' => 'wkd', 'wkd_input' => $match['params']['uid']]);
2020-06-26 09:00:22 -06:00
break;
2020-07-05 07:04:12 -06:00
case 'encryptKeybase':
echo $templates->render('encrypt', ['title' => 'Encrypt — ', 'mode' => 'keybase', 'keybase_username' => htmlspecialchars($match['params']['uid']), 'keybase_fingerprint' => htmlspecialchars($match['params']['fp'])]);
break;
2020-06-26 09:00:22 -06:00
case 'proofs':
echo $templates->render('proofs', ['title' => 'Proofs — ', 'mode' => 'auto']);
break;
case 'proofsAUTO':
echo $templates->render('proofs', ['title' => 'Proofs — ', 'mode' => 'auto', 'auto_input' => $match['params']['uid']]);
break;
case 'proofsHKP':
echo $templates->render('proofs', ['title' => 'Proofs — ', 'mode' => 'hkp', 'hkp_input' => $match['params']['uid']]);
break;
case 'proofsWKD':
echo $templates->render('proofs', ['title' => 'Proofs — ', 'mode' => 'wkd', 'wkd_input' => $match['params']['uid']]);
2020-06-26 09:00:22 -06:00
break;
2020-06-26 09:33:39 -06:00
case 'profile':
echo $templates->render('profile', ['mode' => 'auto', 'uid' => htmlspecialchars($match['params']['uid'])]);
2020-06-28 16:09:31 -06:00
break;
case 'profileHKP':
echo $templates->render('profile', ['mode' => 'hkp', 'uid' => htmlspecialchars($match['params']['uid'])]);
2020-06-28 16:09:31 -06:00
break;
case 'profileWKD':
echo $templates->render('profile', ['mode' => 'wkd', 'uid' => htmlspecialchars($match['params']['uid'])]);
2020-06-26 09:33:39 -06:00
break;
2020-07-05 07:04:12 -06:00
case 'profileKeybase':
echo $templates->render('profile', ['mode' => 'keybase', 'uid' => htmlspecialchars($match['params']['uid']).'/'.htmlspecialchars($match['params']['fp'])]);
break;
2020-06-28 12:14:31 -06:00
case 'guides':
echo $templates->render('guides');
2020-06-28 12:14:31 -06:00
break;
case 'guideId':
2020-07-01 07:47:14 -06:00
$id = htmlspecialchars($match['params']['id']);
if (file_exists("views/guides/$id.title.php") && file_exists("views/guides/$id.content.php")) {
echo $templates->render('guide', ['id' => $id]);
2020-07-01 07:49:39 -06:00
} else {
echo $templates->render("404");
2020-07-01 07:49:39 -06:00
}
2020-06-28 12:14:31 -06:00
break;
2020-06-29 12:58:34 -06:00
case 'util':
2020-07-01 07:47:14 -06:00
$id = htmlspecialchars($match['params']['id']);
echo $templates->render("util/$id");
2020-06-29 12:58:34 -06:00
break;
2020-07-22 06:54:56 -06:00
case 'util_qrfp':
2020-07-02 14:39:56 -06:00
$fp = htmlspecialchars($match['params']['fp']);
2020-07-22 06:54:56 -06:00
echo $templates->render("util/qrfp", ['input' => $fp]);
break;
case 'util_qr':
$uri = htmlspecialchars($match['params']['fp']);
echo $templates->render("util/qr", ['input' => $uri]);
2020-07-02 14:39:56 -06:00
break;
case 'faq':
echo $templates->render("faq");
break;
2020-06-26 09:00:22 -06:00
}
} else {
// No route was matched
echo $templates->render("404");
2020-06-26 09:00:22 -06:00
}