sintonia/legacy/public/setup/rabbitmq-setup.php
dependabot[bot] ccde6039e7
Bump php-amqplib/php-amqplib from 2.12.3 to 3.0.0 in /legacy (#1418)
* Bump php-amqplib/php-amqplib from 2.12.3 to 3.0.0 in /legacy

Bumps [php-amqplib/php-amqplib](https://github.com/php-amqplib/php-amqplib) from 2.12.3 to 3.0.0.
- [Release notes](https://github.com/php-amqplib/php-amqplib/releases)
- [Changelog](https://github.com/php-amqplib/php-amqplib/blob/master/CHANGELOG.md)
- [Commits](https://github.com/php-amqplib/php-amqplib/compare/v2.12.3...v3.0.0)

---
updated-dependencies:
- dependency-name: php-amqplib/php-amqplib
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Replace deprecated AMQPConnection with AMQPStreamConnection

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: jo <ljonas@riseup.net>
2021-10-17 21:55:12 +02:00

88 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
public const RMQ_USER = 'rmqUser';
public const RMQ_PASS = 'rmqPass';
public const RMQ_PORT = 'rmqPort';
public const RMQ_HOST = 'rmqHost';
public const RMQ_VHOST = 'rmqVHost';
// Message and error fields to return to the front-end
public static $message;
public static $errors = [];
public function __construct($settings)
{
static::$_properties = [
'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
*/
public function runSetup()
{
try {
if ($this->checkRMQConnection()) {
self::$message = 'Connection successful!';
} else {
$this->identifyRMQConnectionError();
}
} catch (Exception $e) {
$this->identifyRMQConnectionError();
}
return [
'message' => self::$message,
'errors' => self::$errors,
];
}
public function checkRMQConnection()
{
$conn = new \PhpAmqpLib\Connection\AMQPStreamConnection(
self::$_properties['host'],
self::$_properties['port'],
self::$_properties['user'],
self::$_properties['password'],
self::$_properties['vhost']
);
$this->writeToTemp();
return isset($conn);
}
public 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;
}
}