Установка и настройка ProFTPd в Ubuntu

ProFTPd — FTP-сервер для Linux и UNIX-подобных операционных систем.

Простая установка:

sudo apt-get install proftpd

Во время установки нужно будет выбрать режим запуска:
(standalone — самостоятельно, тоесть автоматически будет грузится при запуске системы или inetd — вручную)
Расположение конфига:
/etc/proftpd/proftpd.conf

Немного параметров конфига:

Include /etc/proftpd/modules.conf
# отключаем IPv6 протокол из-за ненадобности
UseIPv6 off
IdentLookups off
# имя сервера
ServerName "Debian"
ServerType standalone
DeferWelcome off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin welcome.msg
DisplayChdir .message true
ListOptions "-l"
# Запрещаем заливать файлы начинающиеся с точки
DenyFilter \*.*/
# Указываем домашний каталог
DefaultRoot /home/ftp
# Запрещаем пользователям ходить выше своего домашнего каталога
DefaultRoot ~
# Порт сервера, учитывая большое количество сканеров ботов по интернету, лучше сменить на произольный
Port 21
MaxInstances 30
# пользователь и группа от имени которых работает proftpd
User proftpd
Group nogroup
# ограничение на создание файлов и папок
Umask 022 022
AllowOverwrite on
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
# Стандартный параметр который подгружает все конфиги в указанной директории
Include /etc/proftpd/conf.d/
# По желанию можно присвоить алиас для имени пользователя
# UserAlias
# Запрещаем подключаться к серверу пользователю root
RootLogin off
# Разрежаем докачивать файлы
AllowStoreRestart on

# Перезагружаем proftpd чтобы применились новые настройки конфига

sudo /etc/init.d/proftpd restart

Настройка ProFTPd с использованием MySQL базы данных пользователей:

Устанавливаем дополнительный пакет:

sudo apt-get install proftpd-mod-mysql

В начале конфига /etc/proftpd/proftpd.conf добавить:

Include /etc/proftpd/sql.conf

Ниже раскоментироовать:

DefaultRoot ~
RequireValidShell off

Создаем отдельного системного пользователя и группу к которым будут привязаны виртуальные пользователи из MySQL базы данных:

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser

Выполняя sql запрос создаем любую базу данных и пользователя с привилегиями на нее, например proftpd:

create database proftpd;
GRANT SELECT, INSERT, UPDATE, DELETE ON proftpd.* TO 'proftpd'@'localhost' IDENTIFIED BY 'пароль';
GRANT SELECT, INSERT, UPDATE, DELETE ON proftpd.* TO 'proftpd'@'localhost.localdomain' IDENTIFIED BY 'пароль';
FLUSH PRIVILEGES;

Создаем в этой новой базе две таблицы:

CREATE TABLE ftpgroup (
 groupname varchar(16) NOT NULL default '',
 gid smallint(6) NOT NULL default '2001',
 members varchar(16) NOT NULL default '',
 KEY groupname (groupname)
 ) ENGINE=MyISAM COMMENT='ProFTP group table';

CREATE TABLE ftpuser (
 id int(10) unsigned NOT NULL auto_increment,
 userid varchar(32) NOT NULL default '',
 passwd varchar(32) NOT NULL default '',
 uid smallint(6) NOT NULL default '2001',
 gid smallint(6) NOT NULL default '2001',
 homedir varchar(255) NOT NULL default '',
 shell varchar(16) NOT NULL default '/sbin/nologin',
 count int(11) NOT NULL default '0',
 accessed datetime NOT NULL default '0000-00-00 00:00:00',
 modified datetime NOT NULL default '0000-00-00 00:00:00',
 PRIMARY KEY (id),
 UNIQUE KEY userid (userid)
 ) ENGINE=MyISAM COMMENT='ProFTP user table';

Раскомментируем в конфиге /etc/proftpd/modules.conf две строки:

LoadModule mod_sql.c
LoadModule mod_sql_mysql.c

Отредактируем конфиг /etc/proftpd/sql.conf:

SQLBackend mysql
SQLAuthTypes Crypt
SQLConnectInfo ftp@localhost ftp password
SQLUserInfo ftpuser userid passwd uid gid homedir shell
SQLGroupInfo ftpgroup groupname gid members
# Update count every time user logs in
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser

Добавляем в MySQL базу желаемого пользователя:

INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', 2001, 'ftpuser');
INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`) VALUES ('', 'имяпользователя', ENCRYPT('пароль'), 2001, 2001, '/srv/ftp/имяпользователя', '/sbin/nologin', 0, '', '');

Перезагружаем proftpd чтобы применились новые настройки конфига:

sudo /etc/init.d/proftpd restart

Если что-то не получается, можно остановить sudo /etc/init.d/proftpd stop и запустить командой proftpd -nd6, после чего вся подробная информация о работе proftpd будет выводится на экране.

Вот для примера содержимое конфигурационного файла при котором proftpd брал данные пользователей из mysql базы данных биллинга:

ServerName		"Name"
ServerType		standalone
ServerIdent		off
DefaultServer		on
ScoreboardFile		/var/run/proftpd.scoreboard
Port			21
ServerAdmin             admin@example.net
Umask			002
MaxInstances		300
CommandBufferSize	512
UseReverseDNS		off
IdentLookups		off
RequireValidShell	off

DefaultAddress		0.0.0.0
PassivePorts 		30000 50000

TimesGMT		off

TimeoutSession		1800
TimeoutStalled		300

User			ftp
Group			ftp

CharsetLocal		KOI8-U
CharsetRemote		CP1251

ExtendedLog		/var/log/proftpd.log ALL ideal
LogFormat		ideal "%t %a %U %m %D %f %b %T"
TransferLog 		NONE

AllowRetrieveRestart	on
AllowStoreRestart	on

DefaultRoot ~

AllowOverwrite	off

<Limit SITE_CHMOD>
  DenyAll
</Limit>

<Limit Write>
    AllowAll
</Limit>

<Limit READ>
    AllowAll
</Limit>

<Limit DELE RMD XRMD RNFR RNTO>
    AllowUser myadmin manager
    DenyAll
</Limit>

AuthOrder 		mod_auth_unix.c mod_sql.c

SQLAuthTypes		Plaintext
SQLAuthenticate	users
SQLConnectInfo		base@192.168.0.1:3306 mysqluser password
SQLDefaultGID		1003
SQLDefaultUID		1003
SQLDefaultHomedir	/ftp
SQLUserInfo		`abon` `login` `password` "NULL" "NULL" "NULL" "NULL"
SQLUserWhereClause	"killed!='killed'"

#SQLNamedQuery	auth	SELECT "login,password,1003,1003,'/usr/home/ftp','' from abon where killed!='killed' and login = '%u'"
#SQLUserInfo		custom:/auth
#SQLLogFile		/var/log/proftpd_sql.log

<Directory ~>

</Directory>

Установка и запуск arpwatch

arpwatch — демон анализирует ARP-ответы на сетевом интерфейсе и запоминает соответствие IP-адресов и MAC-адресов. Как только соответствие нарушено, или появляются новые адреса — сообщает об этом на электронную почту.

Команда установки в Ubuntu/Debian:

apt-get install arpwatch

Приведу пример конфигурационного фала, который должен находится по адресу /etc/arpwatch.conf:

eth0 -m arp@domain.com
#если на сетевом интерфейсе настроены Vlan:
eth0.1 -m arp@domain.com
eth0.15 -m arp@domain.com
eth0.47 -m arp@domain.com
#и т.д.

Данные отправляются на указанную почту и сохраняются в директории /var/lib/arpwatch в отдельный файл для каждого сетевого интерфейса, которые потом можно просмотреть и увидеть какие MAC и IP адреса были в сети.

Опишу дополнительные ключи запуска:
-d (Режим отладки, отключаются почтовые сообщения, информация выводится в консоль)
-i (указание имени используемого сетевого интерфейса)
-N (отключение сообщений о подменах)
-n (указание сети для мониторинга)
-r (чтение и анализирование данных из файла, записанного через tcpdump, информация выводится в консоль)
-u (запуск от имение указанного пользователя)
-f (установка имени файла базы данных, по умолчанию arp.dat)

Пример типов основных сообщений которые шлет arpwatch:
new activity (Когда пара ip+mac которая не использовалась больше 6 месяцев, появилась в сети)
new station (Когда в сети обнаруживается ранее не обнаруженное устройство)
flip flop (Когда Ethernet-адрес изменился с одного известного на другой, когда в сети есть одинаковые адреса)
changed ethernet address (В ранее обнаруженной паре ip+mac изменился ip или mac адрес)

Проверить запущен ли arpwatch можно командой:

ps -ef | grep arpwatch

Замечал старое дополнение arpwatch + sql на sources.homelink.ru/arpwatch

Настройки MMS украинских операторов для iPhone

Открываем: Настройки > Основные > Сотовые данные > Сотовая сеть передачи данных и там где MMS прописываем настройки своего оператора.

Djuice Украинa
MMSC: httр://mms.kyivstar.net
Proxy: 10.10.10.10:8080
APN: mms.djuice.com.ua
Username: mms
Password: mms

Киевстар
MMSC: httр://mms.kyivstar.net
Proxy: 10.10.10.10:8080
APN: mms.kyivstar.net
Username: mms
Password: mms

МТС-Украина
MMSC: httр://mms/
Proxy: 192.168.010.010:8080
APN: mms
Username: пусто
Password: пусто

Билайн-Украина
MMSC: httр://mms/
Proxy: 172.29.18.192:8080
APN: mms.beeline.ua
Username: пусто
Password: пусто

Life Украина
MMSC: httр://mms.life.com.ua/cmmsc/post
Proxy: 212.58.162.230:8080
APN: mms
Username: пусто
Password: пусто

Компиляция Trinity Core на Ubuntu Server

Устанавливаем необходимые дистрибутивы:
sudo apt-get install build-essential autoconf libtool gcc g++ make cmake git-core patch wget links zip unzip unrar libncurses5-dev
sudo apt-get install openssl libssl-dev mysql-server mysql-client libmysqlclient15-dev libmysql++-dev libreadline6-dev zlib1g-dev libbz2-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-system-dev libboost-program-options-dev

Добавляем пользователя в системе от имени которого будет запускаться сервер:
sudo adduser trinity

По сути ACE и OpenSSL устанавливаются командами выше, но в случае проблем их можно скомпилировать вручную как указано ниже. Тогда желательно удалить их перед компилированием из системы к примеру такой командой apt-get autoremove libace-dev. Командой apt-cache search ace можно посмотреть какие файлы есть в репозитории Ubuntu и также версию ACE.

Устанавливаем ACE:
wget http://download.dre.vanderbilt.edu/previous_versions/ACE-6.0.3.tar.gz
(другие версии: http://download.dre.vanderbilt.edu/previous_versions/)

Распаковываем скачанный архив и открываем директорию:
tar xvzf ACE-6.0.3.tar.gz
cd ACE_wrappers
Создаем каталог для компиляции и открываем его:
mkdir build && cd build
Конфигурируем и устанавливаем:
../configure —prefix=/home/<папка пользователя>/.sys/
make
make install
Возвращаемся обратно в директорию пользователя:
cd ~
Устанавливаем OpenSSL:
Скачиваем последнюю версию с http://openssl.org/source/:
wget http://openssl.org/source/openssl-0.9.8o.tar.gz
Распаковываем скачанный архив и открываем директорию:
tar -xvf openssl-0.9.8o.tar.gz
cd openssl-0.9.8o
Конфигурируем и устанавливаем:
./config —prefix=/home/<папка пользователя>/.sys shared
make
make install
Возвращаемся обратно в директорию пользователя:
cd ~

Загружаем исходники Trinity:
git clone git://github.com/TrinityCore/TrinityCore.git
Для применения своих патчей необходимо до компиляции поместить патч в директорию с исходниками и выполнить команду:
patch -p1 < имя_патча.patch
Открываем директорию с исходниками, создаем каталог для компиляции и открываем его:
cd TrinityCore-master && mkdir build && cd build
Конфигурируем на свое усмотрение (это всего лишь пример):
cmake ../ -DPREFIX=/home/<папка пользователя>/server -DTOOLS=1
или так
cmake ../ -DPREFIX=/home/<папка пользователя>/server -DTOOLS=1-DCMAKE_C_FLAGS=»-O3 -pipe» -DCMAKE_CXX_FLAGS=»${CMAKE_C_FLAGS}» -DDO_RA=1 -DLARGE_CELL=1 -DACE_LIBRARY=/home/<папка пользователя>/.sys/lib/libACE.so -DACE_INCLUDE_DIR=/home/<папка пользователя>/.sys/include/ -DSSLLIB=/home/<папка пользователя>/.sys/lib/libssl.so
Если нужно указываем путь к gcc: -DCMAKE_C_COMPILER=/usr/bin/gcc-4.6
Если нужно указываем путь к g++: -DCMAKE_CXX_COMPILER=/usr/bin/g++-4.6

Параметры которые можно указать при конфигурации:
-DACE_LIBRARY=<путь к библиотеке ACE > (полный путь к библиотеке libACE.so, если ACE установлено «глобально», то данный флаг не применяется )
-DACE_INCLUDE_DIR=<путь к каталогу includes/headers, вашей библиотеки ACE> (полный путь к include директории ACE, если ACE установлено «глобально», то данный флаг не применяется )
-DOPENSSL_LIBRARIES=<путь к библиотеке OpenSSL> (путь к библиотеке OpenSSL library, если OpenSSL установлено «глобально», то данный флаг не применяется )
-DOPENSSL_INCLUDE_DIR=<путь к каталогу include, вашей библиотеки OpenSSL > (путь к каталогу include, вашей библиотеки OpenSSL, если OpenSSL установлено «глобально», то данный флаг не применяется)
-DSCRIPTS Сборка сервера и скриптов.
-DTOOLS Собрать так же и экстракторы карта/коллизии/дбц.
-DUSE_SFMT Использовать SFMT как случайный генератор чисел.
-DWITH_WARNINGS Показывать предупреждения.
-DWITH_COREDEBUG «собрать в дебаге».
-DWITH_SQL Скопировать SQL-файлы в каталог с установленным сервером.
-DPREFIX Задать каталог установки.

Компилируем:
make -j (число ядер процессора + 1) //пример для четырех ядерного процессора: make -j 5
make install
Настраиваем конфиги и переименовываем их:
mv /home/<папка пользователя>/server/etc/worldserver.conf.dist /home/<папка пользователя>/server/etc/worldserver.conf
mv /home/<папка пользователя>/server/etc/authserver.conf.dist /home/<папка пользователя>/server/etc/authserver.conf
Извлечение карт:
После компиляции ядра с использованием флага -DTOOLS=1 в папку bin должны скомпилироваться такие фалы как: mapextractor, vmap3extractor, vmap3assembler. Копируем их в директорию с World of Warcraft и запускаем их по очереди:
./mapextractor
./vmap4extractor
mkdir vmaps
./vmap4assembler Buildings vmaps
После создаем в папке с сервером папку к примеру «data» перемещаем в нее созданные экстракторами карт директории. Прописываем в worldserver.conf путь к данной папке.

Запуск:
auth.sh (путь к данному простому скрипту, в случае правильного запуска, можно сразу поместить в /etc/rc.local для автоматического запуска при старте системы)
#!/bin/bash
while :; do
/home/папкапользователя/server/bin/authserver -c /home/папкапользователя/server/etc/authserver.conf
sleep 10
done

world.sh
#!/bin/sh
while :; do
servlog=’/home/папкапользователя/server/logs/server.log’;
outpatch=’/home/папкапользователя/server/logs/crash/’;
date=`date «+%Y-%m-%d_%H:%M:%S»`;
echo «Server CRASHED !!! Start Bugreport System.» >> $outpatch$date.txt;
echo «Server.log Log FILE Last 30 Lines:» >> $outpatch$date.txt;
cat $servlog | tail -n 30 >> $outpatch$date.txt;
echo «» >> $outpatch$date.txt;
echo «END bugtracker system.» >> $outpatch$date.txt;
/home/папкапользователя/server/bin/worldserver -c /home/папкапользователя/server/etc/worldserver.conf
sleep 20
done
Загрузка баз данных:
Необходимо скачать последнюю официальную компиляцию базы данных с [url=https://github.com/TrinityCore/TrinityCore/downloads]TrinityCore Github Downloads[/url]
Либо YTDB базу подогнанную под TrinityCore http://ytdb.ru/showthread.php?t=5227 (http://svn2.assembla.com/svn/ytdbase/) (http://trinity-core.ru/threads/ytdb-for-trinity-%D1%80%D0%B5%D0%BB%D0%B8%D0%B7%D1%8B.1339/page-5)
Также необходимо скачать все патчи опубликованные после полной версии и залить по очереди. Для YTDB если в архиве больше одного файла, то сначала заливать апдейты от ядра, потом от базы. Для официальной базы они находятся в скачанной ранее директории с исходниками ядра /sql/updates.

Вариант резервного копирования

Напишу ниже простой пример резервного копирования mysql баз данных с помощью mysqldump.

Создаем исполняемый файл и пишем в него строку:

mysqldump -u user -h localhost -pПАРОЛЬ имябазы | gzip -c &gt; /home/backups/mysqldump/имябазы/имябазы_`date +%Y-%m-%d`.sql.gz

Чтобы при дампе базы исключить некоторые таблицы необходимо дописать:
—ignore-table=база.таблица —ignore-table=база.таблица
Чтобы сделать дамп самой структуры без данных:
—no-data
В случае ошибки Mysqldump error 1044: Access denied for user to database when using LOCK TABLES после mysqldump добавить:
—skip-opt.

Mysql пользователю назначим права:

GRANT SELECT, LOCK TABLES, SHOW VIEW ON *.* TO 'user'@'localhost' IDENTIFIED BY 'password';

Добавляем ссылку на новый файл в /etc/crontab. Планировщик будет выполнять его каждый день в 4 утра:

0 4 * * * user /home/backups/backups.sh > /dev/null 2>&1

Аналогичным образом можно делать резервные копии директорий, например:

tar -cvjf /home/backups/etc/`date +%Y-%m-%d`_etc.tar.bz2 /etc/
tar -cvjf /home/backups/www/`date +%Y-%m-%d`_www.tar.bz2 /var/www/

Также можно регулярно клонировать github репозитории, например репозиторий Trinity Core:

mkdir /home/backups/trinitycore/`date +%Y-%m-%d`
cd /home/backups/trinitycore/`date +%Y-%m-%d`
wget https://github.com/TrinityCore/TrinityCore/archive/4.3.4.zip
wget https://github.com/TrinityCore/TrinityCore/archive/master.zip

Как удалять старые резервные копии автоматически, чтоб не забивался диск я писал в этой статье — Скрипт удаления старых файлов

Мониторим подключения по SSH через email

Приведу несколько способов как получать оповещения на электронную почту о том что кто-то подключился к серверу по SSH.

ПЕРВЫЙ СПОСОБ:
Текстовым редактором, например nano, откроем файл /etc/ssh/sshrc (в редакторе nano CTRL+X для выхода, а y/n и Enter для сохранения или отмены изменений):

sudo nano /etc/ssh/sshrc

И добавим в него следующий код:

ip=`echo $SSH_CONNECTION | cut -d " " -f 1`
logger -t ssh-wrapper $USER login from $ip
(echo "Subject:login on server"; echo "User $USER just logged in from $ip";) | sendmail -f server@example.com -t your-email@example.com &

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

ВТОРОЙ СПОСОБ:
Добавляем указанные строки в конфиг /etc/rsyslog.conf (перед каждой строкой прокомментировал суть, данный код позволит отсылать сообщения о неудачных подключениях):

# Подключаем модуль отправки сообщений
$ModLoad ommail
# Указываем адрес почтового сервера
$ActionMailSMTPServer mail.domain.com
# Указываем email с которого будут отправляться сообщения
$ActionMailFrom rsyslog@domain.com
# Указываем email на который будут приходить сообщения
$ActionMailTo test@domain.com
# Указываем тему сообщения
$template mailSubject,"SSH Invalid User %hostname%"
# Указываем содержание сообщения
$template mailBody,"RSYSLOG\r\nmsg='%msg%'"
$ActionMailSubject mailSubject
# Указываем в секундах как часто могут отправляться сообщения
$ActionExecOnlyOnceEveryInterval 10
# Если в логах содержатся указанные в скобках символы, тогда отсылаем сообщение
if $msg contains 'Invalid user' then :ommail:;mailBody

Такой же способ отправки через rsyslog, но отсылаются уведомления об успешных подключениях (код без комментариев как выше):

$ActionMailSMTPServer mail.domain.com
$ActionMailFrom rsyslog@domain.com
$ActionMailTo test@domain.com
$template mailSubject,"SSH Accepted pass %hostname%"
$template mailBody,"RSYSLOG\r\nmsg='%msg%'"
$ActionMailSubject mailSubject
$ActionExecOnlyOnceEveryInterval 10
if $msg contains 'Accepted password' then :ommail:;mailBody

В итоге при успешном или не успешном подключении к серверу SSH на электронную почту будут приходить сообщения. Аналогичным способом можно анонсировать на email и другие события которые логируются через rsyslog.

Изменение стартовой локации в YTDB 3.3.5a

Приведу пример mysql запросов на изменение стартовой локации для всех рас, на примере указана локация в Даларане.
Координаты в игре вычисляются командой .gps
— меняем стартовую локацию орков:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='2';

— меняем стартовую локацию нежити:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='5';

— меняем стартовую локацию тауренов:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='6';

— меняем стартовую локацию троллей:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='8';

— меняем стартовую локацию эльфов крови:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='10';

— меняем стартовую локацию людей:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='1';

— меняем стартовую локацию дворфов:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='3';

— меняем стартовую локацию ночных эльфов:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='4';

— меняем стартовую локацию гномов:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='7';

— меняем стартовую локацию дренеев:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='11';

Так как ДК появится сразу не в своей локации и не будет иметь специализации «Гравирование», то сделаем чтобы ДК всех классов знали это при старте:

INSERT INTO playercreateinfo_spell (race, class, Spell, Note) VALUES
(1, 6, 53428, 'Runeforging'),
(2, 6, 53428, 'Runeforging'),
(3, 6, 53428, 'Runeforging'),
(4, 6, 53428, 'Runeforging'),
(5, 6, 53428, 'Runeforging'),
(6, 6, 53428, 'Runeforging'),
(7, 6, 53428, 'Runeforging'),
(8, 6, 53428, 'Runeforging'),
(10, 6, 53428, 'Runeforging'),
(11, 6, 53428, 'Runeforging');

P.S: Координаты Восточные королевства «Акерус: Черный оплот» (хуz map): 2408 -5633 380 0.

ID тренера для ДК: 29194.