Здравствуйте, гость ( Вход | Регистрация )
Дата поста: | В теме: | За сообщение: | Спасибо сказали: | ||
---|---|---|---|---|---|
29.2.2012, 19:39 |
Defend PM, RusHub edition Полностью автоматическая защита ЛС от спама |
В русхабе в командах никогда нету разделителя на конце |. Возможно поэтому и не работает. Нужно убрать разделитель из регулярки. |
Enyby | ||
16.2.2012, 22:53 |
base32 Encoder костыль алгоритма |
Итак, найден очень неприятный костыль, который тянется из оригинального DC++ клиента, и который перенесён в производные от него клиенты, а также в ADC хабы, которые используют base32 для CID. Косяк заключается в неправильно алгоритме преобразования из и в base32. Берется некий ADC CID: "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ". Он состоит из 39 символов. Преобразовываем этот CID по алгоритму DC++ из base32 (размер dst равен 24): Код Encoder::fromBase32(src, dst, sizeof(dst)) а потом опять в base32: Код Encoder::toBase32(dst, sizeof(dst), newSrc) По идее должны получить тот же CID, однако получаем следующее: "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZY" Почему это возникает? В base32 кодировке каждый символ имеет всего 32 комбинации, поэтому может занимать 5 бит, вместо 8. Отлично! Умножаем 39 на 5 и делим на 8, получаем 24,375. Однако размер dst равен 24, то есть мы теряем хвост данных. Дальше ещё интереснее. Если мы возьмём размер dst с запасом - 25, вместо 24, то хвост мы не потеряем, однако на стадии преобразования в base32 мы получим лишние данные, ибо по алгоритму преобразования 0 в пяти битах преобразуется в символ base32 'A'. Однако, алгоритм может срабатывать правильно. Это возникает тогда, когда хвост не имеет значимой величины (биты хвоста все равны 0). Хвост равен 3 бита. Получаем, что для того чтобы срабатывал алгоритм нужно чтобы последний символ был равен A (00000), I (01000), Q (10000) или Y (11000), в противном случае получаем значимые биты в хвосте, и обратное преобразование ломается. |
Nickolya | ||
15.2.2012, 9:21 |
Аналог в verlihub |
Действительно, не корректно работало. Спасибо. Исправил. Сообщения от хаба и не будет. Хаб тупо отключает юзера. Отсутствие сообщения связано с минимизацией со стороны хаба времени на обработку таких реконнектов. Хотя при первом реконнекте возможно сообщение нужно сделать. |
ShadoWx, KT315 | ||
9.2.2012, 8:48 |
Протокол IPv6 в протоколе NMDC Спецификация и тестирование IPv6 в NMDC |
Вот поэтому разумнее сделать хаб, который поддерживает оба протокола одновременно. Понятное дело, что в ADC протоколе больше разнообразных фич, но всё же нужно сделать минимум - набор команд NMDC, максимум - набор команд ADC. Народ будет видеть новые возможности ADC и постепенно переползать на него. Русхаб продвигается в этом направлении. |
IRainman | ||
7.2.2012, 14:44 |
FirstRusHubBot приводим RusHub к рабочему виду функционалом скриптов |
Просто не сохраняется удаление. В файле cmds.lua перед строчкой: Код local tMsg = {"*** ", tUser.sNick, ", регистрация ника \"", sData, "\" с профилем №", iProfile, " (", tProfiles[iProfile].tNames[1], ") удалена!"} добавь строчку:Код SaveTable(sThisScriptDir.."RegUsers.dat", tRegUsers, "tRegUsers") Перезалил исправленную версию. |
ShadoWx | ||
7.2.2012, 9:07 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Советую не браться за это дело. Оно гиблое. Настройки клиентов у всех разные. Найти что-то универсальное невозможно. Единственная универсальная штука для выравнивания - это табуляции. Табуляции следует использовать только в начале строки. Конечно можно использовать и в середине, но тогда опять же возникают зависимости от шрифтов и в особенности от размера шрифта, так как число символов, которые укладываются в табуляцию зависит именно от этого. |
MIKHAIL | ||
5.2.2012, 16:38 |
Протокол IPv6 в протоколе NMDC Спецификация и тестирование IPv6 в NMDC |
Ты изобрёл свой велосипед. Этот велосипед уже изобретён и называется ADC протокол. Вместо того чтобы адаптировать NMDC хаб на работу с каким-то расширением, лучше адаптировать работу хаба на одновременное взаимодействие по двум протокола NMDC и ADC. Получится тоже самое. То есть, хочешь ipv6 - переходи на ADC! Нужно продвигать новый протокол, а не продолжать накручивать что-то на старый. |
Otshelnik-Fm | ||
4.2.2012, 14:37 |
Сборка Rushub на платформе SUN (Oracle). OpenSolaris, Nexenta для x86 Патч для Rushub 2.3.8 |
Попробуй сейчас скачать из trunk и собрать, должно собираться безо всяких патчей |
KT315 | ||
3.2.2012, 23:56 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
функцией table.remove можно удалить только элементы с числовым ключом. В твоём случае следует делать так: Код tTable["nick"] = nil |
LoT | ||
2.2.2012, 17:23 |
Ipv6 Test Hub RusHub |
Если подключаться к хабу по локальному ipv6 (::1), то должно пахать. Кстати, для ipv6 я исправил выхлоп в лог при возникновении ошибки (в ревизии 675), так как раньше показывалась не та ошибка, поэтому диагноз возникновения ошибки мог быть неправильным. Только что проверил... Действительно была ошибка, из-за которой хаб сбрасывал ipv6 соединение. Устранил её только что. Качайте исходники из trunk - теперь должно входить по ipv6 ![]() Кстати, для тестирования ipv6 можно использовать консольного клиента stress-test, но только для NMDC, для ADC он ещё не адаптирован. |
mariner, ShadoWx, PomanoB, KT315, CrazyKiller | ||
1.2.2012, 20:53 |
Логотип для RusHub'а ваши варианты и предложения |
Ну да, вопрос уже давно был решён, и изменять иконку никто не собирается. Вообще говоря логотипом является картинка с двумя буквами RH в соответствующих цветах: http://rushub.org/ |
KT315 | ||
31.1.2012, 16:21 |
Стресс тест для хаба |
Такая ошибка действительно была. Бери из trunk версию, там это уже исправлено |
CrazyKiller, мамин_парень | ||
31.1.2012, 8:59 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Такое возможно только если между хабом и юзером нету активного сетевого оборудования, которое меняет mac-адрес. |
MIKHAIL | ||
28.1.2012, 23:39 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
на быстродействие никак не повлияет, ибо хаб всё равно будет впихивать в стек этот id при вызове OnTimer, просто этот id не используется |
MIKHAIL | ||
28.1.2012, 23:22 |
Особенности приготовления PtokaX Некоторые особенности работы скриптов на данном хабе |
Могу ещё добавить до кучи, что возможен случай, когда при входе не будет выполняться скриптовая функция ValidateNickArrival. Происходить это будет в том случае, если клиент поддерживает характеристику QuickList |
Enyby | ||
28.1.2012, 23:13 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Во-первых, tmr тут вовсе не функция, а переменная. Во-вторых, в lua всякая переменная, которая не объявлена как локальная, является глобальной. В-третьих, по внегласному правилу обращелние к локальным переменным происходит быстрее чем к глобальным. В-четвертых, в указанном примере переменная tmr в функции OnStartup является глобальной, а переменная в функции OnTimer является локальной, то есть это разные переменные в разных областях видимости. Чтобы не путаться в них следует называть их по-разному: Код function OnStartup() tmr = TmrMan.AddTimer(60000) end ... function OnTimer(id) ... end |
MIKHAIL | ||
26.1.2012, 21:38 |
RusHub: Запрет неразрывного пробела rushub |
Ksan, Ты думаешь я ему ни подсказываю? Пожалуйста не обижайся на мою критику, я иногда бываю резок, когда дело касается нюансов. Отчасти я так сказал только для того чтобы ты обратил внимание на нюансы, а не пытался заменить код на более простой, но менее функциональный. Теперь аналог этого кода для птохи, для того чтобы можно было попробовать как это работает: Код local sBot = "Bot" function ChatArrival(tUser, sData) if tUser.iProfile == -1 or tUser.iProfile == 3 then local sText = sData:sub(#tUser.sNick + 4, -2) if sText:find"\160" then SendToUser(tUser, "*** Использование неразрывного пробела в тексте запрещено!", sBot) return true end end end function ToArrival(tUser, sData) if tUser.iProfile == -1 or tUser.iProfile == 3 then local sTo, sText = sData:sub(1, -2):match("^%$To:%s+(%S+)%s+From:%s+(.*)") if sText:find"\160" then SendToUser(tUser, "*** Использование неразрывного пробела в тексте запрещено!", sBot, sTo) return true end end end function SendToUser(tUser, sMsg, sNick, sSender) if sSender and sNick then Core.SendToUser(tUser, (("$To: %s From: %s $<%s> %s"):format(tUser.sNick, sSender, sNick, sMsg))) elseif sNick then Core.SendToUser(tUser, (("<%s> %s"):format(sNick, sMsg))) end end P.S. Для того чтобы набрать неразрывный пробел нужно включить Num Lock и, удерживая alt, набрать 0160 на расширенной клавиатуре, после этого отпустить alt. |
ShadoWx | ||
25.1.2012, 17:31 |
HubTopic Скрипт показывающий ваш текст в строке состояния |
Код Core.GetConfig("sHubBot") заменить на Код Config.sHubBot или на Код Config["sHubBot"] кому как больше нравится.Однако в любом случае это не ошибка, а всего лишь предупреждение ![]() |
CrazyKiller | ||
18.1.2012, 20:15 |
Единая платформа для скриптов Обсуждения вопроса создания единой платформы скриптов |
В русхабе это делается очень просто, тем более на последней версии. скрипт1: Код function OmMyINFO(tUser, sData) tUser.sDesc = "Новое описание" end скрипт2: Код function OmMyINFO(tUser, sData) tUser.sMode = "P" end Нечто универсальное считаю неправильным, ибо функционал даёт очень разные возможности. Конечно можно сделать нечто универсальное, но это может ухудшить работу. |
Enyby | ||
18.1.2012, 9:05 |
Что такое хороший хаб? Немного рассуждений на тему критериев качества хаба |
Полностью согласен. Добавлю. 1) В целях безопасности (при не шифрованных передачах) в MOTD не следует отправлять IP пользователя, а также порты подключения. 2) Стоит отметить и игру в викторину, которая проходит в чате. Следует сделать вход в эту игру, чтобы викторина "флудила" в чате (или личке), только если ты в неё вошёл. |
Enyby | ||
16.1.2012, 21:50 |
Вопросы по RusHub Технические вопросы |
Изменились уровни логирования, поэтому в старой версии файла у тебя настройка: iMaxLevel = 0 (настройку iMaxErrLevel можно удалить, она теперь содержится в iMaxLevel). Система логирования теперь такая: FATAL - критическая ошибка (уровень 0); ERROR - ошибка (уровень 1); WARN - предупреждение (уровень 2); INFO - информационное сообщение (уровень 3); DEBUG - отладочное сообщение (уровень 4); TRACE - трейс сообщение (уровень 5). Параметр iMaxLevel показывает текущий уровень логирования (по умолчанию теперь 3). При этом уровень логирования позволяет логировать и всё события, которые ниже уровнем. Например, если у нас стоит уровень логирования 3 (INFO), то будут логироваться события INFO, WARN, ERROR и FATAL. Если уровень логирования 5 (TRACE), то логируются все события. Поэтому поставь уровень логирования iMaxLevel = 3, и логи должны появятся. |
dimajak | ||
15.1.2012, 16:22 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.3.8 lua plugin v 2.7 Added: Добавлена возможность установки параметров MyINFO. Текущие параметры: sDesc - описание пользователя (строка); Added: Добавлена возможность установки из Lua своих параметров следующих типов данных: строки, числа, логические. Added: Сообщения в логах хаба стали более наглядными. Добавился констроль строк и уровни логирования: FATAL - критическая ошибка (уровень 0); Added: Добавлена поддержка поиска и соединения клиентов в ADC. Fixed: Устранен баг в UDP поиске (не работал UDP поиск). Fixed: Устранен баг с таймерами в lua (функция Core.AddTimer не вызывалась RunTime, а могла вызываться только непосредственно в событии OnStartup). Fixed: Устранен баг в пути, по которому пишутся логи lua плагина. Fixed: Произведена локальная оптимизация и рефакторинг, а также уменьшено потребление памяти хабом. |
Nickolya, mariner, Артём, Maximum, PomanoB, KT315, Alexey, CrazyKiller, Saymon21, dimajak, LEXSOR | ||
7.1.2012, 20:41 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
То есть ты хочешь обойтись без копирования строки? В таком случае нужно использовать таблицу Код local sData1 = {"text"} local sData2 = sData1 -- копирование по ссылке Использование: Код print(sData1[1]) print(sData2[1]) |
MIKHAIL | ||
3.1.2012, 19:06 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Разницы между Код function GetData(sData) и Код GetData = function(sData) быть не может, ибо lua интерпретатор транслирует первый вариант во второй (см. документацию |
MIKHAIL | ||
29.12.2011, 21:52 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Ну по-моему всё равно корявый метод. Кстати, вот ещё пара методов тогда до кучи: Код function floor(num, precision) precision = math.pow(10, precision) return math.floor(tonumber(num) * precision + 0.5) / precision end function ceil(num, precision) precision = math.pow(10, precision) return math.ceil(tonumber(num) * precision - 0.5) / precision end floor(456.456556, 3) -- 456.457 ceil(456.456556, 3) -- 456.457 |
MIKHAIL | ||
29.12.2011, 10:09 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Такой метод округления не хорошо использовать, так как возможен вариант, когда целая част состоит не из одной цифры, а например из 2 или 3 Код n = 356.3695876 Лучше использовать функцию format: Код string.format("%.3f", 356.3695876) -- 356.370 |
MIKHAIL | ||
20.12.2011, 12:23 |
RusHub. Пакеты для Debian/Ubuntu |
Ага. Разумно. Сделал. |
Alexey | ||
19.12.2011, 9:46 |
Ваши Вопросы И Предложения По Поводу Форума |
Пора наверное поставить новогоднюю шапку на форуме ![]() |
Nickolya | ||
8.12.2011, 9:45 |
Переобъявление переменной |
Код local a = {} local b = a a = nil Создаётся таблица, и записывается в переменную "a" ссылка на эту таблицу. В переменную "b" копируется ссылка на эту же самую таблицу (НЕ КОПИРУЕТСЯ сама таблица!). Далее уничтожается ссылка переменной "a" на эту таблицу. Однако на таблицу остаётся ссылка переменной "b", поэтому таблица не будет уничтожена сборщиком мусора. Пример, показывающий, что мы действительно имеем дело с одной таблице и двумя ссылками на эту таблицу (то есть под таблицу память выделена 1 раз): Код local a = {v = 5} local b = a print(a.v) -- напечатает "5" print(b.v) -- напечатает "5" b.v = 6 print(a.v) -- напечатает "6" print(b.v) -- напечатает "6" a.v = 7 print(a.v) -- напечатает "7" print(b.v) -- напечатает "7" То есть, в данном примере переменные "a" и "b" равнозначны, так как ссылаются на одну и ту же таблицу (на одну и ту же память), и для изменения данных по этой памяти мы можем использовать как переменную "a", так и переменную "b". Другими словами: действие b = a не приводит к копированию таблицы, оно лишь создаёт новую ссылку на уже существующую таблицу. |
MIKHAIL | ||
6.12.2011, 9:39 |
Переобъявление переменной |
То что мы присваиваем переменной tPlayers значение nil не означает, что мы стираем из памяти таблицу, на которую указывала эта пременная до этого. Этим действием мы только удаляем ссылку на эту таблицу, а если на таблицу никто не ссылается, то таблица в скором времени будет удалена из памяти сборщиком мусора. Если же мы пишем tPlayers = {}, то это означает, что мы создаём новую (пустую) таблицу и присваиваем переменной tPlayers ссылку на новую таблицу, при этом опять же, если на старую таблицу никто не ссылается, то таблица в скором времени будет удалена из памяти сборщиком мусора. |
dimajak | ||
24.10.2011, 14:34 |
Ошибки текущей версии хаба Обнаруженные ошибки публикуются в этой теме |
Раньше выставлялся 0, если шары нет. По всей видимости для nmdc протокола это правильно, однако для adc протокола параметр шары может отсутствовать, то есть равен nil. Поэтому в предверии внедрения adc баг перешёл в фичу. |
Saymon21 | ||
23.10.2011, 17:20 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.3.7 lua plugin v 2.6 Added: Добавлено использование системы сборки GNU Autotools. Added: Добавлена настройка iMaxSendSize, отвечающая за максимальный размер буфера отсылки (по умолчанию 2818047). При превышении этого размера пользователь отключается от хаба. Fixed: Устранена повторная отсылка команды $Hello. Fixed: Устранена уязвимость, при помощи которой можно было выкинуть с хаба зарегистрированного пользователя. Fixed: Частичный рефакторинг кода. |
Nickolya, mariner, Артём, PomanoB, KT315, Sekretchik, CrazyKiller, Saymon21, Sorrow | ||
21.10.2011, 17:23 |
Проблема с хабом после установки роутера |
udp нужно указывать в случае активного поиска со стороны хаба (специальные скрипты поиска у пользователей). А для того чтобы искалось в клиенте на той же машине, что и сервер нужно либо в пассиве искать, либо бросать порты. |
Accelerator | ||
19.10.2011, 9:56 |
Вопросы по RusHub Технические вопросы |
Magneto 2 раза отсылает версию. Для чего это сделано не знаю, но русхаб отключает после повторной отсылки команд стадии входа, так как это часть огромной системы антифлуда. Atlant, можешь убрать повторную отсылку команды $Version в Magneto? У меня даже в коде есть коммент, что верлик хочет версию, без нее кикает. А птоха - да, не проверяет. Верлик хочет версию, но не проверяет её значение. |
Mangust | ||
19.10.2011, 7:01 |
Вопросы по RusHub Технические вопросы |
Тот кто писал Magneto допустил ошибку в версии. Magneto отправляет на хаб версию 1.0091, а по NMDC протоколу нужно отправлять версию 1,0091, то есть дробная и целая част должна быть отделена запятой, а не точкой. Чтобы включить проверку в русхабе, достаточно написать небольшой скриптик: Код function OnVersion() return true end |
Mangust | ||
2.10.2011, 0:36 |
ChatHistorySQL История чата (MySQL) |
Ksan | |||
28.9.2011, 22:31 |
rex_pcre RusHub | Библиотека pcre |
Исходники приложил ![]() От встроенного в хаб функционала отказался. Библиотека намного больше возможностей даёт и сохраняет модульность, не загромождая хаб лишним кодом |
Saymon21 | ||
28.9.2011, 22:19 |
rex_pcre RusHub | Библиотека pcre |
Название: rex_pcre Версия: 2.4 Хаб: RusHub Описание: Библиотека для использования пёрловских регулярных выражений Использование: Кладём dll библиотеку в папку libs. Подключается библиотека так: require"rex_pcre" Документация (англ.): [attachment=6075:manual.html] Библиотека win32: [attachment=6073:rex_pcre.rar] Библиотека win64: [attachment=6074:rex_pcre_win64.rar] Исходники (в архиве есть проект для vs2008): [attachment=6076:lrexlib_2.4.0.rar] p.s. Чуть позже переведу мануал на русский ![]() |
Nickolya, PomanoB, CrazyKiller, Saymon21, DEN 007 | ||
19.9.2011, 20:21 |
Ошибки текущей версии хаба Обнаруженные ошибки публикуются в этой теме |
Ага. Действительно ошибка. Исправил. Линуксоиды могут пересобрать из svn. Те кто на винде - ждите следующий релиз. |
Артём, KT315, Saymon21 | ||
10.9.2011, 21:01 |
Вопросы по RusHub Технические вопросы |
Скорее всего скрипты. Попробуй поотключать скрипты. По-моему даже на тестах при 20000 юзерах 5 секунд никогда не было. |
CrazyKiller | ||
31.8.2011, 10:42 |
Ошибки текущей версии хаба Обнаруженные ошибки публикуются в этой теме |
Спасибо за найденную ошибку. Исправлено. |
PomanoB | ||
17.8.2011, 14:03 |
[FreeBsd]LuaPlugin |
Исправил этот баг. Обновись с svn и попробуй. |
ShadoWx, Saymon21 | ||
14.8.2011, 20:55 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.3.6 Added: Добавлена частичная поддержка ADC протокола (вход/выход и чат). Для переключения хаба в ADC режим работы, нужно установить настройку bAdcOn. Fixed: Устранена проблема с поиском пользователей в 64 битной системе. Fixed: Устранен баг с установкой MyINFO из скрипта. |
Nickolya, ShadoWx, Otshelnik-Fm, KT315, Alexey, Sekretchik, CrazyKiller, Saymon21, Dimon21 | ||
11.8.2011, 20:31 |
NetInDescription Добавляет сеть в описание пользователя |
adc протокол пока что не реализован, поэтому на этих выходных будет очередной релиз с соответствующими исправлениями. |
CrazyKiller | ||
10.8.2011, 7:06 |
Ваши Вопросы И Предложения По Поводу Форума |
Saymon21, получается, что ты все символы | заменяешь на коды? Ведь это в корне не верно. А если нужно написать именно символ | ? Код Core.SendToUser(tUser, "$UserCommand 1 3 Админ\\Правила хаба$<%[mynick]> !rules||".. "$UserCommand 1 3 Админ\\Хабы-друзья$<%[mynick]> !hubs|") Нужно просто избавиться от преобразования кодов в символы, именно это и делает мой код, причём не важно какой символ отвечает этому коду символ | или какой-то другой. |
Nickolya | ||
9.8.2011, 21:06 |
Ваши Вопросы И Предложения По Поводу Форума |
Есть предложение таки устранить проблему с отображением кода | на форуме. Покопал тут файлы IPB... Файл sources/classes/bbcode/class_bbcode.php. Если в функции pre_db_parse в самом начале написать Код $txt = preg_replace( "/&#(\d+)/", "&#\\1", $txt ); то в принципе проблема исчезнет.Хотя могут быть какие-нибудь побочные эффекты. Но думаю попробовать стоит ![]() |
Nickolya, Saymon21 | ||
8.8.2011, 22:25 |
Компиляция из SVN |
Проблема в линковке под данную платформу линукса. Возможно требуется поиграть с опцией -ldl. То есть, во всей видимости, предлагается собирать так: Код RusHub: $(OBJS) $(CXX) -lrt -o RusHub $(OBJS) -ldl $(CURDIR)/tinyxml/tinyxml.a |
kotuk | ||
30.7.2011, 14:01 |
FirstRusHubBot приводим RusHub к рабочему виду функционалом скриптов |
Ну так замени на: tUser.iProfile = iRegProfile tUser.iProfile = -1 |
KT315, Dimon21 | ||
29.7.2011, 15:18 |
Ошибки текущей версии хаба Обнаруженные ошибки публикуются в этой теме |
Действительно есть такая ошибка. И действительно она возникает только на 64 разрядной машине. Ошибка достаточно серьёзная. Из-за неё не работает не только личка, но и многие другие функции такие как поиск и тд. Исправил этот баг. Выложил версию 2.3.6[beta]_win64 (http://mydc.ru/topic2378.html) |
Darksome | ||
20.7.2011, 11:42 |
Ошибки текущей версии хаба Обнаруженные ошибки публикуются в этой теме |
В связи с увеличением производительности русхаба было увеличено максимальное число файловых дескрипторов до 32768. Однако оказалось, что 64 разрядная сборка крешилась из-за этого. Я пересобрал 64 разрядную сборку с уменьшенных числом файловых дескрипторов (до 16384). Что это означает? Это означает, что максимально доступно 16384 сокетов (соединений). Это касается только windows x64! Имеем: unix: нет ограничений windows x32: 32768 windows x64: 16384 |
Maximum, Saymon21 | ||
17.7.2011, 18:14 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.3.5 lua plugin v 2.5 Fixed: Оптимизация запросов на соединение. Одновременный приём до 64 соединений за цикл (до этого было 1 соединение за цикл). Fixed: Проведен стресс-тест с последующей оптимизацией, что позволяет отныне хабу держать 10k+ соединений. Fixed: Устранён баг в команде $SR UDP. Отсутствовала настройка длины команды. Fixed: Оптимизированы события в Lua плагине. Для каждого события создан свой список скриптов. Таким образом, при вызове события не происходит никаких лишних обходов (обходятся только скрипты, в которых есть функция того или иного события). |
Nickolya, PomanoB, KT315, Sekretchik, CrazyKiller, Saymon21, Dimon21, mod, arktik | ||
26.6.2011, 9:52 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.3.4 lua plugin v 2.4 Added: Добавлена задержка для процесса остановки windows службы Added: В файл RusHub.xml добавлены относительные (относительно него) пути, которые при загрузке заменяются на абсолютные, а при сохранении настроек в файл - обратно в относительные Fixed: Устранен баг в команде $UserIP Fixed: Устранен баг в lua api функции SendToIP Fixed: Устранен баг в установке ipv6 адреса без порта Fixed: Устранен баг в тримировании пустой строки Fixed: Изменена логика работы события OnExit при остановке хаба (теперь событие отрабатывает до дисконнекта всех пользователей хаба) Fixed: Проведено профилирование и оптимизация ядра хаба Fixed: Немного снижено потребление памяти |
Nickolya, mariner, Otshelnik-Fm, PomanoB, Sekretchik, CrazyKiller, Saymon21, arktik | ||
17.6.2011, 20:43 |
Ошибки текущей версии хаба Обнаруженные ошибки публикуются в этой теме |
Залил версию 2.3.3a с исправленной проблемой отсылки ip адресов (http://mydc.ru/topic2378.html) Баг был в хабе, поэтому плагин тот же остался (v2.3) |
PomanoB, Infinity_Love | ||
15.6.2011, 17:08 |
С Днюхой Тебя! поздравления |
Saymon, с днюхой! ![]() |
Saymon21 | ||
13.6.2011, 13:31 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.3.3 lua plugin v 2.3 Added: Поддержка ipv6. Пример настройки одновременного прослушивания ipv4 и ipv6 адресов: Код <Item Name="sAddresses">0.0.0.0:411 [::]:411 [fe80::219:7dff:fe86:e017]:413</Item> Адреса указываются через пробел. Порт указывается через двоеточие (если порт отсутствует, то берётся порт по умолчанию 411), при этом, ipv6 обязательно необходимо заключать в квадратные скобки (ipv4 также может быть заключен в квадратные скобки, однако для ipv4 это необязательное требование). Также вместо ip адреса может быть указан хост, а вместо числового значения порта может быть указан его буквенный аналог (например: 80 <=> http, 443 <=> https, 512 <=> exec и тд.).Fixed: Упрощено взаимодействие плагинов |
Nickolya, mariner, PomanoB, Infinity_Love, Sekretchik, CrazyKiller, Saymon21 | ||
21.5.2011, 17:07 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.3.2 lua plugin v 2.2 Fixed: Устранен баг в списке удаляемых таймеров Fixed: Убран автозапуск хаба непосредственно после установки сервиса Fixed: Исправлен lang файл по умолчанию Fixed: Устранен баг циклического вызова при отсутствии файла лога Fixed: Устранен баг в вызове параметров UID Fixed: Устранен баг в вызове события OnScriptError |
Nickolya, PomanoB, KT315, Sekretchik, CrazyKiller, Saymon21, Mustik | ||
19.5.2011, 8:51 |
Мафия игра Мафия для Птохи API2 |
А ты глянь на следующую строку, ведь очевидно, что нужно искать функцию RemoveTimer, в которую передаётся вместо числа nil Ведь простейшая ситуация: игрок был зарегистрирован в игре, таймер был остановлен и переменная Tmr была обнулена, игрок уходит с хаба, при выходе вызывается функция UnRegUser и на вызове TmrMan.RemoveTimer(Tmr) скрипт падает, так как переменная Tmr была установлена в nil ранее. |
dimajak | ||
18.5.2011, 20:46 |
Милиция против DC запрет со стороны милиции и провайдера |
http://mydc.ru/topic4698.html + ОПератор, который будет мониторить поиск и добавлять новый контент в базу, благо в скрипте это можно делать прям из окна с результатами поиска и всего одним кликом |
мамин_парень | ||
13.5.2011, 23:26 |
Тексты версия 2.0 |
Код function OnChat(UID, sData) local sCmd = sData:match"%b<>%s+[!+*](%S+)" if sCmd then local sText = Files.LoadText(sPath..sCmd..".txt") if sText then sText = sText:gsub("%[(%S+)%]", { HubName = Core.GetConfig("sHubName"), NickMixLen = Core.GetConfig("iMinNickLen"), NickMaxLen = Core.GetConfig("iMaxNickLen"), Port = Core.GetConfig("iMainPort"), SubPorts = Core.GetConfig("sSubPorts"), Language = Core.GetConfig("sLocale"), HubBot = Core.GetConfig("sHubBot"), }) Core.SendToUser(UID, sText, sBot, sBot) return true end end end |
Accelerator, CrazyKiller, Dimon21, AfLc | ||
4.5.2011, 20:54 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.3.1 lua plugin v 2.1 Added: Сборка win64 Added: Введено юнит-тестирование хаба Fixed: Устранён баг в lua плагине (удаление из списка) Fixed: Проверено/устранено подтекание памяти Fixed: Исправлен баг в функции получения mac-адреса Fixed: Проведён рефакторинг и оптимизация |
Nickolya, PomanoB, KT315, Sekretchik, Saymon21 | ||
5.4.2011, 10:24 |
Ваш ник занят и проблемы сети проблема повторного подключения к хабу |
Современные клиенты пингуют хабы, отсылая пустую команду (один единственный символ | в сообщении). Пинг происходит примерно раз в 3-4 минуты. Хаб же отключает пользователя по 2 причинам:
Во втором случае действия зависят от реализации сокет-интерфейса ОС. В винде при попытке отослать данные в "мертвый сокет" возвращается ошибка, по которой хаб и удаляет пользователя. Однако существует ряд случаев, когда ошибка может не возникать очень долго и хаб будет думать, что клиент ещё "жив". Возможен случай, когда хаб пытается что-то отослать клиенту, но из-за каких-то неполадок в сети отправленные пакеты теряются, в таком случае хаб будет постоянно пытаться отослать пакеты, не получая никакого ответа, а так как TCP протокол предполагает подтверждение или опровержение доставки пакетов, то хаб будет держать пользователя, пока не получит отказ. Что касается 4 часов, то это keep alive для сокетов, то есть после определенного времени бездействия система пытается проверить состояние соединения средствами протокола tcp. Система отправляет пинги через некоторый промежуток времени, и если после определенного количества пингов не было получено ни одного ответа от клиента, то клиент считается умершим и сокет закрывается системой. |
мамин_парень | ||
22.3.2011, 22:26 |
Библиотека mtime Windows only | Время в миллисекундах |
не кроссплатформенно Вот код функции для линукса: Код #ifndef _WIN32 #include <sys/time.h> unsigned long GetTickCount() { struct timeval tv; gettimeofday(&tv, NULL); return (tv.tv_sec * 1000 + tv.tv_usec / 1000); } #endif // _WIN32 |
Invisible | ||
21.3.2011, 17:28 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Оператор обычно работает быстрее методов, так что лучше использовать оператор #, чем метод len |
Saymon21 | ||
20.3.2011, 15:09 |
RusHub Кроссплатформенный консольный DC хаб |
rushub v 2.3.0 lua plugin v 2.0 Added: Добавлено определение версии в системах UNIX Added: Добавлен показ в логе загружаемого плагина (имя и версия) Added: Добавлен терминальный сигнал SIGTSTP (Ctrl-Z) Added: Реализован активный поиск со стороны хаба (udp поиск). Added: Полноценная поддержка команды UserIP (для возможности использования клиент должен отослать в $Support характеристику UserIP или UserIP2) Added: Добавлены настройки: sMainPath - основная директория Fixed: Исправлены некоторые не значительные утечки в памяти Fixed: Изменена нотация и проведен рефакторинг кода Fixed: Исправлено логирование (в логгер добавлен буфер для логирования событий до загрузки настроек логирования) Fixed: Исправлен баг в Core.sSystem (возвращалась пустая строка, если скрипт автоматически запускался при старте хаба) Fixed: Устранён баг с выставление флага пассивного режима Fixed: Функция SendToAllExceptIps не работала, а так как её никто не использовал, то для единого стиля функция переименована в SendToAllExceptIPs Fixed: Исправлен счётчик закрываемых соединений Fixed: Оптимизация алгоритма проверки при массовой рассылке Fixed: Изменены идентификаторы команд: Код 0 — $MultiSearch 1 — $MultiSearch Hub: 2 — $Search Hub: 3 — $Search 4 — $SR 5 — $SR UDP 6 — $MyINFO 7 — $Supports 8 — $Key 9 — $ValidateNick 10 — $Version 11 — $GetNickList 12 — Chat 13 — $To 14 — $Quit 15 — $MyPass 16 — $ConnectToMe 17 — $RevConnectToMe 18 — $MultiConnectToMe 19 — $Kick 20 — $OpForceMove 21 — $GetINFO 22 — $MCTo 23 — $UserIP 24 — Ping 25 — Unknown |
Nickolya, mariner, Jackson, Otshelnik-Fm, PomanoB, KT315, Sekretchik, Saymon21 | ||
17.3.2011, 9:57 |
Не работает dofile(filename) ? |
Функция dofile загружает дополнительный lua код в текущий скрипт, и этой функции доступно только глобальное окружение скрипта. В свою очередь, если в загружаемом функцией dofile файле объявляется глобальная переменная, а в самом скрипте определена такая же переменная но локально, то локальная переменная имеет выше приоритет, чем глобальная, при этом функция dofile не имеет доступа к локальной переменной. Отсюда получаем, что dofile загружает в глобальную переменную Players, а скрипт будет брать локальную переменную Players. Для того чтобы обратиться к глобальной переменной нужно обращаться к ней через таблицу _G. То есть в данном случае просмотреть содержимого ГЛОБАЛЬНОЙ переменной Players возможно следующим образом: Код for i,v in pairs(_G.Players) do |
Invisible, PomanoB, Kingston, dimajak, MIKHAIL | ||
14.3.2011, 15:14 |
Описание Протокола ADC Advanced Direct Connect Protocol |
QUI Синтаксис: Код QUI sid Направления: F Стадии: IDENTIFY, VERIFY, NORMAL Описание: Команда, которая указывает на то, что клиент с указанным sid ушёл с хаба. Если SID принадлежит клиенту, которому отсылается данная команда, то это должно означать, что к данному клиенту были приняты какие-то меры (дроп, кик, бан, перенаправление). Хаб не должен посылать клиенту какие-либо данные после того как он отослал ему команду QUI. Команда может содержать следующие параметры: ID - SID палача (например того, кто кикнул) TL - время бана в секундах (Time Left). -1 - постоянный бан MS - причина RD - адрес перенаправления DI - любой клиент который имеет этот параметр в QUI должен закрыть все соединения с другими клиентами Примеры: Код IQUI AAAA |
Saymon21 | ||
14.3.2011, 15:13 |
Описание Протокола ADC Advanced Direct Connect Protocol |
PAS Синтаксис: Код PAS password Направления: T Стадии: VERIFY Описание: Команда для отсылки пароля. Пароль (в кодировке utf-8) следует за случайными данными, которые получены при помощи SID и конвертированы в base32. Если проверка пароля прошла успешно, хаб переводит клиента на стадию NORMAL. |
Saymon21 | ||
14.3.2011, 15:13 |
Описание Протокола ADC Advanced Direct Connect Protocol |
GPA Синтаксис: Код GPA data Направления: F Стадии: VERIFY Описание: Команда на запрос пароля. Параметр data - это не менее 24 случайных символов (в base32 кодировке) |
Saymon21 | ||
14.3.2011, 15:12 |
Описание Протокола ADC Advanced Direct Connect Protocol |
RCM Синтаксис: Код RCM protocol separator token Направления: F, T Описание: Команда на пассивное соединение (Reverse CTM). Пассивный клиент запрашивает соединение с активным клиентом. |
Saymon21 | ||
14.3.2011, 15:12 |
Описание Протокола ADC Advanced Direct Connect Protocol |
CTM Синтаксис: Код CTM protocol separator port separator token Направления: F, T Описание: Запрос на активное соединение (ConnectToMe). Используется активными клиентами для соединения с такими же активными клиентами или для ответа на RCM команду. Только активные TCP клиенты могут отсылать эту команду. token - это строка, которая идентифицирует входящее соединение и должна присутствовать в команде INF соединяемого клиента. Клиенты не должны принимать входящие соединения, если до этого не была послана данная команда. protocol - это произвольная строка, которая указывает на протокол для соединения. В случае соединения по протоколу ADC 1.0 эта строка должна иметь вид "ADC/1.0". Если протокол поддерживается клиентом, то в ответ на RCM должны быть скопированы параметры token и protocol. Если протокол не поддерживается, то должна быть отправлена команда DSTA, которая указывает на возникшую ошибку. |
Saymon21 | ||
![]() |
Сейчас: 3.4.2025, 9:15 |