kabanaus Posted March 26, 2014 Posted March 26, 2014 Есть Wi-Fi сеть и сервер на котором настроен прозрачный прокси (Squid). Пользователи которые подключаются первый раз к сети попадают на стартовую страницу. После чего могут заходить на любой сайт. Вот собственно скрипт который сейчас работает: #!/usr/bin/perl use Tie::File::AsHash; $|=1; $f='/var/local/squid_ip.hash'; $diff=1800; $count = 0; $pid = $$; tie my %hash, 'Tie::File::AsHash', $f, split => ':' or print "Problem tying %hash ($f): $$ while (<>) { chomp $_; $line=$_; my @req = split(/\s/, $_); my $ip = (split (/\//,$req[1]))[0]; $last=time(); if ( exists $hash{$ip} ) { $last=$hash{$ip}; } $hash{$ip}=time(); $elapse=time(); $elapse=$elapse-$last; if ( $elapse >$diff ) { print "302:https://Стартовая страница\n"; } else { print "$line\n";; } } untie %hash; Но теперь стало необходимо что-бы на внутренней странице была кнопка с ссылкой (адресом который вводил пользователь перед тем как попасть на внутреннюю страницу). Например пользователь подключился первый раз, вписал google.com и попал на внутреннюю станицу где есть ссылка Перейти: http://google.com/ Пробовал сделать так: <a id="next_link" href="<?php echo $_SERVER['HTTP_REFERER'] ?>"><?php if ($_SERVER['HTTP_REFERER'] <> "") echo "Перейти";?> <?php echo $_SERVER['HTTP_REFERER'] ?></a> Но адреса в глобальной переменной нет(((. Можно ли вообще так сделать с помощью глобальных переменных php? Если нет, может кто-то знает другой способ. Вставить ник Quote
st_re Posted March 26, 2014 Posted March 26, 2014 Передайте ее параметром из перлового скрипта (заескейпив все что нужно ) Вставить ник Quote
vlad11 Posted March 26, 2014 Posted March 26, 2014 На Опеннете есть раздел программирования (Perl) Вставить ник Quote
FATHER_FBI Posted March 27, 2014 Posted March 27, 2014 В свое время тоже дрочились со всякими извращениями пока не подняли на виртуалке RouterOS и не настроили там hotspot. Вставить ник Quote
rpra Posted March 28, 2014 Posted March 28, 2014 В свое время тоже дрочились со всякими извращениями пока не подняли на виртуалке RouterOS и не настроили там hotspot. Кстати что-что, а хотспот в некротике - супервещь! Вставить ник Quote
kabanaus Posted April 1, 2014 Author Posted April 1, 2014 (edited) Микротики довольно неплохие устройства за свои деньги, знаком с ними не понаслышке. Но задача тривиальна и есть сервер на котором все благополучно функционирует надо лишь немного переделать! Пока в тестовом режиме у себя на localhost сделал две странички: 1./redir.php - переадресация на внутреннюю страницу(dest.php). 2./dest.php - внутренняя страница сайта с ссылкой. Код первой: <?php session_start(); $_SESSION['came_from'] = $_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"]; header('Location: http://127.0.0.1/dest.php'); ?> Код второй: <?php session_start(); ?> <a id="next_link" href="http://<?php echo $_SESSION['came_from'] ?>"><?php if ($_SESSION['came_from'] <> "") echo "Перейти";?> <?php echo $_SESSION['came_from'] ?></a> Хочу потестить уже на прокси. Я в программировании можно сказать полный ноль. Как запускать код первой станицы (redir.php)вместо перл скрипта? Нужно что-бы ссылка в /dest.php соответствовала адресу первоначального запроса пользователя. Edited April 1, 2014 by kabanaus Вставить ник Quote
Abram Posted April 1, 2014 Posted April 1, 2014 Прокси не нужен. Задача решается с помощью iptables (-j REDIRECT), ipset и nginx. nginx нужен для того, чтобы отдавать на одном порту собственно redirect на страницу, на отдельном порту - сама страница. Страница из php добавляет в ipset разрешенные адреса. Это если просто. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.