diff --git a/includes/provider.php b/includes/provider.php
index f178810e..7db7631d 100755
--- a/includes/provider.php
+++ b/includes/provider.php
@@ -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 installation instructions 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 '
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;
+}
+