Собственно, задача стояла записывать успешную/неспешную загрузку файлов пользователями proftpd. Установка сервера тривиальна (yum install proftpd proftpd-mysql) при подключении нужных репозиториев, например CentAlt. Сами пользователи находятся в БД mysql.
Создаем таблицу со следующими полями (думаю названия говорят сами за себя и не нуждаются в комментариях):
CREATE TABLE `ftpxferlog` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(60) NOT NULL DEFAULT '',
`filename` text,
`size` bigint(20) DEFAULT NULL,
`ip` tinytext,
`action` tinytext,
`duration` tinytext,
`field_localtime` timestamp NULL DEFAULT NULL,
`success` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `idx_usersucc` (`username`,`success`)
) ENGINE=InnoDB;
Можете создать пользователя, который может вносить информацию в эту таблицу
(GRANT INSERT ON DB.ftpxferlog TO SOME_USER@localhost identified by 'SOME_PASS';
FLUSH PRIVILEGES;)
В моем случае такого отдельного пользователя не потребовалось, поскольку я создал одного пользователя со всеми правами для конкретной базы данных;
В конфигурационном файле изменяем/добавляем:
#Указываем информацию для соединения с базой данных.
SQLConnectInfo DB@localhost USERNAME PASSWORD
# Директива используется для логгирования информации в таблицу. Можно указывать несколько директив, что я буду делать.
# Первый параметр - список FTP-команд, для которых будет срабатывать логгирование.
# Второй параметр - название запроса, определенного директивой SQLNamedQuery
SQLLog RETR,STOR transfer1
SQLNamedQuery transfer1 INSERT "NULL, '%u', '%f', '%b', '%a', '%m', '%T', now(), '1'" ftpxferlog
SQLLog ERR_RETR,ERR_STOR transfer2
SQLNamedQuery transfer2 INSERT "NULL, '%u', '%f', '%b', '%a', '%m', '%T', now(), '0'" ftpxferlog
Литература:
http://www.iezzi.ch/archives/110
Создаем таблицу со следующими полями (думаю названия говорят сами за себя и не нуждаются в комментариях):
CREATE TABLE `ftpxferlog` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(60) NOT NULL DEFAULT '',
`filename` text,
`size` bigint(20) DEFAULT NULL,
`ip` tinytext,
`action` tinytext,
`duration` tinytext,
`field_localtime` timestamp NULL DEFAULT NULL,
`success` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `idx_usersucc` (`username`,`success`)
) ENGINE=InnoDB;
Можете создать пользователя, который может вносить информацию в эту таблицу
(GRANT INSERT ON DB.ftpxferlog TO SOME_USER@localhost identified by 'SOME_PASS';
FLUSH PRIVILEGES;)
В моем случае такого отдельного пользователя не потребовалось, поскольку я создал одного пользователя со всеми правами для конкретной базы данных;
В конфигурационном файле изменяем/добавляем:
#Указываем информацию для соединения с базой данных.
SQLConnectInfo DB@localhost USERNAME PASSWORD
# Директива используется для логгирования информации в таблицу. Можно указывать несколько директив, что я буду делать.
# Первый параметр - список FTP-команд, для которых будет срабатывать логгирование.
# Второй параметр - название запроса, определенного директивой SQLNamedQuery
SQLLog RETR,STOR transfer1
SQLNamedQuery transfer1 INSERT "NULL, '%u', '%f', '%b', '%a', '%m', '%T', now(), '1'" ftpxferlog
SQLLog ERR_RETR,ERR_STOR transfer2
SQLNamedQuery transfer2 INSERT "NULL, '%u', '%f', '%b', '%a', '%m', '%T', now(), '0'" ftpxferlog
Литература:
http://www.iezzi.ch/archives/110
Комментариев нет:
Отправить комментарий