Jump to content
Калькуляторы

Прозрачный прокси Squid страница Hotspot Стартовая страница Wi-Fi

Есть 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? Если нет, может кто-то знает другой способ.

Share this post


Link to post
Share on other sites

Передайте ее параметром из перлового скрипта (заескейпив все что нужно )

Share this post


Link to post
Share on other sites

В свое время тоже дрочились со всякими извращениями пока не подняли на виртуалке RouterOS и не настроили там hotspot.

Share this post


Link to post
Share on other sites

В свое время тоже дрочились со всякими извращениями пока не подняли на виртуалке RouterOS и не настроили там hotspot.

 

Кстати что-что, а хотспот в некротике - супервещь!

Share this post


Link to post
Share on other sites

Микротики довольно неплохие устройства за свои деньги, знаком с ними не понаслышке. Но задача тривиальна и есть сервер на котором все благополучно функционирует надо лишь немного переделать!

Пока в тестовом режиме у себя на 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 by kabanaus

Share this post


Link to post
Share on other sites

Прокси не нужен.

Задача решается с помощью iptables (-j REDIRECT), ipset и nginx.

nginx нужен для того, чтобы отдавать на одном порту собственно redirect на страницу, на отдельном порту - сама страница.

Страница из php добавляет в ipset разрешенные адреса. Это если просто.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this