Показать страницуСсылки сюдаНаверх Эта страница только для чтения. Вы можете посмотреть её исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Периодическая реклама с настройкой из админки ====== [[billing:howto|Вернуться на уровень выше]] **Что делает функционал:** В админке выбираем конкретных пользователей. Их с настраиваемой периодичностью будет перекидывать на страницу-рекламу. Работает на 80 и кривовато на 443 порту (тут сделать ничего нельзя, будет всплывать сообщение о проблеме сертификата) **Логика работы:** В учетке пользователя в поле "Примечание" прописывается тег "reklama". {{ :billing:howto:screenshot_1.png |}} По крону отрабатывает скрипт, который собирает IP таких пользователей в текстовый файл. Далее на сервере NAS (Linux) файл закачивается и загружается в ipset. Абонент переходя по странице в браузере будет переброшен на страницу рекламы. В этот момент на странице отработает код, который исключит его ip из списка ipset. ===== Настройка сервера биллинга ===== <file> cd /var/mikbill/custom_scripts wget https://github.com/mikbill/design/raw/master/advertising/advertising.php </file> Поменять соль имени получаемого файла advertising.php <file> mcedit advertising.php </file> <code> $file_name='/var/www/mikbill/admin/advertising_N2g5R0uPnsDp'; </code> N2g5R0uPnsDp - поменять на любую случайную строку Настройка крона (Периодичность выставить по удобству) <file> mcedit /etc/crontab </file> <code> # Reklama 0-59/5 * * * * root /usr/bin/php /var/mikbill/custom_scripts/advertising.php </code> ===== Настройка сервера NAS ===== **Этап 1 (загрузка файла с IP)** <file> 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 mсedit advertising_ipset.sh </file> upload_server=https://admin.myserver.com - меняем на домен своего сервера file=advertising_N2g5R0uPnsDp - меняем на имя загружаемого файла Настройка крона (Периодичность выставить по удобству) <code> 0-59/5 * * * * root /var/mikbill/custom_scripts/advertising_ipset.sh </code> **Этап 2 (настройка страницы)** <file> 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 </file> Создаем самоподписной сертификат (другой и не нужно, смысла нет) <file> 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 </file> Загружаем страницу <file> 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 </file> Для работы нужен jquery.js, качаем его в этот каталог Рабочая версия jQuery v1.10.2 (Новые версии имеют проблему с IE старых версий) <file> wget https://github.com/mikbill/design/raw/master/advertising/jquery.js </file> Даем права sudo на выполнение команд на сервере www-data <file> apt-get install sudo mcedit /etc/sudoers </file> <code> www-data ALL=(root) NOPASSWD: ALL </code> **Этап 3 (Настройка firewall)** Разрешаем входящие порты <file> mcedit /etc/rc.local </file> <code> iptables -A INPUT -p tcp -m tcp --dport 86 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT </code> Добавляем правила, по которым будет перекидывать абонентов находящихся в ipset advertising <file> mcedit /etc/init.d/firewall </file> Правила учитывают, что стоит настроенный firewall по мануалу http://wiki.mikbill.ru/billing/nas_access_server/firewall_generator В начале после определения переменной $IPT добавляем: <code> # Reklama $IPT -N advertising iphash -exist </code> И запускаем эту команду в консоли (нужно для применения правил): <file> ipset -N advertising iphash -exist </file> Добавляем в функцию prerouting(): <code> $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 </code> Обновляем цепочку правил <file> /etc/init.d/firewall post </file> **P. S.** Кнопка не всегда срабатывает, на рабочем сервере добавили текст: "Если страница не открывается, то откройте её в новом окне." billing/howto/periodic_advertising.txt Последнее изменение: 7 лет назад — vilko