Протокол telnet или что-то подобное

Рейтинг: 0Ответов: 1Опубликовано: 20.10.2014

Возник вопрос при обдумывании web-проекта. Пишу как только могу, поэтому простите за возможные непонятки. Требуется что-то наподобие такого:
Есть игровой сервер (cs 1.6), требуется с сайта подать команду на включение этого сервера, и наоборот. Т.е. когда захотел - включил, когда захотел - выключил. Но хотя бы это для начала, далее требуется посылка RCON команд на сервер, но, думаю, с этим проблем не будет, если сделать первое. Я уже писал насчет данной проблемы, но так конкретного ответа не получил. Кто-то говорил о telnet, но о данном протоколе я не нашел информации в Интернете, как им пользоваться в моем случае; другие предлагают использовать готовые скрипты, но и они подводят (доставать скрипт, не зная его алгоритм действия, не по-умному). Кто понял, о чем я толкую, то большая просьба поделиться своими знаниями, как все-таки это сделать, описать алгоритм. Заранее огромное спасибо, т.к. уже мучаюсь невесть сколько...

Данное реализовано на: fastcup.net / fragarena.ru

Ответы

▲ 2Принят

Это два вопроса.

  1. Чтоб запустить/остановить exe'шник (любой), понадобится какое-то админское приложение типа PsTools для удаленного выполнения команд (это если без допсофта на стороне сервера с CS), либо какая-то прога должна стоять на серевере CS и запускать hlds.exe с соответствующими параметрами, а php-сайт к ней коннектился бы и посылал соответствующие команды... Для линуска (если CS сервер линуксовый) соответственно свои методы.
  2. Для общения с сервером через RCON уже можно соединяться напрямую (без дополнительного софта) с сервером CS по UDP на соответствующий порт. И общаться по этому RCON протоколу. Для CS:S вот ссылка есть, для обычного CS может подойти, либо должно быть свое описание... Вот пример скрипта (найдено в интернетах) получающего статус сервера:

    $server = "192.168.0.250";   
    $stroka = "\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00"; 
    $fp = fsockopen("udp://".$server,"27016"); 
    fwrite($fp, $stroka);   
    echo fread($fp, 128);   
    fclose($fp);