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

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

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


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

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

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


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

На Опеннете есть раздел программирования (Perl)

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


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

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

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


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

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

 

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

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


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

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

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

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

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


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

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

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

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

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

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


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

Join the conversation

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

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

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

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

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

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

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