Документация по модулю 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
FTP
Пример конфигурации в 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