Это старая версия документа.
Документация по модулю Sharing и принадлежащим к нему страницам перенесена в Confluence
http://abills.net.ua:8090/display/AB/Sharing
=====Sharing=====
Предоставление авторизированного доступа к ресурсам. Учёт использования ресурсов.
====Возможности====
* Контроль аворизированного доступа к дата-ресурсам
* Учет использования
* Предоставление доступа к файлам
* Лог скачиваний
====Настройка Abills====
Создать таблицы в базе.
# mysql -D abills < db/Sharing.sql
abills/libexec/config.pl
@MODULES = (
'Sharing'
);
config.pl
^$conf{SHARING_APACHE_ERROR_LOG}='/var/log/httpd/error_log';| лог ошибок |
^$conf{SHARING_USER_CHG_TP}=1; | Разрешить пользователю менять тарифный план из пользовательского веб акаунта |
====Apache====
Сборка с исходных кодов.
Apache Apache version 2.0.xx
# tar zxvf httpd-2.0.59.tar.gz
# cd httpd-2.0.59
# ./configure –prefix=/usr/local/apache2 –enable-mods-shared=all
# make
# make install
mod_auth_mysql модуль авторизации
# tar zxvf mod_auth_mysql-3.0.0.tar.gz
# cd mod_auth_mysql
# /usr/local/apache2/bin/apxs -iac -lmysqlclient mod_auth_mysql.c
mod_log_mysql модуль учёта потребляемых ресурсов
# tar yxvf mod_log_sources.tar.bz2
# cd mod_log_mysql
# /usr/local/apache2/bin/apxs -aic mod_logio.c
# /usr/local/apache2/bin/apxs -aic mod_log_config.c
# /usr/local/apache2/bin/apxs -aic -lmysqlclient mod_log_mysql.c
/usr/local/apache2/conf/httpd.conf
Закоментировать подгрузку родного Apache модуля
#LoadModule log_config_module modules/mod_log_config.so
Включить свой конфиг
Include conf/abills_sharing.conf
/usr/local/apache2/conf/abills_sharing.conf
#Mysql auth module
<Ifmodule mod_auth_mysql.c>
<Directory /usr/music>
AuthName «ABillS Sharing»
AuthType Basic
require valid-user
AuthMySQLEnable On
AuthMySQLHost %dbhost%
#AuthMySQLPort %dbport%
#AuthMySQLSocket %dbsocket%
AuthMySQLUser %dbuser%
AuthMySQLPassword %dbpasswd%
AuthMySQLDB %dbname%
AuthMySQLUserTable «(users u, sharing_main sharing)»
AuthMySQLUserCondition «u.uid=sharing.uid \
AND (u.disable=0 AND sharing.disable=0) \
AND (sharing.cid= OR sharing.cid='%a')»
AuthMySQLNameField id
AuthMySQLPasswordField «DECODE(password, 'test12345678901234567890')»
#AuthMySQLUserCondition <no default>
AuthMySQLNoPasswd Off
AuthMySQLPwEncryption none
#AuthMySQLSaltField <>
#AuthMySQLGroupTable <defaults to value of AuthMySQLUserTable>
#AuthMySQLGroupCondition <no default>
#AuthMySQLGroupField <no default>
#AuthMySQLKeepAlive Off
AuthMySQLAuthoritative On
#AuthMySQLCharacterSet <no default>
</Directory>
</Ifmodule>
#Mysql Log module
<Ifmodule mod_log_mysql.c>
LogFormat «INSERT INTO sharing_log SET virtualhost=%v,\
remoteip=INET_ATON(%a),\
serverid=%{SERVERID}e,connectionstatus=%X,\
username=%u,identuser=%l,start=%t,requestmethod=%m,\
url=%U,protocol=%H,statusbeforeredir=%s,statusafterredir=%>s,\
processid=%{pid}P,threadid=%{tid}P, duration=%T,microseconds=%D,\
recv=%I,sent=%O,bytescontent=%B,useragent=%{User-Agent}i,\
referer=%{Referer}i,uniqueid=%{UNIQUE_ID}e» sharing_log
CustomLog mysql:%dbuser%!%dbpasswd%@%dbhost%/%dbname% sharing_log
LogMySQLFallback /var/log/httpd/failed_mysql_log
</Ifmodule>
#Show active connetiosn
<Location /abills-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
# mkdir /var/log/httpd/failed_mysql_log
# chown www /var/log/httpd/failed_mysql_log
====Samba====
Samba
====FTP====
ProFtpd
Пример конфигурации в OC FreeBSD:
# cd /usr/ports/databases/proftpd-mod_sql_mysql && make && make install
/usr/local/etc/proftpd.conf
ServerName «ProFTPD ABillS Installation»
ServerType standalone
DefaultServer on
ScoreboardFile /var/run/proftpd.scoreboard
Port 21
Umask 022
MaxInstances 30
CommandBufferSize 512
# Set the user and group under which the server will run.
User nobody
Group nogroup
# To cause every FTP user to be «jailed» (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~
# Normally, we want files to be overwriteable.
AllowOverwrite on
<Limit SITE_CHMOD>
DenyAll
</Limit>
<Global>
#Auth section
#Default SQL users parameters
SQLDefaultHomedir %DEFAULT_HOMEDIR%
RequireValidShell off
SQLLogFile /var/log/proftpd.log
SQLAuthenticate users
SQLConnectInfo %dbname%@%dbhost%:3306 %dbuser% %dbpasswd%
SQLAuthTypes PlainText
SQLUserInfo «(users u, sharing_main sharing)«\
u.id \
«DECODE(u.password, '%secretkey%')» \
u.uid u.gid
SQLUserWhereClause » u.uid=sharing.uid \
AND (u.disable=0 AND sharing.disable=0) \
AND (sharing.cid=
OR sharing.cid='%a')»«
# SQLGroupInfo groups groupname gid members
# SQLAuthenticate users groups
#Banner for user
SQLNamedQuery User_Info SELECT «id FROM users u WHERE u.id='%u'»
SQLShowInfo PASS «230» «Hello %{User_Info}.»
#Start Connection
#Log transfert information
SQLLog RETR,STOR log_story_transfer
SQLNamedQuery log_story_transfer INSERT »'%V', '%u', '%F', 'FTP', '%b',\
'%b', '%m', INET_ATON('%a'), now(), '%T',\
'%s', '%S'«\
«sharing_log (virtualhost, username, url, protocol,\
bytescontent, sent, requestmethod, remoteip, start, duration,\
connectionstatus, statusafterredir)»
</Global>
===Antivirus - Clamav===
(Если Вам не неадо антивирус єтот пункт можно пропустить)
Clamav
Пример конфигурации в OC FreeBSD:
Устанавливаем clamav и запускаем.
# cd /usr/ports/ftp/proftpd
# make fetch
# make extract
Cкачиваем mod_clamav в директорию
# cd work/proftpd-1.3.1rc2/contrib
# fetch http://www.uglyboxindustries.com/mod_clamav_new.c
# mv mod_clamav_new.c mod_clamav.c
Вносим в Makefile proftpd небольшие корректировки касательно нового модуля:
/usr/ports/ftp/proftpd/Makefile
CONFIGURE_ARGS= –localstatedir=/var/run \
–sysconfdir=${EXAMPLESDIR}/etc \
–enable-builtin-getnameinfo \
–disable-sendfile \
–with-modules=mod_clamav
.if !defined(WITHOUT_RATIO)
MODULES:=${MODULES}:mod_ratio
.endif
MODULES:=${MODULES}:mod_clamav
.if !defined(WITHOUT_README)
MODULES:=${MODULES}:mod_readme
.endif
Собираем proftpd
# make config && make && make install
Правим proftpd.conf согласно http://www.uglyboxindustries.com/mod_clamav_new.html
<IfModule mod_clamav.c>
# Enable virus scanning and removal
ClamAV on
# Specify the UNIX Local Socket
ClamLocalSocket /var/run/clamav/clamd
ClamWarn on
</IfModule>
Перезагружаем:
# /usr/local/etc/rc.d/proftpd.sh reload