Здравствуйте, гость ( Вход | Регистрация )
Дата поста: | В теме: | За сообщение: | Спасибо сказали: | ||
---|---|---|---|---|---|
27.1.2012, 0:18 |
User Mode Fixer API 2 | Исправление режима подключения пользователя |
Все это выглядит похоже на подключение юзера в обход UserConnected. Или на присутствии на хабе юзера, который не выводится в общем списке. Или на отсылке запроса на подключения юзеру находящемуся на невнятной стадии подключения. Это, кстати, возможно если кого-то часто кидает. А так все это похоже на мистику. Новая версия 2.03. Добавил обработку этого бага. Кстати, совет тем, у кого большой хаб. Если происходит медленный вход, то это может стать причиной отваливания юзеров по таймауту и переопределением в пассив. Чтобы этого не происходило - увеличиваем таймаут соединения с 3 секунд до приемлимых значений, например, 10 секунд. В тоже время можно попробовать уменьшить интервал вызова главного цикла с 100 мс до 10 мс. На винде сделать интервал меньше 10 мс не получится в принципе, так как все что меньше, будет приводится к 10 мс. Это особенности реализации таймеров C++ на винде. На линуксовой птоке используется своя реализация таймеров, работающая из принимающего цикла, так что там может быть все что угодно, но на крупных хабах, хотя бы 10 мс задержки между вызовами получить будет нереально, будет больше. А все потому что пользователей много и все обычно что-то шлют. |
rival, AfLc | ||
26.1.2012, 16:09 |
User Mode Fixer API 2 | Исправление режима подключения пользователя |
просто чтоб список не обновлять Какой список? В принципе за код с заменами я не отвечаю, ибо вы могли выпустить какую-то тонкость, не зная об этом. Выложил версию 2.02. Там добавлена дополнительная обработка ошибок и некоторые улучшения статистики. Если будут снова ошибки, то будут со статистикой и отладкой. Если в статистистике будет появляется параметр "+NilUser" - присылайте статистику с отладкой, будем разбираться. |
rival, AfLc | ||
26.1.2012, 10:47 |
правила хаба |
Есть в хабе такая штука как текстовые файлы. Создаете rules.txt с нужным текстом и не забываете поставить галочку на соответствующем пункте в меню настроек. Все будет работать. Цитата Текстовые файлы — Раздел управления текстовыми файлами. В PtokaX есть возможность вывода пользователю содержимого текстового файла (.txt) по команде. Файлы ищутся в подпапке texts. Например: создав .txt файл с определенным текстом и назвав его, допустим, текст.txt вы можете просмотреть его, послав в главный чат команду !текст.
Источник: |
GULAM33, мамин_парень | ||
26.1.2012, 2:02 |
Defend PM API 2 | Полностью автоматическая защита ЛС от спама |
Для "спасибо" на этом форуме есть специальная кнопка внизу каждого поста. Если пост помог - нажимаете кнопку. |
rival, Marc | ||
25.1.2012, 0:50 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Ну для твоего примера строка и таблица. Наверное ты не знаешь, но это особый такой способ именования переменных. К имени переменной впереди приписывается буква означающая тип. Например, sName - строка с именем, а tName - таблица с именем. Префиксы:
ADD: Хочу отметить, что это только для того массива, который ты указал. Для произвольного содержимого таблицы это могут быть любые типы. |
MIKHAIL | ||
25.1.2012, 0:38 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Никак. У таблиц нет названия. Таблица это кусок памяти. А переменная, которая указывает на таблицу - указатель. Чтобы получить уникальное "имя" для таблицы, можешь вызвать tostring(tTable). На выходе будет строка вида "table: адрес памяти таблицы". ADD: В чем суть - на одну таблицу может указывать много переменных. И у каждой переменной будет свое имя, а таблица одна. ADD: Код for sName, tTable in pairs(tContains) do -- do something end В этом цикле будут перебраны все элементы таблицы tContains, причем sName будет содержать текущий индекс, а tTable - его значение. |
MIKHAIL | ||
24.1.2012, 3:50 |
User Mode Fixer API 2 | Исправление режима подключения пользователя |
Нет. Но скрипт в любом случае будет отсылать со строкой тэга. ADD: Выложил версию 2.00. По большей части скрипт переписан заново. Должен быстрее работать на крупных хабах. ADD: Выложил версию 2.01. Там дефолтные настройки чуть улучшены, а то я тестировал и забыл изменить. |
Артём, rival, AfLc | ||
23.1.2012, 2:24 |
User Mode Fixer API 2 | Исправление режима подключения пользователя |
Новая версия 1.13. Содержит критичное исправление. |
rival, AfLc | ||
22.1.2012, 23:41 |
User Mode Fixer API 2 | Исправление режима подключения пользователя |
Очень советую, первое время, например, неделю, продержать скрипт с настройками: Код bDetailedStats = true bValidate = true bFastDebug = true Поскольку, если что-то пойдет не так, а у вас будет bValidate = false, то вы об этом даже не узнаете. Если неделю все спокойно, тогда можно все повыключать и пусть себе работает. ADD: Не думайте, что это перестраховка. Вот уже вылезла одна проблема. Кстати, для крупных хабов (более 1000 человек онлайна), советую менять значение iMaxPoolSize на большее. Например, 48 или 64. Тогда режим пользователей будет определяться быстрее. |
AfLc | ||
22.1.2012, 22:58 |
Особенности приготовления PtokaX Некоторые особенности работы скриптов на данном хабе |
Продолжая тему. Предлагаю вашему вниманию простой скрипт: Код local iCheckInterval = 1 function OnStartup() TmrMan.AddTimer(iCheckInterval, "CheckPtokaX") end function CheckPtokaX() local sReport = "" local iDelta = 0 local iCount = Core.GetUsersCount() local tUsers = Core.GetOnlineUsers() iDelta = iCount for _, _ in ipairs(tUsers) do iDelta = iDelta - 1 end if iDelta ~= 0 then sReport = sReport.."ipairs = "..iDelta.."\n" end iDelta = iCount for _, _ in pairs(tUsers) do iDelta = iDelta - 1 end if iDelta ~= 0 then sReport = sReport.."pairs = "..iDelta.."\n" end iDelta = iCount - #tUsers if iDelta ~= 0 then sReport = sReport.."# = "..iDelta.."\n" end if sReport ~= "" then Core.SendToOps(sReport) end end Суть проста, собрать всех пользователей через Core.GetOnlineUsers(), а потом сравнить число полученных пользователей с числом, возвращаемым Core.GetUsersCount(). Как уже было сказано, эти два числа не всегда могут быть одинаковыми. Но на одном хабе я обнаружил что второе количество (Core.GetUsersCount()) ПОСТОЯННО больше первого. "Постоянно" это значит, в рамках достаточно длительного интервала времени. Думаю что после старта хаба все нормально. |
AfLc | ||
22.1.2012, 22:22 |
Defend PM API 2 | Полностью автоматическая защита ЛС от спама |
Мой скрипт тоже не пишет текста сообщений. Он либо проверяет текст сообщения на слова, либо просто считает число отосланных ЛС. |
AfLc | ||
22.1.2012, 22:14 |
Defend PM API 2 | Полностью автоматическая защита ЛС от спама |
Можно, но такая функциональность уже встроена в хаб. Смотрите в настройках хаба флудообнаружение. Замените функцию ToArrival на следующую: Код function ToArrival(tUser, sData) if tSpamUsers[tUser.sIP] == nil then tSpamUsers[tUser.sIP] = {} end if tSpamUsers[tUser.sIP][sToNick] == nil then tSpamUsers[tUser.sIP][sToNick] = true table.insert(tSpamUsers[tUser.sIP], sToNick) end local iCount = #tSpamUsers[tUser.sIP] local sReport = "" if iCount > iLimit then sReport = sReport.."*** Пользователь "..tUser.sNick.." с IP "..tUser.sIP.." отослал ЛС "..iCount.." разным пользователям за последние "..iClearTime.." минут. Возможно спам по ЛС. " end if iCount > iWarnLimit and iCount < iBanLimit then Core.SendToUser(tUser, "<"..sBot.."> *** Прекратите рассылать спам по личкам, иначе вы получите бан!") sReport = sReport.."Пользователь предупрежден. " end if iCount >= iBanLimit then BanMan.TempBanIP(tUser.sIP, iTimeBan, "Спам по ЛС", sBot, true) local sTimeBan = os.date("%d.%m.%Y %R", os.time() + iTimeBan*60) sReport = sReport.."Пользователь забанен до "..sTimeBan..". " local tUsers = Core.GetUsers(tUser.sIP) if tUsers ~= nil then for _, tSpamUser in pairs(tUsers) do Core.SendToUser(tUser, "<"..sBot.."> *** Вы были забанены до "..sTimeBan.." за спам по ЛС.") Core.Disconnect(tSpamUser) end end tSpamUsers[tUser.sIP] = nil sReport = sReport.."Отключено "..#tUsers.." пользователей." end if sReport ~= "" then Core.SendToOps("<"..sBot.."> "..sReport) end end |
AfLc, мамин_парень | ||
22.1.2012, 16:12 |
User Mode Fixer API 2 | Исправление режима подключения пользователя |
Alex_lola, у меня есть подозрение, что это вопрос настроек твоего компа/хаба/фаервола/проброса портов (лишнее можно вычеркнуть). Вот тебе кусок одной статистики хаба с примерно 1500 пользователей: Цитата MinOnlineActive = 1 OnlineActive = 499 MaxOnlineActive = 499 Так что у других актив работает. Кстати, вот еще немного информации из той статистики, теперь уже для всех. Может кому интересно будет. Использование памяти: Цитата MinMemoryUsage = 201 MemoryUsage = 388 MaxMemoryUsage = 910 Число пассивных пользователей: Цитата MinOnlinePassive = 1 OnlinePassive = 580 MaxOnlinePassive = 593 Число пользователей с переопределенным пассивом: Цитата MinOnlineFixedPassive = 1 OnlineFixedPassive = 326 MaxOnlineFixedPassive = 329 Теперь польза от скрипта: Цитата +FixedCTMIP = 22898 -- число исправленных запросов на подключение из за неверного IP +FixedSearch = 10344 -- число исправленных поисковых запросов +FixedCTM = 11423 -- число исправленных запросов на подключение +FixedSearchIP = 2390 -- число исправленных поисковых запросов из за неверного IP Время работы скрипта - порядка 10 часов. ADD: Новая версия 1.12. Улучшена и доработана статистика. Ничего критичного не менялось. Теперь в статистике можно видеть сколько времени работает скрипт, сколько времени собиралась расширенная статистика, (если она включена, конечно) и среднюю скорость появления событий расширенной статистики: Цитата Время сбора статистики = 43 с +FixedCTMIP = 1 (0.023255813953488 в секунду или 1 за 43 секунд) +SendFixedMyINFO = 20 (0.46511627906977 в секунду или 1 за 2.15 секунд) +SendFixedMyINFOs = 3 (0.069767441860465 в секунду или 1 за 14.333333333333 секунд) +FixedSearch = 2 (0.046511627906977 в секунду или 1 за 21.5 секунд) +TrueCheckedActive = 127 (2.953488372093 в секунду или 1 за 0.33858267716535 секунд) +ValidCTMForBot = 143 (3.3255813953488 в секунду или 1 за 0.3006993006993 секунд) +BlockedCTMToPassive = 2 (0.046511627906977 в секунду или 1 за 21.5 секунд) +SendRCTMforBot = 146 (3.3953488372093 в секунду или 1 за 0.29452054794521 секунд) +TimeoutConnect = 16 (0.37209302325581 в секунду или 1 за 2.6875 секунд) |
rival, AfLc | ||
22.1.2012, 14:52 |
Defend PM API 2 | Полностью автоматическая защита ЛС от спама |
Я отвечу цитатой. Цитата Цитата Скажите мне, что все эти комментаторы сделали в своей жизни нового и интересного? Они вообще что-нибудь в ней создали? Пока что Я вижу, что у меня просто насрано в комментариях, больше НИ-ЧЕ-ГО! Источник: [...] Или эта позиция: «Ну, это Я уже видел. Это уже было. Дайте мне что-нибудь новенькое, чтобы Я поржал!» Ха-ха-ха! |
Артём, мамин_парень | ||
21.1.2012, 14:11 |
Defend PM API 2 | Полностью автоматическая защита ЛС от спама |
Название скрипта: Defend PM Версия скрипта: 1.01 Платформа: PtokaX Версия API: API2 Автор: Enyby Описание: Скрипт предназначен для полностью автоматической защиты ЛС пользователей от спама. Выдает бан, при обнаружении спама. Принципы работы скрипта: Обычные пользователи отличаются от спамеров тем, что у обычных пользователей, если и пройдет ссылка на хаб, IP адрес или что-то подобное, то это будет разово. На этом и основана работа скрипта. При получении ЛС оно проверяется на наличие стоп слов. Если стоп слова найдены, то список спамера пополняется очередным ником. Если ников стало больше предела уведомления операторов, то операторы уведомляются. Если больше предела предупреждений - пользователь предупреждается. Если больше либо равно пределу бана - пользователь уходит в бан. Периодически запускается очистка, которая убирает по одному нику из списка спамера. Таким образом идет учет количества отспамленных в интервале проверки. Чтобы спамить безнаказанно, нужно писать новым пользователям не чаще 1 раза в интервал. По умолчанию интервал 5 минут. [attachment=6304:DefendPM.lua] P. S. Если у вас нет регистрации на этом форуме, а значит вы не можете качать вложения, то скачать этот скрипт, равно как и другие, можно по ссылке |
Nickolya, ustas, Tsd, rival, dka, bENNY!, AfLc, мамин_парень | ||
21.1.2012, 2:27 |
Принятые и отосланые данные в PtokaX Возможно ли уменьшить трафик? |
поставил, ещё будут советы? Там же, на первом скрине выбери:
И вообще, все настройки птоки расписаны |
мамин_парень | ||
21.1.2012, 2:09 |
User Mode Fixer API 2 | Исправление режима подключения пользователя |
Ok. Подыму дефолт до 60 секунд. ADD: Кстати. Если на хабе присутствуют активные пользователи с неверными IP и включен режим исправлений команд, то при отключении скрипта (именно отключении, при перезапуске будет все нормально) их всех выкинет защита хаба от DDoS после первой же неверной команды. Так что после отключения скрипта число пользователей может уменьшаться. ADD: Составляется меню пользователя. Нужна ваша помощь. Вот то, что накропал я: Пункт меню 'Часто задаваемые вопросы' 1. При входе на хаб мне пишет "Ваш IP: xxx.xxx.xxx.xxx Ваш режим: xxxxxxxxx.". Что это такое? Хаб сообщает вам ваши настройки текущего подключения, чтобы вы их видели, знали и могли исправить, если они не соответствуют тем, какими бы вы их хотели видеть. 2. Это сообщение кто-нибудь кроме меня видит? Нет. Данное сообщение отправлено лично вам. Все остальные пользователи получают подобные сообщения, но со своими данными. 3. В сообщении указан не мой IP адрес! Мой IP совсем другой! Как такое может быть и что с этим делать? В сообщении указан IP адрес, с которым вы вошли на хаб. Если он не соответствует IP адресу вашего компьютера, то вы находитесь за NAT или же используете прокси. Делать ничего не нужно, все работает нормально. 4. Что означает "режим"? Режим - это вид вашего подключения в сеть DC++. Он бывает двух видов "актив" и "пассив". В первом случае к вам могут присоединяться пользователи, а во втором случае - нет. Лучшим является режим актива, поскольку вы можете качать со всех пользователей хаба. В пассиве же - только с тех пользователей, кто в активе. Так же в активном режиме лучше работает поиск. 5. Хорошо, режимов два, но в сообщении написано "пассив (переопределен)", как это понимать? Активный режим предъявляет некоторые требования к пользователю, а именно: - у него должен быть открыт порт для прямого подключения к нему других клиентов; - IP адрес и порт должны быть доступны для подключения всех остальных пользователей. Хаб выполняет, чтобы эти два пункта выполнялись для пользователей в активном режиме. Если проверка показала, что хотя бы один пункт не выполняется, то хаб сам переводит пользователя в пассивный режим. 6. Но пассивный режим это же плохо! Зачем тогда делать из активов пассивов? Да, плохо. Но если вышеуказанные условия не выполняются, то активный режим еще хуже чем пассив: не работает ни поиск, ни скачивание с других пользователей. Именно поэтому режим и исправляется. 7. Я зашел на ваш хаб и тут работает поиск и скачивание, а на других хабах меня выкидывает с сообщением о неверном IP адресе. Почему? На нашем хабе ваш IP адрес исправляется автоматически, а на остальных вам предлагают сделать это самостоятельно, настроив правильно свой DC++ клиент. 8. У меня рабочий актив, но при входе на хаб я вижу что меня переопределило в пассив, как мне сделать актив? Вам нужно пробросить порт для того IP адреса, который вам пишет в сообщении. Номера портов указаны в настройках вашего DC++ клиента. 9. Чем отличается режимы "пассив" от "пассив (переопределен)" и какой лучше использовать? Если вы точно знаете, что актив у вас не возможен, то тогда укажите в клиенте "пассив", это будет лучшим вариантом в данном случае. Если вы можете настроить актив - настройте его. От этого вы будете только в выигрыше. Практически эти режимы почти не отличаются, но при прочих равных условиях, предпочтительней режим "пассив": - меньше нагрузка на хаб; - меньше отсылаемых команд от вашего DC++ клиента; - возможно некоторые пользователи, использующие расширения протокола NMDC смогут с вами соединиться. 10. У меня есть вопрос, но на него тут нет ответа? Что делать? Обратитесь к одному из операторов хаба, он поможет вам найти нужные ответы. Просьба подредактировать и/или дополнить желающим это меню. Возможно у вас на хабе пользователи что-то другое спрашивали. Просьба принимать во внимание, что это меню должно быть максимально общим, так как будет дефолтным в скрипте. Все желающие смогут изменить его у себя как угодно. ADD: Новая версия 1.11. Реализовано переопределение тэгов и пользовательское меню + мелкие фиксы. |
mariner, rival, Kingston, AfLc | ||
20.1.2012, 16:18 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Это вывод для отладки использования памяти в байтах. Для четырех куч памяти снимается по два показателя.
Кучи памяти в порядке вывода:
|
Ksan | ||
20.1.2012, 15:44 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Для "спасибо" есть специальная кнопочка внизу каждого поста. Если пост помог - нажимаешь. |
|||
20.1.2012, 15:25 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Код function ChatArrival(tUser, sData) local sCmd = sData:match("^%S+%s["..SetMan.GetString(29).."](%S+)") if sCmd and (sCmd:match("^stats?$") or sCmd:match("^memstats?$")) then if tUser.bOperator == nil then Core.GetUserData(tUser, 11) end if not tUser.bOperator then Core.SendToAll(sData) return true end end end Артём, твой вариант можно обойти. *stats, +stats и т. д. UPD: Исправил ошибку. |
roflDDDD | ||
20.1.2012, 11:18 |
User Mode Fixer API 2 | Исправление режима подключения пользователя |
rival, если речь идет о пользователе "К@пит;-)шка", то он не ответил командой CTM на RCTM своевременно. Варианта тут два, или он не ответил вообще или же ответил позже таймаута iTimeout в 15 секунд. В первом случае проблема на стороне клиента и хаб тут ничего сделать не может. Во втором случае можно попробовать увеличить таймаут. Хотя, согласно статистике, число несвоевременных CTM запросов к боту очень мало: +OtherCTMForBot = 3. Это может говорить о двух вещах - такая проблема только у этого пользователя или же что верен первый вариант. Поставь версию 1.10 и пришли заново статисику, после входа на хаб, там будут дополнительные параметры. Вышла версия 1.10. Ничего критичного, только улучшения статистики. Тем не менее весьма советую, так как намного легче разбираться что да почему. |
AfLc | ||
19.1.2012, 3:03 |
Mailinator Ест за вас ваш спам |
Есть такой хороший сервис Очень часто вам нужна регистрация на час. Или нужно ввести на каком-то сомнительном сайте свою почту, чтобы получить туда письма один раз. Это может быть активация на форум, где вам нужно скачать файл, а он без реги не доступен или еще что. Не важно. Главное, что почта нужна вам сейчас, а потом вам не нужен спам. Тогда вы указываете почтовый ящик любое_ваше_имя@mailinator.com. После регистрации вы заходите на адрес "любое_ваше_имя.mailinator.com" и читаете пришедшее письмо и переходите по активационной ссылке, ну или еще что-то. Советую задавать имя аккаунта по-сложнее, иначе вы рискуете ковырятся в огромной куче спама. Это происходит обычно на распостраненных именах аккаунтов. Важно помнить, что нельзя использовать этот сервис для чего-то важного. Только для однодневного. Это все потому, что любой может прочесть письма для любого ящика, только указав нужный аккаунт. Если же домен mailinator.com внесен в черный список на каком-то сайте, то это не беда. Там же на сайте сервиса есть alias'ы для этого домена. Они выводятся в случаном порядке на картинку под заголовком "Alternate Domains:". Есть еще одна интересная возможность. У любого такого почтового ящика есть два адреса, прямой и секретный. Например, enyby@mailinator.com и M8R-ou1ll2@mailinator.com. Второй адрес интересен тем, что если попытаться зайти в него напрямую, то в аккаунт enyby@mailinator.com не попадете. Это позволяет использовать данный адрес в качестве секретного, ведь только вы знаете настоящее имя ящика. Секретный адрес выводится в самом ящике, сразу за надписью "Alternate Address for this Inbox:". Ну и реализация этого проекта интересна. Насколько я помню это на Java крутится демон, на машине 1 ГБ оперативы, все письма там лежат. Спам отсеивается еще на входе, а письма хранятся крайне не долго, не помню точно, но что-то вроде суток. Есть в интернете Есть также RSS лента для каждого аккаунта и какой-то виджет. |
Nickolya, Артём, dj hoodo | ||
19.1.2012, 2:36 |
Особенности приготовления PtokaX Некоторые особенности работы скриптов на данном хабе |
Итак. Вводная: HubVersion = 0.4.1.1 LuaVersion = Lua 5.1 OS = Windows_NT Теперь по порядку.
Думаю эта информция будет не лишней для разработчиков скриптов. |
Nickolya, AfLc | ||
19.1.2012, 0:55 |
Mellon DC Hub List |
Проще всего в том же линукс выполнить Код php --ini И не ломать голову, когда конфиг будет грузится не оттуда.Правда это подходит не всем. Если php-cli, отличается от php-fpm, то тогда нужно на хостинг грузить файл с текстом и зайти на него в браузере: Код <?php phpinfo(); ?> |
stailzoRE | ||
19.1.2012, 0:51 |
Mellon DC Hub List |
В коноли выполни Код php --ini Консоль в Windows вызывается через меню Пуск -> Выполнить -> cmd В линукс, думаю, сам найдешь. В этом файле должна быть строчка с текстом Код extension=php_sockets. Проследи, чтобы в начале нее не стояла точка с запятой. Само собой указанный файл должен лежать в папке ext с установкой php. ADD: Если на хостинге у тебя нет доступа к консоли, то спрашивай хостера. Если он скажет, что сокеты запрещены - меняй хостера. |
stailzoRE | ||
18.1.2012, 17:24 |
Принятые и отосланые данные в PtokaX Возможно ли уменьшить трафик? |
Tx (60 sec avg): 10.10 MB/s (3.72 MB/s) Rx (60 sec avg): 28.75 kB/s (59.20 kB/s) Статистика по скорости отправки и получения данных. тоже интересно.. как еще можно снизить расход исходящего трафа? или чем задать максимальную исходящую скорость на крайняк? галки поставил, ничего не поменялось
|
roflDDDD, мамин_парень | ||
18.1.2012, 8:26 |
Что такое хороший хаб? Немного рассуждений на тему критериев качества хаба |
Что такое хороший хаб? Постараюсь изложить свои критерии и пояснения к ним.
Интересно бы услышать ваши комментарии и дополнения. |
Nickolya, Setuper, AfLc, Meloun | ||
17.1.2012, 20:00 |
От: Redirect IP_mod От темы с ID: 4572 |
Пинать таки будем. Код WriteTable(tReportTo, "Admin", sPathToAdm) А надо: Код WriteTable(tReportTo, "tReportTo", sPathToAdm) Иначе до лампочки все сохранения. И неплохо бы отступы соблюдать, а то код плохо читается. |
Артём | ||
17.1.2012, 12:31 |
User Mode Fixer API 2 | Исправление режима подключения пользователя |
Вот это "наверное", очень под вопросом. Посмотрел код NetworkSeparation_v1.3.1___API_2_____by_Nickolya___.lua - конфликтов не вижу. Правда скрипт может блокировать поисковые результаты пассивного поиска, если включено разделение сетей. Так что лучше его выключать на обкатке, чтобы было яснее, какой из скриптов виноват. |
Kingston | ||
16.1.2012, 13:15 |
User Mode Fixer API 2 | Исправление режима подключения пользователя |
На данный момент ситуация такая - при старте он проверяет всех пользователей сразу. Если их много, могут быть проблемы с одновременным подключением ко всем. Во-первых, это много коннектов, а, во-вторых, в реализации на windows socket_select используется битовые значения одного байта, а их 256. Но по сути ничего страшного не произойдет, может просто определит кому-то пассив принудительно. Можно попробовать таймаут увеличить. Например, с 3 секунд до 15-20. После старта может казаться что хаб завис, это нормально, оно пройдет. Сейчас неблокирующие сокеты. В случае блокирующих, подобные эффекты наблюдались на хабе с 160 пользователями. На данный момент скрипт работает на моем хабе, адрес которого в подписи. Сутки прошли - полет нормальный. Основная проблема скрипта - старт. Если не хотите тяжелого старта, закомментируйте всю функцию OnStartup, тогда скрипт будет работать только для нововошедших пользователей. После старта скрипт работает нормально и там проблем быть не должно. Если совем будет туго, то я уже говорил, что перепишу на пул сокетов с очередью. UPD: Даже если на старте определит как переопределенный пассив, достаточно будет перезайти этим пользователям и ситуация нормализуется. Еще одно. Скрипт потребляет неплохо память. На моем хабе это порядка 600 кб для 150 пользователей. Сейчас 130 кб на 116 человек. Прямой корреляции между числом пользователей и потреблением памяти не должно быть, скорее между числом переопределенных пассивов + нововошедших пользователей. Такж может влиять активность пользователей с переопределенным пассивом, так как скрипт берет на себя часть функций хаба. В будущем прикручу статистику, чтобы можно было смотреть сколько человек с каким режимом присутствует на хабе. |
Unique | ||
15.1.2012, 20:02 |
User Mode Fixer API 2 | Исправление режима подключения пользователя |
Название скрипта: User Mode Fixer Версия скрипта: 2.05 Платформа: PtokaX Версия API: API2 Автор: Enyby Автор идеи: Meloun Библиотека: Для работы скрипта требуется библиотека Lua Socket Описание: Скрипт предназначен для исправления режима подключения пользователей. Подменяет нерабочий актив на пассив в поиске и запросах на соединение. Возможности скрипта: При подключении нового пользователя, если он актив, то проверяется доступность порта для соединения. Если порт не доступен, то хаб переводит клиента в режим переопределенного пассива. В этом режиме поисковые команды преобразуются в пассивные, а CTM в RCTM. При включении режима исправлений IP адресов и ников, скрипт исправляет команды с неверными данными. DDoS'еры получают DDoS на свой адрес, а обычные пользователи могут искать и качать даже с неверным внешним IP адресом и/или ненастроенном активе. Правда только как пассивы. Дополнительная информация:
Совместимость с другими скриптами:
TODO list
История версий v2.05:
v2.04:
v2.03:
v2.02:
v2.01:
v2.00:
v1.13:
v1.12:
v1.11:
v1.10:
v1.09:
v1.08:
v1.07:
v1.06:
v1.05:
v1.04:
v1.03:
v1.02:
v1.01:
v1.00:
[attachment=6312:UserMode...er_v2.05.lua] Предыдущие версии [attachment=6309:UserMode...er_v2.04.lua] [attachment=6308:UserMode...er_v2.03.lua] [attachment=6305:UserMode...er_v2.02.lua] [attachment=6297:UserMode...er_v2.01.lua] [attachment=6295:UserMode...er_v2.00.lua] [attachment=6293:UserMode...er_v1.13.lua] [attachment=6288:UserMode...er_v1.12.lua] [attachment=6279:UserMode...er_v1.11.lua] [attachment=6277:UserMode...er_v1.10.lua] [attachment=6276:UserMode...er_v1.09.lua] [attachment=6274:UserMode...er_v1.08.lua] [attachment=6273:UserMode...er_v1.07.lua] [attachment=6272:UserMode...er_v1.06.lua] [attachment=6268:UserMode...er_v1.05.lua] [attachment=6267:UserMode...er_v1.04.lua] [attachment=6260:UserMode...er_v1.03.lua] [attachment=6259:UserMode...er_v1.02.lua] [attachment=6258:UserMode...er_v1.01.lua] [attachment=6257:UserMode...er_v1.00.lua] Предыдущие версии выложены, исключительно, для ознакомления с их исходным кодом. Это связано с тем, что я могу убрать из последней версии какой-то функционал, который вам может пригодится при написании своих скриптов. Если же вас интересует использование скрипта на своем хабе, настоятельно рекомендую использовать только последнюю версию. В старых версиях могут быть ошибки. P. S. Если у вас нет регистрации на этом форуме, а значит вы не можете качать вложения, то скачать этот скрипт, равно как и другие, можно по ссылке |
Nickolya, ustas, Tsd, mariner, Артём, PomanoB, rival, Kingston, LoT, Saymon21, AndreiDC, Damaks, nafig, Littlemuk, AfLc, graforlof, мамин_парень, Unique | ||
9.1.2012, 20:55 |
Instahub Instant PtokaX-based Hub with scripts (API2) |
Может у кого-то остался скачанный вариант. У того и просите. Например у nafig. |
|||
8.1.2012, 14:29 |
RegmeEmail API2 | Регистрация через e-mail |
Вижу в коде переменную iDelay, которая не инициализирована. Первый раз используется в указанной строке, а второй раз передается в Код Core.SendToUser(tUser, ("<%s> Пароль отправлен на адрес: (e-mail). Письмо с вашим паролем было успешно отправлено (Message with your password was sent successfully)"):format(sBot, iDelay)) Но в строку формата не подставляется. Более того, судя по названию переменной это целое число. А выводится как строка. Дальше. Судя по сообщению скрипта, должен быть таймаут повторной регистрации. Его нет. Во всяком случае в коде я его не вижу. Как экспресс фикс, можно в начале скрипта написать: Код iDelay = "5" Но это неправильный подход. UPD: Резюмируя, могу сказать, что скрипт требует переделки, если предлагается реализовывать заявленный функционал. Если же не переделывать, то достаточно изменить так: Код function Regme(tUser) local sEmail = cmd.msParams if tMailList[sEmail] then return nil, ("С введённым вами e-mail адресом уже зарегистрирован пользователь. Если письмо не пришло на ящик, для перерегистрации обратитесь к оператору.") end local sPasswd = GetPass() local res, err = email.SendMail(sEmail, sSubject, GetMsg(tUser.sNick, sPasswd)) if res then RegMan.AddReg(tUser.sNick, sPasswd, iRegProfile) Core.SendToOps("Зарегистрировался юзер с ником "..tUser.sNick) tMailList[sEmail] = tUser.sNick tNickList[tUser.sNick] = sEmail Save(tMailList, "tMailList", sFile) tNoActivate[tUser.sNick] = true Core.SendToUser(tUser, ("<%s> Пароль отправлен на адрес: (e-mail). Письмо с вашим паролем было успешно отправлено (Message with your password was sent successfully)"):format(sBot)) end return res, err end |
Ameet | ||
3.1.2012, 2:43 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Вопрос: есть ли существенная разница между Код function GetData(sData) и Код GetData = function(sData) ??? Тест Код: Код function ChatArrival(tUser, sData) local iLimit = 10*1000*1000 local iStart = os.time() for i = 0, iLimit, 1 do function GetData(sData) sData = "0" end end Core.SendToAll(" " .. os.difftime(os.time(), iStart)); iStart = os.time() for i = 0, iLimit, 1 do GetData = function(sData) sData = "0" end end Core.SendToAll(" " .. os.difftime(os.time(), iStart)); end Результат: Код [01:40:49] * 10 [01:40:49] * 11 Вывод: Все естественно. Во втором случае создается безымянная функция, которая присваивается в переменную, а во втором случае, все то же самое, только функция имеет имя сразу. На этом и выигрыш. |
MIKHAIL | ||
3.1.2012, 2:16 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Это вопрос или утверждение? ADD: Согласно Сообщение #1, п. 4 нижеуказанная замена подпадает под этот метод оптимизации? А именно, имеющийся код: Код local data = string.sub(data,1,-2) заменить на: Код local data = data:sub(1,-2) Тест Код: Код function ChatArrival(tUser, sData) local iLimit = 10000000 local sData = 'Sample text' local sResult= ''; local iStart = os.time() for i = 0, iLimit, 1 do sResult = string.sub(sData, 1, -2) end Core.SendToAll(" " .. os.difftime(os.time(), iStart)); iStart = os.time() for i = 0, iLimit, 1 do sResult = sData:sub(1, -2) end Core.SendToAll(" " .. os.difftime(os.time(), iStart)); end Результат: Код [00:57:07] * 11 [00:57:07] * 9 Вывод: ООП вариант быстрее (это тот, который через двоеточие). PS Если охота заниматься "блошиной" оптимизацией, то пиши сам подобные скрипты и проверяй что быстрее, не так уж они и сложны. И да, "выигрыш" нереально "крут" - 2/10 000 000 секунд с одного оператора на моей машине. Так что не стоит заморачиваться. ADD: Скажите, пожалуйста, какой вариант кода в данном случае будет быстрее работать? Вариант №1: Код local sData1 = "0" local sData2 = "0" или вариант №2: Код local sData1 = "0" local sData2 = sData1 Тест Код: Код function ChatArrival(tUser, sData) local iLimit = 100*1000*1000 local sData1 = '' local sData2 = '' local iStart = os.time() for i = 0, iLimit, 1 do sData1 = "0" sData2 = "0" end Core.SendToAll(" " .. os.difftime(os.time(), iStart)); iStart = os.time() for i = 0, iLimit, 1 do sData1 = "0" sData2 = sData1 end Core.SendToAll(" " .. os.difftime(os.time(), iStart)); end Результат: Код [01:08:04] * 15 [01:08:04] * 18 Вывод: Первый вариант быстрее. На три секунды. При 100 миллионном повторении. Есть ли, опять же, в данном случае разница (существенная, на глубинном уровне) в коде и какова в данном случае? Вариант №1: Код local sData = "0" Вариант №2: Код local sData = 0 Тест Код: Код function ChatArrival(tUser, sData) local iLimit = 30*1000*1000 local iData1 = '' local iData2 = 0 local iStart = os.time() iData2 = "0" for i = 0, iLimit, 1 do iData1 = "1" iData2 = iData2 + iData1 end Core.SendToAll(iData2 .. " " .. os.difftime(os.time(), iStart)); iStart = os.time() iData2 = 0 for i = 0, iLimit, 1 do iData1 = 1 iData2 = iData2 + iData1 end Core.SendToAll(iData2 .. " " .. os.difftime(os.time(), iStart)); end Результат: Код [01:14:33] *30000001 18 [01:14:33] *30000001 6 Вывод: Если у вас число, то быстрее будет как число. Не будете лишний раз конвертировать. |
MIKHAIL | ||
2.1.2012, 23:29 |
Способы Повышения Производительности методы оптимизации lua кода |
Ну и что. На 10 млн проверок (!) нужно порядка 10 секунд, на не самой быстрой машине. Т. е. порядка 1 млн проверок в секунду. Это не существенно. У вас юзеров за спам забанит намного раньше. ADD: Enyby, Вы так "жёстко" определили где команда, а где сообщение. Это понятно, правильно. Но ведь есть разные случаи жизни, кто-то ошибается с вводом команды... и получается сообщение... по разным причинам. Или кто-то подбирает команды... а в результате могут получатся и команды, и сообщения. А так и есть. Все варианты не предугадаешь. Так что и не стоит даже заморачиваться. Завтра кошка будет по клавиатуре бегать, так вы скрипт анти кошка писать будете? Код [22:07:31] 127.0.0.1 | ?? на хабе Находится <ВВВВВВВВВВВВВВВВВВВВ> test Уточните, пожалуйста, что это? Это вывод в ДС клиенте сообщения в чат. Временной штамп, ип, страна, локация/провайдер, ник и само сообщение. Чтоб было понятнее - запустите тестовый скрипт и отправьте сообщение. Правда хаб подвисает на время брожения в циклах. Так что это нормально. ADD: В общем стоит задача отсеять "возможно команды" от точно "не команд". Все что началось не с префикса - командой быть не может. А если есть префикс, то тогда нужно регулярку, захватывать текст и проверять что это, известная команда или отсебятина. В любом случае, это будет менее ресурсоёмко, чем проверка каждого сообщения регуляркой. |
MIKHAIL | ||
2.1.2012, 23:10 |
Способы Повышения Производительности методы оптимизации lua кода |
А? Ты че-то не то пишешь. Или не туда. Тут речь о префиксах команд. Т. е. о наименее ресурсоёмком определение, что именно прислал пользователь - команду или текстовое сообщение в чат. "!regme" - это команда "Привет всем!" - это сообщение. В первом случае скрипт должен отработать и что-то сделать, перехватив вывод команды в чат, а во-втором, пропустить сообщение в чат, ничего не выполняя, с наименьшими затратами ресурсов. ADD: Продолжая тему оптимизации. Тест Код: Код function ChatArrival(tUser, sData) local iPos = #tUser.sNick + 4 local iLimit = 10000000 local sChar = '!' local iChar = sChar:byte(1); local iCounter = 0; local iStart = os.time() iCounter = 0 for i = 0, iLimit, 1 do if sData:sub(iPos, iPos):find('!', 1, true) then iCounter = iCounter + 1 end end Core.SendToAll(iCounter .. " " .. os.difftime(os.time(), iStart)); iStart = os.time() iCounter = 0 for i = 0, iLimit, 1 do if sData:sub(iPos, iPos) == '!' then iCounter = iCounter + 1 end end Core.SendToAll(iCounter .. " " .. os.difftime(os.time(), iStart)); iStart = os.time() iCounter = 0 for i = 0, iLimit, 1 do if sData:byte(iPos) == iChar then iCounter = iCounter + 1 end end Core.SendToAll(iCounter .. " " .. os.difftime(os.time(), iStart)); end Результат: Код [22:18:22] *10000001 19 [22:18:22] *10000001 11 [22:18:22] *10000001 10 [22:18:22] 127.0.0.1 | ?? на хабе Находится <ВВВВВВВВВВВВВВВВВВВВ> !say test [22:19:11] *0 18 [22:19:11] *0 11 [22:19:11] *0 9 [22:19:11] 127.0.0.1 | ?? на хабе Находится <ВВВВВВВВВВВВВВВВВВВВ> test Вывод: Самый быстрый способ - использование byte, для получения кода конкретного символа. UPD: Исправил ошибку в коде. PS что интересно, так это четко видная буферизация вывода. В клиент все пришло одновременно, независимо от того, что отдельные строки отсылались с разрывом порядка 10 секунд. |
Alexey, MIKHAIL | ||
2.1.2012, 11:33 |
Способы Повышения Производительности методы оптимизации lua кода |
#tUser.sNick - число символов в нике 4 - число символов до начала сообщения: Код <Ник> Сообщение| В данном случае длина ника составляет 3 символа, а смещение 4 переходит вперед по символам "<> ", пропуская их. Таким образом это будет позиция первого символа сообщения. ADD: Наиболее оптимизированный вариант: Код function ChatArrival(tUser, sData) local iPos = #tUser.sNick + 4 if sData:sub(iPos, iPos):find('!', 1, true) then --поиск префикса команды -- дальнейшие действия (в том числе поиск и сравнение команд) end end Есть код: Код function ChatArrival(tUser, sData) local iPos = #tUser.sNick + 4 local iLimit = 10000000 local sChar = '' local iStart = os.time() for i = 0, iLimit, 1 do sChar = sData:sub(iPos, iPos):find('!', 1, true) end Core.SendToAll("" .. os.difftime(os.time(), iStart)); iStart = os.time() for i = 0, iLimit, 1 do sChar = sData:sub(iPos, iPos) == '!' end Core.SendToAll("" .. os.difftime(os.time(), iStart)); end Есть результат: Цитата [10:27:50] *16 [10:27:50] *8 [10:27:50] 127.0.0.1 | ?? на хабе Находится <ВВВВВВВВВВВВВВВВВВВВ> test Есть вывод: Прямое сравнение быстрее любых find'ов. ADD: Другой вопрос, если префиксов несколько. Там или циклом или регуляркой. |
Alexey, MIKHAIL | ||
1.1.2012, 11:57 |
Kinozal_tv API2 | Скрипт новостей с трекера |
Assert: Цитата assert (v [, message]) Issues an error when the value of its argument v is false (i.e., nil or false); otherwise, returns all its arguments. message is an error message; when absent, it defaults to "assertion failed!" Require: Цитата require (modname) Loads the given module. The function starts by looking into the package.loaded table to determine whether modname is already loaded. If it is, then require returns the value stored at package.loaded[modname]. Otherwise, it tries to find a loader for the module. To find a loader, require is guided by the package.loaders array. By changing this array, we can change how require looks for a module. The following explanation is based on the default configuration for package.loaders. First require queries package.preload[modname]. If it has a value, this value (which should be a function) is the loader. Otherwise require searches for a Lua loader using the path stored in package.path. If that also fails, it searches for a C loader using the path stored in package.cpath. If that also fails, it tries an all-in-one loader (see package.loaders). Once a loader is found, require calls the loader with a single argument, modname. If the loader returns any value, require assigns the returned value to package.loaded[modname]. If the loader returns no value and has not assigned any value to package.loaded[modname], then require assigns true to this entry. In any case, require returns the final value of package.loaded[modname]. If there is any error loading or running the module, or if it cannot find any loader for the module, then require signals an error. Судя по условиям, assert вылетит тогда, когда библиотека будет состоять их нескольких модулей, причем тот модуль, который указан в качестве параметра require будет, а другого не будет. Тогда require из загрузчика вернет false и assert выдаст сообщение. |
MIKHAIL | ||
31.12.2011, 19:13 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Реально все. Это лишь вопрос времени и ресурсов. Это не кодировка. Это способ эйскепирования символов юникода в кодировках, его не поддерживающих. В данном конкретном случае надо разбить шестнадцетиричное число, идущее после "/u", на две части, перевести эти части в байты. Полученная последовательность байт будет юникодом, который можно прогнать через Utf8ToAnsi. |
MIKHAIL | ||
31.12.2011, 9:26 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Код "\u041d\u0430\u0443\u043a\u0430 \u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438" == "Наука и технологии" |
MIKHAIL | ||
28.12.2011, 22:33 |
Вопросы Разработчикам Скриптов вопросы по скриптам (мелкие вопросы) |
Навскидку: умножить на нужное число, потом округлить и поделить обратно. Например, для трех знаков это будет: round(3,141592654 * 1000) / 1000 |
MIKHAIL | ||
27.12.2011, 3:05 |
Ваши Вопросы И Предложения По Поводу Форума |
Хе-хе. А бага-то уже нет... |
Nickolya | ||
25.12.2011, 13:17 |
Ваши Вопросы И Предложения По Поводу Форума |
Это вообще псевдо код с датами "от фонаря". Важна идея. Чтобы не забывать. |
Nickolya | ||
25.12.2011, 0:24 |
Ваши Вопросы И Предложения По Поводу Форума |
Вижу проблему в Опере 9.63. При клике на картинке оверлей (серое нечто, должное прикрывать сайт от клика), ставится по размеру экрана, а не на весь размер сайта. И остается это, затемненное чудо, в самом верху страницы. При этом можно открыть несколько увеличенных картинок сразу. Главное чтобы они были разными, дубликаты не открываются. Собственно предложение: Или убрать оверлей или сделать его рабочим. Я не знаю как он там работает, может растягиваться должен, а не растягивается на сколько надо. А может надо position: fixed или компенсировать скроллирование на JS. ADD: Setuper, да, в этом году что-то припозднились... забыл я совсем про НГ. правда шапку вернуть - пара кликов Можно же сделать условный оператор: Код if (date('dd.mm') > '25.12' && date('dd.mm') < '14.01') include 'new_year.tpl'; else include 'header.tpl'; |
Nickolya | ||
24.12.2011, 9:56 |
Переделка скриптов Прошу помощи |
Проверил с ip-to-country.csv. Работать не будет. Причина проста - соответствие аббревиатур и их расшифровок жестко зашиты в PtokaX. Тогда только второй вариант. Например так: Код tDiaps = { {"192.168.0.1", "192.168.0.255", "ISP 1"}, {"192.168.32.1", "192.168.32.255", "ISP 2"}, {"192.168.34.1", "192.168.34.255", "ISP 2"}, {"10.0.0.1", "10.0.50.255", "Corbina"}, {"127.0.0.1", "127.255.255.255", "Loopback"}, } function OnStartup() for _, tDiap in ipairs(tDiaps) do tDiap[4] = ipToLong(tDiap[1]) tDiap[5] = ipToLong(tDiap[2]) end end function getDiapName(sIP) local iIP = ipToLong(sIP) for _, tDiap in ipairs(tDiaps) do if tDiap[4] <= iIP and iIP <= tDiap[5] then return tDiap[3] end end return "Unknown" end function ipToLong(sIP) local _, _, iFirst, iSecond, iThird, iFourth = sIP:find("^(%d+)%.(%d+)%.(%d+)%.(%d+)$") return ((iFirst*256 + iSecond)*256 + iThird)*256 + iFourth end function UserConnected(tUser) local Profile = (ProfMan.GetProfile(tUser.iProfile) and ProfMan.GetProfile(tUser.iProfile).sProfileName) or "Guest" Core.SendToUser(tUser,"\n[::] Информация: \n[::] : Ник " ..tUser.sNick.." \n[::] Класс : "..Profile.." ("..tUser.iProfile..") \n[::] Ваш ip: "..tUser.sIP.." \n[::] Провайдер: "..getDiapName(tUser.sIP).."\n") end RegConnected = UserConnected OpConnected = UserConnected |
Fe(one)X | ||
24.12.2011, 3:29 |
Переделка скриптов Прошу помощи |
Цифры это ип. Начальный и конечный для диапазона. Тебе нужно сделать следующее: устанавливаешь ипы на нужные, а потом меняешь название страны, не трогая ее аббревиатуру. Именем страны будет служить имя провайдера. Ип рассчитывается как: ((A*256 + B)*256 + C)*256 + D где A.B.C.D - это IP адрес. Например: 192.168.0.1 => ((192*256 + 168)*256 + 0)*256 + 1 = 3232235521 |
Fe(one)X | ||
24.12.2011, 2:45 |
Переделка скриптов Прошу помощи |
Fe(one)X | |||
21.12.2011, 9:00 |
Public PHP hublist (Хаблист) by Enyby Публичный открытый хаблист на PHP |
index.php Цитата <td class="status status-<?php echo htmlspecialchars($row['online'] == 1 ? "0" : '4'); ?>"> <span<?php echo ($row['online'] != 1 and $row['date'] != '') ? ' tooltip="Последний раз онлайн: '.htmlspecialchars($row['date']).'"' : ''; ?>><?php echo htmlspecialchars($row['status']); ?></span> </td> Часть выделенным жирным можно заменить на вывод картинки, например, так: Код <img src="status/<?php echo urlencode($row['status']); ?>.png" /> Дальше создать папку status с картинками, названными согласно статусам в БД. Желательно в таблице статусов изменить все наименования на анголоязыные: "Статус" => "status" и т. д. По поводу провайдера - еще одно поле в базу данных, а потом добавить вывод на страницу. Подумываю переписать на использование шаблона. |
dj hoodo | ||
21.12.2011, 8:41 |
Tiny Hublist Программа для создания хаблистов |
Ато предыдущий криво пинговал некоторые хабы Если речь о моей поделке, то можно было бы хотя бы сообщить что не так, в соответствующей теме. 1 Явно инетные хабы опредиляются как локальная сеть. В одном случае действительно хаб находился за NAT и имел адрес 10.*** Во втором случае еще не разобрался - домен резолвится на инет адрес но хаблист показывает лок сеть. Переделать резолв с адреса хаба в его настройках, на адрес хаба, записанный в хаблисте. 2 Добавил иконки хаб софта, но некоторые хабы отдают софт с версией и вместо картинки просто название YnHub 1.036. Предлагаю обрезать название до пробела. Должно хватить для однозначной идентификации. А некоторые отдают прописными буквами . - в винде такое бы прокатило наверное Verlihub вместо VerliHub, но в линуксе не прокатывает. можно конечно дописать (продублировать) эти значения в скрипт.. или есть другой вариант? Привести все названия софта к нижнему регистру и проблем не будет. |
dj hoodo | ||
17.12.2011, 0:07 |
IP2Country База адресов |
Исправил. |
Артём | ||
16.12.2011, 19:57 |
Mellon DC Hub List |
Код if ( !socket_connect( $socket, $data['address'], $data['port'] ) ) { echo 'Error..'; return; } Этот участок приводит к тому, что если не удается установить соединение с каким-то хабом, то пингование всех последующих не происходит. Вот пример: Код Starting xdn.msk.ru End xdn.msk.ru [...] Starting 89.151.129.239 End 89.151.129.239 Hub if offline. Warning: socket_connect() [function.socket-connect]: unable to connect [0]: Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера. in D:\Site\xdn.msk.ru\hub\bot.php on line 138 Error.. Пример был взят с адреса Второе. Нет никакого таймаута. Если добавить хаб с адресом yandex.ru и портом 80, то бот затыкается и висит. Третье. В демо есть какие-то проблемы с пейджингом. Если зайти на Кстати. Некий dro уже выкладывал на этом форуме код пингера, очень похожего на этот. Мне без разницы кто у кого воровал и воровал ли. Мои комментарии к коду пингера можно посмотреть по ссылке: http://mydc.ru/index.html?showtopic=404&am...ost&p=33135 |
Nickolya | ||
15.12.2011, 17:48 |
От: Mellon DC Hub List От темы с ID: 5060 |
Maximum | |||
14.12.2011, 19:49 |
Хаблисты Некоторое количество хаблистов |
На просторах интернета нашел некоторое количество хаблистов. Да простит меня Ksan, выложу их сюда, чтобы они не пропали даром. Может кого-то это сподвигнет на создание своего. Итак:
Ну и, для не знающих, на этом форуме можно найти несколько разных хаблистов. |
Nickolya, CrazyKiller, bENNY!, killserver, dj_crazy_joker | ||
14.12.2011, 18:55 |
Public PHP hublist (Хаблист) by Enyby Публичный открытый хаблист на PHP |
Добавил в шапке версию 0.03 и ссылки на демо. |
dj hoodo | ||
4.12.2011, 9:48 |
Базы CustomLocations.zip Ссылки на готовые базы |
На данный момент нашел всего два проекта, по данной теме, заслуживающие внимания:
Поддерживается формат базы CustomLocations, введенный в 5.94 версии DC++ клиента GreyLink: Цитата Теперь это ZIP-архив, где иконки сетей представлены каждая отдельным bmp-файлом. ini-файлов в архиве может быть несколько (разделение по сетям, городам или провайдерам) для удобства редактирования. Страна вычисляется вычисляется отдельно от провайдера (при наличии файла GeoIPCountryCSV.zip). В новом формате у ip-диапазона можно указать город, а городу назначить флаг. |
Nickolya | ||
3.12.2011, 19:42 |
IP2Country База адресов |
Автоматом собирается 1 раз в день, в 5 утра. Есть CSV и архивы. Для DC и для PtokaX. Со временем может что-то еще появится. Канал слабый, но что есть, то есть. |
Nickolya, Alexey, Saymon21, Meloun | ||
3.12.2011, 12:50 |
От: Mellon DC Hub List От темы с ID: 5060 |
Проект с 2004 года и дизайн там был изначально этот уж скорее dchublist.ru угнали дизайн у jkoffa или тех кто был до него (а если быть точным первая версия dchublist.ru была основана как раз на этом скрипте), ты об этом мало что знаешь (так как тебя тогда не было) Интересно было бы услышать комментарии оппонента на эту тему. А что тут комментировать? Ноу комментс. Могу только сделать вывод, что оппонент считает что мне и 8 лет нет. Его право. Завтра он скажет, что он на Марс пешком ходит. Я что врач ему? Diff лога я не вижу, говорить не о чем. PS Кстати, меня позабавила та реплика Твой скрипт как то раз пробовал поставить там пришлось многое переписать что бы заработало спс за гемор )) Оппонент не смог меня "задавить" в рамках мужской логики и перешел на женскую. Кому интересно, есть интересная UPD: Пока писал, пришел очередный ответ: Времени просто нет если честно, меня уже год выложить просят (так что это не моя инициатива) тем более писать посты. Просили ? я выложил, наслаждайтесь, все равно каждый останется при своем мнении как бы там ни было на самом деле... Ну что я могу сказать... Слив защитан. Я мог бы тут рассказывать что меня тоже просят не один день, но не вижу смысла. Что более интересно, это то что за всех уже все "решено". Т. е. уже предопределено что каждый останется при своем мнении как бы там ни было на самом деле . Это мне напоминает одну историю:Цитата Какой-то ученый вынес на суд академии новое открытие, на что ему было отвечено: "Такого не может быть, потому что такого не может быть никогда. А если бы и было, то было бы давно уже открыто и изучено." Имя ученого и что за открытие я не помню. |
-=ДЕМОН=- | ||
3.12.2011, 1:51 |
От: Mellon DC Hub List От темы с ID: 5060 |
Описывать так же и оформлять ничего не хочу данный хаблист является рабочим модификом хаблста от jkoff - который давал мне лично jkoff он значительно отличался от того что лежит на этом сайте или уважаемый товарищ VOVKT пытался мне его пихнуть. Разъяснение. С JKoff я разговаривал изначально все писал он далее взял человека который будет ему помогать, который его подставил полагаю этот человек основал проект Small и пытался продать то что Jkoff делал своими руками своим трудом причем бесплатно для народа и.т.п.. это крайне не красиво было, решил его поддержать от того весь кипишь.. Такие хаблисты типо как Small или от Enyby есть подозрение что тоже модификации моего или jkoff но мы в отличии от этих авторов не пытаемся чего то доказать что это мы написали хоть и на самом деле их хаблисты это всего лишь плагиат. Моё уважение заслужил лиж только один проект Tiny Hublist это действительно хоть и не очень функциональный но собственный проект а не копипаст копипаста моего хаблиста или жкоффа По скольку в том что я установил от Enyb ничего похожего на его демо вообще не увидел, похоже на издевательство над юзерами и их дезинформацией. О... Я думал ты так и не отважишся кинуть камень в меня публично. Ну что ж. Давайте расставим все точки над i. Во-первых, хаблист ценен, в первую очередь, реализацией пингера. В данном вопросе у моего хаблиста есть неоспоримое преимущество, поскольку я осилил неблокирующие сокеты и мой хаблист позволяет пингование 70 хабов менее чем за 5 минут. Во-вторых, судить по дизайну о "слизанности" хаблиста - полнейшее профанство. Вон ВКонтакте "слил" дизайн у Facebook в начале своего существования, но никто же не вопит, что ВК это украденный FB, ибо дело тут в наполнении а не форме. Я ни капли не скрываю, что брал дизайн dchublist.ru за основу. Впрочем как и подавляющее большинство хаблистов. Такие хаблисты типо как Small или от Enyby есть подозрение что тоже модификации моего или jkoff но мы в отличии от этих авторов не пытаемся чего то доказать что это мы написали хоть и на самом деле их хаблисты это всего лишь плагиат. Ога, да. "Все ****расы, а я д'Артаньян". Этой фразой ставим сразу в положение виноватого, теперь я должен оправдываться и рассказывать, что я не верблюд. Не дождетесь. Давайте diff лог, а после этого поговорим у кого что списано. До этого ваши слова лищь пустой треп уровня бабки на завалинке.И да, мне кажется что вам не знакомо значение слова модификация: "видоизменение, преобразование, появление новых свойств." (с) БСЭ. Например, FreeBSD НЕ яляется модификацией BSD, в виду того что она была переписана ко второй версии. В-третьих, на счет отличий моего релиза и проекта. Там вроде значится что это прародитель. И там есть ссылки на развернутый релиз в двух местах. Вот-с. Ах да, еще. Позвольте кинутся какашкой в вашем стиле. "Все хаблисты уворованы у dchublist.ru, ибо у них одинаковый дизайн. Ну там табличка на странице хаба и все такое". Ну или, как минимум, уворован дизайн. ;-) И да, товарищ святой Mellon и его брат jkoff, вы тоже так же поступили. Или вы скажете что это dchublist.ru у вас украл дизайн? Или то что они сильно похожи - совпадение? Тэкс. Пожалуй на этом все. Ах нет, еще спасибо, за релиз кода. Нажимать кнопку "спасибо" в посте я не хочу, ибо там много гадостей написано. За сим считаю тему исчерпаной. по крайней мере до той поры, пока мне не покажут что-то весомее пустого трепа из серии "а я вот считаю". |
-=ДЕМОН=- | ||
23.11.2011, 11:27 |
Public PHP hublist (Хаблист) by Enyby Публичный открытый хаблист на PHP |
В работе этого хаблиста существует ограничение - не более 256 хабов. Когда их количество станет больше этого числа, пингование перестанет работать. Это связано с реализацией функции php socket_select (под Windows точно работать не будет, а вот под Unix - нужно тестировать). Чтобы обойти это ограничение вам потребуется переписать код пингера на использование пула сокетов. В пуле должно быть не более 256 сокетов одновременно. |
dj_crazy_joker | ||
|
Сейчас: 23.11.2024, 1:10 |