Вспомогательные скрипты и утилиты — различия между версиями
Admin (обсуждение | вклад) (→Скрипт рассылки сообщений о состоянии баланса) |
Admin (обсуждение | вклад) |
||
Строка 38: | Строка 38: | ||
</pre> | </pre> | ||
− | ==Скрипт импорта платежей== | + | == Страница-заглушка == |
+ | Вы можете настроить ExpertBilling так, что если у пользователя закончился баланс, то сервер доступа начнёт его перенаправлять на специальную страницу, где будет сказано об этом. | ||
+ | Для настройки заглушки необходимо: | ||
+ | 1. Включить и настроить IPN действия для тарифного плана. Если вы используете не IPN тарифные планы, то необходимо также разрешить PPTP/PPPOE/DHCP подключение при отрицательном балансе и блокировках. | ||
+ | 2. Настроить apache так, чтобы при запросе любой страницы он отдавал сообщение о том, что у пользователя закончились деньги. | ||
+ | 3. Настроить файервол на сервере доступа. | ||
+ | |||
+ | Приступим. | ||
+ | 2. | ||
+ | <pre> | ||
+ | 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> | ||
+ | </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 для того, чтобы изменения вступили в силу. | ||
+ | 3. Настроим Firewall. Предположим, что 10.1.1.1 - IP адрес сервера с Apache, который мы настраивали пунктом выше. | ||
+ | Правила должны стоять в самом начале!!! | ||
+ | <pre> | ||
+ | /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 | ||
+ | </pre> | ||
+ | |||
+ | Настроим редирект всех HTTP запросов | ||
+ | <pre> | ||
+ | /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 | ||
+ | </pre> | ||
+ | |||
+ | Теперь при наступлении отрицательного баланса биллинг будет посылать на сервер доступа команду на добавление VPN IP адреса субаккаунта в адрес-лист blocked_users, все запросы на 80 порт которого будут редиректиться на сервер с apache, который по указанному адресу будет показывать нашу заглушку. | ||
+ | |||
+ | == Скрипт импорта платежей == | ||
Скрипт предназначен для импорта платежей из текстовых файлов формата CSV. | Скрипт предназначен для импорта платежей из текстовых файлов формата CSV. |
Версия 15:35, 22 сентября 2011
Скрипт рассылки сообщений о состоянии баланса
Для рассылки информации о балансе используется скрипт /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 так, что если у пользователя закончился баланс, то сервер доступа начнёт его перенаправлять на специальную страницу, где будет сказано об этом. Для настройки заглушки необходимо: 1. Включить и настроить IPN действия для тарифного плана. Если вы используете не IPN тарифные планы, то необходимо также разрешить PPTP/PPPOE/DHCP подключение при отрицательном балансе и блокировках. 2. Настроить apache так, чтобы при запросе любой страницы он отдавал сообщение о том, что у пользователя закончились деньги. 3. Настроить файервол на сервере доступа.
Приступим. 2.
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 для того, чтобы изменения вступили в силу. 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 action=dst-nat to-addresses=10.1.1.1 to-ports=81
Теперь при наступлении отрицательного баланса биллинг будет посылать на сервер доступа команду на добавление VPN IP адреса субаккаунта в адрес-лист blocked_users, все запросы на 80 порт которого будут редиректиться на сервер с apache, который по указанному адресу будет показывать нашу заглушку.
Скрипт импорта платежей
Скрипт предназначен для импорта платежей из текстовых файлов формата 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 данный скрипт отсутствовал. Обратитесь к разработчикам за получением скрипта.