Вспомогательные скрипты и утилиты — различия между версиями
Admin (обсуждение | вклад) (→Страница-заглушка) |
Admin (обсуждение | вклад) (→Настройка заглушки через IPN Действия) |
||
(не показано 5 промежуточных версий 2 участников) | |||
Строка 40: | Строка 40: | ||
== Страница-заглушка == | == Страница-заглушка == | ||
Вы можете настроить ExpertBilling так, что если у пользователя закончился баланс, то сервер доступа начнёт его перенаправлять на специальную страницу, где будет сказано об этом. | Вы можете настроить ExpertBilling так, что если у пользователя закончился баланс, то сервер доступа начнёт его перенаправлять на специальную страницу, где будет сказано об этом. | ||
+ | Возможны 2 варианта настройки: | ||
+ | * через IPN действия; | ||
+ | * через гостевой VPN пул; | ||
+ | |||
+ | У каждого из этих методов есть свои достоинства и недостатки. Использование IPN действий невозможно при динамической выдаче VPN IP адресов абонентам, а гостевой VPN пул не охватывает IPN абонентов. | ||
+ | |||
+ | === Настройка заглушки через IPN Действия === | ||
Для настройки заглушки необходимо: | Для настройки заглушки необходимо: | ||
− | 1 | + | |
− | 2 | + | 1 Включить и настроить IPN действия для тарифного плана. Если вы используете не IPN тарифные планы, то необходимо также разрешить PPTP/PPPOE/DHCP подключение при отрицательном балансе и блокировках. |
− | 3 | + | |
+ | 2 Настроить apache так, чтобы при запросе любой страницы он отдавал сообщение о том, что у пользователя закончились деньги. | ||
+ | |||
+ | 3 Настроить файервол на сервере доступа. | ||
Приступим. | Приступим. | ||
Строка 53: | Строка 63: | ||
Команды сервера доступа, к которому привязан аккаунт должны быть такими: | Команды сервера доступа, к которому привязан аккаунт должны быть такими: | ||
− | Для VPN тарифных планов: | + | '''Для VPN тарифных планов:''' |
Включить субаккаунт: | Включить субаккаунт: | ||
Строка 63: | Строка 73: | ||
/ip firewall address-list add list=blocked_users address=$subacc_vpn_ip_address comment=blocked-$subacc_id disabled=no | /ip firewall address-list add list=blocked_users address=$subacc_vpn_ip_address comment=blocked-$subacc_id disabled=no | ||
</pre> | </pre> | ||
− | Для IPN тарифных планов: | + | |
+ | '''Для IPN тарифных планов:''' | ||
Включить субаккаунт: | Включить субаккаунт: | ||
Строка 77: | Строка 88: | ||
2. | 2. | ||
− | + | Для версии ниже 1.5(в 1.5 по-уомлчанию создаётся данная конфигурация и файл index.html) добавьте в /etc/apache2/sites-enabled/ файл vhost_blank.conf со следующим содержимым | |
<pre> | <pre> | ||
Listen 81 | Listen 81 | ||
Строка 113: | Строка 124: | ||
</html> | </html> | ||
</pre> | </pre> | ||
+ | |||
Перезапустите Apache для того, чтобы изменения вступили в силу. | Перезапустите Apache для того, чтобы изменения вступили в силу. | ||
Строка 129: | Строка 141: | ||
<pre> | <pre> | ||
/ip firewall nat add chain=srcnat src-address-list=blocked_users action=masquerade | /ip firewall nat add chain=srcnat src-address-list=blocked_users action=masquerade | ||
− | /ip firewall nat add chain=dstnat protocol=tcp dst-port=80 action=dst-nat to-addresses=10.1.1.1 to-ports=81 | + | /ip firewall nat add chain=dstnat protocol=tcp dst-port=80 src-address-list=blocked_users action=dst-nat to-addresses=10.1.1.1 to-ports=81 |
</pre> | </pre> | ||
Теперь при наступлении отрицательного баланса биллинг будет посылать на сервер доступа команду на добавление VPN IP адреса субаккаунта в адрес-лист blocked_users, все запросы на 80 порт которого будут редиректиться на сервер с apache, который по указанному адресу будет показывать нашу заглушку. | Теперь при наступлении отрицательного баланса биллинг будет посылать на сервер доступа команду на добавление VPN IP адреса субаккаунта в адрес-лист blocked_users, все запросы на 80 порт которого будут редиректиться на сервер с apache, который по указанному адресу будет показывать нашу заглушку. | ||
+ | |||
+ | === Настройка заглушки через гостевой VPN пул === | ||
+ | Гостевой VPN служит для динамической выдачи VPN IP адресов, в случае если абонент заблокирован по причине отрицательного баланса или наличия других блокировок | ||
+ | Для настройки заглушки необходимо: | ||
+ | |||
+ | 1 Создать VPN пул через интерфейс администратора. В пуле нужно указать сеть, которая не будет пересекаться ни с одной из ваших существующих сетей. | ||
+ | |||
+ | 2 Указать созданный VPN пул в тарифном плане пользователя | ||
+ | |||
+ | 2 Настроить apache так, чтобы при запросе любой страницы он отдавал сообщение о том, что у пользователя закончились деньги. | ||
+ | |||
+ | 3 Настроить файервол на сервере доступа. | ||
+ | |||
+ | Приступим. | ||
+ | 1. Создайте VPN пул через меню Справочники->IP пулы | ||
+ | [[Файл:vpn_pool.png|center]] | ||
+ | |||
+ | 2. Укажите выбранный пул в тарифном плане | ||
+ | [[Файл:vpn_guestpool.png|center|Указание гостевого VPN пула]] | ||
+ | |||
+ | 3. | ||
+ | Добавьте в /etc/apache2/sites-enabled/ файл vhost_blank.conf со следующим содержимым | ||
+ | <pre> | ||
+ | Listen 81 | ||
+ | <VirtualHost *:81> | ||
+ | ServerName 10.250.1.1 | ||
+ | ServerAdmin webmaseter@isp.net | ||
+ | |||
+ | ErrorLog /var/log/apache2/nomoney_err.log | ||
+ | CustomLog /var/log/apache2/nomoney_access_log combined | ||
+ | DocumentRoot /opt/ebs/web/nomoney | ||
+ | |||
+ | <Directory "/opt/ebs/web/nomoney"> | ||
+ | AllowOverride All | ||
+ | Options FollowSymlinks Includes | ||
+ | ErrorDocument 404 /index.html | ||
+ | DirectoryIndex index.html | ||
+ | AddDefaultCharset utf-8 | ||
+ | allow from all | ||
+ | </Directory> | ||
+ | </Virtualhost> | ||
+ | </pre> | ||
+ | По пути /opt/ebs/web/nomoney нужно создать файл index.html со следующим содержимым: | ||
+ | <pre> | ||
+ | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||
+ | <html xmlns="http://www.w3.org/1999/xhtml"> | ||
+ | <head> | ||
+ | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||
+ | <title>Сообщение от провайдера::ExpertBilling</title> | ||
+ | </head> | ||
+ | <body> | ||
+ | <center><img src="provider_logo.png" alt="" /></center> | ||
+ | <h1 align="center">Уважаемый абонент.</h1> | ||
+ | <h1 align="center">На вашем счету закончились деньги. <a href="https://isp.net." target="_blank">"Веб-кабинет"</a></h1> | ||
+ | </body> | ||
+ | </html> | ||
+ | </pre> | ||
+ | |||
+ | Перезапустите Apache для того, чтобы изменения вступили в силу. | ||
+ | <pre> | ||
+ | /etc/init.d/apache2 restart | ||
+ | </pre> | ||
+ | 3. Настроим Firewall. Предположим, что 10.250.1.1 - IP адрес сервера с Apache, который мы настраивали пунктом выше. | ||
+ | Правила должны стоять в самом начале!!! | ||
+ | <pre> | ||
+ | /ip firewall filter add src-address=10.250.1.0/24 dst-address=10.250.1.1 action=accept | ||
+ | /ip firewall filter add src-address=10.250.1.1 dst-address=10.250.1.0/24 action=accept | ||
+ | /ip firewall filter add src-address-list=10.250.1.0/24 action=drop | ||
+ | </pre> | ||
+ | |||
+ | Настроим редирект всех HTTP запросов | ||
+ | <pre> | ||
+ | /ip firewall nat add chain=srcnat src-address=10.250.1.0/24 action=masquerade | ||
+ | /ip firewall nat add chain=dstnat src_address=10.250.1.0/24 protocol=tcp dst-port=80 action=dst-nat to-addresses=10.250.1.1 to-ports=81 | ||
+ | </pre> | ||
+ | |||
+ | Теперь при наступлении отрицательного баланса биллинг будет сбрасывать сессию абонента, а после переподключения выдавать IP адрес из созданного нами пула, все запросы с которого будут посылатся на сервер с apache. | ||
+ | |||
+ | Ограничением данного подхода является возможность его использования только в PPTP/L2TP/PPPOE тарифных планах. | ||
== Скрипт импорта платежей == | == Скрипт импорта платежей == |
Текущая версия на 10:54, 8 сентября 2012
Содержание
Скрипт рассылки сообщений о состоянии баланса
Для рассылки информации о балансе используется скрипт /opt/ebs/data/sendmail.py. Скрипт использует шаблон "Информационное письмо" сообщения о балансе, вид которого можно изменить в интерфейсе администратора. По-умочланию шаблон выглядит так:
--------------------------------------------------- Это сообщение сгенерировано биллинговой системой! --------------------------------------------------- Здравствуйте, ${account.username}. Уведомляем, что актуальный баланс Вашего лицевого счета составляет ${"%.2f" % account.ballance} руб. Размер кредита ${account.credit}. Пожалуйста, пополните баланс во избежание блокировки. --- ${operator.organization}
Параметры работы скрипта настраиваются в конфиг-файле ebs_config.ini
[sendmail] log_type = logging log_file = log/sendmail_log log_level= 0 log_ident= ebs_sendmail subject = Provider information - тема письма use_tls = False - использовать TLS send_if_less = 5000 - пороговое значение баланса, ниже которого пользователь получит письмо host = smtp.gmail.com - адрес SMTP сервера host_user = SMTP имя пользователя host_password = пароль SMTP пользователя port = 25 SMTP порт сервера email_from = info@provider.com - с этого адреса будут слаться письма fail_silently = False - в случае ошибки продолжать отправку
Для того, чтобы рассылать уведомления в 00:00:00 каждого дня, нужно добавить в crontab следующую строку:
0 0 * * * /usr/bin/env python /opt/ebs/data/sendmail.py >>/opt/sendmail.log
Страница-заглушка
Вы можете настроить ExpertBilling так, что если у пользователя закончился баланс, то сервер доступа начнёт его перенаправлять на специальную страницу, где будет сказано об этом. Возможны 2 варианта настройки:
- через IPN действия;
- через гостевой VPN пул;
У каждого из этих методов есть свои достоинства и недостатки. Использование IPN действий невозможно при динамической выдаче VPN IP адресов абонентам, а гостевой VPN пул не охватывает IPN абонентов.
Настройка заглушки через IPN Действия
Для настройки заглушки необходимо:
1 Включить и настроить IPN действия для тарифного плана. Если вы используете не IPN тарифные планы, то необходимо также разрешить PPTP/PPPOE/DHCP подключение при отрицательном балансе и блокировках.
2 Настроить apache так, чтобы при запросе любой страницы он отдавал сообщение о том, что у пользователя закончились деньги.
3 Настроить файервол на сервере доступа.
Приступим. 1.
Команды сервера доступа, к которому привязан аккаунт должны быть такими:
Для VPN тарифных планов:
Включить субаккаунт:
/ip firewall address-list remove [find comment==blocked-$subacc_id]
Отключить субаккаунт:
/ip firewall address-list add list=blocked_users address=$subacc_vpn_ip_address comment=blocked-$subacc_id disabled=no
Для IPN тарифных планов:
Включить субаккаунт:
/ip firewall address-list remove [find comment==blocked-$subacc_id]
Отключить субаккаунт:
/ip firewall address-list add list=blocked_users address=$subacc_ipn_ip_address comment=blocked-$subacc_id disabled=no
Для использования данной возможности субаккаунту _ДОЛЖЕН_ быть назначен серер доступа в его профиле.
2. Для версии ниже 1.5(в 1.5 по-уомлчанию создаётся данная конфигурация и файл index.html) добавьте в /etc/apache2/sites-enabled/ файл vhost_blank.conf со следующим содержимым
Listen 81 <VirtualHost *:81> ServerName 10.1.1.1 ServerAdmin webmaseter@isp.net ErrorLog /var/log/apache2/nomoney_err.log CustomLog /var/log/apache2/nomoney_access_log combined DocumentRoot /opt/ebs/web/nomoney <Directory "/opt/ebs/web/nomoney"> AllowOverride All Options FollowSymlinks Includes ErrorDocument 404 /index.html DirectoryIndex index.html AddDefaultCharset utf-8 allow from all </Directory> </Virtualhost>
По пути /opt/ebs/web/nomoney нужно создать файл index.html со следующим содержимым:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Сообщение от провайдера::ExpertBilling</title> </head> <body> <center><img src="provider_logo.png" alt="" /></center> <h1 align="center">Уважаемый абонент.</h1> <h1 align="center">На вашем счету закончились деньги. <a href="https://isp.net." target="_blank">"Веб-кабинет"</a></h1> </body> </html>
Перезапустите Apache для того, чтобы изменения вступили в силу.
/etc/init.d/apache2 restart
3. Настроим Firewall. Предположим, что 10.1.1.1 - IP адрес сервера с Apache, который мы настраивали пунктом выше. Правила должны стоять в самом начале!!!
/ip firewall filter add src-address-list=internet_users dst-address=10.1.1.1 action=accept /ip firewall filter add src-address=10.1.1.1 dst-address-list=internet_users action=accept /ip firewall filter add src-address-list=blocked_users action=drop
Настроим редирект всех HTTP запросов
/ip firewall nat add chain=srcnat src-address-list=blocked_users action=masquerade /ip firewall nat add chain=dstnat protocol=tcp dst-port=80 src-address-list=blocked_users action=dst-nat to-addresses=10.1.1.1 to-ports=81
Теперь при наступлении отрицательного баланса биллинг будет посылать на сервер доступа команду на добавление VPN IP адреса субаккаунта в адрес-лист blocked_users, все запросы на 80 порт которого будут редиректиться на сервер с apache, который по указанному адресу будет показывать нашу заглушку.
Настройка заглушки через гостевой VPN пул
Гостевой VPN служит для динамической выдачи VPN IP адресов, в случае если абонент заблокирован по причине отрицательного баланса или наличия других блокировок Для настройки заглушки необходимо:
1 Создать VPN пул через интерфейс администратора. В пуле нужно указать сеть, которая не будет пересекаться ни с одной из ваших существующих сетей.
2 Указать созданный VPN пул в тарифном плане пользователя
2 Настроить apache так, чтобы при запросе любой страницы он отдавал сообщение о том, что у пользователя закончились деньги.
3 Настроить файервол на сервере доступа.
Приступим. 1. Создайте VPN пул через меню Справочники->IP пулы
2. Укажите выбранный пул в тарифном плане
3. Добавьте в /etc/apache2/sites-enabled/ файл vhost_blank.conf со следующим содержимым
Listen 81 <VirtualHost *:81> ServerName 10.250.1.1 ServerAdmin webmaseter@isp.net ErrorLog /var/log/apache2/nomoney_err.log CustomLog /var/log/apache2/nomoney_access_log combined DocumentRoot /opt/ebs/web/nomoney <Directory "/opt/ebs/web/nomoney"> AllowOverride All Options FollowSymlinks Includes ErrorDocument 404 /index.html DirectoryIndex index.html AddDefaultCharset utf-8 allow from all </Directory> </Virtualhost>
По пути /opt/ebs/web/nomoney нужно создать файл index.html со следующим содержимым:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Сообщение от провайдера::ExpertBilling</title> </head> <body> <center><img src="provider_logo.png" alt="" /></center> <h1 align="center">Уважаемый абонент.</h1> <h1 align="center">На вашем счету закончились деньги. <a href="https://isp.net." target="_blank">"Веб-кабинет"</a></h1> </body> </html>
Перезапустите Apache для того, чтобы изменения вступили в силу.
/etc/init.d/apache2 restart
3. Настроим Firewall. Предположим, что 10.250.1.1 - IP адрес сервера с Apache, который мы настраивали пунктом выше. Правила должны стоять в самом начале!!!
/ip firewall filter add src-address=10.250.1.0/24 dst-address=10.250.1.1 action=accept /ip firewall filter add src-address=10.250.1.1 dst-address=10.250.1.0/24 action=accept /ip firewall filter add src-address-list=10.250.1.0/24 action=drop
Настроим редирект всех HTTP запросов
/ip firewall nat add chain=srcnat src-address=10.250.1.0/24 action=masquerade /ip firewall nat add chain=dstnat src_address=10.250.1.0/24 protocol=tcp dst-port=80 action=dst-nat to-addresses=10.250.1.1 to-ports=81
Теперь при наступлении отрицательного баланса биллинг будет сбрасывать сессию абонента, а после переподключения выдавать IP адрес из созданного нами пула, все запросы с которого будут посылатся на сервер с apache.
Ограничением данного подхода является возможность его использования только в PPTP/L2TP/PPPOE тарифных планах.
Скрипт импорта платежей
Скрипт предназначен для импорта платежей из текстовых файлов формата CSV. Скрипт находится по пути /opt/ebs/data/scripts/payments/process.py Файл настроек находится по адресу /opt/ebs/data/scripts/payments/pattern.ini
Формат файла настроек
[Belarusbank] folder_in=Belarusbank/IN/ folder_out=Belarusbank/OUT/ folder_err=Belarusbank/ERR/ file_mask=*.asb exclude_mask=lan.* separator=; payment_type=BELARUSBANK_PAYMENT_IMPORT encoding=cp855 fieldnames=ACC;FIO;DATETIME;TIME;SUM;EMPTY;EMPTY;EMPTY;PID datetime_fmt=%d/%m/%Y time_fmt=%H:%M [Webmoney] folder_in=WebMoney/IN/ folder_out=WebMoney/OUT/ folder_err=WebMoney/ERR/ file_mask=*.* exclude_mask=r*.* separator=; payment_type=WEBMONEY_PAYMENT_IMPORT fieldnames=DATETIME;ACC;SUM;EMPTY;EMPTY;PID;EMPTY;EMPTY;EMPTY;EMPTY datetime_fmt=%d/%m/%Y %H:%M:%S time_fmt= encoding=utf-8
Описание настроек:
- folder_in путь к папке с текстовыми файлами CSV
- folder_out путь к папке с успешно обработанными файлами платежей
- folder_err путь к папке с обработанными файлами платежей, содержащими записи в неверном формате или ошибочную информацию
- file_mask - маска файлов платежей
- exclude_mask - маска файлов, подлежащих к исключению обработки
- separator - разделитель в файле csv
- payment_type - тип платежа. Для нового типа платежей нужно создать запись в таблице базы данных billservice_transactiontype, поместив в поле name текстовое описание платежа, а в поле internal_name - текстовую константу payment_type.
- fieldnames - формат файла csv. Поле DATETIME предназначено для даты совершения платежа, поле ACC для номера договора аккаунта, SUM - сума платежа, EMPTY - пустое или не имеющее значения поле, PID аналогично EMPTY, TIME - поле времени платежа, если дата и время разнесены по разным столбцам
- datetime_fmt - формат поля DATETIME. Возможные значения символов подстановки вы можете найти на этой странице http://docs.python.org/library/datetime.html#strftime-and-strptime-behavior
- time_fmt формат поля TIME
- encoding кодировка файла CSV
Важно!!! Обращайте внимание на регистр символов в путях к папкам. Обратите внимание В ранних версиях EBS 1.4 данный скрипт отсутствовал. Обратитесь к разработчикам за получением скрипта.