Перейти к содержимому
Калькуляторы

Правильный редирект Автоматический перевод абона на информационную страницу

Мы просто режем скорость до 100кбит, а вверх всех страничек(которые по http) вставляем информацию о том, что баланс отрицательный и неплохо бы положить денег.

 

И как информацию вставляете ? через прокси http заворачиваете ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, заворачиваем пользователей на squid, а там пользуемся ecap модулем, который делает инжект в html. Тоже как я понял можно было бы и nginx'ом сделать.

acl blocknet myportname blockport
http_port 3128 intercept name=blockport
ecap_enable on
loadable_modules /usr/local/lib/ecap_adapter_modifying.so
ecap_service eRespmod respmod_precache 0 ecap://e-cap.org/ecap/services/sample/modifying victim=</body> replacement-src=/usr/local/squid/var/block.html
adaptation_access eRespmod allow blocknet

в blocknet попадают все, кто конектится к squid'у на порт 3128

Изменено пользователем swelf

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вы всех абонентов гоните через сквид или только когда задолженность ? Сайты работающие по https спокойно работают без вашей вставки ?

Изменено пользователем npokypop

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Только должников, да, мы только 80 порт перенаправляем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Давно отработана такая схема. На шлюзе на локалхосте висит любой веб сервер на нестандартном порту. Который на любой запрос выдаёт 302 и ссылку на нужную страницу. Заворачиваю на веб сервер как на транспарент прокси. Используя прослушивание веб сервером нескольких портов легко реализовать редирект на разные страницы. Ещё один момент - локальный веб сервер должен вырезать параметры, передаваемые на запрашиваемую страницу. Перепробовал многое - это оптимальный вариант. Разумеется - заворачивать только 80 порт.

 

Пример для Апаче:

 

Listen 127.0.0.1:8000

<VirtualHost 127.0.0.1:8000>
      ServerName localhost
      RewriteEngine on
      RewriteRule .* http://server.net/bad_users/infected/? [R,L]
</VirtualHost>

Listen 127.0.0.1:8001

<VirtualHost 127.0.0.1:8001>
      ServerName localhost
      RewriteEngine on
      RewriteRule .* http://server.net/bad_users/closed/? [R,L]
</VirtualHost>

...

 

Вопросительный знак в линках для редиректа нужен для вырезания передаваемых оригинальным сайтам параметров скрипта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

оставив доступ к ЛК. Абоны сами баланс посмотрят

Спасибо, очень хорошая шутка перед сном. ))))) Заряд бодрости получен.

ПЫСЫ. Если что, тут спамер пробегал, а не я слоупочу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем привет. Подскажите, перекидываю абонентов из ИПсет правилом iptables

-A PREROUTING -p tcp -m set --match-set l4redirect src -j REDIRECT --to-ports 8001

на nginx

server {

listen 8001;

server_name local_negative;

 

access_log /var/log/nginx/redirect.access.log;

 

location / {

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 ~ sitecheck\d*\.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 ( $host ~ pluraserver ) {

return 404;

}

if ( $host ~ apps.bittorrent.com ) {

return 404;

}

if ( $host ~ offers.bittorrent.com ) {

return 404;

}

if ( $host ~ tracker ) {

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;

}

if ( $host ~ norton ) {

return 404;

}

 

 

proxy_set_header X-Real-IP $remote_addr;

rewrite ^ http://home.site.ru/stat/i.php?ipuser=$remote_addr redirect;

}

 

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

 

}

который в свою очередь через rewrite отправляет на основной сайт.

 

Так вот вопрос, как избавится от кэша?

т.е. после удаления пользователя из ИПсет, при поптке открыть тот же сайт, срабатывает опять редирект. Другой сайт открыв, все норм.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

рефреш сьраницы в шапке ? )

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Имхо, из всех способов, что перепробовал, у меня работает так:

 

 server {
       listen 127.0.0.1:80;
       server_name  localhost;
       access_log off;
       error_log off;
#       rewrite ^ http://zaplati.mne/$uri ; #301 redirect
       charset koi8-r;

       #access_log  logs/host.access.log  main;

       location / {
           root   /usr/local/www/nginx;
           index  index.html;
       }

       error_page  404              /index.html;

       # redirect server error pages to the static page /50x.html
       #
       error_page   500 502 503 504  /50x.html;
       location = /50x.html {
           root   /usr/local/www/nginx-dist;
       }

}

Далее, на сервере делаю обычную страничку куда идет перенаправление и на ней описываю куда пойти клиенту...

по ссылкам, например на ЛК или еще куда.

Это хорошо тем, что после оплаты клиент просто обновляет страницу и у него открывается тот сайт с которого

произошел редирект на информационную страничку.

Изменено пользователем Brainiac

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.