Wiem, że odgrzewam kotleta sprzed lat ale nie znalazłem nigdzie podobnej autoryzacji opierającej się na bazie MySQL z uwzględnieniem loginu, hasła, ip userów. Próbowałem rożnych wersji 0.3, 0.3b, 0.3c, problem był ten sam z odblokowaniem.
Odpowiednie wpisy w sudoers zrobione i sprawdzone.
Mianowicie skrypt startsys.php działa prawidłowo wszyscy userzy zdefiniowani w bazie są przekierowani na stronę z autoryzacją. Po podaniu loginu i hasła, wyswietla się komunikat o poprawnym zalogowaniu. Niestety po zamknięciu przeglądarki i ponowym jej włączeniu znów wyświetla się strona logowania i internet nie jest odblokowany.
Z tego co mi wiadomo problem tkwi ze zmienna
$ip, jeżeli zamiast niej wpisze dowolny adres IP w skrypcie z regułkami odblokowującymi internet, wówczas działa. Moze ktoś wie w czym problem?
Opieram się na wersji 0.3b
plik odblokuj
#!/bin/bash -x
. `echo $0 | sed s/'odblokuj'//`config
$iptabels -I INPUT -s $ip -p tcp --dport 84 -j REJECT 2>/dev/null
$iptables -D FORWARD -s $ip -p udp --dport 53 ! -j REJECT 2>/dev/null
$iptables -D PREROUTING -t nat -s $ip -p tcp --dport 80 -j DNAT --to- 192.168.0.1:84
echo "UPDATE autoryzacja SET aktywny='1' WHERE ip='$ip'" | mysql -u "$user" --password="$pass" -h "$server" --database='autoryzacja'
config
#!/bin/bash
server="localhost" #serwer mysql
user="xxx" #user mysql
pass="xxx" #haslo do mysql
interface="eth1" #interfejs wewnetrzny
ips="192.168.0.1" #ip serwera"
port="84"
x="40" #ilosc powtorzen arpingu, domyslnie zaleca sie okolo 40
iptables="/usr/sbin/iptables" #pelna sciezka do iptables
autoryzacja.php
<?
session_start();
include("../conf.php");
if (!isset($_SESSION['login']))
{
header("Location: index.php");
exit();
}
?>
<?
$ip = $_SERVER[ 'REMOTE_ADDR' ];
putenv("ip=$ip");
shell_exec(`sudo $script_path/odblokuj > out 2>error &`);
echo "<br><br><br><br><br><br><br><br><br><br><br>";
echo "<p align=\"center\"><font face=\"verdana\" color=\"red\" size=\"5\"><b>Autoryzacja przebiegla pomyslnie.<br>Aby korzystac z internetu wylacz i ponownie wlacz przegladarke www</b></font></p>";
?>
mysql.php
<?php
$link = mysql_connect("localhost", xxx, xxx)
or die("Could not connect");
$query = "CREATE DATABASE autoryzacja";
$result = mysql_query($query)
or die("<FONT color=\"red\">Problem 1</FONT>");
mysql_select_db("autoryzacja");
$query = "CREATE TABLE autoryzacja (ip TINYTEXT NOT NULL, login TINYTEXT NOT NULL, haslo TINYTEXT NOT NULL, username TINYTEXT, aktywny TINYTEXT, zablokowany TINYTEXT NOT NULL, ogloszenie TINYTEXT NOT NULL, info TINYTEXT)";
$result = mysql_query($query)
or die("<FONT color=\"red\">Problem 2</FONT>");
$query = "CREATE TABLE logi (ip TINYTEXT NOT NULL, data TINYTEXT NOT NULL, godzina TINYTEXT NOT NULL, akcja TINYTEXT NOT NULL)";
$result = mysql_query($query)
or die("<FONT color=\"red\">Problem 3</FONT>");
$query = "CREATE TABLE ogloszenia (ip TINYTEXT NOT NULL, ogloszenie TINYTEXT)";
$result = mysql_query($query)
or die("<FONT color=\"red\">Problem 4</FONT>");
$query = "INSERT INTO `ogloszenia` (`ip`, `ogloszenie`) VALUES ('all', 'NULL')";
$result = mysql_query($query)
or die("<FONT color=\"red\">Problem 5</FONT>");
$query = "CREATE TABLE admin (login TINYTEXT NOT NULL, haslo TINYTEXT NOT NULL, nrtel TINYTEXT NOT NULL)";
$result = mysql_query($query)
or die("<FONT color=\"red\">Problem 6</FONT>");
$query = "INSERT INTO `admin` (`login`, `haslo`, `nrtel`) VALUES ('tuuser', 'tupass', 'tunrtel')";
$result = mysql_query($query)
or die("<FONT color=\"red\">Problem 7</FONT>");
echo "Baza danych poprawnie zainstalowana :)";
?>