Populate country select, get provider log, connect to country

This commit is contained in:
billz
2023-10-18 09:50:57 +02:00
parent 47f983a361
commit 99f8838fe2
5 changed files with 67 additions and 22 deletions

View File

@@ -26,17 +26,15 @@ function DisplayProviderConfig()
$statusDisplay = $serviceStatus == "down" ? "inactive" : "active";
// fetch provider log
$cmd = getCliOverride($id, 'cmd_overrides', 'status');
$output = shell_exec("sudo $binPath $cmd");
$providerLog = stripArtifacts($output);
$providerLog = getProviderLog($id, $binPath, $country);
// fetch provider version
$providerVersion = shell_exec("sudo $binPath -v");
// fetch account info
$cmd = getCliOverride($id, 'cmd_overrides', 'account');
exec("sudo $binPath $cmd", $output);
$accountInfo = stripArtifacts($output);
exec("sudo $binPath $cmd", $acct);
$accountInfo = stripArtifacts($acct);
// fetch available countries
$countries = getCountries($id, $binPath);
@@ -44,20 +42,27 @@ function DisplayProviderConfig()
if (!RASPI_MONITOR_ENABLED) {
if (isset($_POST['SaveProviderSettings'])) {
if (isset($_POST['someVar'])) {
$someVar = strip_tags(trim($_POST['someVar']));
if (isset($_POST['country'])) {
$country = trim($_POST['country']);
if (strlen($country) == 0) {
$status->addMessage('Select a country from the server location list', 'danger');
}
$return = saveProviderConfig($status, $binPath, $country);
}
$return = SaveProviderConfig($status, $someVar);
} elseif (isset($_POST['StartProviderVPN'])) {
$status->addMessage('Attempting to connect VPN provider', 'info');
$cmd = getCliOverride($id, 'cmd_overrides', 'connect');
exec("sudo $binPath $cmd", $return);
sleep(3); // required for connect delay
$return = stripArtifacts($return);
foreach ($return as $line) {
$status->addMessage($line, 'info');
}
} elseif (isset($_POST['StopProviderVPN'])) {
$status->addMessage('Attempting to disconnect VPN provider', 'info');
exec("sudo $binPath disconnect", $return);
$cmd = getCliOverride($id, 'cmd_overrides', 'disconnect');
exec("sudo $binPath $cmd", $return);
$return = stripArtifacts($return);
foreach ($return as $line) {
$status->addMessage($line, 'info');
}
@@ -73,6 +78,7 @@ function DisplayProviderConfig()
"providerVersion",
"accountInfo",
"countries",
"country",
"providerLog",
"publicIP",
"ctlState"
@@ -86,9 +92,16 @@ function DisplayProviderConfig()
* @param object $status
* @return string $someVar
*/
function SaveProviderConfig($status, $someVar)
function saveProviderConfig($status, $binPath, $country)
{
$status->addMessage('Attempting to connect to '.$country, 'info');
$cmd = getCliOverride($id, 'cmd_overrides', 'connect');
exec("sudo $binPath $cmd $country", $return);
sleep(3); // required for connect delay
$return = stripArtifacts($return);
foreach ($return as $line) {
$status->addMessage($line, 'info');
}
}
/**
@@ -136,11 +149,14 @@ function getCliOverride($id, $group, $item)
*/
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;
$cmd = getCliOverride($id, 'cmd_overrides', 'status');
exec("sudo $binPath $cmd", $cmd_raw);
$cmd_raw = stripArtifacts($cmd_raw[0]);
if (preg_match('/Status: (\w+)/', $cmd_raw, $match)) {
$cli = getCliOverride($id, 'status', 'connected');
$status = strtolower($match[1]) == $cli ? "up" : "down";
}
return $status;
}
/**
@@ -157,9 +173,33 @@ function getCountries($id, $binPath)
$output = stripArtifacts($output, '\s');
$arrTmp = explode(",", $output);
$countries = array_combine($arrTmp, $arrTmp);
$select = array(' ' => 'Select a country...');
$countries = $select + $countries;
foreach ($countries as $key => $value) {
$countries[$key] = str_replace("_", " ", $value);
}
return $countries;
}
/**
* Retrieves provider log
*
* @param integer $id
* @param string $binPath
* @param string $country
* @return string $log
*/
function getProviderLog($id, $binPath, &$country)
{
$cmd = getCliOverride($id, 'cmd_overrides', 'status');
exec("sudo $binPath $cmd", $cmd_raw);
$output = stripArtifacts($cmd_raw);
foreach ($output as $item) {
if (preg_match('/Country: (\w+)/', $item, $match)) {
$country = $match[1];
}
$providerLog.= ltrim($item) .PHP_EOL;
}
return $providerLog;
}