mirror of
https://github.com/RaspAP/raspap-webgui.git
synced 2024-11-21 23:20:22 +00:00
Implement CLI overrides, get countries + status functions
This commit is contained in:
parent
ac863f5c8a
commit
53f4645c2f
1 changed files with 78 additions and 18 deletions
|
@ -8,39 +8,38 @@ require_once 'includes/config.php';
|
|||
function DisplayProviderConfig()
|
||||
{
|
||||
$status = new \RaspAP\Messages\StatusMessage;
|
||||
$providerName = getProviderValue($_SESSION["providerID"], "name");
|
||||
$binPath = getProviderValue($_SESSION["providerID"], "bin_path");
|
||||
$public_ip = get_public_ip();
|
||||
|
||||
$id = $_SESSION["providerID"];
|
||||
$providerName = getProviderValue($id, "name");
|
||||
$binPath = getProviderValue($id, "bin_path");
|
||||
$publicIP = get_public_ip();
|
||||
|
||||
if (!file_exists($binPath)) {
|
||||
$installPage = getProviderValue($_SESSION["providerID"], "install_page");
|
||||
$installPage = getProviderValue($id, "install_page");
|
||||
$status->addMessage('Expected '.$providerName.' binary not found at: '.$binPath, 'warning');
|
||||
$status->addMessage('Visit the <a href="'.$installPage.'" target="_blank">installation instructions</a> for '.$providerName.'\'s Linux CLI.', 'warning');
|
||||
$ctlState = 'disabled';
|
||||
$providerVersion = 'not found';
|
||||
} else {
|
||||
// fetch provider status
|
||||
$output = shell_exec("sudo $binPath status");
|
||||
$serviceStatus = strtolower($output) == 0 ? "inactive" : "active";
|
||||
$result = strtolower(($lastSpacePos = strrpos($output, ' ')) ? substr($output, $lastSpacePos + 1) : $output);
|
||||
$serviceStatus = getProviderStatus($id, $binPath);
|
||||
$statusDisplay = $serviceStatus == "down" ? "inactive" : "active";
|
||||
|
||||
// fetch provider log
|
||||
$cmd = getCliOverride($id, 'cmd_overrides', 'status');
|
||||
$output = shell_exec("sudo $binPath $cmd");
|
||||
$providerLog = stripArtifacts($output);
|
||||
//echo '<br>status = '.$result;
|
||||
|
||||
// fetch provider version
|
||||
$providerVersion = shell_exec("sudo $binPath -v");
|
||||
|
||||
// fetch account info
|
||||
exec("sudo $binPath account", $output);
|
||||
$cmd = getCliOverride($id, 'cmd_overrides', 'account');
|
||||
exec("sudo $binPath $cmd", $output);
|
||||
$accountInfo = stripArtifacts($output);
|
||||
|
||||
// fetch available countries
|
||||
$output = shell_exec("sudo $binPath countries");
|
||||
$output = stripArtifacts($output, '\s');
|
||||
$arrTmp = explode(",", $output);
|
||||
$countries = array_combine($arrTmp, $arrTmp);
|
||||
foreach ($countries as $key => $value) {
|
||||
$countries[$key] = str_replace("_", " ", $value);
|
||||
}
|
||||
$countries = getCountries($id, $binPath);
|
||||
}
|
||||
|
||||
if (!RASPI_MONITOR_ENABLED) {
|
||||
|
@ -51,7 +50,8 @@ function DisplayProviderConfig()
|
|||
$return = SaveProviderConfig($status, $someVar);
|
||||
} elseif (isset($_POST['StartProviderVPN'])) {
|
||||
$status->addMessage('Attempting to connect VPN provider', 'info');
|
||||
exec("sudo $binPath connect", $return);
|
||||
$cmd = getCliOverride($id, 'cmd_overrides', 'connect');
|
||||
exec("sudo $binPath $cmd", $return);
|
||||
foreach ($return as $line) {
|
||||
$status->addMessage($line, 'info');
|
||||
}
|
||||
|
@ -68,12 +68,13 @@ function DisplayProviderConfig()
|
|||
"provider", compact(
|
||||
"status",
|
||||
"serviceStatus",
|
||||
"statusDisplay",
|
||||
"providerName",
|
||||
"providerVersion",
|
||||
"accountInfo",
|
||||
"countries",
|
||||
"providerLog",
|
||||
"public_ip",
|
||||
"publicIP",
|
||||
"ctlState"
|
||||
)
|
||||
);
|
||||
|
@ -103,3 +104,62 @@ function stripArtifacts($output, $pattern = null)
|
|||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves an override for provider CLI
|
||||
*
|
||||
* @param integer $id
|
||||
* @param string $group
|
||||
* @param string $item
|
||||
* @return string $override
|
||||
*/
|
||||
function getCliOverride($id, $group, $item)
|
||||
{
|
||||
$obj = json_decode(file_get_contents(RASPI_CONFIG_PROVIDERS), true);
|
||||
if ($obj === null) {
|
||||
return false;
|
||||
} else {
|
||||
$id--;
|
||||
if ($obj['providers'][$id][$group][$item] === null) {
|
||||
return $item;
|
||||
} else {
|
||||
return $obj['providers'][$id][$group][$item];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retreives VPN provider status
|
||||
*
|
||||
* @param integer $id
|
||||
* @param string $binPath
|
||||
* @return string $status
|
||||
*/
|
||||
function getProviderStatus($id, $binPath)
|
||||
{
|
||||
$output = shell_exec("sudo $binPath status");
|
||||
$output = strtolower(($lastSpace = strrpos($output, ' ')) ? substr($output, $lastSpace + 1) : $output);
|
||||
$return = getCliOverride($id, 'status', 'connected');
|
||||
$status = strtolower($return) == 'connected' ? "up" : "down";
|
||||
return $status;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves available countries
|
||||
*
|
||||
* @param integer $id
|
||||
* @param string $binPath
|
||||
* @return array $countries
|
||||
*/
|
||||
function getCountries($id, $binPath)
|
||||
{
|
||||
$cmd = getCliOverride($id, 'cmd_overrides', 'countries');
|
||||
$output = shell_exec("sudo $binPath $cmd");
|
||||
$output = stripArtifacts($output, '\s');
|
||||
$arrTmp = explode(",", $output);
|
||||
$countries = array_combine($arrTmp, $arrTmp);
|
||||
foreach ($countries as $key => $value) {
|
||||
$countries[$key] = str_replace("_", " ", $value);
|
||||
}
|
||||
return $countries;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue