у меня XP со вторым сервиспаком. хаб не запускается говорит следующее
Странно, а у меня не создался файл hub_config.dat.
Закрыл хаб - и в папке только сам хаб и некий dll-файл, скачанный вместе.
Версия хаба - последняя, со вчерашнего обновления.
На некоторых системах файлы могут не появиться, так как я не прописывал абсолютные пути к файлам, я это доработаю в скором времени
Да все нормально, просто ты апдейтишь файл быстрее, чем я успеваю скачать и проверить.
Есть конфиги.
2 комментария:
1. В языковом файле - надо бы написать в двух местах слитно "не" - "неверно, неправильный". Я-то исправил у себя, но лучше и у тебя.
2. Не знаю, относится ли это к свойствам данного хаба, или это свойство клиента, но когда я сделал мультикик своего юзер-аккаунта, вместо него улетел мой же юзер-аккаунт в другом хабе - IP-то одинаковые, но тем не менее я не его кикал.
1. Спасибо, поправлю.
2. Однозначно хаб не причём. На данном хабе вообще пока не реализован кик
В файле lang_config.dat строка
Да, возможно MOTD надо будет вынести в отдельный файл, как в ptokax.
Сообщение, которое появилось - это странно. Оно не должно было появиться, и появляется только в крайних случаях. Не понимаю как такое могло произойти. Тут вот в чём дело: пользователь с ником moxito вошёл на хаб, для него создалось соединение и объект пользователя, в объекте пользователя установился указатель на объект соединения. Пользователь был внесён в юзер-лист. После выхода пользователя и до его удаления с сервера, оказалось, что у его объекта отсутствует указатель на соединение. В общем такого не должно было произойти. Такое поведение характерно только для ботов.
IP пользователей запомнил твой клиент, вот они и отображаются. А вообще они не должны отображаться, так как хаб их не отправляет. Для того, чтобы хаб отправлял нужно сделать профили и права на отображение ip определённой группе пользователей.
В следующей версии сделаю логирование всех действий на хабе, чтобы легче было выловить баги.
Таких сообщений в консоли вылезло штук 40 - всего 4 разных ника...
аналогично, этот хаб запущен вторым на адресе 127.0.0.1 (первый хаб работает см. ссылку)
а как использовать все таки управление хабом? имеются виду команды в первом посте...
непонятен принцип захода на него юзеров (при включенном первом хабе происходит заход на этот)
Надо будет разбираться почему выскакивает эта ошибка. Она на должна выскакивать.
Если в настройках прописать ip, то вход на хаб можно будет осуществлять только по прописанному ip. Если прописать 0.0.0.0, то с любого доступного на данном компе ip.
Причина возникающей ошибки найдена. В следующей версии она будет устранена Спасибо за содействие в обнаружении бага
С вашей помощью можно будет сделать всё как надо. Думаю это не первый баг, однако, я буду стараться допускать как можно меньше багов.
Не совсем по теме - в этом странице темы в сообщении #1 не отражаются ссылки на файлы. На первой странице темы - все нормально.
Коммент скорее к веб-мастеру форума.
Ага. Я тоже только что заметил.
Тогда пока не буду прикреплять первый пост Пусть Nickolya разберётся с багом на форуме
Запустил rushub - все прошло нормально за учетом того что motd я скопировал старый то в чат выдал переносы
Понял. Спасибо за тестирование. В ближайшее время исправлю баг.
Проблема не с файлом motd. вылет как только количество 17 человек на хабе - 3 раза вылетал по 17 челов как только:
ща выложу версию с логами
В общем надо разбираться в причине падения.
Завтра попробую разобраться
Спасибо.
Перезалил в первом посте. Надеюсь баг исправлен, однако я продолжаю активно тестировать.
Причиной падения было изменение ёмкости хеш-таблицы списков.
Тестовая версия с оптимизационным изменение ёмкости хеш-таблиц
rushub_test_resize.rar ( 134 килобайт )
: 9
В консоль выводятся изменения ёмкости хеш-таблиц. Обозначения: текущая ёмкость хеш-таблицы|размер хеш-таблицы->новая ёмкость хеш-таблицы.
Изменения ёмкости хеш-таблицы производится в целях ещё большего ускорения работы со списками, а также в минимизации используемой оперативной памяти. Изменения ёмкости приводят к поиску по хеш-таблице всего за одну итерацию
Буквально 15 минут назад хаб отвалился. Ошибку привести не могу (сестра закрыла окно :( ). Вобщем когда я пришел с работы - сестра все "исправила". Хотелось бы на время тестирования пользоваться версией с логами (как в прошлой версии hub_sys.log)
Ок. Следующую версию сделаю с логами.
В какой версии отвалился?
Если в той, которая в первом посту, то возможно, а в rushub_test_resize не должен
rushub_test_resize именно он. самому интересна причина.
Поймал:
v 1.0.4
хм... странно...
не понятно почему у тебя вылетает.
У меня на xp вылетов нету.
При вылете должно что-то написать в консоль:
rushub_v_1.0.4b.rar ( 135.07 килобайт )
: 6
Я на висте. Запустил 1.0.4b.
Библиотеки я не стал прикладывать. Каждый раз добавлять их в архив я думаю не стоит.
Сейчас отдельно выложу архив с либами.
Выложил. См. в первом посту.
Версия 1.0.4b
Выдает команды в чат:
Может он сам их специально отправляет в чат
Проверь по логам.
Если в логах данные команды являются командами чата, то это пользователь сам их отправляет в чат.
Кстати, важное замечание. Если включена опция bAllowBadTag, то есть bAllowBadTag = 1, то допускаются пользователи с некорректными тэгами, и все проверки по слотам и по скоростям не действуют!
Спасибо за найденный баг. Да, действительно, для винды в vs по умолчанию макрос FD_SETSIZE принимает значение 64, то есть максимальное число реальных сокетов ограничено этой цифрой. Виртуальных сокетов, на которых производились тесты может быть сколько угодно, а реальные ограничены макросом. Я действительно забыл изменить этот макрос, в следующей версии изменю, а пока уж как есть, так есть.
Логи пишутся в файловый поток. Поток перезаписывается при очередном старте хаба.
Время в логах чисто символическое. Оно нужно только для определения интервалов между событиями.
Произошел краш
Дополнить нужно в "Описание настроек хаба" - bDelayedMyINFO - нет информации об этом (в прошлой версии было bDelayedMyINFO = 1, а в этой =0)
Можно сделать чтобы Motd.txt можно было перезагрузить? Аналог: "Перезагрузить текстовые файлы" в птоке - а то когда изменишь этот файл хаб рестартить надо.
Будет ли поддержка текстовых файлов?
вылет:
Да всё сделаю. Параметр bDelayedMyINFO опишу (чуть позже). Пока для него оставь значение 0, так как данный параметр пока работает не надлежащим образом.
Сейчас надо разобраться с вылетом. Никак не могу найти причину.
Otshelnik-Fm, при вылете скинь лог: [attachment=3317:rushub_v_1.0.5b.rar]
Хоть это и не так важно, однако, исправлено время в лог файле.
Поломался. Как раз в тот момент когда я нажал на энтер при печати сообщения... - вот поэтому виндовскую ошибку не смог увидеть - там фокус сразу на "ок" - я его и закрыл нечаяно...
Лог в архиве:
hub_sys.rar ( 860.1 килобайт )
: 2
Спасибо за лог. Теперь понятно где копать. Надеюсь в следующей версии вылетов не будет)
Незнаю - может ошибка таже. Но для отчетности:
Немножко о "грустном":
-вчера пробовал для общего блага в виде реального теста(скажем - разведка боем) запустить RusHub вместо Ptokax (хаб внешний для инет подкл.). Настройки выставил (как описывалось выше), запустил... и вместо обычных 120-150 человек, на хаб подключилось и одновременно находилось не более 50 человек. Причем количество не убавлялось но и не прибавлялось - как будто предел в 50 юзеров... Покрутился хаб в таком тестовом режиме с 18.00 вчерашнего дня (30.09.2009) до 9 утра сегодняшнего дня 1 октября...
Извиняюсь за отсутствие лога, т.к. случайно его удалил... Прошу в печень сильно не пинать.
Версия-то хоть последняя была? 1.0.5?
Этот баг уже был
Да, в последней версии лимит сокетов увеличен. Вылеты и не стабильная работа возможны. Именно поэтому версия хаба бета.
Я работаю сейчас только над стабильностью, и буду делать всё остальное только после того, как добьюсь стабильной работы хаба без вылетов.
Как будет стабильная работа, так будет снят признак бета, и появится первая стабильная версия. Причины не стабильности найдены и на данный момент устраняются
Что касается функции SendToAllWithoutNick, то возможно её и следует переименовать, я пока об этом не думал. До того как выкладывать первую версию lua плагина, наверное надо будет провести корректировку, чтобы функции никого не смущали, так сказать выслушать пожелания и сделать всё для понятности восприятия и удобства в использовании, однако, это потом, сейчас важнейшей задачей является стабильность.
Упс... Виноват. Забыл указать версию RusHuba - это 1.0.5 [beta].
Каких либо критических замечаний по работе нет - только случай с ограниченным количеством подсоединённых юзверов.
А работает Шустро!!! Молодцы!
в 129 посту версия rushub_v_1.0.5b - я с ней работаю и скидывал краши с этой версии. По поводу лимитов - то в этой версии всё хорошо. Сейчас на хабе 89-90 (помню был 91 человек).. думаю что всё ок с лимитами (вернее их нету)
Вот в версии v 1.0.5c [beta] - уже нет лимитов (а в v 1.0.5b -видимо были). Т.к. после запуска хаба народа на хабе стало не 90 а 112-116.
Нет. Просто хаб скидывал часть народу
Это исправлено и теперь я надеюсь будет всё ок и без вылетов.
Если вылетов не будет, то вплотную займусь доделыванием lua плагина
Вот теперь видно - что не скидывает - уже 140 человек! Будем тестировать и дальше
Решил вот просто протестировать ботами, добрался до приличного числа, креш случился после того как выключилась программа что создавала ботов, соответственно должны были выйти все боты. Проверял несколько раз, из четырех только в одном случае боты вышли с хаба и не случился креш.
Спасибо.
Большое спасибо. Очень помог. Думаю, что баг исправлен.
Протестируй, если можешь, текущую версию 1.0.5d (ссылка в первом посту).
Мини-вопрос. Как реализуется сие тестирование?
Ммм решил и я чуть поиздеваться над хабом ( уж простите меня )
Спасибо за тест. Думаю, что можно утверждать, что хаб стабилен
По поводу предела пользователей, так это меняется в настройках хаба. Параметр iMaxUsers.
По поводу съедания ядра хз.
Логи включены только на этапе тестирования. Чтобы понимать что происходит на хабе.
работал почти сутки - вылет 1.0.5d
Мне нужен только самый конец лога))
Ошибка c0000094 означает деление на ноль. Сейчас посмотрю где это может быть
новая версия в первом посту.
Это теория. А практика? Есть ли готовое программное решение?
Когда пользователь сам отключается от хаба, он отправляет на хаб своего рода пустое сообщение, однако, бывают случаи, когда пользователь принудительно отключается (обрыв связи). В таком случае, пользователь не отсылает на хаб ничего. И тогда, если пользователю не будут отсылаться ни какие сообщения, то проверить онлайн он или нет, нельзя. Так вот для того, чтобы пользователи, с которыми была разорвана связь не висели на хабе, хаб периодически пингует всех пользователей (отправляет им пустые команды) и если команда не дошла до адресата, то отключает такого пользователя. Поэтому параметр iStartPing - это количество секунд, через которое, после входа на хаб, начнётся пинг пользователя, а параметр iPingInterval - это интервал (тоже в сек), через который будет пинговаться пользователь.
Кстати говоря, со стороны клиентов на хаб также периодически поступают пустые команды. Смысл их отсылки такой же - проверка онлайн состояния хаба.
СУПЕР! Итак, начнем тестирование... Запуск без луа прошел успешно, закинув библиотеку в папку получил вот такое после запуска:
не пойму а как выставить права админа?
Отловленные баги при работе с луа:
- функция Core.SendToUID при том что она получает 3 аргумента, отправляет сообщение в чат без ника
- такое чувство что что-то отваливается когда происходит ошибка при загрузке скрипта, при этом функция перезагрузки скриптов не возвращает ошибку, приходится перезапускать хаб чтобы он перезапустил скрипты.
- креш при вызове Core.GetScript с параметром выключенного скрипта, из-за этого невозможно запустить выключенный скрипт (в смысле сделать проверку на включенность скрипта), лог в файле system1.log:
alex82, спасибо за скрипт. Я почти не сомневался, что хаб сможет цеплять практически все стандартные библиотеки lua. Что касается названия lua51.dll, то для удобства могу изменить его на lua.dll. Просто для подключения стандартной библиотеки для работы с mysql (
Nickolya, спасибо за обнаружение багов. По поводу функции Core.SendToUID, то про этот баг я знал, в ближайшее время исправлю.
По поводу бага с функцией перезагрузки, можно по-подробнее? Пример скрипта?
По поводу бага с функцией Core.GetScript, - исправлю в ближайшее время.
Объяснения по параметру iByte функции Core.GetUser:
С помощью данного параметра мы указываем какие поля мы хотим видеть в таблице, которую вернёт эта функция.
Параметр является числом, в котором зашифрованы биты полей.
Например:
мы хотим в таблице пользователя видеть следующие поля: sNick, sIP, iProfile, sMyINFO.
Для этого мы смотрим какие биты отвечают за эти поля:
с новой версией хаба пошли ошибки существующих уже скрипов. отписал про ошибки тут http://mydc.ru/topic2880.html
сорри. del
вместо функций Core.SendToUID и Core.SendToNick теперь функция Core.SendToUser
Просто заменяем эти функции на Core.SendToUser и всё будет работать.
Core.SendToUser теперь общая функция отсылки данных пользователю как по нику так и по идентификатору UID.
сейчас вообще дело не понятно. luaerr пустой, луа плагин стоит и скрипты вообще не пашут.
да что такое!! не понятный глюк был хаб ребутнул пару раз и всё норм.
С новой версией заметил что соединяется долго. Пишет "соединен" и потом спустя 20-30 секунд - выдает список пользователей. Сорри. Дело было в FirstRusHubBot.lua - я заменил там вместо функций Core.SendToUID и Core.SendToNick функцией Core.SendToUser...
[02:38:33] *** Соединён
[02:38:49] <RusHub> Этот хаб работает под управлением RusHub 2.0.3 (Время работы: 14 мин. 51 сек. / Юзеров: 0).
Убрал скрипт - соединяется за 5 секунд
Соединяться должно мгновенно. Открой CDM отладчик, и посмотри получение команд с хаба, возможно тупит клиент, а не хаб.
Команда $kick не работает. Просто напишет
Попробовал почистить основную тему, все ошибки старых версий сложил сюда, если что не так - выслушаю ваши правки.
Итак, в этой теме давайте выкладывать найденные баги русхаба.
Я пожалуй начну, точнее уточню ранее упомянутое, теперь более-менее разобрался в чем дело, ошибка подобного рода:
Если в скрипте есть синтаксическая ошибка, то скрипт по любому должен останавливаться.
Другое дело где происходит ошибка. Если ошибка происходит в каком-то событии, то тут скрипт уже считается загруженным и получается, что это ошибка выполнения, и тут будет играть роль то, какое значение возвращает событие OnError.
1) Скрипт загружен без ошибок, а ошибка появляется уже после загрузки (во время выполнения события OnStartup):
В хабе я ничего сделать не смогу, так как нельзя перезагрузить скрипт, который работает, поэтому нужно делать задержку.
А зачем делать перезагрузку всех скриптов? Ведь есть функция загрузки определённого скрипта, которая выполняется мгновенно.
Действительно баг.
В следующей версии исправлю.
Уже исправлено. В следующей версии будет всё ок.
Это означает, что пользователь попытался войти на хаб с пустым ником (пустая строка в качестве ника). В обычных DC клиентах нельзя коннектится к хабу с пустым ником. Видимо пользователь использовал читерский или иной (свой собственной) клиент.
Я уберу это предостережение из сообщений об ошибках.
Спасибо
вот ещё:
Эта ошибка может довольно часто появляться. Она означает следующее: "connection reset by peer", то есть соединение разорвано. Причины могут быть совершенно различными, от внезапного отключения света до выдёргивания сетевого провода из компа. Причина внезапного обрыва связи с клиентом не когда не известна.
Эта ошибка не помечена как ошибка, а является всего лишь событием. Если установить уровень логирования событий < 2, то она не будет записываться в лог.
Вроде как исправил в новой версии плагина 1.11
Спасибо за репорт
Докладываю Начал немного изголяться над хабом и получил крах при
Странно. У меня работает, только что проверил.
Некоторых настроек не существует, к примеру iTimeoutSetpass нет в конфиге
Там вместо iTimeoutSetpass должно быть iTimeoutGetpass. Сейчас исправлю в описании.
А что там с падением? Падает?
Видимо в дц тебя нет...
Багу нашёл. Всё исправлю в ближайшее время.
У меня таких сообщений в логе уже 3 мегабайта.
Эта ошибка я не знаю с чем может быть связана. Хаб пытается 10 раз отослать одни и те же данные клиенту, однако подтверждения о приёме данных со стороны клиента не получает. Поэтому после десяти отсылок рассоединяет такого пользователя, иначе, в противном случае, таки пользователи могли бы положить хаб.
Ни IP клиента ни ника никак не узнать? Может быть это какой-то определенный клиент не дружит с русхабом?
Рус хаб тут ни при делах. Это обычная ошибка в сокетах. На других хабах тоже может быть такое, просто админы других хабов не знают об этом, так как отсутствует лог подобного рода события.
А для того чтобы узнать больше информации о клиенте нужно ставить больший уровень лога событий (не меньше 3).
Да. Регистрацию ботов уже давно хочу сделать. Возможно в следующей версии сделаю.
Не совсем так.
Тут дело вот как обстоит. Пользователь с данным ником заходит, проходит валидацию ника $ValidateNick, но ещё не полностью входит на хаб (не отправил, например, $MyINFO команду), и в это время входит второй пользователь с таким же ником, и второй пользователь также проходит валидацию (до окончательного входа первого). Когда первый пользователь окончательно входит на хаб, регистрируясь при этом в списках пользователей хаба, второго пользователя уже нельзя регистрировать в списках, поэтому второго пользователя отключает хаб и записывает в лог данную ошибку.
Ошибка достаточно редкая, так как шанс, что 2 юзера с одинаковыми никами пойдут валидацию до регистрации в списках какого-либо из этих юзеров, достаточно мал. Хотя такое исключать нельзя. Такое может случиться, например, при медленной связи или в случае читерского клиента, который намеренно не отсылает на хаб MyINFO команду.
На хабе установлены интервалы времени для получения той или иной команды входа, поэтому если клиент долго не отсылает ту или иную команду входа, то хаб отключает клиента, когда время ожидания команды превысит установленный интервал, при этом клиенту отсылается уведомление, например, такое:
в предпоследней версии
По своей сути это не является ошибкой, а является только уведомлением.
Попробуй последнюю версию, там её не должно быть.
По поводу ошибки OnUnknown исправлю в следующей версии плагина.
Значит так...
Приветственное сообщение и менюшки отправляются при помощи скриптов.
Функция отправки Core.SendToUser возвращает true в случае успеха. В случае неудачи функция возвращает 2 значения: nil и сообщение об ошибке. Поэтому для того чтобы обнаружить причину нужно откопать ту функцию Core.SendToUser, которая отвечает за отправку, например, MOTD.
[Sat Feb 20 23:02:52 2010] Error in cLua::OnUnknown
[Sat Feb 20 23:25:34 2010] Error in cLua::OnUnknown
[Sun Feb 21 14:04:53 2010] Error in cLua::OnUnknown
[Sun Feb 21 15:53:25 2010] Error in cLua::OnUnknown
[Sun Feb 21 16:24:56 2010] Error in cLua::OnUnknown
Последняя версия хаба.
ExC0tiC: из CDM отладчика видно, что всё что отсылается не скриптом приходит. Поэтому скорее всего дело в скрипте.
Saymon: я знаю об этой ошибке, точнее это даже не ошибка, а уведомление. В следующей версии уберу.
Otshelnik-Fm: Дело может быть и не в медленности соединения. В следующей версии добавлю дополнительное логирование для того чтобы определить причину.
Saymon, Otshelnik-Fm: По поводу того, что иногда не отсылается MOTD или контекстные менюшки, у вас не было такого? Никто не жаловался?
ExC0tiC, ты засветил пароль, надеюсь он не твой, иначе меняй его. И как раз из этих команд видно что ни один скрипт не сработал, ни приветствия, ни меню в этих командах нет, хотя юзер полностью зашел на хаб. Мб сделать специальный лог для каждого юзера а не в общем потоке чтобы видеть в чем причина глюка?
Думаю причина в скриптах.
Нужно в скриптах смотреть. Возможно в каком-то скрипте возвращается true (или 1) в том событии, в котором отсылается MOTD или менюшки.
Дело в том, что недавно (в последних версиях) я сделал блокировку в выполнении скриптов, если в событии возвращается true (или 1). Данное решение было связано с бессмысленности каких-либо действий в скриптах, которые идут ниже скрипта, который заблокировал событие. Если такие действия всё же нужно произвести, то для этого предусмотрена функция изменения команды: Core.SetCmd
Обычно MOTD и менюшки отсылаются после окончательного входа, то есть в событии OnUserEnter. Поэтому во всех скриптах нужно проверить не возвращается ли случайно в этом событии true (или 1). Хотя с другой стороны, далеко не у всех наблюдается подобного рода проблема, поэтому может дело не в хабе и не скрипте, а в клиенте? Ради эксперимента я думаю стоит проверить работу на другом клиенте (или по крайней мере на другой версии текущего клиента). Не лишним будет также проверить игноры в клиенте.
Не было такого. Может менюшками и не пользуются. Но у меня меню приходят всегда. Смею предположить что дело в клиенте
Setuper, Да нет у меня ничего не замечалось
RusHub 2.1.3 & Lua Plugin 1.14
Влади, в функции вроде 2 параметра: Core.SendToWeb(WebID, sData)
Почему у тебя один?) А падения это конечно не очень хорошо.
Да уж. Падение - это не хорошо.
Я посмотрю и исправлю.
Я уже нашёл причину креша.
Вот что происходит: идёт вызов события OnWebData, в этом событии происходит ошибка, и поэтому вызывается событие OnError, но в событии OnError происходит ошибка и не возвращается true, то есть скрипт не продолжает работать, а принудительно останавливается. Но после остановки скрипта ищутся события OnScriptError с параметром ошибки, но скрипт уже остановлен, следовательно в параметр ошибки передаётся неправильный указатель. Поэтому и падает. То есть баг именно из-за попытки вызова события OnScriptError.
Не уверен, что все всё поняли.
Баг исправлю в ближайшее время.
Баг пофиксил (Lua плагин перезалит).
Спасибо за репорт.
Ну кому надо, тот поймет
Вопрос на засыпку: планируется ли разбор информации которая приходит на веб-сервер? Я начал писать модуль на луа который этим занимается, стоит ли продолжать?
Парсер в исходном коде предусмотрен, однако я оставил его пустым, то есть не стал парсить, а переложил парсинг на плечи Lua.
Однако, если понадобится, то я могу реализовать. На данный момент я не планирую его реализовывать. Думаю, что на lua это дело будет работать не хуже.
Ну все lua я так думаю не сделает, хотя по ходу дела будет видно.
Мне кажется было бы удобнее сделать так, как это сделано в php - что бы скрипту были доступны несколько таблиц - tServer, tPost, tGet, tSession, и тд, ведь обычно скрипту нужен только запрос и все
может я что и накосячил, но после того как хотел сделать отсылку меню в скрипте Text.lua как сделано в Bomb
при перезапуске скриптов вылезло такое не думаю что оно должно быть. Версия хаба 2.1.2
Для начала нужно установить версию по-новее. Помнится у меня тоже при тестировании на ранних версиях иногда падал хаб, если, например, не передавать в функцию ContextMenu UID пользователя. То есть например написать:
хорошо спасибо сейчас займусь