Refactor [su_ajax|admin_cmd|api_webhook] methods into single /api/ interface
This commit is contained in:
89
www/pages/api.php
Normal file
89
www/pages/api.php
Normal file
@@ -0,0 +1,89 @@
|
||||
<?php
|
||||
|
||||
global $OPTIONS;
|
||||
|
||||
require_once (__DIR__ . '/../internals/base.php');
|
||||
|
||||
$API_COMMANDS =
|
||||
[
|
||||
'base::test' => [ 'src' => __DIR__.'/../commands/base_test.php', 'auth' => 'none' ],
|
||||
|
||||
'progs::updatecheck' => [ 'src' => __DIR__.'/../commands/progs_updatecheck.php', 'auth' => 'none' ],
|
||||
|
||||
'site::createProgramThumbnails' => [ 'src' => __DIR__.'/../commands/site_createProgramThumbnails.php', 'auth' => 'admin' ],
|
||||
'site::createBookThumbnails' => [ 'src' => __DIR__.'/../commands/site_createBookThumbnails.php', 'auth' => 'admin' ],
|
||||
|
||||
'server::setselfaddress' => [ 'src' => __DIR__.'/../commands/server_setselfaddress.php', 'auth' => 'none' ],
|
||||
'server::gitwebhook' => [ 'src' => __DIR__.'/../commands/server_gitwebhook.php', 'auth' => 'webhook_secret' ],
|
||||
'server::backupupload' => [ 'src' => __DIR__.'/../commands/server_backupupload.php', 'auth' => 'upload_secret' ],
|
||||
|
||||
'extendedgitgraph::status' => [ 'src' => __DIR__.'/../commands/extendedgitgraph_status.php', 'auth' => 'ajax_secret' ],
|
||||
'extendedgitgraph::redraw' => [ 'src' => __DIR__.'/../commands/extendedgitgraph_redraw.php', 'auth' => 'ajax_secret' ],
|
||||
'extendedgitgraph::refresh' => [ 'src' => __DIR__.'/../commands/extendedgitgraph_refresh.php', 'auth' => 'ajax_secret' ],
|
||||
|
||||
'alephnote::statsping' => [ 'src' => __DIR__.'/../commands/alephnote_statsping.php', 'auth' => 'none' ],
|
||||
'alephnote::show' => [ 'src' => __DIR__.'/../commands/alephnote_show.php', 'auth' => 'ajax_secret' ],
|
||||
|
||||
'updates::show' => [ 'src' => __DIR__.'/../commands/updates_show.php', 'auth' => 'ajax_secret' ],
|
||||
];
|
||||
|
||||
$cmd = strtolower($OPTIONS['cmd']);
|
||||
|
||||
if (!array_key_exists($cmd, $API_COMMANDS))
|
||||
{
|
||||
print(" \n");
|
||||
print(" \n");
|
||||
print(" ... \n");
|
||||
print(" ;::::; \n");
|
||||
print(" ;::::; :; \n");
|
||||
print(" ;:::::' :; \n");
|
||||
print(" ;:::::; ;. \n");
|
||||
print(" ,:::::' ; OOO\\ \n");
|
||||
print(" ::::::; ; OOOOO\\ \n");
|
||||
print(" ;:::::; ; OOOOOOOO \n");
|
||||
print(" ,;::::::; ;' / OOOOOOO \n");
|
||||
print(" ;:::::::::`. ,,,;. / / DOOOOOO \n");
|
||||
print(" .';:::::::::::::::::;, / / DOOOO \n");
|
||||
print(" ,::::::;::::::;;;;::::;, / / DOOO \n");
|
||||
print(" ;`::::::`'::::::;;;::::: ,#/ / DOOO \n");
|
||||
print(" :`:::::::`;::::::;;::: ;::# / DOOO \n");
|
||||
print(" ::`:::::::`;:::::::: ;::::# / DOO \n");
|
||||
print(" `:`:::::::`;:::::: ;::::::#/ DOO \n");
|
||||
print(" :::`:::::::`;; ;:::::::::## OO \n");
|
||||
print(" ::::`:::::::`;::::::::;:::# OO \n");
|
||||
print(" `:::::`::::::::::::;'`:;::# O \n");
|
||||
print(" `:::::`::::::::;' / / `:# \n");
|
||||
print(" ::::::`:::::;' / / `# \n");
|
||||
print(" \n");
|
||||
print(" \n");
|
||||
die('Wrong command.');
|
||||
}
|
||||
|
||||
$config = $API_COMMANDS[$cmd];
|
||||
|
||||
|
||||
$secret = isset($_GET['secret']) ? $_GET['secret'] : '';
|
||||
|
||||
if ($config['auth'] === 'webhook_secret' && $secret !== $CONFIG['webhook_secret']) die('Unauthorized.');
|
||||
if ($config['auth'] === 'ajax_secret' && $secret !== $CONFIG['ajax_secret']) die('Unauthorized.');
|
||||
if ($config['auth'] === 'upload_secret' && $secret !== $CONFIG['upload_secret']) die('Unauthorized.');
|
||||
if ($config['auth'] === 'admin' && !isLoggedInByCookie()) die('Unauthorized.');
|
||||
|
||||
|
||||
global $API_OPTIONS;
|
||||
|
||||
$API_OPTIONS = [];
|
||||
foreach ($_GET as $k => $v) $API_OPTIONS[strtolower($k)] = $v;
|
||||
foreach ($OPTIONS['_urlparams'] as $k => $v) $API_OPTIONS[strtolower($k)] = $v;
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
/** @noinspection PhpIncludeInspection */
|
||||
include $config['src'];
|
||||
}
|
||||
catch (exception $e)
|
||||
{
|
||||
print("API Command failed with exception");
|
||||
print($e);
|
||||
}
|
||||
Reference in New Issue
Block a user