Skocz do zawartości

Daemon działający z większością botów administracyjnych w PHP


Dave
 Udostępnij

Rekomendowane odpowiedzi

  • Global Administrator

Witam.

 

Tak jakoś ostatnio @Paweł MFnarzekał, że nic nie dodaje, tak więc skoro coś już napisałem to postanowiłem również tu zamieścić

 

<?php
/*
W pliku /etc/crontab na końcu dodajemy nową linijkę:
* *     * * *   root    php /root/checker.php #to jest ścieżka do naszego skryptu w php
Następnie wpisujemy komendę:
systemctl restart cron
*/
require('tsApps/classes/ts3admin.class.php');
require('tsApps/include/config/config.php');
$tsAdmin = new ts3admin($config[1]['connection']['host'], $config[1]['connection']['query_port']);
$test = $tsAdmin->connect();
if($test['success']) {
  $tsAdmin->login($config[1]['connection']['login'], $config[1]['connection']['password']);
  $tsAdmin->selectServer($config[1]['connection']['port']);
  $clients = $tsAdmin->clientList();
  $bots_online = [];
  foreach($clients['data'] as $client) {
          if($client['client_type']==1)
            array_push($bots_online,$client['client_nickname']);
  }
  $prefixes = [ //Wprowadzone w celu integracji z configiem tsApp
  '',
  '(tsApps) ',
  'tsApps • ',
  'tsApps | ',
  'tsApps » ',
  '(m-bot) ',
  '(mBot) '
  ];
  $okk_array = [
    [
      'command' => 'cd /root/tsApps/ && screen -LdmS tsApp1 tsApp1 php core.php -i 1',
      'screen_name' =>'tsApp1',
      'bot_nickname' => $prefixes[$config['connection']['prefix']].$config[1]['instance']['name']
    ],
    [
      'command' => 'cd /root/tsApps/ && screen -LdmS tsApp2 tsApp2 php core.php -i 2',
      'screen_name' => 'tsApp2',
      'bot_nickname' => $prefixes[$config['connection']['prefix']].$config[2]['instance']['name']
    ],
    [
      'command' => 'cd /root/tsApps/ && screen -LdmS tsApp3 tsApp3 php core.php -i 3',
      'screen_name' => 'tsApp3',
      'bot_nickname' => $prefixes[$config['connection']['prefix']].$config[3]['instance']['name']
    ],
    [
      'command' => 'cd /root/tsApps/ && screen -LdmS tsApp4 tsApp4 php core.php -i 4',
      'screen_name' => 'tsApp4',
      'bot_nickname' => $prefixes[$config['connection']['prefix']].$config[4]['instance']['name']
    ],
    [
      'command' => 'cd /root/tsApps/ && screen -LdmS tsApp5 tsApp5 php core.php -i 5',
      'screen_name' => 'tsApp5',
      'bot_nickname' => $prefixes[$config['connection']['prefix']].$config[5]['instance']['name']
    ],
    [
      'command' => 'cd /root/tsApps/ && screen -LdmS tsApp6 tsApp6 php core.php -i 6',
      'screen_name' => 'tsApp6',
      'bot_nickname' => $prefixes[$config['connection']['prefix']].$config[6]['instance']['name']
    ],
    [
      'command' => 'cd /root/teleport/ && screen -LdmS Teleport Teleport php core.php',
      'screen_name' => 'Teleport',
      'bot_nickname' => 'NeoSpeak » Teleport'
    ],
    [
      'command' => 'cd /root/tsApps/ && screen -LdmS Zegarynka Zegarynka php timebot.php',
      'screen_name' => 'Zegarynka',
      'bot_nickname' => 'Zegarynka'
    ],
  ];
  foreach($okk_array as $ok) {
    if(!in_array($ok['bot_nickname'], $bots_online)) {
      echo "\e[0;31;40m >> Bot ".$ok['bot_nickname']." jest offline\n";
      echo "\e[0;31;40m >> Trwa restartowanie bota...\n";
      shell_exec("screen -wipe");
      $screen_list = shell_exec("screen -list | grep -v 'There are screens on' | grep -v 'Sockets in /run/screen/S-root' | grep -v 'Dead' | grep '".$ok['bot_nickname']."'| cut -c 6-20");
      if(sizeof(explode("\n", $screen_list))>0){
        //zamykanie procesu
        shell_exec("screen -S ".$ok['screen_name']." -X kill");
        shell_exec("screen -wipe");
      }
      shell_exec($ok['command']);
      sleep(2);
    } else {
      echo "\e[0;34;40m >> Bot ".$ok['bot_nickname']." jest online\n";
    }
  }
}else{
  print_r($test);
}
echo "\e[1;37;40m";

Skrypt jest przystosowany do tsApps, ale kto chociaż trochę umie modyfikować kod nie będzie miał problemu z wprowadzeniem tego do swojego bota (no bo to wy przecież sami napisaliście te wszystkie boty... 😉 )

 

Pozdro,

@Dave

  • Lubię to! 1
  • Kocham To! 2
  • Hahaa! 1
Odnośnik do komentarza
Udostępnij na innych stronach

 echo "\e[0;31;40m >> Bot ".$ok['bot_nickname']." jest offline\n";
      echo "\e[0;31;40m >> Trwa restartowanie bota...\n";

skoro jest offline to nie TRWA RESTARTOWANIE 

tylko włączanie? bo restart to chyba można wykonać jeżeli cokolwiek jest włączone

Czy też mylę w ogóle co ten bot robi lulz

Odnośnik do komentarza
Udostępnij na innych stronach

  • Global Administrator

Bot może być podłączony, ale posiadać błąd w stylu:

  1. Nieprawidłowa nazwa
  2. Connection lost (proces istnieje)

W tych przypadkach jest pełny restart aplikacji, tak więc jedyną poprawką tekstową to, że nie jest offline, tylko np. "posiada usterkę itp". Każdy sobie może nazywać według uznania, a mimo tego bot ma tak na prawdę za zadanie zrestartować/uruchomić aplikację. Można oczywiście powymyślać sobie, że w takim i takim przypadku ma pisać, że bot jest uruchamiany, a w innych że jest restartowany, ale czy to ma sens? Myślę, że to tylko zbędny kod.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 8 miesięcy temu...

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...

🍪 Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.