Периодическая реклама абонентам с настройкой из админки

Что делает функционал:
В админке выбираем конкретных пользователей. Их с настраиваемой периодичностью будет перекидывать на страницу-рекламу. Работает на 80 и кривовато на 443 порту (тут сделать ничего нельзя, будет всплывать сообщение о проблеме сертификата)

Логика работы: 
В учетке пользователя в поле "Примечание" прописывается тег "reklama".

По крону отрабатывает скрипт, который собирает IP таких пользователей в текстовый файл.
Далее на сервере NAS (Linux) файл закачивается и загружается в ipset.
Абонент переходя по странице в браузере будет переброшен на страницу рекламы.
В этот момент на странице отработает код, который исключит его ip из списка ipset.

Настройка сервера биллинга

  • cd /var/mikbill/custom_scripts
  • wget https://github.com/mikbill/design/raw/master/advertising/advertising.php
Поменять соль имени получаемого файла advertising.php
  • mcedit advertising.php
$file_name='/var/www/mikbill/admin/advertising_N2g5R0uPnsDp';
N2g5R0uPnsDp - поменять на любую случайную строку

Настройка крона (Периодичность выставить по удобству)

  • mcedit /etc/crontab

# Reklama
0-59/5 * * * * root /usr/bin/php /var/mikbill/custom_scripts/advertising.php

Настройка сервера NAS

Этап 1 (загрузка файла с IP)
  • mkdir -p /var/mikbill/custom_scripts
  • cd /var/mikbill/custom_scripts
  • wget https://github.com/mikbill/design/raw/master/advertising/advertising_ipset.sh
  • chmod +x advertising_ipset.sh
  • mcedit advertising_ipset.sh
    upload_server=https://admin.myserver.com - меняем на домен своего сервера
    file=advertising_N2g5R0uPnsDp - меняем на имя загружаемого файла
Настройка крона (Периодичность выставить по удобству)
0-59/5 * * * * root /var/mikbill/custom_scripts/advertising_ipset.sh
Этап 2 (настройка страницы)
  • apt-get install nginx
  • apt-get install php5-fpm
  • cd /etc/nginx/conf.d
  • wget https://github.com/mikbill/design/raw/master/advertising/advertising.conf
  • chmod 755 advertising.conf
Создаем самоподписной сертификат (другой и не нужно, смысла нет)
  • mkdir ssl
  • cd ssl
  • openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/conf.d/ssl/nginx.key -out /etc/nginx/conf.d/ssl/nginx.crt
Загружаем саму страницу
  • mkdir /var/www/mikbill/user_pages/advertising
  • cd /var/www/mikbill/user_pages/advertising
  • wget https://github.com/mikbill/design/raw/master/advertising/ajax.php
  • wget https://github.com/mikbill/design/raw/master/advertising/index.php
  • chmod 755 index.php
Для работы нужен jquery.js, качаем его в этот каталог
Рабочая версия jQuery v1.10.2 (Новые версии имеют проблему с IE старых версий)

  • wget https://github.com/mikbill/design/raw/master/advertising/jquery.js

Даем права sudo на выполнение команд на сервере www-data
  • apt-get install sudo
  • mcedit /etc/sudoers
www-data ALL=(root) NOPASSWD: ALL
Этап 3 (Настройка firewall)

Разрешаем входящие порты
  • mcedit /etc/rc.local
iptables -A INPUT -p tcp -m tcp --dport 86 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
Добавляем правила, по которым будет перекидывать абонентов находящихся в ipset advertising
  • mcedit /etc/init.d/firewall
Правила учитывают, что стоит настроенный firewall по мануалу http://wiki.mikbill.ru/billing/nas_access_server/firewall_generator

В начале после определения переменной $IPT добавляем:
# Reklama
$IPT -N advertising iphash -exist
И запускаем эту команду в консоли (нужно для применения правил):

  •  ipset -N advertising iphash -exist
Добавляем в функцию prerouting():
$IPT -t nat -A PREROUTING -m set --match-set advertising src -p tcp --dport 80 -j DNAT --to-destination $REDIRECT_IP:86
$IPT -t nat -A PREROUTING -m set --match-set advertising src -p tcp --dport 443 -j DNAT --to-destination $REDIRECT_IP:443
Обновляем цепочку правил
  • /etc/init.d/firewall post
P. S.
Кнопка не всегда срабатывает, на рабочем сервере добавили текст:
"Если страница не открывается, то откройте её в новом окне."

Комментарии

Популярные сообщения из этого блога

mikbill расшифровка завершений сессий

Accel-ppp команды

Zabbix agent установка и настройка