Вебсокеты Eraser: различия между версиями

Материал из MajorDoMo инфо
Нет описания правки
Нет описания правки
 
(не показано 11 промежуточных версий этого же участника)
Строка 1: Строка 1:
Уважаемый '''Eraser''' сделал для majordomo альтернативные вебсокеты.
Уважаемый '''Eraser''' сделал для majordomo альтернативные вебсокеты.
Чтобы установить, нужно проделать следущее:
Чтобы установить, нужно проделать следущее:<br>
 


в консоли  сервера  (SSH)
в консоли  сервера  (SSH)
<pre>pip install websockets</pre>
<pre>pip install websockets</pre>
или для python3
или для python3
<pre>pip3 install websockets</pre>
<pre>pip3 install websockets</pre><br>
 


возможно, понадобится вначале с судо
возможно, понадобится вначале с судо
Строка 11: Строка 13:
или для python3
или для python3
<pre>sudo pip3 install websockets</pre>
<pre>sudo pip3 install websockets</pre>
<br>


в cycle.php заменить  
расскоменчиваем в config.php
<pre>Define('PYTHON_PATH','python'); // path to python</pre>
или
<pre>Define('PYTHON_PATH','python3'); // path to python</pre>
 
в cycle.php (примерно 308 строка) заменить  
<pre>
<pre>
if ((preg_match("/^cycle_.+?\.php$/", $lib_file)))
if ((preg_match("/^cycle_.+?\.php$/", $lib_file)))
Строка 21: Строка 29:
</pre>
</pre>


а так же
<pre>
if (preg_match('/(cycle_.+?)\.php/is', $path, $m)) {
</pre>
на
<pre>
if (preg_match('/(cycle_.+?)\.(php|py)/is', $path, $m)) {
</pre>
488 Меняем
<pre>
    foreach ($to_start as $title => $tm) {
        if ($tm <= time()) {
            if (!isset($is_running[$title])) {
                $cmd = './scripts/' . $title . '.php';
</pre>
на это
<pre>
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';
</pre>
509
<pre>
//$closePattern = '/THREAD CLOSED:.+?(\.\/scripts\/cycle\_.+?\.php)/is';
$closePattern = '/THREAD CLOSED:.+?(\.\/scripts\/cycle\_.+?\.(php|py))/is';
</pre>
<br>
в '''/lib/threads.php''' после
<pre>
class Threads
{
  public $phpPath = 'php';
</pre>
Добавляем
<pre>
public $pyPath = PYTHON_PATH;</pre>
получаем:
<pre>
class Threads
{
  public $phpPath = 'php';
  public $pyPath = PYTHON_PATH;
</pre>
в '''/modules/xray/xray.class.php.php''' 777
<pre>
  $title = preg_replace('/\.php$/', '', $entry);
</pre>
меняем
<pre>
  $title = preg_replace('/\.(php|py)$/', '', $entry);
</pre>


скопировать файл [https://github.com/Anisan/majordomo/blob/ba718d7048f39ea9a22a84e04f422590795480b2/scripts/cycle_websockets.py /scripts/cycle_websockets.py]
скопировать файл [https://github.com/Anisan/majordomo/blob/ba718d7048f39ea9a22a84e04f422590795480b2/scripts/cycle_websockets.py /scripts/cycle_websockets.py]  
в папку /scripts
в папку /scripts . Даем соответствующие права (0777)
Там же папке переименовать или удалить стандартный цикл вебсокетов '''cycle_websockets.php'''
Там же папке переименовать или удалить стандартный цикл вебсокетов '''cycle_websockets.php'''

Текущая версия от 02:38, 5 октября 2023

Уважаемый 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