====== Verlihub ====== ===== MySQL и русский язык ===== При использовании MySQL версии 4.1 и выше возникают трудности с поддержкой русского языка. Чтобы их разрешить, сделайте следующее: 1. Выполните команду ALTER DATABASE имя_базы CHARSET cp1251; 2. Посмотрите, что вернёт команда SHOW VARIABLES LIKE 'character_set_%'; Если **character_set_server** и **character_set_client** равно cp1251, то больше никаких действий не нужно. Иначе следует сделать следующее: ==== Вариант 1: Настройка сервера MySQL ==== Задаем кодировку в настройках mysql сервера (как правило файл с настройками - /etc/my.cnf или /etc/mysql/my.cnf) [mysqld] #Кодировка, в которой содержаться данные в таблицах default-character-set=cp1251 [client] #Кодировка по умолчанию для подключающихся клиентов default-character-set=cp1251 подробнее о кодировке в mysql можно прочитать [[http://www.mysql.ru/docs/man/Character_sets.html|тут]], о файле my.cnf - [[http://www.mysql.ru/docs/man/Option_files.html|здесь]]. Этот вариант не подходит, если нет возможности изменить конфигурацию сервера MySQL или сервер используется совместно с другими программами, которым такие изменения помешают. **From Splint:** Мне помог такой вариант секции [mysqld] default-character-set=cp1251 skip-character-set-client-handshake **From Kompik:** От себя добавлю что таблицы должны по команде SHOW CREATE TABLE SetupList Выдавать DEFAULT CHARSET=cp1251 После этого в VerliHub'e все будет нормально отображаться, без этого у меня неверно отображалось имя Security бота. **From InGan:** От себя добавлю. мне только помог этот вариант с изменением кодировки работы мускула по умолчанию в FreeBSD у провайдера FirstVDS и не забудьте рестартовать свой сервер, почемуто рестарт мускула не помог. ==== Вариант 2: lua-скрипт ==== В случае, когда нет возможности изменить настройку сервера, можно воспользоваться альтернативным решением - выполнить команду SET NAMES cp1251; после запуска хаба. Это можно сделать с помощью простого lua-скрипта: -- Charset workaround script -- by Shurik function Main() VH:SQLQuery("SET names cp1251"); end Скрипт надо будет разместить в каталоге $VERLIHUB_CFG/scripts. Разумеется, необходим плагин LuaScript. Возможно, что некоторые русскосодержащие параметры, которые зачитываются хабом до загрузки скрипта, при этом не смогут быть нормально отображены, например, имена ботов или фильтры ForbiddenWords. ==== Вариант 3: исправить кодировку в исходниках ==== Если не лень поправить исходники, чтобы не трогать mysql, то в файле cmysql.cpp после строчки mysql_options(mDBHandle,MYSQL_OPT_COMPRESS,0); вставляем mysql_options(mDBHandle,MYSQL_INIT_COMMAND,"set names cp1251"); После этого следует сделать make и make install Примечание: замечено, что в Gentoo это не помогает. Более правильный путь - в следующем варианте. ==== Вариант 4: патч для поддержки опции db_charset ==== Идея является продолжением варианта 3. Берём {{ :network:db_charset.patch |отсюда}} (или {{ :network:db_charset_old.patch |отсюда}} для более старых версий) этот патч, а в dbconfig прописываем db_charset = cp1251 http://verlihub.aliki.ru/index.php?title=MySQL_и_русский_язык ===== Configure firewall for VerliHub ===== **[1]** As a good security measusre we shouldn't be running our hub with root account. Thus we cannot use 411 port. A good way arround for this is to forward through iptables the 411 port to 1411 or 4111 or whichever you use. IPTABLES -A PREROUTING -t nat -i eth0 -p tcp --dport 411 -j REDIRECT --to-port 1411 **[2]** iptables -F INPUT # accept all packets that belong to known connections iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # throw away all nonsense packets iptables -A INPUT -p tcp -m tcp -m state --state INVALID,UNTRACKED -j DROP # repeat these two lines for every hub port you use iptables -A INPUT -p tcp -m tcp --dport 411 -m limit --limit 500/sec -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 411 -j DROP #don't forget things like www, mail and ssh iptables -A INPUT -p tcp -m tcp --dport 80 -m limit --limit 100/sec -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 80 -j DROP iptables -A INPUT -p tcp -m tcp --dport 25 -m limit --limit 3/sec -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 25 -j DROP # don't limit ssh too strictly iptables -A INPUT -p tcp -m tcp --dport 22 -m limit --limit 1000/sec -j ACCEPT # rest of the script does not accept tcp iptables -A INPUT -p tcp -m tcp -j DROP #if you run a nameserver iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT #if you want icmp iptables -A INPUT -p icmp -m icmp --icmp-type any -m state --state INVALID -j DROP iptables -A INPUT -p icmp -j ACCEPT #if you use DHCP iptables -A INPUT -p udp -m udp --sport 67 --dport 68 -j ACCEPT # enable this if you are sure there are no bugs in the script. #iptables -P INPUT DROP * http://forums.verlihub-project.org/viewtopic.php?f=53&t=754 * http://forums.verlihub-project.org/viewtopic.php?f=53&t=1611 ===== Ссылки ===== * [[https://github.com/Verlihub/ledokol|Biggest multifunctional security and entertainment Lua script for Verlihub]] | http://ledo.feardc.net/ * http://verlihub.aliki.ru/ * [[http://habrahabr.ru/blogs/infosecurity/92343/|Вытаскиваем кучу паролей из пиринговых сетей]] * [[http://habrahabr.ru/blogs/p2p/116200/|Поисковик по DC]] * [[http://verlihub.aliki.ru/forum/viewtopic.php?f=2&t=600|Новый Verlihub 1.0.0]]