This removes most of the legacy upstream config madness by not using weird config files spread all over the place. This isn't the solution to other config reading fragility issues, but it does move the whole config back to the central airtime.conf file.
80 lines
2.6 KiB
PHP
80 lines
2.6 KiB
PHP
<?php
|
|
|
|
/**
|
|
* User: sourcefabric
|
|
* Date: 02/12/14
|
|
*
|
|
* Class RabbitMQSetup
|
|
*
|
|
* Wrapper class for validating and setting up RabbitMQ during the installation process
|
|
*/
|
|
class RabbitMQSetup extends Setup {
|
|
|
|
// airtime.conf section header
|
|
protected static $_section = "[rabbitmq]";
|
|
|
|
// Array of key->value pairs for airtime.conf
|
|
protected static $_properties;
|
|
|
|
// Constant form field names for passing errors back to the front-end
|
|
const RMQ_USER = "rmqUser",
|
|
RMQ_PASS = "rmqPass",
|
|
RMQ_PORT = "rmqPort",
|
|
RMQ_HOST = "rmqHost",
|
|
RMQ_VHOST = "rmqVHost";
|
|
|
|
// Message and error fields to return to the front-end
|
|
static $message = null;
|
|
static $errors = array();
|
|
|
|
function __construct($settings) {
|
|
static::$_properties = array(
|
|
"host" => $settings[self::RMQ_HOST],
|
|
"port" => $settings[self::RMQ_PORT],
|
|
"user" => $settings[self::RMQ_USER],
|
|
"password" => $settings[self::RMQ_PASS],
|
|
"vhost" => $settings[self::RMQ_VHOST],
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @return array associative array containing a display message and fields with errors
|
|
*/
|
|
function runSetup() {
|
|
try {
|
|
if ($this->checkRMQConnection()) {
|
|
self::$message = "Connection successful!";
|
|
} else {
|
|
$this->identifyRMQConnectionError();
|
|
}
|
|
} catch(Exception $e) {
|
|
$this->identifyRMQConnectionError();
|
|
}
|
|
|
|
return array(
|
|
"message" => self::$message,
|
|
"errors" => self::$errors
|
|
);
|
|
}
|
|
|
|
function checkRMQConnection() {
|
|
$conn = new \PhpAmqpLib\Connection\AMQPConnection(self::$_properties["host"],
|
|
self::$_properties["port"],
|
|
self::$_properties["user"],
|
|
self::$_properties["password"],
|
|
self::$_properties["vhost"]);
|
|
return isset($conn);
|
|
}
|
|
|
|
function identifyRMQConnectionError() {
|
|
// It's impossible to identify errors coming out of amqp.inc without a major
|
|
// rewrite, so for now just tell the user ALL THE THINGS went wrong
|
|
self::$message = _("Couldn't connect to RabbitMQ server! Please check if the server "
|
|
. "is running and your credentials are correct.");
|
|
self::$errors[] = self::RMQ_USER;
|
|
self::$errors[] = self::RMQ_PASS;
|
|
self::$errors[] = self::RMQ_HOST;
|
|
self::$errors[] = self::RMQ_PORT;
|
|
self::$errors[] = self::RMQ_VHOST;
|
|
}
|
|
}
|