Новости Virtustan MUD

Последнее время муд стал падать со странными сообщениями

crash here: *** buffer overflow detected ***: terminated

Я погуглил, пишут что это ошибка в модуле EPOLL, я решил его выключить. Залез в код, а он выключен, причем очень давно, когда я добавлял в код поддержку нескольких портов. Тогда надо включить, может ошибка пропадет – по-ламерски подумал я. Стал пытаться включить, не компилируется, из-за моих изменений по многопортовости. Возился, возился, бросил, подумал, что это знак перейти на свежий код.

И Виртустан перешел на свежую версию кода Былин. В результате все мои новые команды и модификации пропали, но они сохранены в старой версии кода, постепенно я их внесу.

Но зато я сделал патч до внесению протокола MSSP в свежий код Былин.
Патч вот.

Приложения.

1. Почему эти ошибки стали возникать только в последнее время? Я постоянно обновляю свой сервер, это общие правила безопасности, без этого нельзя. Но с обновлениями приходят не только новые фичи, но и новые баги. Или как другая версия, мир изменился (я чувствую это в земле, я чувствую это в воде) и появился новый тип интернет-атак с длинным запросом. А атаки в интернете постоянно развиватся, например последние дни я начал замечать в логах nginx запросы на файлы типа backup.sql (к мудам это не имеет никакого отношения, но подобных запросов раньше не было)

2. Что такое EPOLL. Работа с периферийными устройствами может быть по прерыванию или по запросу. Муды обычно работают по запросу (httpd и Майнкрафт тоже). Но есть несколько версий библиотек для этого. Первая, это старый классический poll/select, вторая EPOLL, а есть еще EPOLL2. Код Былин может унаследовал от своего отца Circle два способа – poll и EPOLL (см. в коде операторы #ifdef EPOLL). В Линуксе можно и так и так, а в cygwin и macOS компилируется тольков варианте без EPOLL.

3. Поддержка доступа к маду по нескольким портам в самом маде необязательна. Ее можно сделать снаружи мада, например, средствами iptable. Но пока Виртустан работает только на порту 3000 (хост мой стандарный, mud.kharkov.org)

Minecraft news

Пока в Украине идет война, в Швеции фирма Mojang, купленная Майкрософтом, работает и выпускает очередные версии Майнкрафта.

По этому поводу в тестовых целях я запустил у себя java версию Майнкрафта 1.19 и bedrock версию 1.18.33.02 (java версия сервера совместима с java версиями клиентов для Linux, Windows, macOS, а Bedrock это наименование клиента для мобильных платформ, таких как Android и Xbox. У них и нумерация версий немного другая, но bedrock сервер запускается на Linux VDS).

Адрес моего сервера: minecraft.kharkov.org

Откуда все это можно скачать:

Bedrock server: сообщение в Реддит, ссылка оттуда, скачанная копия

Bedrock клиент: скачанная копия, а скачано отсюда (там еще есть лаунчер TLauncher для платформы Андроид, но я его еще не тестировал. Ну и конечно есть Tlauncher в виде java версии, который является java клиентом для платформ Linux/Windows/macOS)

А java версии сервера разных версий можно скачивать с официального сайта Mojang, например вот

Зеркало и macOS

В рамках проекта “Всё, что шевелится, соберу под Андроидом и Эпплом” адаптировал код Зеркала к macOS

https://github.com/prool/zerkalomud

Это получилось не так просто, как у Виртустан мада, так как код Виртустана взят из более свежего релиза Былин и он адаптирован к 64-разрядной архитектуре. А код Зеркала стар и при 32 разрядах собирается и работает без проблем, а на 64 вылетает в корку на макросах флагов. Место, где вылетало, найдено и исправлено. Это макрос GET_FLAG. Эти проблемы еще частично связаны с тем, что в macOS родной компилятор не gcc, а “богомерзкий clang”

Каминг аут

На работе выдали Макбук Air. Чувствую себя кем-то типа Ренли Баратеона или Лораса Тирелла.

В порядке освоения OS X (которая основана на ядре FreeBSD) собрал там мад-клиент prooltin (мой мод tintin++). Собралось вообще без вопросов. Еще собрал мад-сервер tbamud, здесь пришлось в Makefile указать полный путь к библиотеке libiconv (а до этого инсталлировать ее при помощи brew, а до этого инсталлировать пакетный менеджер brew). Компилятор здесь, кстати, хипстерский богомерзкий clang, а не православный gcc