myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
История благодарностей участнику alex82. Спасибо сказали: 1406
Дата поста: В теме: За сообщение: Спасибо сказали:
11.4.2014, 0:07 PXControl
Удаленное управление PtokaX 0.4.x.x
PXControl Server 1.02

* Исправлена серьезная уязвимость, позволяющая злоумышленнику при определенных условиях получить полный контроль над хабом.
* Изменено поведение скрипта в тех случаях, когда количество зарегистрированных юзеров не позволяет отправить их одной командой. Теперь он не пытается отправить оставшиеся аккаунты второй командой, поскольку PtokaX в большинстве случаев все равно не успевает обработать очередь отправки. Проще говоря, если список загеристрированных юзеров слишком большой, он будет отправлен не полностью.
* Для совместимости со старыми версиями PtokaX добавлена проверка наличия функции ProfMan.Save

По поводу первого пункта
Данная уязвимость есть не только во всех прежних версиях PXControl, но и в PtokaX Remote Admin, а также во всех скриптах, реализующих расширения протокола при помощи события UnknownArrival.

Несмотря на то, что уязвимость существует уже не первый год, и массовых взломов хабов не было, она все же существует. А если где-то есть уязвимость, ей рано или поздно кто-нибудь воспользуется. Поэтому я настоятельно не рекомендую надеяться на принцип Неуловимого Джо.

PXControl Server версии 1.01 также обновлен, скачать его можно в первом посте. Сделано это для тех, кто по каким-то причинам не хочет обновляться до версии 1.02

Более подробно данную уязвимость опишу чуть позже, когда большинство админов обновят серверный скрипт.


[attachment=7016:PXContro...ver_1.02.zip]
Tsd, Ksan, Артём, Karumo, WINS, DEN 007
7.4.2014, 2:18 PXControl
Удаленное управление PtokaX 0.4.x.x
Версия 1.02 beta 3

Сервер:
* Исправлено добавление и изменение зарегистрированных юзеров при включенной опции SendPasswords

Клиент:
* Пропущенные строки в языковых файлах и соответствующий им код в функции, отвечающей за перевод GUI.
* В тех случаях, когда из-за различных проблем с хабом или сетью (один из таких случаев описан в предыдущем посте), клиент недополучил от хаба часть настроек, он будет лагать молча вместо того, чтобы выкидывать кучу ошибок. То же касается отправки данных - теперь при неудачной отправке клиент будет подвисать лишь на 10 секунд, а не навсегда.
* Добавлена возможность логирования команд, которыми клиент обменивается с сервером. Она может оказаться полезной при выяснении причины неработоспособности удаленного управления. Ну, или если Вам просто интересно знать, как это работает. Включается данная опция с помощью переменной _log_cmd, находящейся в файле PXControl.lua. В GUI параметр не вынесен.

[attachment=7012:PXContro...2_beta_3.7z]
Tsd, Ksan, Karumo, WINS, DEN 007
5.4.2014, 16:51 PXControl
Удаленное управление PtokaX 0.4.x.x
Выкладываю версию 1.02 beta 2.

Список изменений
* Отображение настроек хаба переделано в соответствии с PtokaX 0.5.x.x, добавлены новые настройки, в том числе те, что имеются в PtokaX 0.5.0.1 mod.
* Контекстные меню на текстовых полях в главном окне теперь работают.
* Доработаны диалог регистрации юзера и диалог генератора паролей.
* Возможность настройки прав доступа для каждой категории управления хабом (настройки, скрипты, баны, и т.д.)
* Удалены функции загрузки/сохранения настроек, а также установка настроек по умолчанию.
* Исправлена загрузка больших списков зарегистрированных юзеров.
* Исправлены ошибки в управлении банами.
* Переподключение к хабу при разрыве соединения.
* Добавлена возможность установки в папку Program Files на современных версиях Windows. В папке с программой имеется файл portable.txt, при его удалении программа не будет пытаться сохранять данные в собственную папку.
* Добавлена возможность управления базами данных IP-To-Country.
* Исправлено множество ошибок в GUI и коде программы.
* Рефакторинг кода.

Расширение протокола, используемое для удаленного управления, слегка изменилось, поэтому обновлять нужно как клиентскую часть, так и серверную. При использовании нового клиента со старым сервером будут неадекватно работать баны и управление профилями.

Убедительная просьба сообщать о найденных ошибках.
Ksan, Артём, Karumo, Alexey, DEN 007, KCAHDEP
27.3.2014, 13:13 DDoS Detector
Скрипт, ссобщающий операторам о DDoS-атаках на хаб
WINS,

Таки да, забыли в GUI подправить это значение. В следующем моде исправлю.

А что касается влияния значения данной опции на вероятность получить отказ в обслуживании, то скажу я тебе по секрету одну вещь:

Вещь
В случае CTM-атаки она не оказывает совершенно никакого влияния ;). Если бы пингвинятники засунули бороду чуть глубже, они бы заметили что юзеры, участвующие в атаке, отключаются хабом значительно раньше, чем выполняется проверка по данному типу антифлуда. А выполняется она на стадии STATE_ADDME_1LOOP, т.е. при добавлении юзера в списки.
Karumo
26.3.2014, 13:58 Hider
Скрипт для скрытия и переименования юзеров
Исправил
Karumo
26.3.2014, 12:30 Hider
Скрипт для скрытия и переименования юзеров
Название: Hider
Версия: 1.02
Требования: PtokaX 0.5.0.1 mod 4 или новее, Lua 5.1
Зависимости: нет

Автор: alex82

Описание:
Данный скрипт предназначен для различных издевательств над никами юзеров - скрытия из списка, переименования, удаления ключей. Он активно использует функции, добавленные в PtokaX mod, и поэтому несовместим с оригинальной PtokaX.

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

Переименование себя или других юзеров. Переименованные юзеры могут свободно общаться в чате и личках (в том числе с другими переименованными юзерами). При переименовании скрипт копирует $MyINFO переименовываемого юзера, заменяя при этом ник, а затем скрывает его из списка, и регистрирует бота с новым именем юзера.

Скрытие ключей юзеров. Казалось бы, бессмысленная функция, поскольку можно обойтись и без нее, создав отдельный профиль оператора без ключа. Но во-первых, некоторые права даются только с ключом (команды !stats и !debug, сообщения об ошибках скриптов), Во-вторых, при добавлении профиля появляются некоторые проблемы - при добавлении операторских профилей приходится перемещать остальные профили вниз, и, как результат, править базу регистраций. Дело в том, что PtokaX проверяет иерархию профилей, и не дает производить операции над юзерами, чей профиль выше Вашего (т.е. имеет меньший номер). А в-третьих, нет смысла добавлять профиль ради скрытия ключа одного юзера big_smile.gif

Известные проблемы:
Если на хабе есть скрипты, исправляющие сообщения юзеров (антиматы, антикапсы, и т.д.), то сообщения переименованных юзеров будут отправляться в чат с их "родным" ником. Можно поставить Hider выше этих скриптов, но тогда появляется другая проблема - сообщения переименованных юзеров не будут обрабатываться ими. Также следует помнить, что антиреклама должна стоять выше Hider'а - в противном случае переименованные юзеры смогут безнаказанно спамить.

Скрытые и переименованные юзеры видят свой основной ник в списке. Код, исправляющий это, есть в скрипте, но он закомментирован, поскольку с ним появляется другая проблема - если юзер скрыт или переименован, он не будет видеть в личках собственных сообщений.

При перезапуске скрипта, юзеры, которые могут видеть отдельно взятых скрытых юзеров, не увидят их до переподключения к хабу. Код, отвечающий за это есть в скрипте, он не работает из-за того, что PtokaX нарушает последовательность отправки команд. Исправляется при помощи костылей с таймерами.

[attachment=7004:hider_1.02.zip]
Nickolya, Tsd, Ksan, prapor, Karumo, Saymon21, WINS, shur49
26.3.2014, 10:18 PtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
Выложил mod5. Список изменений в первом посте.
Karumo, WINS
25.3.2014, 21:07 DDoS Detector
Скрипт, ссобщающий операторам о DDoS-атаках на хаб
Название: DDoS Detector
Версия: 1.00
Требования: Lua 5.1, PtokaX 0.4.1.x, 0.5.x.x
Зависимости: нет

Автор: alex82

Описание:
Данный скрипт предназначен для обнаружения DDoS-атак, осуществляемых при помощи юзеров других хабов.

При получении определенного числа команд $MyNick за определенный промежуток времени, скрипт начинает отправлять отчеты операторам. Если за время, указанное в параметре tCfg.CountTime не поступило ни одной команды, атака считается завершенной.

Большинство современных клиентов при соединении двух юзеров добавляют в команду $Lock адрес хаба, с которого отправлена команда $ConnectToMe. Именно благодаря этому, на первый взгляд, бессмысленному расширению протокола скрипт с легкостью узнает, с каких хабов осуществляется атака.

Скрипт должен стоять ниже скриптов, логирующих неизвестные команды.

[attachment=6998:ddos_detector_1.01.zip]
Nickolya, Tsd, Ksan, Артём, Karumo, HackFresse, rival, PPA, Saymon21, Pro009, AndreiDC, WINS, Shurchik, shur49, KCAHDEP, Ares, Hashish, PAUK
25.3.2014, 20:57 PtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
Цитата(MIKHAIL @ 25.3.2014, 15:42) *
alex82, правильно ли я понимаю, что все вышеуказанные исправления для каждого мода (в данном случае для 4-го, последнего на текущий момент) отсутствуют в оригинальной версии PtokaX 0.5.0.1?
Если это так, то, быть может, стоит сообщить авторам PtokaX о наличии таких проблем и возможных/оптимальных вариантов их решения?
Не совсем так. Некоторые изменения добавляются и в оригинальную версию (во всяком случае те, что являются исправлениями откровенных багов). Ну а те, где можно поспорить на тему "баг или фича", либо не добавляются, либо добавляются, но очень неохотно, и, как правило, своим, извилистым способом (именно так было с добавлением хеширования паролей). Дело в том, что PPK, который на данный момент является единственным разработчиком, имеет ужасный характер, и его очень трудно в чем-либо убедить, даже если вы правы с точки зрения здравого смысла.

Могу привести список косяков, которые PPK исправлять не будет:
Обработка пробелов TinyXML. Ему это уже не особо нужно, поскольку регистрации уже хранятся в бинарной базе. Но все еще присутствуют косяки при загрузке языкового файла - некоторые фразы коверкаются (например, "полностьювременно забанен").
Сброс строковых настроек к значениям по умолчанию. В одном месте он исправил (удалив строку по умолчанию), а адрес перенаправления так и будет сбрасываться (ибо это не баг, а фича exciting.gif )
Сохранение лишь тех настроек, что отличаются от значений по умолчанию. Ну да, это тоже не баг. Только админы могут удивиться, когда после очередного обновления у них внезапно изменятся настройки хаба.

Список можно продолжать, добавив в него совсем уж "не баги", но я, пожалуй ограничусь этим.
Karumo, MIKHAIL
23.3.2014, 11:12 PtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
Выложил mod 4. Список изменений в первом посте.
Ksan, prapor, Артём, Karumo
20.3.2014, 21:38 PtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
Выложил mod 3. Список изменений в первом посте.
Ksan, Артём, Karumo
18.3.2014, 14:46 PtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
Снова вылезли глюки с локалями. Если на сервере по умолчанию стоит локаль UTF-8, а затем с помощью скрипта переключить ее на однобайтовую (например ru_RU.CP1251), hashRegManager перестанет видеть зарегистрированных юзеров с кириллическими никами. Чтобы этого избежать, нужно переключать локаль не скриптом lua, а тем скриптом, что отвечает за запуск хаба (control_script в дистрибутиве или файл /etc/init.d/ptokax, когда хаб уже установлен на сервер). Для этого нужно добавить в скрипт следующее:
Код
LANG=ru_RU.CP1251

а затем удалить нафиг скрипт locale.lua, и перезапустить хаб.

Для Windows все вышесказанное неактуально, поскольку там приложения при запуске всегда получают локаль "C".

Перезалил архив с исходниками, предварительно поправив control_script и удалив locale.lua.
Ksan, Karumo, KCAHDEP
16.3.2014, 7:30 PtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
Выоложил mod2. Список изменений в первом посте.
Tsd, Ksan, Karumo, KCAHDEP
15.3.2014, 12:40 PtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
Ну а как же еще? 2 аргумента всего, трудно ошибиться. Если вызвать так:
Код
RegMan.SetCustom("testuser", "Проверяем дополнительное текстовое поле")
то поле установится. Если так -
Код
RegMan.SetCustom("testuser", "")
то удалится
Ksan, Karumo
15.3.2014, 12:14 PtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
Tsd,
1. Ага. Исправлю когда буду пересобирать архивы.
2. Вызвать RegMan.GetReg, и в таблице, которую вернет функция, будут эти два поля. Их значения устанавливаются хабом, и менять их из Lua нельзя.

Цитата
Например: если поле пустое (не заполнено), то в RegisteredUsers.xml оно будет отсутствовать.
Оно так и работает - если вызвать RegMan.SetCustom c пустой строкой, параметр удалится из RegisteredUsers.xml
Tsd, Ksan
13.3.2014, 0:11 PtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
Выложил PtokaX 0.5.0.1 mod. Список изменений выглядит внушительно, однако большинство из них было перенесено из предыдущих модов.

Обновление заняло чуть больше времени, чем планировалось. Связано это с тем, что PPK - большой любитель рефакторинга. Код версии 0.5.0.1 внешне настолько сильно отличается от предыдущей, что при попытке сравнить код двух версий WinMerge кричал, что это совершенно другая программа, после чего сразу же пытался застрелиться bad_smile.gif . Будем надеяться, что в этой версии PPK таки довел ООПность кода до совершенства, и следующие обновления будут проходить легче.
Tsd, Ksan, Karumo, Saymon21
13.12.2013, 23:41 spam was here
spam
Есть два хороших способа борьбы с тупыми спамботами, но оба требуют вмешательства в код движка.

Способ первый: Проверять первое сообщение всех юзеров на предмет ссылок, и если таковые имеются, не пропускать сообщение, а заодно удалять аккаунт юзера.
Способ второй: Сменить имя поля ника в форме регистрации. При этом поле со старым именем обязательно оставить в коде, но сделать скрытым. А тех, кто при регистрации будет отправлять какие-либо данные в поле со старым именем, банить по айпи.

Насколько сложно это все реализовать в IPB, понятия не имею.
Nickolya
3.12.2013, 23:29 Userbars
API2 | Персональные юзербары пользователей
[attachment=6937:VisitorDraw.lua]
Nickolya
29.4.2013, 0:05 Lua 5.2
тестовый вариант
KMV
8.4.2013, 18:24 Lua 5.2
тестовый вариант
Уже почти полтора года прошло с момента выхода Lua 5.2, и вот наконец я добрался до тестирования сего чуда программерской мысли. И вот что я вам скажу. Дела с ним обстоят еще хуже, чем я ожидал...

Уже на этапе сборки выяснилось, что опция LUA_COMPAT_MODULE, добавляющая обратно "устаревшую" функцию luaL_register, используемую при подключении дополнительных библиотек, не работает как надо. А все потому, что функция luaL_register не может экспортироваться, ибо реализована она как макрос:
Код
#define luaL_register(L,n,l)    (luaL_openlib(L,(n),(l),0))

Слегка недоумевая, переписываем функцию по-человечески:
Код
LUALIB_API void (luaL_register) (lua_State *L, const char *libname, const luaL_Reg *l) {
  luaL_openlib(L, libname, l, 0);
}
Теперь вроде как все в порядке, совместимость со старыми библиотеками обеспечена (за исключением тех, что используют lua_setfenv и lua_getfenv, ибо окружение функций теперь тоже устарело). Но не тут-то было. Библиотеки одна за другой отказываются подключаться, ибо не находят в lua.dll то lua_tonumber, то lua_call, то еще какую-нибудь важную функцию C API. Снова открываем lauxlib.h, в котором совсем недавно мы нашли чудо-функцию-макрос luaL_register, который по мнению разработчиков должен был экспортироваться, и медленно выпадаем в осадок:

Код
#define luaL_loadfile(L,f)    luaL_loadfilex(L,f,NULL)

Код
#define luaL_newlibtable(L,l)    \
  lua_createtable(L, 0, sizeof(l)/sizeof((l)[0]) - 1)

#define luaL_newlib(L,l)    (luaL_newlibtable(L,l), luaL_setfuncs(L,l,0))

#define luaL_argcheck(L, cond,numarg,extramsg)    \
        ((void)((cond) || luaL_argerror(L, (numarg), (extramsg))))
#define luaL_checkstring(L,n)    (luaL_checklstring(L, (n), NULL))
#define luaL_optstring(L,n,d)    (luaL_optlstring(L, (n), (d), NULL))
#define luaL_checkint(L,n)    ((int)luaL_checkinteger(L, (n)))
#define luaL_optint(L,n,d)    ((int)luaL_optinteger(L, (n), (d)))
#define luaL_checklong(L,n)    ((long)luaL_checkinteger(L, (n)))
#define luaL_optlong(L,n,d)    ((long)luaL_optinteger(L, (n), (d)))

#define luaL_typename(L,i)    lua_typename(L, lua_type(L,(i)))

#define luaL_dofile(L, fn) \
    (luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0))

#define luaL_dostring(L, s) \
    (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0))

#define luaL_getmetatable(L,n)    (lua_getfield(L, LUA_REGISTRYINDEX, (n)))

#define luaL_opt(L,f,n,d)    (lua_isnoneornil(L,(n)) ? (d) : f(L,(n)))

#define luaL_loadbuffer(L,s,sz,n)    luaL_loadbufferx(L,s,sz,n,NULL)

И.т.д., и.т.п. Всего около двадцати функций. Важных функций, без которых не написать сколько-нибудь серьезную библиотеку.

Первым делом у меня мелькнула мысль, что я чего-то недопонимаю, но непродолжительное общение с гуглом расставило все точки над Ё - макрос есть директива препроцессору, и линковщик НИКАК не сможет экспортировать его.

P.S. Если бы я владел португальским, то спросил бы у разработчиков Lua лишь одно - зачем привлекать наркоманов к разработке такой сложной штуки, как язык программирования?

P.P.S. Давайте жить дружно, и юзать Lua 5.1 big_smile.gif
Setuper, Ksan, KT315
26.3.2013, 19:53 NoPedo Extended
API2 | Скрипт для борьбы с детским порно в DC
Перезалил скрипт - исправил ошибку в строке 424:
if tCfg.SearchAchion ~= 0 then
Tsd, Артём, мамин_парень, Unique
24.3.2013, 16:57 NoConFlood
API2 | Боремся с флудом запросами на соединение
NoConFlood

Версия: 1.00
Версия API: API2 (PtokaX 0.4.0.x/0.4.1.x/0.5.0.x, LUA 5.1)
Автор: alex82

Описание: Как известно, подавляющее большинство современных клиентов имеет опцию определения IP-адресов юзеров в чате. И, в результате того, что эта опция по умолчанию включена, каждый юзер крупного хаба, написавший сообщение в чат, получает в качестве бонуса небольшую DDoS-атаку. Данный скрипт призван бороться с этим явлением.

Работает он следующим образом: Перед отправкой юзером первого сообщения, его IP-адрес рассылается всем юзерам хаба. С этого момента скрипт считает, что данный юзер намерен общаться в чате, и будет отправлять его IP-адрес всем новоприбывшим юзерам.

Дополнительная функция скрипта - подмена IP-адреса для указанных юзеров. Функция реализована не до конца - как только кто-то захочет соединиться с юзером, чей адрес подменен при помощи данного скрипта, ему сразу же станет известен реальный IP-адрес. Но при разработке скрипта ставилась задача лишь избавиться от флуда запросами на соединение, и данная функция была реализована лишь постольку, поскольку в скрипте уже есть все необходимое для рассылки IP-адресов.

Данный скрипт должен стоять ниже скриптов, блокирующих сообщения юзеров (заглушки, антиматы, антирекламы, и.т.д).

Добавлено Капитаном Очевидность
Скрипт несколько увеличивает исходящий траффик. Если для Вас это критично, подумайте прежде, чем ставить его


[attachment=6698:no_con_flood_1.00.zip]
ustas, Tsd, Артём, darkangel17, Saymon21, Cyber_voodoo, shur49, KCAHDEP, stone, nafig, Govorun, мамин_парень, Александр_ГМР
24.3.2013, 14:22 PtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
Выложил mod 3. Всем, кто использует предыдущие версии x64, настоятельно рекомендуется обновиться.
Cyber_voodoo
24.3.2013, 1:44 NoPedo Extended
API2 | Скрипт для борьбы с детским порно в DC
NoPedo Extended

Версия: 1.00
Версия API: API2 (PtokaX 0.4.0.x/0.4.1.x/0.5.0.x, LUA 5.1)
Автор: alex82

Описание: Расширенная версия скрипта NoPedo . Возможности скрипта:
* Проверка поисковых фраз с возможностью выбора наказания.
* Поиск запрещенных файлов с возможностью выбора наказания.
* Возможность редактирования запрещенных фраз и TTH при помощи меню.
* Меню в поиске и списках файлов, позволяющее быстро и комфортно добавлять файлы в список запрещенных.

[attachment=6700:no_pedo_...ded_1.01.zip]
Tsd, Ksan, Артём, rival, PPA, Saymon21, KCAHDEP, AfLc, мамин_парень, Александр_ГМР, KMV, Unique
19.3.2013, 18:56 phazeus ddos
ddos phazeus
Код
Умные, конечно сделают выводы и будут бороться, чтобы их пользователей не использовали как участников ДДОС-атак.
Как-то слишком упрощенно получается.

Добрые все равно не допустят ддос-атак с помощью своих юзеров. И не важно, умные они, или глупые, поскольку тут и делать-то ничего не надо - проверка IP в команде CTM встроена в любой более-менее адекватный хабсофт. Достаточно самим не устапнавливать на хаб скрипты для ддоса.

Умные и злые все равно будут ддосить своими юзерами. И они смогут выпилить защиту из хабсофта.

Глупые и злые просто поставят старую версию хабсофта, в которой этой защиты еще нет.

Так что не надо пытаться изменить весь мир - у вас на это сил не хватит. Просто будьте умными и добрыми big_smile.gif.
мамин_парень
17.3.2013, 8:38 PtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
Перезалил исходники. Изменения:
Исправлены ошибки в linux'овой части кода.
Добавлен makefile для PtokaX.
Добавлены makefile для библиотек SHA-1 и SHA-2.
Cyber_voodoo, мамин_парень
15.3.2013, 19:52 PtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
Цитата(Saymon21 @ 15.3.2013, 18:37) *
Смотря как подпилить же. stdin - это стандартный поток ввода данных. Насколько я думаю, он тут мало нужен.
stdout - стандартный поток вывода данных. Например в том-же русхабе print выводит какраз на терминал.
Подпилить print - не проблема. Я тут немножко о другом. Даже если вывод будет в консоль, скрипты-то все равно из консоли не запустишь. Не стоит забывать что print - сугубо отладочная функция.

Цитата(Saymon21 @ 15.3.2013, 18:37) *
Для отсылки ошибки, лучше например реализовать отсылку стек-трейса в чат (Или ещё куда-нить. Хоть на багтреккер).
А нафига? Я не раз видел такое в Lua. В том же Lua-AIO это реализовано. А PXControl вообще подробнейший дамп. Только вот не нужно оно. Lua - очень простой язык, и ошибки находятся безо всяких стек-трейсов. ИМХО, достаточно простого сообщения, чтобы ленивая скотина вроде меня (которой лень постоянно лазить в лог) знала о том, что скрипт косячит big_smile.gif
мамин_парень
15.3.2013, 19:32 PtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
Цитата(Saymon21 @ 15.3.2013, 18:10) *
Я думаю логично выводить тут на stdout, если оно не запущено в качестве демона/сервиса.
Не думаю. Логичнее всего наблюдать вывод print там, где производится запуск/остановка скриптов. В GUI-версии это удобнее всего делать на вкладке скриптов. Консольная версия не понимает команды в stdin, поэтому единственный способ запуска скриптов - команды в чате.

Цитата(Saymon21 @ 15.3.2013, 18:10) *
И зы. Может пора на гитхабе или битбаскете репозиторий?
Если бы я еще знал, что это такое...

--------------------------------------

Кстати, makefile пишлось удалить, поскольку в проект добавились новые файлы, а я не знаю, как правильно добавить их туда. Буду благодарен, если кто-нибудь из линуксоидов поможет исправить ситуацию.
мамин_парень
15.3.2013, 18:58 PtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
выложил mod 2
Tsd, Ksan, Saymon21, мамин_парень
12.3.2013, 4:53 Способы Повышения Производительности
методы оптимизации lua кода
А вот небольшое замечание, касающееся хаба PtokaX.

Как известно, скриптовые функции, отправляющие данные юзерам (Core.SendToAll, Core.SendToUser, и.т.д.) не требуют наличия в конце строки символа |, и, при необходимости, добавляют его сами. Удобно, не спорю. Но давайте заглянем в исходный код:
Код
    if(sData[szLen-1] != '|') {
        memcpy(g_sBuffer, sData, szLen);
        g_sBuffer[szLen] = '|';
        g_sBuffer[szLen+1] = '\0';
        UserSendCharDelayed(u, g_sBuffer, szLen+1);
    } else {
        UserSendCharDelayed(u, sData, szLen);
    }

На этом куске функции Core.SendToUser нам вырисовывается такая картина маслом: если функция получила строку, завершающуюся символом |, она просто отправляет данные юзеру, ну а если символа | в конце нет, то вся строка копируется в буфер, затем к ней добавляется | и завершающий нулевой байт, и только после этого она отсылается юзеру.

Вывод достаточно прост: если при отправке данных из скриптов вы будете сами добавлять | в конце, эти скрипты будут работать чуток быстрее.
мамин_парень
5.3.2013, 21:38 PtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
Tsd

Добавил конвертер в первый пост

-------------------------------------------------

Выложил версию, хранящую пароли в зашифрованном виде. Подробности в первом посте.
Tsd, Ksan, Karumo, мамин_парень
4.3.2013, 19:30 PtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
Цитата(Saymon21 @ 4.3.2013, 17:24) *
Зачем?
Проще редактировать, при необходимости можно откатиться на старую версию без плясок с бубном.

Цитата
А что там насчет лицензии? Она позволяет делать такие фокусы?
Там же GNU GPL bad_smile.gif
мамин_парень
4.3.2013, 18:03 PtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
Скрипт locale.lua - что это, и зачем оно нужно

Скрипт locale.lua используется под Windows для установки локали lua.dll, поскольку сменить локаль библиотеки непосредственно из PtokaX.exe невозможно. Также скрипт выполняет диагностику корректности работы функций сравнения строк и преобразования регистров (как под Windows, так и под *NIX). Расшифровка сообщений, выдаваемых скриптом:
Цитата
Неверно установлена локаль для следующих категорий: collate (установлена C, должна быть ru_RU.CP1251), ctype (установлена C, должна быть ru_RU.CP1251)
Данное сообщение говорит нам о том, что требуемая локаль не установлена в системе. В Ubuntu локаль можно добавить командой:
Код
locale-gen ru_RU.CP1251
Чтобы добавить локаль в Debian, наберите в консоли dpkg-reconfigure locales, а затем включите нужную локаль при помощи стрелок и клавиши "Пробел"

Цитата
Неверно установлена локаль для следующих категорий: numeric (установлена <something>, должна быть C)
Скорее всего причина в том, что на вашем хабе имеется скрипт, меняющий локаль. Сама по себе смена локали для категории numeric не является ошибкой, однако, если в качестве <something> окажется локаль, предусматривающая в качестве разделителя между целой и дробной частью чисел не точку, а запятую (например, наша, родная Russian_Russia.1251), то в качестве бонуса вы получите некорректную работу скриптов, сохраняющих в файлы дробные числа. Поэтому никогда так не делайте:
Код
os.setlocale("Russian_Russia.1251")
А если все же очень хочется, то после этого непременно устанавливайте правильную локаль для категории numeric:
Код
os.setlocale("C","numeric")
И вообще, не нужно дергать локаль хаба по каждому удобному случаю. Нужно установить ее один раз при запуске, и в дальнейшем не трогать.

Цитата
Некорректно работает преобразование регистров
Вы установили неправильную локаль в настройках хаба. Для корректной работы функций string.upper() и string.lower() нужно установить локаль ru_RU.CP1251 для *NIX, либо Russian_Russia.1251 если хаб работает под Windows.

Цитата
Некорректно работает функция strcasecmp
Несмотря на то, что Вы все сделали правильно, функция strcasecmp, используемая при проверке хабом ников работает неправильно, считая разными одни и те же кириллические ники, написанные в разных регистрах. Данный глюк встречается в некоторых сборках Linux, и причины его возникновения до сих пор не выяснены. Чтобы исправить его, вы можете включить специально предназначенный для этого костыль. Чтобы сделать это, раскомментируйте следующую строку в файле core/stdinc.h:
Код
//#define FIX_STRCASECMP
После этого вам, естественно, потребуется пересобрать PtokaX.
Описание некоторых изменений в интерфейсе Lua
Переменная bZPipe в таблице юзера
Данная переменная отображает поддержку юзером сжатия zlib, и выставляется в том случае, когда юзер отправил в $Supports характеристику ZPipe (или ZPipe0). По этой переменной можно с большой долей вероятности отличать DC-клиенты от спамботов - последние в большинстве своем написаны ленивыми мартышками, и не имеют поддержки сжатия, а все современные клиенты - имеют.

Тестовый скрипт: [attachment=6990:test_zpipe_var.lua]Ставить без переделки на живые хабы не рекомендуется bad_smile.gif
Core.HideUser(tUser, bHide)
Функция позволяет полностью скрыть юзера из списка. Если параметр bHide равен true, юзер будет скрыт, если false, то восстановлен в списке. Функция влияет на счетчики юзеров и общей шары - при скрытии юзера счетчики уменьшаются, а при восстановлении увеличиваются обратно.

В таблице юзера имеется переменная bHidden, которая выставляется при скрытии юзера, и сбрасывается при его восстановлении. Код для функции Core.GetUserData - 65. При вызове функции с данным номером на оригинальной PtokaX будет возникать ошибка. Чтобы этого не происходило, можно сделать так:
Код
pcall(Core.GetUserData, tUser, 65)

Если требуется скрыть юзера, входящего на хаб, то делать это следует не позже вызова скриптовой функции ValidateNickArrival. В противном случае хаб успеет отправить MyINFO юзера.

Следует помнить, что при отключении скрипта все скрытые юзеры останутся таковыми до переподключения к хабу, поскольку информация о том, что юзер скрыт, хранится в памяти PtokaX, и при остановке тех или иных скриптов никуда не девается. Если Вам нужно, чтобы скрытые юзеры появлялись в списке при остановке скрипта, отвечающего за скрытие, добавьте соответствующий код в функцию OnExit().

Тестовый скрипт: [attachment=6984:test_hide.lua]
Core.HideUserKey(tUser, bHide)
Функция позволяет скрыть ключ юзера. Если параметр bHide равен true, ключ юзера будет скрыт, если false, то восстановлен.

В таблице юзера имеется переменная bHiddenKey, которая выставляется при скрытии ключа юзера, и сбрасывается при его восстановлении. Код для функции Core.GetUserData - 67. При вызове функции с данным номером на оригинальной PtokaX будет возникать ошибка. Чтобы этого не происходило, можно сделать так:
Код
pcall(Core.GetUserData, tUser, 67)

Если требуется скрыть ключ юзера, входящего на хаб, то делать это следует не позже вызова скриптовой функции ValidateNickArrival. В противном случае хаб успеет добавить ник юзера в $OpList.

Следует помнить, что при отключении скрипта все скрытые ключи юзеров останутся таковыми до переподключения к хабу, поскольку информация о том, что ключ скрыт, хранится в памяти PtokaX, и при остановке тех или иных скриптов никуда не девается. Если Вам нужно, чтобы юзеры со скрытыми ключами появлялись в списке операторов при остановке скрипта, отвечающего за скрытие, добавьте соответствующий код в функцию OnExit().

Тестовый скрипт: [attachment=6986:test_hide_key.lua]
Core.IsolateUser(tUser, bState)
Функция позволяет изолировать юзера от главного чата - изолированный юзер не будет видеть сообщений других юзеров, а они - сообщений изолированного юзера. По сути, функция является виртуальным аналогом сурдокамеры, в которую в реальном мире помещаются люди, страдающие буйной формой шизофрении. Она с одной стороны изолирует больного от внешних раздражителей, способных вызвать очередной приступ буйства головного мозга, а с другой - защищает здоровых людей от внешних проявлений болезни данного пациента.

Если параметр bState равен true, юзер будет изолирован, а если false - изоляция будет отключена.

В таблице юзера имеется переменная bIsolated, которая выставляется при изоляции юзера, и сбрасывается при восстановлении нормального режима чата. Код для функции Core.GetUserData - 68. При вызове функции с данным номером на оригинальной PtokaX будет возникать ошибка. Чтобы этого не происходило, можно сделать так:
Код
pcall(Core.GetUserData, tUser, 68)

Следует помнить, что при отключении скрипта все изолированные юзеры останутся таковыми до переподключения к хабу, поскольку информация о том, что юзер изолирован, хранится в памяти PtokaX, и при остановке тех или иных скриптов никуда не девается. Если Вам нужно, чтобы при остановке скрипта, отвечающего за скрытие, восстанавливался нормальный режим чата для всех юзеров, добавьте соответствующий код в функцию OnExit().

При использовании данной функции могут возникать конфликты со следующими скриптами
Различные обработчики сообщений юзеров - антикапсы, "лечащие" антиматы, и т.д. Если обычный юзер отправил сообщение, которое обработал один из таких скриптов, его увидят все изолированные юзеры. Чтобы этого избежать, необходимо использовать вместо Core.SendToAll(sData) функцию Core.SendToNonisolated(sData). Если хочется сохранить совместимость с оригинальной PtokaX, можно использовать следующую конструкцию:
Код
Core[Core.SendToNonisolated and "SendToNonisolated" or "SendToAll"](sData)

Также следует запретить скриптам обрабатывать сообщения изолированных юзеров - иначе их будут видеть все юзеры. Для этого сначала нужно вызвать Core.GetUserData(tUser, 68), поскольку изначально параметр bIsolated отсутствует в таблице юзера, а затем проверить его значение. Код проверки, совместимый как с оригинальной, так и с модифицированной PtokaX выглядит так:
Код
pcall(Core.GetUserData, tUser, 68)
if not tUser.bIsolated then
    -- Здесь выполняем проверку и обработку сообщения
end

Скрипты логов чата. Поскольку при отправке сообщения изолированным юзером событие ChatArrival вызывается как обычно, его сообщения будут попадать в лог чата. Чтобы этого избежать, нужно перед обработкой сообщения проверять, изолирован ли юзер, отправивший его. Как это сделать, показано в предыдущем пункте.

Тестовый скрипт: [attachment=6985:test_isolate.lua]
Core.GetDCStats() и Core.GetNetStats()
Функции предназначены для получения из Lua статистики, отображаемой в ответе на команду !stats. GetDCStats() возвращает таблицу со счетчиками команд протокола, а GetNetStats() - таблицу с сетевой статистикой. Список всех ключей этих таблиц можно найти в scripting-interface.txt.

Если включить фантазию, можно найти достаточно способов использования этой информации. Можно, к примеру, рисовать графики использования хабом сети. Ну, или отслеживать переполнение канала с помощью iSendRests и iRecvRests, отображающих соответственно размер очереди отправки и очереди получения данных. А если он таки переполнится, предпринять какие-либо действия, способствующие его освобождению - отключить часть юзеров, заблокировать поиск, запретить хабу принимать входящие соединения, и т.д.

Тестовый скрипт: [attachment=6987:test_stats.lua]
BadPassArrival(tUser, sPassword)
Вызывается при отправке юзером неправильного пароля. В отличии от других событий Lua, BadPassArrival получает в качестве второго аргумента не всю команду, а лишь пароль, отправленный юзером.

Функция может быть использована для отслеживания попыток подбора паролей к аккаунтам операторов.

Тестовый скрипт: [attachment=6988:test_arrivals.lua]
ValidateDenideArrival(tUser, sNick)
Вызывается тогда, когда на хаб пытается войти юзер, ник которого уже занят другим юзером. А именно - перед отправкой юзеру команды $ValidateDenide.

Юзеры, как правило, сидят на многих хабах, и далеко не всегда они устанавливают для каждого из них отдельный ник. В результате, при слиянии крупных хабов получается очень много "клонов" - юзеров, пытающихся войти на хаб несколько раз под одним ником. При этом хаб, как и полагается, пускает одного из них, а всех остальных посылает подальше. Однако, терять драгоценных юзеров (за которых, между прочим, нынче платят деньги) не есть хорошо. Вместо этого можно отследить их, и пренаправить на другой хаб. Именно для этих целей в свое время и была добавлена данная функция.

В отличии от других событий Lua, ValidateDenideArrival получает в качестве второго аргумента не команду целиком, а лишь ник юзера. При этом в таблице юзера ник отсутствует.

Тестовый скрипт: [attachment=6988:test_arrivals.lua]Готовый скрипт перенаправления клонов: [attachment=6989:clone_redirect.rar]
Почему при переходе на Ptokax mod некоторые скрипты начинают флудить в чат
Если при переходе с оригинальной PtokaX на PtokaX mod Вы заметили какие-либо посторонние сообщения в чате (пример), которые видны лишь юзерам с профилем 0 (Master), то виновата в этом функция print.

Дело в том, что некоторые функции скриптов могли отлаживаться их авторами в консоли Lua. В этом случае для вывода сообщений, как правило, используется функция print. И если по завершении отладки автор забыл удалить вывод отладочных сообщений, получится весьма забавная ситуация: при установке этого скрипта на оригинальную PtokaX, админ не заметит никаких странностей, поскольку в ней функция print отсутствует, а админ хаба под управлением PtokaX mod увидит флуд в главном чате.

Решение данной проблемы простое и очевидное: пройтись поиском по всем скриптам, и, если в каких-то из них будут найдены вызовы функции print, закомментировать или удалить их
Tsd, Ksan, мамин_парень, CyberGhost404
4.3.2013, 17:39 PtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
Поскольку исходники PtokaX нынче доступны в полном
объеме (включая проекты Visual Studio), у многих анонимусов
руки так и чешутся запилить форк сего замечательного хабсофта.
Я оказался в их числе big_smile.gif

PtokaX 0.5.0.1 Mod


Версия: 0.5.0.1
Модификация: mod 11
Операционная система: Windows, Linux

Описание: Решил выложить на всеобщее обозрение свою модификацию PtokaX под кодовым названием PtokaX Mod. Список изменений относительно оригинальной версии выглядит так:
mod 11
Добавлено: Расширение протокола CTM2HUB.
Добавлено: Задержка перед отправкой $Lock (которая якобы помогает при DDoS-атаках).
mod 10
Исправлено: Неверные названия некоторых стран, возвращаемые функцией IP2Country.GetCountryName.
Добавлено: Возможность получения названия страны по коду с помощью функции IP2Country.GetCountryName.
Исправлено: Предупреждения при компиляции версии, хранящей пароли в зашифрованном виде.
Исправлено: Компиляция библиотеки SHA-2 под новыми версиями gcc.
mod 9
Исправлено: Профиль юзера устанавливался до успешной проверки пароля, что представляло собой потенциальную уязвимость (перенесено из тестовой версии).
Исправлено: Неполный IP-адрес отображался как некорректный в тех случаях, когда юзер, использующий IPv6, отправлял адрес IPv4 в команде (перенесено из тестовой версии несмотря на то, что суть бага мне не совсем ясна).
Исправлено: Права доступа для файлов и папок в *nix (перенесено из тестовой версии).
Исправлено: Возможные падения GUI-версии хаба при закрытии окон (перенесено из тестовой версии).
Исправлено: Неверные размеры массивов в коде редактора скриптов (перенесено из тестовой версии).
Исправлено: Невозможность использования в командах адресов IPv6, чья длина превышает 15 символов (перенесено из тестовой версии).
Исправлено: Ошибки в командах !rangeban и !rangeunban.
Добавлено: Автозапуск скрипта locale.lua.
mod 8
Изменено: Отныне юзеры с одинаковыми профилями не смогут банить друг друга. Данное изменение не относится к юзерам с профилем 0 (Master): эти засранцы по-прежнему могут банить кого угодно.
Добавлено: Ограничение продолжительности временных банов. В GUI данная опция находится на вкладке "Настройки банов". ID для SetMan.(G/S)etNumber - 114.
Добавлено: Опция, позволяющая менять интервал между служебными циклами. Уменьшение интервала снижает скорость отклика хаба на действия юзеров, однако это также приводит к некоторому повышению нагрузки на процессор. В GUI данная опция находится на вкладке "Больше настроек". ID для SetMan.(G/S)etNumber - 115.
Исправлено: Ошибка в linux-версии хаба, приводившая к некорректной работе таймеров с интервалом, не кратным одной секунде.
Исправлено: Окончательное решение вопроса локалей. Теперь локаль устанавливается изнутри Ptokax. В связи с этим былы добавлены 2 параметра настроек. ID для SetMan.(G/S)etString - 37 (Windows) и 38 (NIX). В GUI доступна только локаль Windows. Поскольку в Windows локаль устанавливается только для текущего модуля (т.е. выполняем setlocale() в PtokaX.exe - локаль меняется только для PtokaX.exe, выполняем setlocale() в lua.dll - локаль меняется только для lua.dll), необходимость в скрипте locale.lua никуда не делась.
Добавлено: Установка автозапуска хаба при выполнении make install.
Добавлено: Цели uninstall, on и off в makefile. Цели make on и make off позволяют включить и отключить автозагрузку хаба соответственно. Цель make uninstall используется для удаления файлов хаба (при этом удаляются только исполняемые файлы и ссылки автозапуска, рабочую директорию необходимо удалить вручную).
mod 7
Исправлено: Проверка прав доступа при создании банов с помощью команды $Kick.
mod 6
Добавлено: Команда !reloadcountry, позволяющая перезагрузить базы IP-To-Country. Команда доступна юзерам с профилем 0.
Добавлено: Функция Core.BotMyINFO(sBotNick, sBotMyINFO), позволяющая изменить $MyINFO бота, зарегистрированного из скрипта. Полная проверка синтаксиса $MyINFO не производится.
Исправлено: Максимальное значение параметра "Ограничение входа юзеров" в GUI.
Удалено: Бессмысленная опция "Отключать клиенты, отправляющие $Supports с ошибками". При ближайшем рассмотрении выяснилось, что "ошибками" считается лишний пробел в конце команды. Код, отвечающий за определение этой "ошибки" сохранен, поскольку он влияет на обработку магического байта, и в этом, возможно, есть некий смысл.
Добавлено: Опция, позволяющая отключить обработку магического байта. При включении заработает отображение пола в GreylinkDC, но могут появиться ошибки коммуникации между разными клиентами, поскольку при использование старшей половины байта каждый разработчик DC-клиента извращался как мог.
Исправлено: Функция os.clock под Linux. Теперь она работает так же, как под Windows - возвращает время с момента запуска хаба с точностью до миллисекунды. По умолчанию данный костыль включен, отключается в stdinc.h.
Изменено: При корректной остановке хаба всем юзерам рассылается сообщение о перезапуске. Раньше это сообщение отправлялось лишь при выполнении команды !restart.
Изменено: Время последнего входа зарегистрированного юзера обновляется не только при его входе на хаб, но и при выходе.
Добавлено: Переменная iOnlineTime, отображающее время, проведенное зарегистрированным юзером на хабе (в секундах). Переменная обновляется при выходе юзера, а также при вызове RegMan.UpdateTimes() (см. ниже).
Добавлено: Функция RegMan.UpdateTimes(), обновляющая значения iLastEnter и iOnlineTime в профилях зарегистрированных юзеров, находящихся на хабе. iOnlineTime вычисляется с учетом текущего времени и значения iLastEnter, а iLastEnter устанавливается равным текущему времени.
Добавлено: Функция RegMan.SetTimes(sNick, iRegDate, iLastEnter, iOnlineTime), позволяющая вручную установить время регистрации, время последнего входа и время онлайн для указанного зарегистрированного юзера.
Перенесены некоторые изменения из PtokaX 0.5.0.2
mod 5
Исправлено: Падение хаба при загрузке банов. (перенесено из тестовой версии)
Исправлено: Корректное завершение работы при помощи os.exit(). (перенесено из тестовой версии)
Добавлено: В makefile добавлена рекурсия для компиляции tinyxml. Теперь его не нужно собирать отдельно перед сборкой PtokaX (перенесено из тестовой версии)
Исправлено: Ошибка в скрипте init.d
Исправлено: Ошибки в русском языковом файле. Его можно пилить вечно, и все равно будет кривой :(
mod 4
Исправлено: Ошибки в функции Core.HideUserKey
Исправлено: Несколько ошибок в настройках прав доступа для незарегистрированных.
Испорчено: Опция "Не проверять IP в командах DC" в профиле незарегистрированного юзера. Теперь она игнорируется, и, как следствие, IP всегда проверяется. Это не баг, это фича.
Добавлено: Костыль, исправляющий регистрочувствительность кириллических ников в некоторых версиях Linux. По умолчанию отключен, включается в stdinc.h
Исправлено: Команда restart скрипта init.d
mod 3
Добавлено: Обработка ошибок при загрузке XML-файлов. Если в одном из файлов есть синтаксическая ошибка, программа сообщает об этом и аварийно завершает работу вместо того, чтобы втихую загрузить значения по умолчанию.
Исправлено: Кодировка, указанная в заголовках XML-файлов.
Исправлено: Если хаб не смог запуститься (например, по причине занятости всех указанных портов), настройки будут сохранены, что даст возможность исправить их.
Добавлено: Функция Core.HideUserKey(tUser, bHide), позволяющая скрыть ключ юзера.
Исправлено: Добавление/удаление ключей при изменении зарегистрированных юзеров.
Исправлено: Несколько ошибок в настройках прав доступа для незарегистрированных.
Добавлено: Функция Core.IsolateUser(tUser, bState), позволяющая изолировать юзера от главного чата. Изолированный юзер не видит сообщений других юзеров, а они, соответственно, не видят сообщения изолированного юзера.
Добавлено: Функция Core.SendToNonisolated(sData), отправляющая данные всем неизолированным юзерам (см. предыдущий пункт). Используется аналогично Core.SendToAll(sData).
Исправлено: В сборке x64 отключено использование больших адресов. Теперь хаб не падает при запуске скриптов. Как результат - в сборке нельзя использовать библиотеки, предназначенные для оригинальной PtokaX 0.5.0.1.
Исправлено: Компиляция под Debian и Ubuntu различных архитектур. Надеюсь, в этот раз исправил правильно.
Исправлено: В скрипте для init.d исключена возможность повторного запуска демона, а также исправлена передача ему переменных окружения.
mod 2
Изменено: В сборках x86 отключено использование инструкций SSE для совместимости с некоторыми не очень свежими процессорами от AMD.
Исправлено: Установка размеров окон при различных размерах системных шрифтов.
Исправлено: Компиляция под Debian.
Исправлено: Небольшая ошибка в makefile при выполнении цели install.
Исправлено: Скрипт locale.lua
Исправлено: Пропущенные функции и параметры в scripting-interface.txt
mod
Исправлено: При нажатии кнопки "Принять" настройки не сохранялись в файл (подозреваю, что кое-кто считает это фичей, а не багом).
Изменено: К черту бинарный бред. Список зарегистрированных юзеров снова хранится в файле XML.
Изменено: Для 32-разрядной версии метод вызова функций изменен на cdecl, что позволило испльзовать библиотеки, предназначенные для Lua-AIO и RusHub.
Изменено: Положение и размеры кнопок на вкладке "Статистика".
Изменено: Отключено открытие скрипта по двойному клику в списке. Глубокого смысла в этом нет, просто мне так удобнее big_smile.gif.
Исправлено: Доведен до ума файл русской локализации.
Добавлено: В профиль зарегистрированного юзера добавлены дата регистрации, дата последнего входа и один текстовый параметр для хранения произвольных данных. В связи с этим в таблицу зарегистрированного юзера были добавлены поля iRegDate, iLastEnter и sCustom. Для установки поля sCustom используется функция RegMan.SetCustom(sNick, sString). Поле sCustom может отсутствовать.
Изменено: При сохранении настроек в файл записываются все параметры, а не только те, значения которых отличаются от значений по умолчанию.
Добавлено: Проверка прав доступа для команды !stats.
Добавлено: Блокировка неизвестных команд. Отключается на вкладке "Дополнительно".
Добавлено: Возможность отключения приветствия (Этот хаб работает под управлением...). Включается на вкладке "Дополнительно" Имя параметра в настройках - ShowWelcome, ID для SetMan.(S/G)etBool - 57.
Изменено: Отключение проверки ключа вынесено в настройки. В связи с этим был удален ключ командной строки /nokeycheck.
Добавлено: Возможность отключения сжатия zlib. Отключается на вкладке "Больше настроек".
Изменено: Профиль по умолчанию для юзеров, регистрируемых с помощью GUI.
Добавлено: Функция print. В GUI-версии функция выводит текст в окно ошибок скриптов, в консольной - в главный чат юзерам с профилем Master.
Исправлено: Самодеятельность TinyXML, касающаяся обработки пустых символов. Несколько пустых символов подряд заменялись одним пробелом. По непонятной причине неразрывный пробел также считался пустым символом.
Исправлено: При запуске принудительно устанавливается локаль "C" для чисел. Это поможет избежать проблем с сохранением дробных чисел если сервер, на котором работает хаб, настраивали жопой.
Добавлено: Версия PtokaX, хранящая пароли в зашифрованном (SHA-256) виде.
Изменено: Настройки по умолчанию. Строковые параметры переведены на русский.
Изменено: Список стран IP-To-Country: Добавлены коды стран, названия стран переведены на русский.
Добавлено: Сообщения об ошибках скриптов отправляются операторам.
Добавлено: Возможность отключения отображения трассировки стека Lua в ошибках скриптов.
Добавлено: Параметр bZPipe, отображающий поддержку юзером сжатия. Код для Core.GetUserData - 64
Исправлено: Устранено мелькание окна консоли при вызове функций os.execute и io.popen.
Добавлено: Настройка прав доступа для незарегистрированных юзеров.
Добавлено: Альтернативный синтаксис для функции регистрации бота: Core.RegBot(sNick, sMyINFOString, bHaveKey). Полная проверка синтаксиса $MyINFO не производится.
Добавлено: Функция Core.HideUser(tUser, bHide), позволяющая скрыть юзера из списка.
Добавлено: Функции Core.GetDCStats, Core.GetNetStats.
Добавлено: События BadPassArrival и ValidateDenideArrival.
Исправлено: При загрузке настроек из файла строковые настройки заменялись настройками по умолчанию в тех случаях, когда длина сохраненной строки равна нулю, а длина строки по умолчанию больше нуля. По этой причине в предыдущих версиях мода было невозможно переключить язык на английский, а в оригинальной версии - удалить адрес перенаравления.
Исправлено: Изменение паролей зарегистрированных юзеров.
Исправлено: Если длинные MyINFO отправляются только разрешенным профилям, а профиль юзера позволяет ему получать полные MyINFO, то боты, зарегистрированные скриптами, становились видны ему только после переподключения к хабу.
Добавлено: Функция Core.UserNoQuit(tUser, bState), позволяющая подавить команду $Quit при выходе юзера. Кому-то функция может показаться бессмысленной, однако я знаю наверняка, для чего я ее добавил. Возможно, и вы когда-нибудь узнаете big_smile.gif.
Были собраны версии для Windows x86 и x64, однако 64-разрядная версия мной практически не тестировалась. В сборке x86 присутствуют библиотеки Lua на все случаи жизни.
[attachment=7239:0.5.0.1_mod11_x86.rar][attachment=7238:0.5.0.1_mod11_x64.rar][attachment=7237:0.5.0.1_mod11_src.zip]
Старые версии
[attachment=7243:0.5.0.1_mod10_x86.rar][attachment=7242:0.5.0.1_mod10_x64.rar][attachment=7241:0.5.0.1_mod10_src.zip] [attachment=7240:0.5.0.1_...hashpass.rar]Остальные версии можно найти в моей шаре на хабе MyDC

Как правильно обновляться...
...с оригинальной версии на mod:
Первым делом конвертируем базу из бинарного формата в xml. Делать это нужно на оригинальной версии, поскольку скрипт использует для конвертирования API хаба. Затем останавливаем хаб, открываем файл cfg/Profiles.xml, и добавляем профиль для незарегистрированных юзеров:
Длиннокод
Код
    <Profile>
        <Name>Unreg</Name>
        <Permissions>00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0
0000000000000000000</Permissions>
    </Profile>
После этого можно обновлять бинарники и запускать хаб. Новые настройки добавятся в конфиг автоматически при первом же сохранении настроек. Поскольку оригинальная PtokaX имеет весьма подлый алгоритм сохранения настроек, в котором, к тому же, имеется один нехороший баг, рекомендуется после первого же запуска пробежаться по настройкам, и исправить все, что не понравится. И да, не следует забывать, что имена виндовых библиотек в оригинальной версии могут отличаться от таковых в mod.

Если Вы обновляетесь с версии 0.4.x.x, работавшей под Windows, у Вас может возникнуть еще одна проблема: в списке зарегистрированных юзеров обнаружится большое число юзеров с одним и тем же ником, но в разных регистрах. При удалении каждого повторяющегося юзера, GUI-версия PtokaX будет выдавать сообщение. Если Вам лень клацать кнопку "OK" 10500 раз, можете убить птоку диспетчером задач, и использовать для первого запуска консольную версию - она удалит дублирующихся юзеров тихо, а сообщения об удалении сохранит в файл system.log

...с PtokaX 0.5.0.0 mod3 на PtokaX 0.5.0.1 mod:
Останавливаем хаб, добавляем в настройки профиль незарегистрированных юзеров (см. предыдущий пункт), запускаем хаб. Всё big_smile.gif

...с mod на оригинальную версию:
Останавливаем хаб, удаляем из конфига профиль незарегистрированных юзеров. После этого можно обновлять бинарники и запускать хаб - PtokaX сама сконвертирует базу регистраций в бинарный формат, а также удалит все ненужные (и даже некоторые нужные bad_smile.gif ) настройки.

...с обычной версии на версию, хеширующую пароли:
Просто заменяем бинарники, и запускаем хаб. При запуске все пароли будут хешированы автоматически.

...с версии, хеширующей пароли, на обычную версию:
Останавливаем хаб, заменяем бинарники, удаляем базу регистраций, запускаем хаб, и просим всех юзеров зарегистрироваться по-новой. Ну да, а Вы что думали? Расшифровать хешированные пароли невозможно. Именно по этой причине включение хеширования паролей производится таким извращенным способом.


Версия, хранящая пароли в зашифрованном виде:[attachment=7236:0.5.0.1_...hashpass.rar]
Как это работает
Пароли хранятся в виде
Код
|<Хэш пароля в hexadecimal-формате>
Символ | в начале пароля нужен для того, чтобы PtokaX могла отличить шифрованные пароли от нешифрованных. Если при загрузке базы какие-либо пароли не соответствуют данному формату, они автоматически хешируются. Это позволяет не париться при переходе на шифрованную базу и при добавлении аккаунтов прямо в XML-файл.

Следует помнить, что хешированные пароли расшифровать нельзя. Т.е вы не сможете сконвертировать базу обратно. Никак не сможете. СОВСЕМ никак.

Также следует помнить, что зарегистрированных юзеров теперь нельзя редактировать с помощью PXControl, PRA, и им подобных. И да, если Ваш скрипт регистрации запрашивает старый пароль при его изменении, Вам придется прикрутить к нему библиотеку sha2.

В архиве только exe'шник, все остальное берем из основного дистрибутива.


Скрипт для конвертирования бинарной базы обратно в XML:
[attachment=6665:GetBaseBack.lua]

Если Вы переходите на данную версию с более новой, хранящей настройки и список скриптов в файлах .pxt, то Вам будет полезен конвертер:
[attachment=7249:settings_back.lua]

TODO
По-человечески исправить отрисовку GUI. Думаю, многие заметили, что внешний вид окна оригинальной птоки сильно портится если по нему провести окном другого приложения. Сильнее всего эффект заметен в Windows 7 на упрощенных темах оформления. Связано это с тем, что PPK не до конца осилил создание GUI с помощью чистого WinAPI. Проблема в том, что я знаю WinAPI еще хуже, поэтому я даже не представляю, как это исправить. Поэтому я поступил следующим образом - убрал свойство WS_CLIPCHILDREN главного окна. После этого глюки с перерисовкой дочерних элементов исчезли, но они стали сильно мигать при изменении размеров окна.

Перенести из PtokaX 0.5.0.0 mod 4 (этот мод никогда не выкладывался, поскольку я не закончил его) событие IsRegistered(). Оно используется для хранения аккаунтов во внешних БД, и в вышеназванной модификации вполне себе работало. Но в версии 0.5.0.1 PPK так отрефакторил ту часть кода, что добавить его стало некуда. Возможно, когда-нибудь я таки решусь на переделку.

Исправить странные глюки в работе функции SendToNonisolated. Иногда при изменении прав профилей сообщения, отправленные с помощью этой функции начинают получать все юзеры, включая изолированных. Причину пока не выяснил.

P.S. Не забывайте сообщать о найденных ошибках

Версии, основанные на PtokaX 0.5.0.0
mod 3
Исправлено: При изменении настроек главного бота или ОпЧата из GUI, бот со старым ником оставался в списке юзеров до перезапуска хаба.
Изменено: Профиль по умолчанию для юзеров, регистрируемых с помощью GUI.
Добавлено: Альтернативный синтаксис для функции регистрации бота: Core.RegBot(sNick, sMyINFOString, bHaveKey). Полная проверка синтаксиса $MyINFO не производится.
Добавлено: Возможность отключения сжатия zlib. Отключается на вкладке "Больше настроек".
Изменено: Отключение проверки ключа вынесено в настройки. В связи с этим был удален ключ командной строки /nokeycheck.
Исправлено: Незначительные исправления в языковом файле.

Изменения в библиотеках:
Устранено мелькание окна консоли при вызове функций os.execute и io.popen.
mod 2
Исправлено: Самодеятельность TinyXML, касающаяся обработки пустых символов. Несколько пустых символов подряд заменялись одним пробелом. По непонятной причине неразрывный пробел также считался пустым символом.
Добавлено: Функции Core.GetDCStats, Core.GetNetStats и Core.GetMemStats.
Добавлено: Консольная версия PtokaX, хранящая пароли в зашифрованном (SHA-256) виде.
Добавлено: Функция print. В GUI-версии функция выводит текст в окно ошибок скриптов, в консольной - в главный чат юзерам с профилем Master.
Добавлено: Сообщения об ошибках скриптов отправляются юзерам с профилем Master.
Исправлено: Пропущенные строки в языковом файле.

Изменения в библиотеках:
В библиотеке Lua параметры LUA_PATH_DEFAULT и LUA_CPATH_DEFAULT изменены на более каноничные, что позволит избежать проблем при подключении некоторых библиотек.
Из Lua удалены костыли, добавленные для совместимости с библиотеками Lua-AIO. В связи с этим были удалены библиотеки iup, tcps и udps.
Заменена библиотека iconv.
Добавлены библиотеки sha1 и sha2.
mod 1
Изменено: Для 32-разрядной версии метод вызова функций изменен на cdecl, что позволило испльзовать библиотеки, предназначенные для Lua-AIO и RusHub
Изменено: Положение и размеры кнопок на вкладке "Статистика"
Изменено: Отключено открытие скрипта по двойному клику в списке. Глубокого смысла в этом нет, просто мне так удобнее big_smile.gif
Исправлено: Доведен до ума файл русской локализации
Изменено: Настройки по умолчанию. Строковые параметры переведены на русский
Изменено: Список стран IP-To-Country: Добавлены коды стран, названия стран переведены на русский
Добавлено: В никах запрещены символы от \0 до \31
Добавлено: Блокировка неизвестных команд. Отключается на вкладке "Дополнительно"
Добавлено: Проверка прав доступа для команд !stats и !memstats
Добавлено: События BadPassArrival и ValidateDenideArrival
Добавлено: Параметр bZPipe, отображающий поддержку юзером сжатия. Код для Core.GetUserData - 64
Изменено: При сохранении настроек в файл записываются все параметры, а не только те, значения которых отличаются от значений по умолчанию
Добавлено: Возможность отключения приветствия (Этот хаб работает под управлением...). Включается на вкладке "Дополнительно" Имя параметра в настройках - ShowWelcome, ID для SetMan.(S/G)etBool - 57
Изменено: К черту бинарный бред. Список зарегистрированных юзеров снова хранится в файле XML
Исправлено: Ошибка IPToCountry - первый и последний адрес диапазона не считались его частью
Исправлено: При нажатии кнопки "Принять" настройки не сохранялись в файл (подозреваю, что кое-кто считает это фичей, а не багом big_smile.gif)

[attachment=6696:ptokax_0...mod3_x86.rar][attachment=6695:ptokax_0...mod3_x64.rar][attachment=6694:ptokax_0...mod3_src.z
ip]

Консольная версия, хранящая пароли в зашифрованном виде:[attachment=6697:ptokax_0...ass_sha2.rar]
Предыдущая версия, шифрующая пароли алгоритмом MD5:[attachment=6666:PtokaX_c...hashpass.rar]

Дополнительную информацию можно найти во втором сообщении данной темы
Nickolya, Setuper, Tsd, Ksan, prapor, Артём, Karumo, rival, KT315, Drakula, PPA, Kingston, Saymon21, dimetro, Reanimator, WINS, Alexey5176, SKIFI, KCAHDEP, MIKHAIL, Booth, мамин_парень, 96username96, KMV, НЕMaster-Grow, Sezam
18.2.2013, 23:15 Перепутал скрипты
Поток сознания с комментариями
GULAM33

Скрипт НЕ может отлавливать TTH, поскльку этот тип поиска скриптом игнорируется.
Код
        if from and stype ~= "9" and (CheckString(sstring) or (bBlockOther and tBlock[UID.sNick])) then
Артём, GULAM33
18.2.2013, 19:23 PXControl
Удаленное управление PtokaX 0.4.x.x
Изменил способ подключения LuaFileSystem. Теперь не должно быть проблем с разными названиями библиотеки. Текущая версия серверной части - 1.01a, скачать можно в первом сообщении данной темы.
Артём, мамин_парень
12.2.2013, 19:23 NoPedo
API2 | Блокировка поиска детского порно
NoPedo

Версия: 1.00
Версия API: API2 (PtokaX 0.4.0/0.4.1, LUA 5.1)
Автор: alex82

Описание: Скрипт блокирует поиск детского порно, используя заранее составленный список фраз.
Nickolya, Ksan, HackFresse, rival, Alexey, Saymon21, striker, KCAHDEP, Littlemuk, GULAM33, tammi_0909, Yamakasi, Unique
19.10.2012, 14:51 Вопросы Разработчикам Скриптов
вопросы по скриптам (мелкие вопросы)
1) Нет, для этого нужно предварительно преобразовать строку в нужный регистр.

2) Видимо, автор того скрипта решил перестраховаться big_smile.gif. Все таймеры скрипта удаляются при его остановке.

PS. Возможно в ранних версиях птоки был баг с удалением таймеров при остановке скриптов, и автор скрипта "исправил" его таким нехитрым способом. Если не лень, можете пересмотреть чейнджлог птоки, особенно версий с припиской "RC".
MIKHAIL
10.3.2012, 17:48 PXControl
Удаленное управление PtokaX 0.4.x.x
Доступна версия 1.01. Изменения:

* Изменен способ взаимодействия между потоками, благодаря чему удалось избавиться от регулярных падений программы.
* Исправлены многочисленные ошибки в графическом интерфейсе.
* Частично переписан код UDP-отладчика.
* Добавлена возможность отключить UDP-отладчик, сохранив при этом сообщения об ошибках скриптов.
* Оптимизирована работа с сокетами.
mariner, Артём, rival, Alexey, darkangel17, Kingston, Milena, Saymon21, dimetro, DEN 007, Damaks
2.3.2012, 14:20 Defend Chat
API 2 | Полностью автоматическая защита чата от спама
Могу подсказать еще один способ защиты чата от флудоботов (чтобы прочитать текст, вам необходимо стереть защитное покрытие с помощью монеты):
Подавляющее большинство самописных флудоботов не имеют поддержки сжатия (ZPipe/ZPipe0), в отличие от нормальных клиентов. Вся проблема в том, что птока не добавляет в таблицу юзера информацию о поддержке сжатия, и тому, кто решится написать скрипт, блокирующий чат по этому принципу, придется заниматься мазохизмом, отлавливая отправку клиентом команды $Supports
PomanoB, Enyby, мамин_парень
30.8.2011, 2:24 Tiny Hublist
Программа для создания хаблистов
Ksan

Адрес хаба можно?
Milena
15.6.2011, 23:45 Создание динамических страниц с помощью Lua
Пишем сайты на Lua
Saymon21

Даже не буду ходить по ссылке. bad_smile.gif

После ковыряния в коде некоторых библиотек от Kepler Project, у меня появились серьезные сомнения отностиельно вменяемости его авторов.
Milena
16.5.2011, 22:33 Создание динамических страниц с помощью Lua
Пишем сайты на Lua
Давно хотел продолжить эту тему, но все никак руки не доходили.

Итак, низкоуровневые функции:
[attachment=5831:web.lua]
Описание

Таблицы:

_SERVER - Окружение, полученное от web-сервера
_HEADERS - Заголовки HTTP. По умолчанию в таблице содержится один заголовок: content-type: text/html.
Все заголовки должны быть установлены до отправки каких-либо данных web-серверу.
На момент первой отправки данных в таблице должен содержаться как минимум один заголовок, в противном случае web-сервер сообщит о внутренней ошибке.
_GET - Переменные, полученные при помощи метода GET.
_POST - Переменные, полученные при помощи метода POST.
_REQUEST - Переменные, полученные при помощи методов GET и POST.
_COOKIE - Куки, сохраненные на стороне клиента.
_SET_COOKIE - Куки, которые необходимо сохранить на стороне клиента.
Каждое значение должно быть таблицей, содержащей собственно значение куки и время истечения в формате unix-epoch.
Если время истечения не указано, куки сохраняется до конца сессии.
Для удаления куки, установите его заведомо просроченным.

В таблицах _HEADERS,_GET,_POST,_REQUEST и _COOKIE все индексы хранятся в нижнем регистре.
Таблицы _SERVER,_GET,_POST,_REQUEST и _COOKIE заполняются данными лишь при необходимости, поэтому к ним нельзя применять функции pairs и next.


Функции:

echo(...) - Функция, использующаяся для отправки данных клиенту.
При первой отправке данных помимо самих данных отправляются заголовки, после чего добавление или изменение заголовков становится невозможным, а данная функция становится ссылкой на функцию io.write
print(...) - Функция, использующаяся для отображения произвольных значений. Результат помещается в теги <pre><code></code></pre>. Данную функцию необходимо использовать только в целях отладки.
tprint(tTable[, sTableName]) - Функция отображает содержимое таблицы tTable. Данную функцию необходимо использовать только в целях отладки.


Переменные:

_HEADERS_SENT - Переменная, определяющая, были ли отправлены заголовки. Менять значение этой переменной вручную не рекомендуется.

Пример использования

Код
#!C:\Program Files\lua\lua.exe

dofile("web.lua")

if not _REQUEST.mode or _REQUEST.mode == "main" then
    echo("Hello world!!!")
elseif _REQUEST.mode == "ip" then
    echo("Ваш IP: ",_SERVER.REMOTE_ADDR or "?")
elseif _REQUEST.mode == "useragent" then
    echo("Ваш User-Agent: ",_SERVER.HTTP_USER_AGENT or "?")
else
    echo("<center><h2>Кулхацкер, да?</h2><br>А ну-ка иди отседова по добру по здорову. Не то глазки красненькие повыковыриваю, да ручки шаловливые пообломаю.</center>")
end

Nickolya, Milena, Saymon21
21.4.2011, 17:47 Tiny Hublist
Программа для создания хаблистов
Ksan

При отладке хаблиста я пинговал хабы из списка еще чаще. Если бы твой хаб был в списке во время отладки, я бы тоже оказался засранцем, идиотом, дебилом?
Milena
21.4.2011, 14:20 Tiny Hublist
Программа для создания хаблистов
Ksan

Если тебя так напрягают сообщения о пингах, то почему бы просто не отключить их? Или, как вариант, вынести в личку бота.
Milena
18.4.2011, 20:15 Tiny Hublist
Программа для создания хаблистов
Цитата
Цитата(Hammer @ 17.4.2011, 16:31) *
А как сделать что-бы хабы сами добавлялись? Или как сделать статистику типо этой? Хабов в списке: 161. Из них онлайн: 150, полностью проверено: 147.
Пользователи оставили комментариев: 36.

да,да...
Я понимаю что вам нравится хаблист BCETI, и Вы хотите чтобы этот имел такой же функционал - самостоятельное добавление хабов, статистика, комментарии, блекджек, шлюхи, и.т.д. Но извините, тот движок работает под управлением MySQL, а страницы генерируются cgi-скриптами. Здесь же выложен простейший хаблист, требующий для работы только вебсервер. Вы слишком много от него хотите.

И кстати, если бы я выложил движок хаблиста BCETI, вы бы с ним все равно не справились, поскольку вы и с этим, простейшим хаблистом справляетесь с трудом.

Sinsei
А что мешает засунуть эту фигню в блок, и явно указать, по какой стороне выравнивать его содержимое?

Код
<div style="text-align: left">
    <!-- Тут какая-то фигня -->
</div>


PS.
Код
                    '<ul><li>Всего хабов: '..hubs_count..'</li>'..
                    '<li>Онлайн хабов: '..online_hubs_count..'</li>'..
                    '<li>Общее число юзеров на хабах сети: '..total_users_count..'</li>'..
                    '<li>Общий размер шары: '..FormatSize(tonumber(total_share_size),true)..'</li>'..
                    '<li>В среднем на каждом хабе '..math.floor(total_users_count/online_hubs_count)..' юзеров и '..FormatSize(tonumber(total_share_size/online_hubs_count),true)..' шары</li>'..
                    '<li>Обновление информации происходит один раз в час.</li>'..
                    '</ul>
О боже extreme_sexy_girl.gif . Не показывайте мне это - иначе мои глаза вытекут, и я больше не смогу выпускать новые версии.
Milena
17.4.2011, 2:07 Tiny Hublist
Программа для создания хаблистов
Доступна версия 1.01

Изменения:
Исправлено отображение символов $ и | в строках, полученных от хаба.
Добавлена переменная path, которая позволит упростить запуск скрипта в тех случаях, когда интерпретатору не удалось определить рабочую директорию.
Добавлена возможность установки ника, пароля и шары для каждого хаба.
Весь HTML-код вынесен в шаблон.
Добавлена возможность изменения сортировки списка хабов.
Добавлена возможность быстрой смены шаблона.
Добавлен альтернативный шаблон страницы.
Добавлено автоматическое определение страны хаба по IP-адресу.
Добавлена возможность создания хаблиста в формате XML.
Добавлена возможность отправки списка хабов на удаленный FTP-сервер.

Цитата(ЕгО_ТенЬ @ 16.4.2011, 23:03) *
а можно добавить строку в хаблист типо - локалка , локалка +нэт
Можно в версии 1.01. Для этого меняем 125 строку:
Код
        table.insert(hubs,{Addr = hub[1],Info = Ping(pingaddr,port,hub[2],hub[3],hub[4]),Time = os.time(),Country = tDNS[addr] and tGeoIP[tDNS[addr]] or "??",UserString = hub[5]})

Теперь добавляем где-то после 204 строки:
Код
                        :gsub("{USERSTRING}",v.UserString or "")

Теперь можно использовать переменную {USERSTRING} внутри строки хаблиста. При этом настройки хаба должны выглядеть так:
Код
{"dc.example.com:411", [5] = "Какая-то строка"},


KauH™, Ksan, Артём, Milena, dj hoodo, Saymon21, Damaks, Underconstruction
13.4.2011, 15:39 Tiny Hublist
Программа для создания хаблистов
Saymon21

Потому что большинству юзеров (в том числе мне) непонятно, зачем переходить со старого доброго NMDC на нечто невразумительное. Какие в нем преимущества? Чем оно лучше?
Milena
13.4.2011, 14:10 Tiny Hublist
Программа для создания хаблистов
Saymon21
Я об этом думал. Но есть одна проблема - насколько мне известно, ADC использует кодировку UTF8. А это значит что прежде чем добавлять его поддержку, необходимо переходировать все шаблоны страниц и базы данных. Для данного хаблиста это вполне возможно - тут нет БД, а шаблон всего один. А вот BCETI... Даже страшно подумать об этом. Тем более протокол ADC по сути мертворожденный. Даже не знаю, стоит ли браться за это.

Цитата
Теперь совет, который вам может пригодиться (не связан с моей вышеобозначенной проблемой) - ник бота - tiny - может быть занят или зареген на хабах, и в этих хабах пинг не прокатит, поэтому лучше изменить название бота-пингера для входа на что-то другое, менее распространённое. Я сменил на tinylist
Ник нужно менять в любом случае, причем на что-нибудь оригинальное, и совпадающее с названием сайта. Хотя бы потому, что дефолтный ник со временем будет забанен на большинстве хабов благодаря нубам юзерам, использующим данную программу с неоправданно маленькими промежутками времени между пингами.
Milena
13.4.2011, 12:41 Tiny Hublist
Программа для создания хаблистов
Цитата
У меня вопрос: программа может создавать html-файл на ftp-сервере?
Текущая версия - нет. Но могу добавить в следующей.

Ksan

Тут используется модифицированная библиотека сокетов. Под какой сборкой Lua ты ее запускаешь?

PS. В архиве есть исходник. Если желаешь, можешь попробовать пересобрать библиотеку самостоятельно.
Milena
13.4.2011, 7:02 Tiny Hublist
Программа для создания хаблистов
Tiny Hublist

Версия: 1.01
Платформа: Win32
Автор: alex82

Описание:
Для демонстрации работы этого пингера, я решил написать небольшую программу для создания хаблиста. Программа работает следующим образом: хабы из списка проверяются на работоспособность, после чего результат сохраняется в HTML-файл. Соответственно, для создания хаблиста требуется только сама программа, и любой Web-сервер.

Скриншоты



[attachment=5945:tinyhublist_1.02.rar]

Старые версии:
[attachment=5755:tinyhublist_1.01.zip][attachment=5746:tinyhublist_1.00.zip]
Nickolya, ustas, KauH™, Ksan, Артём, Accelerator, KT315, Alexey, ЕгО_ТенЬ, darkangel17, Kingston, Milena, CrazyKiller, baltica, PSIX, Hammer, dj hoodo, Saymon21, dimetro, JumpEXZ, RAND(i)M, DEN 007, @_JuNiOr_@, Sinsei, Damaks, Гарик БатьковиЪ, STIVAN, Osimus, Underconstruction, Mustik, AltSide, мамин_парень
11.4.2011, 18:12 Пингер NMDC-хабов
Ударим опенсорсом по нездоровой шняге
Эта "уязвимость" исправляется при помощи двух строк кода, и это может сделать сам юзер, если чувствует в себе зачатки паранойи.
Milena
8.4.2011, 20:22 Пингер NMDC-хабов
Ударим опенсорсом по нездоровой шняге
Stribog

Теоретически возможно всё. Даже падение метеорита на башку в ясный летний день.

Вы на практике это проделайте, а потом пишите об уязвимости.

И кстати. Если Lua-скрипты работают на многих хабах, и хакнуть Lua так просто, то почему до сих пор ни один хаб не был взломан с использованием Вашего конгениального метода?

Цитата
ДА было бы тут что красть =)

Ну да, это Вам не китайский код в 3-4 т строк, написанный хрен знает на чем, а файлик размером 365 строк, 85 из которых комментарии (но не смотря на это уверенно пингующий подавляющее большинство хабов). Его не украсть потому что его не продать, ибо лохи платят за количество. Да и не нужно его красть - он раздается бесплатно в первом посте темы. big_smile.gif

PS. Газификация лужи проходит как-то не совсем успешно.
Taulalan, Ksan, Артём, Milena
6.4.2011, 21:54 Пингер NMDC-хабов
Ударим опенсорсом по нездоровой шняге
Stribog

А конкретнее? Где Вы там нашли слабые места БЕЗОПАСНОСТИ? Можете на номера строк указать?

Или это всего лишь пук в лужу?
Milena
3.4.2011, 15:31 Хаблист BCETI.com
У него клиническая смерть. Сегодня реанимируем.
Milena
3.4.2011, 7:03 RusHub and MySQL?! есть ли и как ...
вопросы про mysql, md5 hash и т.д.
Как можно понять из мануала по php, функция md5 имеет обе "реализации". Если вызвать ее так:
Код
md5($str, true)
она вернет то же самое что и библиотека OpenSSL.

Это же касается библиотеки md5 для Lua:
Код
md5.sum (message)
Вернет бинарное представление md5 длиной 16 символов, а
Код
md5.sumhexa (message)
вернет двоично-десятичное представление длиной 32 символа.

Вывод: внимательно читаем мануалы. big_smile.gif
Kingston, Saymon21, DRUG_ADDICT
1.4.2011, 22:45 Пингер NMDC-хабов
Ударим опенсорсом по нездоровой шняге
В последнее время появились нехорошие тенденции - рекламировать коммерческие проекты на некоммерческих ресурсах, выкладывать софт с закрытым кодом и встроенными шеллами, пытаться завлечь бесплатных лохов бетатестеров в закрытые собственнические проекты, и.т.д. И я решил слегка ударить по этой шняге нехорошим тенденциям выкладыванием софта с аналогичным функционалом, но открытого и бесплатного.

Название: NMDC Hubs Pinger
Версия: 1.00
Системные требования: Lua 5.1, LuaSocket
Лицензия: GPL v3
Автор: alex82

Описание:
Данный пингер не является самостоятельным программным продуктом, но может быть использован при написании хаблистов на Lua. Именно этот пингер (с небольшими изменениями) используется на хаблисте BCETI при добавлении хаба.

Использование

Код
Ping(sAddress, iPort[, sNick, sPassword, sShare/iShare])

sAddress - Адрес хаба. Обязательный параметр. Правильность адреса не проверяется - Вам необходимо сделать это самостоятельно перед вызовом функции.
iPort - Порт хаба. Обязательный параметр. Порт должен быть числом. Правильность порта не проверяется.
sNick - Ник пингера. Если ник не указан или равен nil, используется ник, указанный в настройках.
sPassword - Пароль. Если пароль не указан и при подключении хаб потребует его, пингер отключится от хаба.
sShare/iShare - Шара. Если шара не указана, используется шара, указанная в настройках.


Возвращаемые значения:
Функция возвращает таблицу, которая содержит следующие индексы:
Online - true если хаб онлайн, или false если пингеру не удалось соединиться с хабом
State - Состояние пинга:
-1 - Неизвестная ошибка,
1 - Не удалось соединиться,
2 - Хаб не отправил $Lock",
3 - Пинг запрещен настройками хаба,
4 - Хаб не поддерживает $BotINFO/$HubINFO (поскольку некоторые хабы поддерживают пинг, но не сообщают об этом в $Supports, код, проверяющий $Supports, закомментирован, и статус 4 никогда не устанавливается),
5 - Хаб полон,
6 - Проверка ника не пройдена,
7 - Хаб не ответил на команду $BotINFO,
8 - Ошибка в строке $HubINFO,
9 - Полностью проверен


Также в таблице могут содержаться индексы:
Users - Число юзеров на хабе
Share - Общая шара хаба, килобайт
Name - Название хаба
Descr - Описание хаба
MaxUsers - Максимум юзеров
MinShare - Минимальная шара
MinSlots - Минимум слотов
MaxHubs - Максимум хабов
Info.Email - Адрес e-mail владельца хаба
HubSoft Софт хаба

LastMsg - Последнее сообщение, отправленное хабом
LastErr - Сообщение об ошибке

Пример использования:
Код
dofile("pinger.lua")
local info = Ping("dc.myhub.pp.ua",411)
print("Hub online:",info.Online and "yes" or "no")
if info.Online then
    print("Hub name:",info.Name or "?")
    print("Hub description:",info.Descr or "?")
    print("Users:",info.Users or "?")
    print("Share:",info.Share and info.Share.." kb" or "?")
    print("Max users:",info.MaxUsers or "?")
    print("Min share:",info.MinShare or "?")
    print("Min slots:",info.MinSlots or "?")
    print("Max hubs:",info.MaxHubs or "?")
    print("Hub soft:",info.HubSoft or "?")
else
    print("Error:",info.LastErr or "?")
end

[attachment=5719:pinger.lua]
Nickolya, ustas, Invisible, Ksan, KT315, Alexey, Kingston, Milena, Saymon21, RAND(i)M, DEN 007, SKIFI, Mustik, AltSide
28.3.2011, 16:57 Хаблист BCETI.com
Там была переустановка софта. Всю ночь big_smile.gif.

А все баги движка, приводящие к ошибкам 500 я давно выловил.
Milena
28.3.2011, 0:58 Создание динамических страниц с помощью Lua
Пишем сайты на Lua
Цитата
Apache/1.3.29 Server at localhost Port 80
Может дело не в руках вовсе? Бытует мнение что Apache 1 устарел.
Milena
23.3.2011, 10:47 Библиотека mtime
Windows only | Время в миллисекундах
...или Lua-AIO с wxLua. Или тот же Lua-AIO с созданием ветви и использованием ThreadWait()
Milena

14 страниц V  < 1 2 3 4 > » 
RSS Сейчас: 29.3.2024, 4:05