diff --git a/utils/airtime-check-system.php b/utils/airtime-check-system.php
index 0c05b52ee..d2dbef6f7 100644
--- a/utils/airtime-check-system.php
+++ b/utils/airtime-check-system.php
@@ -3,7 +3,7 @@ require_once '../airtime_mvc/library/php-amqplib/amqp.inc';
//Step 1: Verify all config files in /etc/airtime/ exist and have size > 0 bytes.
-echo "*** Airtime System Check Script ***".PHP_EOL;
+//echo "*** Airtime System Check Script ***".PHP_EOL;
set_error_handler("myErrorHandler");
@@ -14,41 +14,101 @@ $airtimeIni = AirtimeCheck::GetAirtimeConf();
$pypoCfg = AirtimeCheck::GetPypoCfg();
AirtimeCheck::GetDbConnection($airtimeIni);
-AirtimeCheck::CheckRabbitMqVersion();
+//AirtimeCheck::CheckRabbitMqVersion();
AirtimeCheck::CheckRabbitMqConnection($airtimeIni);
AirtimeCheck::CheckApacheVHostFiles();
AirtimeCheck::GetAirtimeServerVersion($pypoCfg);
+AirtimeCheck::CheckPypoRunning();
+AirtimeCheck::CheckLiquidsoapRunning();
+
class AirtimeCheck{
+ const CHECK_OK = "OK";
+ const CHECK_FAILED = "FAILED";
+
public static function CheckPypoRunning(){
//check using svstat
+ $command = "sudo svstat /etc/service/pypo";
+ exec($command, $output, $result);
+
+
+ $key_value = split(":", $output[0]);
+ $value = trim($key_value[1]);
+
+ $status = AirtimeCheck::CHECK_FAILED;
+ $pos = strpos($value, "pid");
+ if ($pos !== false){
+ $start = $pos + 4;
+ $end = strpos($value, ")", $start);
+ $status = substr($value, $start, $end-$start);
+ }
+
+ echo "PYPO_PID=".$status.PHP_EOL;
+
+ $status = AirtimeCheck::CHECK_FAILED;
+ $pos = strpos($value, ")");
+ if ($pos !== false){
+ $start = $pos + 2;
+ $end = strpos($value, " ", $start);
+ $status = substr($value, $start, $end-$start);
+ }
+
+ echo "PYPO_RUNNING_SECONDS=".$status.PHP_EOL;
}
public static function CheckLiquidsoapRunning(){
//connect via telnet
+ $command = "sudo svstat /etc/service/pypo-liquidsoap";
+ exec($command, $output, $result);
+
+ $key_value = split(":", $output[0]);
+ $value = trim($key_value[1]);
+
+ $status = AirtimeCheck::CHECK_FAILED;
+ $pos = strpos($value, "pid");
+ if ($pos !== false){
+ $start = $pos + 4;
+ $end = strpos($value, ")", $start);
+ $status = substr($value, $start, $end-$start);
+ }
+
+ echo "LIQUIDSOAP_PID=".$status.PHP_EOL;
+
+ $status = AirtimeCheck::CHECK_FAILED;
+ $pos = strpos($value, ")");
+ if ($pos !== false){
+ $start = $pos + 2;
+ $end = strpos($value, " ", $start);
+ $status = substr($value, $start, $end-$start);
+
+ }
+
+ echo "LIQUIDSOAP_RUNNING_SECONDS=".$status.PHP_EOL;
}
public static function CheckConfigFilesExist(){
- echo PHP_EOL."Verifying Config Files in /etc/airtime".PHP_EOL;
+ //echo PHP_EOL."Verifying Config Files in /etc/airtime".PHP_EOL;
$confFiles = array("airtime.conf",
"liquidsoap.cfg",
"pypo.cfg",
"recorder.cfg");
+ $allFound = AirtimeCheck::CHECK_OK;
+
foreach ($confFiles as $cf){
$fullPath = "/etc/airtime/$cf";
- echo "\t".$fullPath." ... ";
- if (file_exists($fullPath)){
- echo "[OK]".PHP_EOL;
- } else {
- echo "Not Found!".PHP_EOL;
- exit;
+ //echo "\t".$fullPath." ... ";
+ if (!file_exists($fullPath)){
+ $allFound = AirtimeCheck::CHECK_FAILED;
}
}
+
+ echo "AIRTIME_CONFIG=$allFound".PHP_EOL;
+
}
public static function GetAirtimeConf(){
@@ -81,14 +141,15 @@ class AirtimeCheck{
$dbconn = pg_connect("host=$host port=5432 dbname=$dbname user=$dbuser password=$dbpass");
- echo PHP_EOL."Verifying Airtime Database".PHP_EOL;
+ //echo PHP_EOL."Verifying Airtime Database".PHP_EOL;
if ($dbconn === false){
- echo "\tConnection ... [Failed!]".PHP_EOL;
- exit;
+ $status = AirtimeCheck::CHECK_FAILED;
} else {
- echo "\tConnection ... [OK]".PHP_EOL;
+ $status = AirtimeCheck::CHECK_OK;
}
+
+ echo "TEST_PGSQL_DATABASE=$status".PHP_EOL;
}
public static function CheckDbTables(){
@@ -100,6 +161,7 @@ class AirtimeCheck{
* and this function will fail to detect it! Unfortunately there
* seems to be no other way to check RabbitMQ version. Will update
* this function if I find a more universal solution. */
+ /*
public static function CheckRabbitMqVersion(){
echo PHP_EOL."Checking RabbitMQ Version".PHP_EOL;
@@ -119,80 +181,78 @@ class AirtimeCheck{
echo "\trabbitmq-server package not found. [Failed!]".PHP_EOL;
}
}
+ * */
public static function CheckRabbitMqConnection($airtimeIni){
- echo PHP_EOL."Verifying RabbitMQ Service".PHP_EOL;
+ //echo PHP_EOL."Verifying RabbitMQ Service".PHP_EOL;
try {
+ $status = AirtimeCheck::CHECK_OK;
$conn = new AMQPConnection($airtimeIni["rabbitmq"]["host"],
$airtimeIni["rabbitmq"]["port"],
$airtimeIni["rabbitmq"]["user"],
$airtimeIni["rabbitmq"]["password"]);
} catch (Exception $e){
- echo "\tConnection ... [Failed!]".PHP_EOL;
- exit;
+ //echo "\tConnection ... [Failed!]".PHP_EOL;
+ //exit;
+ $status = AirtimeCheck::CHECK_FAILED;
}
- echo "\tConnection ... [OK]".PHP_EOL;
+ //echo "\tConnection ... [OK]".PHP_EOL;
+
+ echo "TEST_RABBITMQ_SERVER=$status".PHP_EOL;
}
public static function GetAirtimeServerVersion($pypoCfg){
- echo PHP_EOL."Checking Airtime Server Version".PHP_EOL;
- echo "\tConnecting to http://localhost/api/version".PHP_EOL;
+ //echo PHP_EOL."Checking Airtime Server Version".PHP_EOL;
$baseUrl = $pypoCfg["base_url"];
$basePort = $pypoCfg["base_port"];
+ $apiKey = "%%api_key%%";
+
+ $url = "http://$baseUrl:$basePort/api/version/api_key/$apiKey";
+ echo "AIRTIME_VERSION_URL=$url".PHP_EOL;
+
$apiKey = $pypoCfg["api_key"];
+ $url = "http://$baseUrl:$basePort/api/version/api_key/$apiKey";
- $rh = fopen("http://$baseUrl:$basePort/api/version/api_key/$apiKey", "r");
+ $rh = fopen($url, "r");
if ($rh !== false){
while (($buffer = fgets($rh)) !== false) {
$json = json_decode(trim($buffer), true);
- if (is_null($json)){
- echo "NULL STRING".PHP_EOL;
-
- } else {
- echo "\t\tAirtime Version ".$json["version"]." ... [OK] ".PHP_EOL;
+ if (!is_null($json)){
+ //echo "\t\tAirtime Version ".$json["version"]." ... [OK] ".PHP_EOL;
+ $version = $json["version"];
+ echo "AIRTIME_VERSION_STRING=$version".PHP_EOL;
}
}
} else {
- echo "\t\tConnection ... [Failed!]".PHP_EOL;
- exit;
- }
-
- function handleError($errno, $errstr,$error_file,$error_line)
- {
- echo "Error: [$errno] $errstr - $error_file:$error_line";
- echo "
";
- echo "Terminating PHP Script";
- die();
- }
-
+ //echo "\t\tConnection ... [Failed!]".PHP_EOL;
+ //exit;
+ }
}
public static function CheckApacheVHostFiles(){
- echo PHP_EOL."Checking for Airtime Apache config files".PHP_EOL;
+ //echo PHP_EOL."Checking for Airtime Apache config files".PHP_EOL;
$fileNames = array("/etc/apache2/sites-available/airtime",
"/etc/apache2/sites-enabled/airtime");
+ $status = AirtimeCheck::CHECK_OK;
+
foreach ($fileNames as $fn){
- echo "\tChecking $fn ... ";
- if (file_exists($fn)){
- echo '[OK]'.PHP_EOL;
- } else {
- echo "[Failed!]".PHP_EOL;
- exit;
+ if (!file_exists($fn)){
+ $status = AirtimeCheck::CHECK_FAILED;
}
}
//Since apache2 loads config files in alphabetical order
//from the sites-enabled directory, we need to check if
//airtime is lexically the first file in this directory.
-
//get sorted array of files
$arr = scandir("/etc/apache2/sites-enabled");
+ /*
foreach ($arr as $a){
if ($a == "." || $a == ".."){
continue;
@@ -204,28 +264,27 @@ class AirtimeCheck{
echo"\t\t /etc/apache2/sites-enabled and preventing airtime from being loaded".PHP_EOL;
}
}
+ */
}
public static function CheckOsTypeVersion(){
- echo PHP_EOL."Checking operating system.".PHP_EOL;
if (file_exists("/etc/lsb-release")){
+ //lsb-release existing implies a Ubuntu installation.
$ini = parse_ini_file("/etc/lsb-release", false);
-
- //lsb-release existing implies a Ubuntu installation.
- echo "\tUbuntu based distribution found: ".$ini["DISTRIB_DESCRIPTION"].PHP_EOL;
+ $os_string = $ini["DISTRIB_DESCRIPTION"];
} else if (file_exists("/etc/debian_version")) {
//if lsb-release does not exist, lets check if we are
//running on Debian. Look for file /etc/debian_version
$handler = fopen("/etc/debian_version", "r");
-
- $version = trim(fgets($handler));
+ $os_string = trim(fgets($handler));
- echo "\tDebian based distribution found: ".$version.PHP_EOL;
} else {
- echo "\tWARNING: Unknown OS Type".PHP_EOL;
+ $os_string = "Unknown";
}
+
+ echo "OS_TYPE=$os_string".PHP_EOL;
}
}