Metal Messiah, Главное ведь результат, хотя в первую очередь всегда лучше подумать о безопасности и быстродействии при написании любой программы. Я вот к примеру сейчас всё меньше стараюсь писать на php, даже чтобы к примеру собрать
банальную карту сайта я лучше запущу отдельный сервис на *.go. Вообще заметил сейчас в тренде переписывать backend (где это возможно) с php на golang.
Хотя, микрозадачи на php имеют место быть...
Про безопасностьКонкретно в данном примере программа абсолютно безопасная и быстрая с открытым исходным кодом,
rcon-пароль для администрируемого сервера вшит в программу при переводе исходного кода в бинарный.
Единственное, если есть возможность используйте её на сервере а доступ к
rcon заблокируйте по ip.
Код
MyIP=192.168.0.8
iptables -I INPUT ! -s ${MyIP} -p udp -m multiport --ports 27015:27019 -m string --string "rcon" --algo bm --to 65535 -j DROP
Если вы используете стороннее приложение для управлением сервером которое вы не собирали лично, типа HLSW (она вообще без исходников) или софтина на андроиде, то в 99% ваш
RCON уже слит!!!
По поводу скрипта во втором посте, он работает идеально, я его проверил, более того, разного рода боты не будут портить значение онлайна. По этому скрипт считывает онлайн из реальных подключений игроков.
Правда мелкие ошибки как всегда оказались, без этого никуда.
Код
#!/bin/bash
# set -e
MyRCON="./myrcon"
RCON_LOG="/tmp/myrcon.log"
USER="Утилизатор"
MAP="de_dust2"
MAP_C=$(${MyRCON} -c status | sed -n 12,12p | grep ${MAP})
if [[ ! -f ${RCON_LOG} ]]; then
touch ${RCON_LOG}
fi
# Если на сервер зашел игрок под ником Утилизатор, меняем карту на ${MAP} при условии что карта неактивна.
if [[ ${MAP_C} != ${MAP} ]]; then
${MyRCON} -c status | grep "${USER}" >/dev/null
if [ $? -eq 0 ]; then
${MyRCON} -с amx_map ${MAP}
exit
fi
fi
# Если на сервере никого нет, то меняем карту на ${MAP} при условии что карта неактивна.
${MyRCON} -c stats > ${RCON_LOG}
STATS=$(cat ${RCON_LOG} | sed -n 10,10p | grep [0-9] | awk '{print $7}')
if [[ ${MAP_C} != ${MAP} ]]; then
if [[ ${STATS} == 0 ]]; then
${MyRCON} -с amx_map ${MAP}
exit
fi
fi
Отредактировал: Gecko, - 13.5.2022, 13:13
Не отвечаю на ЛС.