mirror of
https://github.com/billz/raspap-webgui.git
synced 2025-03-01 10:31:47 +00:00
Merge pull request #1519 from NL-TCH/REST-API
RestAPI installer integrated
This commit is contained in:
@@ -9,6 +9,7 @@ $defaults = [
|
||||
'RASPI_VERSION' => '3.0.9',
|
||||
'RASPI_CONFIG_NETWORK' => RASPI_CONFIG.'/networking/defaults.json',
|
||||
'RASPI_CONFIG_PROVIDERS' => 'config/vpn-providers.json',
|
||||
'RASPI_CONFIG_API' => RASPI_CONFIG.'/api',
|
||||
'RASPI_ADMIN_DETAILS' => RASPI_CONFIG.'/raspap.auth',
|
||||
'RASPI_WIFI_AP_INTERFACE' => 'wlan0',
|
||||
'RASPI_CACHE_PATH' => sys_get_temp_dir() . '/raspap',
|
||||
|
@@ -45,6 +45,9 @@
|
||||
case "/system_info":
|
||||
DisplaySystem($extraFooterScripts);
|
||||
break;
|
||||
case "/restapi_conf":
|
||||
DisplayRestAPI();
|
||||
break;
|
||||
case "/about":
|
||||
DisplayAbout();
|
||||
break;
|
||||
|
94
includes/restapi.php
Normal file
94
includes/restapi.php
Normal file
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
|
||||
require_once 'includes/functions.php';
|
||||
require_once 'config.php';
|
||||
|
||||
/**
|
||||
* Handler for RestAPI settings
|
||||
*/
|
||||
function DisplayRestAPI()
|
||||
{
|
||||
// initialize status object
|
||||
$status = new \RaspAP\Messages\StatusMessage;
|
||||
|
||||
// create instance of DotEnv
|
||||
$dotenv = new \RaspAP\DotEnv\DotEnv;
|
||||
$dotenv->load();
|
||||
|
||||
// set defaults
|
||||
$apiKey = $_ENV['RASPAP_API_KEY'];
|
||||
|
||||
if (!RASPI_MONITOR_ENABLED) {
|
||||
if (isset($_POST['SaveAPIsettings'])) {
|
||||
if (isset($_POST['txtapikey'])) {
|
||||
$apiKey = trim($_POST['txtapikey']);
|
||||
if (strlen($apiKey) == 0) {
|
||||
$status->addMessage('Please enter a valid API key', 'danger');
|
||||
} else {
|
||||
$return = saveAPISettings($status, $apiKey, $dotenv);
|
||||
$status->addMessage('Restarting restapi.service', 'info');
|
||||
exec('sudo /bin/systemctl stop restapi.service', $return);
|
||||
sleep(1);
|
||||
exec('sudo /bin/systemctl start restapi.service', $return);
|
||||
}
|
||||
}
|
||||
} elseif (isset($_POST['StartRestAPIservice'])) {
|
||||
$status->addMessage('Attempting to start restapi.service', 'info');
|
||||
exec('sudo /bin/systemctl start restapi.service', $return);
|
||||
foreach ($return as $line) {
|
||||
$status->addMessage($line, 'info');
|
||||
}
|
||||
} elseif (isset($_POST['StopRestAPIservice'])) {
|
||||
$status->addMessage('Attempting to stop restapi.service', 'info');
|
||||
exec('sudo /bin/systemctl stop restapi.service', $return);
|
||||
foreach ($return as $line) {
|
||||
$status->addMessage($line, 'info');
|
||||
}
|
||||
}
|
||||
}
|
||||
exec("ps aux | grep -v grep | grep uvicorn", $output, $return);
|
||||
$serviceStatus = !empty($output) ? "up" : "down";
|
||||
|
||||
exec("sudo systemctl status restapi.service", $output, $return);
|
||||
array_shift($output);
|
||||
$serviceLog = implode("\n", $output);
|
||||
|
||||
if ($serviceStatus == "up") {
|
||||
$docUrl = getDocUrl();
|
||||
$faicon = "<i class=\"text-gray-500 fas fa-external-link-alt ml-1\"></i>";
|
||||
$docMsg = sprintf(_("RestAPI docs are accessible <a href=\"%s\" target=\"_blank\">here%s</a>"),$docUrl, $faicon);
|
||||
}
|
||||
|
||||
echo renderTemplate("restapi", compact(
|
||||
"status",
|
||||
"apiKey",
|
||||
"serviceStatus",
|
||||
"serviceLog",
|
||||
"docMsg"
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves RestAPI settings
|
||||
*
|
||||
* @param object status
|
||||
* @param object dotenv
|
||||
* @param string $apiKey
|
||||
*/
|
||||
function saveAPISettings($status, $apiKey, $dotenv)
|
||||
{
|
||||
$status->addMessage('Saving API key', 'info');
|
||||
$dotenv->set('RASPAP_API_KEY', $apiKey);
|
||||
return $status;
|
||||
}
|
||||
|
||||
// Returns a url for fastapi's automatic docs
|
||||
function getDocUrl()
|
||||
{
|
||||
$protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://';
|
||||
$server_name = $_SERVER['SERVER_NAME'];
|
||||
$port = 8081;
|
||||
$url = $protocol . $server_name .':'. $port . '/docs';
|
||||
return $url;
|
||||
}
|
||||
|
@@ -80,12 +80,17 @@
|
||||
<a class="nav-link" href="data_use"><i class="fas fa-chart-bar fa-fw mr-2"></i><span class="nav-label"><?php echo _("Data usage"); ?></a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
<?php if (RASPI_RESTAPI_ENABLED) : ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="restapi_conf"><i class="fas fa-puzzle-piece mr-2"></i><span class="nav-label"><?php echo _("RestAPI"); ?></a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
<?php if (RASPI_SYSTEM_ENABLED) : ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="system_info"><i class="fas fa-cube fa-fw mr-2"></i><span class="nav-label"><?php echo _("System"); ?></a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
<li class="nav-item">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="about"><i class="fas fa-info-circle fa-fw mr-2"></i><span class="nav-label"><?php echo _("About RaspAP"); ?></a>
|
||||
</li>
|
||||
<!-- Divider -->
|
||||
|
Reference in New Issue
Block a user