Вебсокеты Eraser

Материал из MajorDoMo инфо

Уважаемый Eraser сделал для majordomo альтернативные вебсокеты. Чтобы установить, нужно проделать следущее:


в консоли сервера (SSH)

pip install websockets

или для python3

pip3 install websockets



возможно, понадобится вначале с судо

sudo pip install websockets

или для python3

sudo pip3 install websockets


расскоменчиваем в config.php

Define('PYTHON_PATH','python'); // path to python

или

Define('PYTHON_PATH','python3'); // path to python

в cycle.php (примерно 308 строка) заменить

if ((preg_match("/^cycle_.+?\.php$/", $lib_file)))

на

if ((preg_match("/^cycle_.+?\.(php|py)$/", $lib_file)))

а так же

if (preg_match('/(cycle_.+?)\.php/is', $path, $m)) {

на

if (preg_match('/(cycle_.+?)\.(php|py)/is', $path, $m)) {


488 Меняем



    foreach ($to_start as $title => $tm) {
        if ($tm <= time()) {
            if (!isset($is_running[$title])) {
                $cmd = './scripts/' . $title . '.php';

на это

foreach ($to_start as $title => $tm) {
        if ($tm <= time()) {
            if (!isset($is_running[$title])) {
                $cmd = './scripts/' . $title . '.php';
                if (!file_exists($cmd)) 
                    $cmd = './scripts/' . $title . '.py';

509

//$closePattern = '/THREAD CLOSED:.+?(\.\/scripts\/cycle\_.+?\.php)/is';
$closePattern = '/THREAD CLOSED:.+?(\.\/scripts\/cycle\_.+?\.(php|py))/is';




в /lib/threads.php после

class Threads
{
   public $phpPath = 'php';

Добавляем

public $pyPath = PYTHON_PATH;

получаем:

class Threads
{
   public $phpPath = 'php';
   public $pyPath = PYTHON_PATH;


в /modules/xray/xray.class.php.php 777

  $title = preg_replace('/\.php$/', '', $entry);

меняем

  $title = preg_replace('/\.(php|py)$/', '', $entry);

скопировать файл /scripts/cycle_websockets.py в папку /scripts . Даем соответствующие права (0777) Там же папке переименовать или удалить стандартный цикл вебсокетов cycle_websockets.php