Сперва представлю того кто помог мне с PHP частью www.linux.org.ru/people/xtraeft/profile
Ссылка на скачивание моего поделия: https://dl.dropboxusercontent.com/u/86123252/minecraft-web-gambas-login/minec... в комплекте исходные коды.
Как это работает, конечно это описано в readme.txt но покажу это в виде графической схемы.
http://www.imageup.ru/img228/1431248/sxema-raboty.png
Как вы видите, PHP форма записывает введённые в неё данные в output.txt . Раз в секунду minecraft-login.gambas читает output.txt и если там появились новые данные (новизну данных определяет по временной метке), то просматривает users.txt и посылает команду в mine-output.pipe
Например авторизация строиться на той особенности работы minecraft, что после удаления пользователя из белого листа, пользователь может продолжать играть пока не разорвёт текущую сессию, то есть белый лист проверяется только при подключении к серверу. Это значит что можно сначала включить пользователя в белый лист, а через пол минуты удалить его оттуда. Пользователю всего надо успеть войти на сервер в течении 30 секунд после web авторизации.
При помощи команды
cat mine-output.pipe | java -Xmx512M -Xms512M -jar minecraft_server.jar nogui &
cat > mine-output.pipe
Сам авторизатор формирует команды консоли minecrfat. Их список можно найти в wiki майнкрафта. В текущей версии используются следующие.
whitelist add username
whitelist remove username
kick username
op admin-name
deop admin-name
Как я это установил: Для начала я разместил содержимое scripts в каталоге minecraft сервера ~/server пользователя minecraft, а содержимое каталоге web положил в каталог web сервера /var/www-html/
Потом изменил хозяина output.txt и для простоты создал на него символическую ссылку дабы не модифицировать пути скриптах
chown minecraft /var/www-html/login-minecraft/output.txt
cp -s "/var/www-html/login-minecraft/output.txt" ~/server
Установил требуемый софт изменил права на output.txt
apt-get install gambas3-runtime
apt-get install screen
chmod 720 /var/www-html/login-minecraft/output.txt
Затем создал screen сессию mine
screen -S mine
screen -x mine
screen -list
Внутри screen сессии mine, я ввёл последовательно команды:
Для перехода в каталог сервера minecraft
cd ~/server/
Для очистки output.txt
./clear-output.sh
Для создания mine-output.pipe если он ещё не создан
./create-fifo.sh
Старт авторизатора, если не отпустит консоль сразу, то нажми Enter, ибо он запускаться через &
./start-output-login.sh
Старт самого сервера minecraft
./start-minecraft-server.sh
Список зарегистрированных пользователей можно редактировать через users.txt
login=user
password=123
level=1
next
login=admin
password=123456
level=100
next
В версии 0.6 я починил ведение протокола работы. Он записывается в log-mine.log . Там можно найти записи про различные попытки аутенфикации.
Если на введённые в форму данные авторизатор не реагирует, то есть не пишет в лог и не подаёт команды на консоль minecraft, значит web форма и авторизатор используют разные output.txt проверь пути или создай символическую ссылку.
Если авторизатор вываливается с ошибкой, значит скорее всего либо неправильно указанны пути, либо указанные в путях файлы не доступны.
Если авторизатор исправно пишет в свой лог, а в консоль minecraft команды не подаёт (их видно если подключиться к screen сессии в которой minecraft запущен), значит скорее всего либо mine-output.pipe не создан как pipe. Или пути к нему указаны неправильно.
Преимущества этой системы авторизации в том что она не зависит от используемой версии так же как системы авторизации для bukkit.
Прошу не бейте меня за использование сочетания BASIC и PHP