imroot 19 Опубликовано: 2012-03-15 08:02:40 Share Опубликовано: 2012-03-15 08:02:40 Товарищи поделитесь наработками, кто как редиректит должничков на страничку "Оплати инет и спи спокойно ". вот нашёл для себя парсить файлик stat потом на его oнове conf потом делаю правило в ipfw ну и ещё пару приседаний, но пока готово на 90% собственно укого как сие чудо реализовано? предложите ещё как с СМС сделали кого выбрали в качестве смс-сервиса, скриптики если не жалко.... . Ссылка на сообщение Поделиться на других сайтах
imroot 19 Опубліковано: 2012-03-20 08:56:47 Автор Share Опубліковано: 2012-03-20 08:56:47 ну ладно, буду первым мне не жалко grep -nRi Cash=- /var/stargazer/users/*/stat|sed -e 's/stat(.*)/conf/g'|xargs grep IP=|sed -e 's/(.*)IP=/ipfw add fwd 192.168.1.254,82 tcp from /g' |awk '{print $1" "$2" "$3" "$4" "$5" "$6" "$7" "$8 " to any 1-65000 out via em0"}' нужно только подумать над 1) нумерация 2) чтоб пользователь или опять-же программа при следующей проверке увидев что баланс положительный и правило существует - его нужно кильнуть. Продолжение следует, если есть пердложения давайте дорабатывать в месте, это всётаки наше общее свободное ПО давайте его делать удобнее. ЗЫ. используеться файловая БД. Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2012-03-20 09:20:43 Share Опубліковано: 2012-03-20 09:20:43 А почему это не делать в скриптах OnConnect/OnDisconnect? Или нужно различать тех у кого долг от тех кто отключен по иной причине? Ссылка на сообщение Поделиться на других сайтах
imroot 19 Опубліковано: 2012-03-20 09:32:20 Автор Share Опубліковано: 2012-03-20 09:32:20 в яблочко, но были и ещё каке-то предрассудки мне не вспомнить сейчас, наверно это пополнение или списание денег со счёта клиента денежных средств, как-то так Ссылка на сообщение Поделиться на других сайтах
nightfly 1 239 Опубліковано: 2012-03-20 10:34:21 Share Опубліковано: 2012-03-20 10:34:21 Подозреваю что то, что вы хотите должно выглядеть как-то так #OnConnect ipfw table 47 add $IP #OnDisconnect ipfw table 47 delete $IP ipfw add 5 fwd страничка_дай_бабла,80 ip from not table(47) to not me dst-port 80 Ну либо заполнять этот же table исходя из условия Cash=<Credit либо как вам надо. Собственно учитывать нужно только то, что форвард - не НАТ и не производит никаких модификаций пакетов, типа подмены сорца, обо что все всегда спотыкаються. Ссылка на сообщение Поделиться на других сайтах
imroot 19 Опубліковано: 2012-03-20 11:48:25 Автор Share Опубліковано: 2012-03-20 11:48:25 тоже + причём очень дельный Ссылка на сообщение Поделиться на других сайтах
dimetrios 1 Опубліковано: 2012-03-20 11:57:06 Share Опубліковано: 2012-03-20 11:57:06 ... ipfw add 5 fwd страничка_дай_бабла,80 ip from not table\(47\) to not me dst-port 80 ... man ipfw fwd | forward ipaddr | tablearg[,port] ... If ipaddr is a local address, then matching packets will be for‐ warded to port (or the port number in the packet if one is not specified in the rule) on the local machine. If ipaddr is not a local address, then the port number (if speci‐ fied) is ignored, and the packet will be forwarded to the remote address, using the route as found in the local routing table for that IP. ... Ссылка на сообщение Поделиться на других сайтах
nightfly 1 239 Опубліковано: 2012-03-20 12:09:33 Share Опубліковано: 2012-03-20 12:09:33 Очевидно что "страничка_дай_бабла" сама собой подразумевает под собой 127.0.0.1. К чему и относилось замечание Собственно учитывать нужно только то, что форвард - не НАТ Ссылка на сообщение Поделиться на других сайтах
imroot 19 Опубліковано: 2012-03-20 12:11:42 Автор Share Опубліковано: 2012-03-20 12:11:42 dimetrios вот и интересно почему оно работает, в место цитирования взяли бы и проверили Да шлюз и страница на одном ПК просто страница на другом порту висит, остальным локальным ресурсам работать не мешает, можно зайти в личный кабинет и пополнить счёт. Ссылка на сообщение Поделиться на других сайтах
nightfly 1 239 Опубліковано: 2012-03-20 12:13:33 Share Опубліковано: 2012-03-20 12:13:33 imroot подозраваю, что работает оно по той простой причине, что все нормальные люди делают форварды в лупбек подсознательно Ссылка на сообщение Поделиться на других сайтах
imroot 19 Опубліковано: 2012-03-20 12:15:18 Автор Share Опубліковано: 2012-03-20 12:15:18 это чтоб "Я" не забыл если "чё", да и на nginx прописано не *:82 а IP:82 чтоб в инет не светилось, зачем козе баян?? если можно анонсировать для внутренней сетки. Ссылка на сообщение Поделиться на других сайтах
major12 12 Опубліковано: 2012-03-20 16:35:48 Share Опубліковано: 2012-03-20 16:35:48 Додам пару правил для nginx Корисно якщо стоп сторінка це скрипт, або якщо звернення до стоп сторінки логуються, ми відкинемо трохи запитів, яких "живі люди" не побачать. if ( $request_method != GET ) { return 404; } if ( $http_user_agent ~ ^uTorrent ) { return 404; } if ( $http_user_agent ~ Windows-Update-Agent ) { return 404; } if ( $http_user_agent ~ "Microsoft NCSI" ) { return 404; } if ( $http_user_agent ~ "ESS Update" ) { return 404; } if ( $http_user_agent ~ "Google Update" ) { return 404; } if ( $http_user_agent ~ "Microsoft-CryptoAPI" ) { return 404; } if ( $http_user_agent ~ "Microsoft BITS" ) { return 404; } if ( $http_user_agent ~ MSDW ) { return 404; } if ( $http_user_agent ~ ^SeaPort ) { return 404; } if ( $http_user_agent ~ ^Windows-Media-Player ) { return 404; } if ( $http_user_agent ~ "Google Update" ) { return 404; } if ( $http_user_agent ~ ^GoogleEarth ) { return 404; } if ( $http_user_agent ~ ^Skype ) { return 404; } if ( $http_user_agent = "MailRuSputnik" ) { return 404; } if ( $http_user_agent ~ ^Ya.Online ) { return 404; } if ( $http_user_agent ~ ^MRA ) { return 404; } if ( $http_user_agent ~* ^MediaGet ) { return 404; } if ( $http_user_agent ~ ^BTWebClient ) { return 404; } # Avast updater if ( $http_user_agent ~ ^Syncer ) { return 404; } # Trend Micro updater if ( $http_user_agent = "TMUFE" ) { return 404; } if ( $http_user_agent ~ ^Akamai NetSession Interface ) { return 404; } if ( $http_user_agent ~ ^VKSaver ) { return 404; } if ( $http_user_agent ~ DrWebUpdate ) { return 404; } if ( $http_user_agent = "" ) { return 404; } if ( $host ~ geo.kaspersky.com ) { return 404; } if ( $host ~ (su|download|webrep).*.avast.com ) { return 404; } if ( $host = wi2geo.mobile.yandex.net ) { return 404; } if ( $host ~ bar.*.yandex.ru ) { return 404; } if ( $host ~ (ping|master)d*.(dyngate|teamviewer).com ) { return 404; } if ( $host ~ sitecheckd*.opera.com ) { return 404; } if ( $host ~ (xml.my|mailsputnik|maps).mail.ru ) { return 404; } if ( $host = onlineconfigservice.ubi.com ) { return 404; } if ( $host = com-services.pandonetworks.com ) { return 404; } if ( $host ~ ticno.com ) { return 404; } if ( $host ~ conduit ) { return 404; } if ( $host ~ cbox.ws ) { return 404; } if ( $host ~ (pricelist|metrics).skype.com ) { return 404; } if ( $host = weather.service.msn.com ) { return 404; } if ( $host = advstat.letitbit.net ) { return 404; } if ( $host = skymonk.net ) { return 404; } if ( $host ~ counter ) { return 404; } if ( $request_uri ~* (update|feed|announce|rss|xml|json|oauth) ) { return 404; } if ( $request_uri ~* (toolbar|suggest) ) { return 404; } if ( $request_filename ~ .(ico|gif|jpg|png) ) { return 404; } if ( $request_filename ~ .(css|xml|js|swf|flv) ) { return 404; } if ( $request_filename ~ .(crl|txt|cab|msi|jar) ) { return 404; } Якщо біллінг/стоп-сторінка висить на https, також варто дозволити перевірку валідності сертифікату, щоб не було паузи в декілька секунд при першому зверненні абонента в якого вимкнено інет. if ( $host = ocsp.godaddy.com ) { proxy_pass http://ocsp.godaddy.com; access_log off; } Ссылка на сообщение Поделиться на других сайтах
imroot 19 Опубліковано: 2012-03-26 14:39:42 Автор Share Опубліковано: 2012-03-26 14:39:42 продолжая эпопею напоминалки для "забывчивых" ! ipfw add 11 fwd 192.168.1.254,82 ip from table(47) to not me dst-port 80 cat /etc/stargazer/OnChange #!/usr/local/bin/bash login=$1 param=$2 oldValue=$3 newValue=$4 /home/user/baduser.sh cat baduser.sh #!/bin/sh # Короче зае%#ли звонить "А хуле инет не работает??" rm -rf /home/user/dolg.list touch /home/user/dolg.list chmod 777 /home/user/dolg.list grep -nRi Cash=- /var/stargazer/users/*/stat|sed -e 's/stat(.*)/conf/g'|xargs grep IP=|sed -e 's/(.*)IP=//g' >> /home/user/dolg.list ${table='47'} ${filename='/home/user/dolg.list'} echo "Очистка таблицы файервола" ipfw table ${table} flush echo "Загрузка списка IP в таблицу файервола" for i1 in `cat ${filename}`; do /sbin/ipfw table ${table} add $i1 done всё Бл# ЗАНАВЕС! спасибо за внимание )) Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2012-03-27 05:26:37 Share Опубліковано: 2012-03-27 05:26:37 Чертовски неэффективно. Из-за такого OnChange Stargazer будет тормозить на больших базах. К чему в OnChange изменять файрвол для абонов которые к этому OnChange и не относятся? Тут стоит трогать лишь того абона чей логин в переменной login. Кроме того нет смысла лазить по stat за cash - информация и так есть в param, oldValue и newValue. Анализируя эти значения можно так-же не перестраивать файрвол без надобности. Ссылка на сообщение Поделиться на других сайтах
imroot 19 Опубліковано: 2012-03-27 07:12:29 Автор Share Опубліковано: 2012-03-27 07:12:29 чесно говоря мне пох процесорного времени у меня выше крыши, юзеров не килопачки, да и чиститься всего лишь несчастная табличка, а фалы парсятся только когда у кого-то меняеться баланс и в начале месяца. Я прийму во внимание Ваше предложение и возможно оптимизирую скрипт. Мне например удобно и не парит моСк с отслеживанием значений. PS. Всё-таки не всех война убила, звонят и глупые вопросы задают "а почему не работает и написано что пора оплатить интренет????", жаль нет подходящего смайлика ... Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2012-03-27 07:24:52 Share Опубліковано: 2012-03-27 07:24:52 Скрипт покажется кому-то очень полезным, он его себе прикрутит. А там база на 10к абонов и система встанет колом. Тут-то все испражнения на вас и посыпятся Я, конечно, понимаю что у тех у кого 10к абонов и админы пряморукие - сами себе такое написать смогут. Но все таки... PS: надо будет поскрести по форуму, собрать наиболее полезные типичные скрипты и поставлять их прямо в архиве с исходниками. Да и в документацию включить (как в 2.0 было). Где бы еще время найти... Ссылка на сообщение Поделиться на других сайтах
imroot 19 Опубліковано: 2012-03-30 15:06:38 Автор Share Опубліковано: 2012-03-30 15:06:38 прикрутил элегантно запускать каждый час на 5 минут, чтоб полностью не лишать детей забавы пусть вылазит в самое не подходящее время Ссылка на сообщение Поделиться на других сайтах
DarkLan 3 Опубліковано: 2012-07-29 10:01:58 Share Опубліковано: 2012-07-29 10:01:58 Актуальный вопрос. 1. Как делать редирект после того, как у пользователя не хватает денег для продления тарифа? 2. Сделать доступным кабинет пользователя после его отключения/замораживания? прикрутил элегантно запускать каждый час на 5 минут Есть возможность поделится опытом? Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2012-07-30 04:40:12 Share Опубліковано: 2012-07-30 04:40:12 Актуальный вопрос. 1. Как делать редирект после того, как у пользователя не хватает денег для продления тарифа? 2. Сделать доступным кабинет пользователя после его отключения/замораживания? ... Очевидно - настроить файрвол. Искать по ключевому слову "forwarding". Ссылка на сообщение Поделиться на других сайтах
DarkLan 3 Опубліковано: 2012-07-30 14:34:54 Share Опубліковано: 2012-07-30 14:34:54 Очевидно - настроить файрвол. Искать по ключевому слову "forwarding". Так оно так... настройку делать в OnChange ? насколько верить найденной инфе, onConnect не вызывается при нулевом или минусовом балансе пользователя. А также в планах сделать модуль "Продолжить работу" после прочтения предупреждения пользователем о, например, "!user_ID! вы не оплатили в этом месяце денежку....", суть в том, что бы делать редирект всех стариц http на страницу "Предупреждения". Также что бы оповещать пользователей о каких то срочных сообщениях... Надеюсь на помощь в моих начинаниях... Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2012-07-30 14:45:29 Share Опубліковано: 2012-07-30 14:45:29 В OnDisconnect, вестимо. Или по умолчанию всех редиректить на парковую, а в OnConnect избирательно убирать редирект. Ссылка на сообщение Поделиться на других сайтах
DarkLan 3 Опубліковано: 2012-09-04 22:53:03 Share Опубліковано: 2012-09-04 22:53:03 Доброго времени суток. хочу, что бы страница кабинета была доступна независимо включен или выключен пользователь. В конфигур. файле ipfw: ${fwCMD} add 65528 allow all from table(2) to any out via rl0 ${fwCMD} add 65529 allow all from any to table(2) in via rl0 Что не так делаю? madf есть возможность написать пример? Ссылка на сообщение Поделиться на других сайтах
nightfly 1 239 Опубліковано: 2012-09-04 23:27:13 Share Опубліковано: 2012-09-04 23:27:13 В самом тупом варианте как-то так ${FwCMD} add 101 allow all from айпишка_внутренней_сетевой to any ${FwCMD} add 101 allow all from any to айпишка_внутренней_сетевой А вобще логичнее просто отдельно позволить для 2-й таблички ходить на внутреннюю сетевую только по src/dst port 80 и 53 Ссылка на сообщение Поделиться на других сайтах
dret 0 Опубліковано: 2013-05-08 18:49:30 Share Опубліковано: 2013-05-08 18:49:30 Всім привіт Хтось може написатит редирект должник длят ubuntu І бажано з описом як його встановити )) Потрібно щось найпростіше . Ссылка на сообщение Поделиться на других сайтах
neironus 0 Опубліковано: 2013-06-05 04:25:30 Share Опубліковано: 2013-06-05 04:25:30 iptables -t nat -I PREROUTING -s $IP -p tcp -m tcp --dport 80 -j DNAT --to-destination $IP_WEB_SERVER вот только сам ламаю голову над механизмом. пробовал добавлять в onconnect, но не совсем понял как он работает. к нему обращается stg только если юзер в положительном балансе или же за каждого. думаю прийдет просто добавить правила в /etc/sysconfig/iptables, а потом сверять баланс в onconnect и убивать по одному из ип. но здесь неувязка в том, что нужно и добавлять назад правило при отр. балансе и естественно учесть кредит. как разберусь с принципом работы onconnect b ondisconnect - выложу готовое решение. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас