diff --git a/app/css/custom.php b/app/css/custom.php
index ff87b3b2..33a59c58 100644
--- a/app/css/custom.php
+++ b/app/css/custom.php
@@ -42,6 +42,12 @@ body {
background-color: #fff;
}
+.btn-primary.disabled {
+ color: !important;
+ border-color: !important;
+ background-color: #fff !important;
+}
+
.card-footer, .modal-footer {
background-color: #f2f1f0;
}
diff --git a/includes/provider.php b/includes/provider.php
index ee2b8008..f178810e 100755
--- a/includes/provider.php
+++ b/includes/provider.php
@@ -1,11 +1,8 @@
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);
+ $providerLog = stripArtifacts($output);
+ //echo '
status = '.$result;
+
+ // fetch provider version
+ $providerVersion = shell_exec("sudo $binPath -v");
+
+ // fetch account info
+ exec("sudo $binPath account", $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);
+ }
+ }
if (!RASPI_MONITOR_ENABLED) {
if (isset($_POST['SaveProviderSettings'])) {
@@ -21,34 +50,31 @@ function DisplayProviderConfig()
}
$return = SaveProviderConfig($status, $someVar);
} elseif (isset($_POST['StartProviderVPN'])) {
- $status->addMessage('Attempting to connect provider VPN', 'info');
- exec('sudo '.$binPath.' connect', $return);
+ $status->addMessage('Attempting to connect VPN provider', 'info');
+ exec("sudo $binPath connect", $return);
foreach ($return as $line) {
$status->addMessage($line, 'info');
}
} elseif (isset($_POST['StopProviderVPN'])) {
- $status->addMessage('Attempting to disconnect provider VPN', 'info');
- exec('sudo '.$binPath.' disconnect', $return);
+ $status->addMessage('Attempting to disconnect VPN provider', 'info');
+ exec("sudo $binPath disconnect", $return);
foreach ($return as $line) {
$status->addMessage($line, 'info');
}
}
}
- exec("sudo $binPath status", $result);
- $serviceStatus = strtolower($output[1]) == 0 ? "disconnected" : "connected";
- $public_ip = get_public_ip();
-
- exec("sudo $binPath status > /tmp/provider.log");
- $providerLog = file_get_contents('/tmp/provider.log');
-
echo renderTemplate(
"provider", compact(
"status",
"serviceStatus",
"providerName",
+ "providerVersion",
+ "accountInfo",
+ "countries",
"providerLog",
- "public_ip"
+ "public_ip",
+ "ctlState"
)
);
}
@@ -63,3 +89,17 @@ function SaveProviderConfig($status, $someVar)
{
}
+
+/**
+ * Removes artifacts from shell_exec string values
+ *
+ * @param string $output
+ * @param string $pattern
+ * @return string $result
+ */
+function stripArtifacts($output, $pattern = null)
+{
+ $result = preg_replace('/[-\/\n\t\\\\'.$pattern.'|]/', '', $output);
+ return $result;
+}
+