diff --git a/includes/provider.php b/includes/provider.php
index 8398c288..18452cf3 100755
--- a/includes/provider.php
+++ b/includes/provider.php
@@ -3,21 +3,31 @@
require_once 'includes/config.php';
/*
- * Manage VPN provider configuration
+ * Display VPN provider configuration
*/
function DisplayProviderConfig()
{
+ // initialize status object
$status = new \RaspAP\Messages\StatusMessage;
+ // set defaults
$id = $_SESSION["providerID"];
- $providerName = getProviderValue($id, "name");
$binPath = getProviderValue($id, "bin_path");
+ $providerName = getProviderValue($id, "name");
+ $providerVersion = getProviderVersion($id, $binPath);
+ $installPage = getProviderValue($id, "install_page");
$publicIP = get_public_ip();
+ $serviceStatus = 'down';
+ $statusDisplay = 'down';
if (!file_exists($binPath)) {
- $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');
+ $status->addMessage(sprintf(_('Expected %s binary not found at: %s'), $providerName, $binPath), 'warning');
+ $status->addMessage(sprintf(_('Visit the installation instructions for %s\'s Linux CLI.'), $installPage, $providerName), 'warning');
+ $ctlState = 'disabled';
+ $providerVersion = 'not found';
+ } elseif (empty($providerVersion)) {
+ $status->addMessage(sprintf(_('Unable to execute %s binary found at: %s'), $providerName, $binPath), 'warning');
+ $status->addMessage(_('Check that binary is executable and permissions exist in raspap.sudoers'), 'warning');
$ctlState = 'disabled';
$providerVersion = 'not found';
} else {
@@ -28,11 +38,9 @@ function DisplayProviderConfig()
// fetch provider log
$providerLog = getProviderLog($id, $binPath, $country);
- // fetch provider version
- $providerVersion = getProviderVersion($id, $binPath);
-
// fetch account info
$accountInfo = getAccountInfo($id, $binPath, $providerName);
+ $accountLink = getProviderValue($id, "account_page");
// fetch available countries
$countries = getCountries($id, $binPath);
@@ -75,6 +83,7 @@ function DisplayProviderConfig()
"providerName",
"providerVersion",
"accountInfo",
+ "accountLink",
"countries",
"country",
"providerLog",
@@ -94,7 +103,7 @@ function DisplayProviderConfig()
*/
function saveProviderConfig($status, $binPath, $country, $id = null)
{
- $status->addMessage('Attempting to connect to '.$country, 'info');
+ $status->addMessage(sprintf(_('Attempting to connect to %s',$country)), 'info');
$cmd = getCliOverride($id, 'cmd_overrides', 'connect');
if ($id == 2) { // mullvad requires location set
exec("sudo $binPath set location $country", $return);
@@ -122,7 +131,7 @@ function saveProviderConfig($status, $binPath, $country, $id = null)
*/
function stripArtifacts($output, $pattern = null)
{
- $result = preg_replace('/[-\/\n\t\\\\'.$pattern.'|\[0m\[1;33;49m]/', '', $output);
+ $result = preg_replace('/[-\/\n\t\\\\'.$pattern.'|]/', '', $output);
return $result;
}
@@ -162,10 +171,14 @@ function getProviderStatus($id, $binPath)
$pattern = getCliOverride($id, 'regex', 'status');
exec("sudo $binPath $cmd", $cmd_raw);
$cmd_raw = strtolower(stripArtifacts($cmd_raw[0]));
- if (preg_match($pattern, $cmd_raw, $match)) {
- $status = "down";
+ if (!empty($cmd_raw[0])) {
+ if (preg_match($pattern, $cmd_raw, $match)) {
+ $status = "down";
+ } else {
+ $status = "up";
+ }
} else {
- $status = "up";
+ $status = "down";
}
return $status;
}
@@ -230,7 +243,7 @@ function getCountries($id, $binPath)
default:
break;
}
- $select = array(' ' => 'Select a country...');
+ $select = array(' ' => _("Select a country..."));
$countries = $select + $countries;
return $countries;
}
@@ -268,6 +281,7 @@ function getProviderVersion($id, $binPath)
{
$cmd = getCliOverride($id, 'cmd_overrides', 'version');
$version = shell_exec("sudo $binPath $cmd");
+ $version = preg_replace('/^[^\w]+\s*/', '', $version);
return $version;
}
@@ -283,11 +297,14 @@ function getAccountInfo($id, $binPath, $providerName)
{
$cmd = getCliOverride($id, 'cmd_overrides', 'account');
exec("sudo $binPath $cmd", $acct);
- $accountInfo = stripArtifacts($acct);
- if (empty($accountInfo)) {
- $msg = sprintf(_("Account information not available from %s's Linux CLI."), $providerName);
- $accountInfo[] = $msg;
+
+ foreach ($acct as &$item) {
+ $item = preg_replace('/^[^\w]+\s*/', '', $item);
}
- return $accountInfo;
+ if (empty($acct)) {
+ $msg = sprintf(_("Account information not available from %s's Linux CLI."), $providerName);
+ $acct[] = $msg;
+ }
+ return $acct;
}