Последнее время муд стал падать со странными сообщениями
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)
Tag: macOS
Release 2.02.30 TinTin++
https://github.com/scandum/tintin/releases/tag/2.02.30
Мои результаты компиляции этой версии будут описаны в коментах
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, например вот
Вышла очередная версия консольного мад-клиента tintin++ 2.02.12
https://github.com/scandum/tintin
На всех платформах, к которым я имею доступ (Ubuntu 20.04.1, macOS Catalina, Android 6, Windows/cygwin) собирается сразу
Зеркало и macOS
В рамках проекта “Всё, что шевелится, соберу под Андроидом и Эпплом” адаптировал код Зеркала к macOS
https://github.com/prool/zerkalomud
Это получилось не так просто, как у Виртустан мада, так как код Виртустана взят из более свежего релиза Былин и он адаптирован к 64-разрядной архитектуре. А код Зеркала стар и при 32 разрядах собирается и работает без проблем, а на 64 вылетает в корку на макросах флагов. Место, где вылетало, найдено и исправлено. Это макрос GET_FLAG. Эти проблемы еще частично связаны с тем, что в macOS родной компилятор не gcc, а “богомерзкий clang”
Virtustan MUD and OSX
Каминг аут
На работе выдали Макбук Air. Чувствую себя кем-то типа Ренли Баратеона или Лораса Тирелла.
В порядке освоения OS X (которая основана на ядре FreeBSD) собрал там мад-клиент prooltin (мой мод tintin++). Собралось вообще без вопросов. Еще собрал мад-сервер tbamud, здесь пришлось в Makefile указать полный путь к библиотеке libiconv (а до этого инсталлировать ее при помощи brew, а до этого инсталлировать пакетный менеджер brew). Компилятор здесь, кстати, хипстерский богомерзкий clang, а не православный gcc