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

В свое время тоже дрочились со всякими извращениями пока не подняли на виртуалке 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

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.