sintonia/airtime_mvc/public/setup/rabbitmq-setup.php
Lucas Bickel fa2018a2c5 Simplify configuration file structure
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.
2017-07-21 13:15:28 +02:00

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;
}
}