acces a la base, ouverture popup et commentaires ajoutes.

This commit is contained in:
Alexandre Anriot 2005-09-15 08:22:21 +00:00
parent 200a3c0300
commit cd43b9eb97
3 changed files with 48 additions and 43 deletions

View file

@ -29,8 +29,7 @@ sub Mail() {
my $userpass = $Config->{bdd}->{userpass}; my $userpass = $Config->{bdd}->{userpass};
# connexion # connexion
my $dbh = DBI->connect( $db, $username, $userpass ) my $dbh = DBI->connect( $db, $username, $userpass ) ||
&& &Log("La connexion a réussie.") ||
&Log("La connexion a échoué : $DBI::errstr"); &Log("La connexion a échoué : $DBI::errstr");
# récupération du login correspondant à l'ip # récupération du login correspondant à l'ip
@ -42,6 +41,8 @@ sub Mail() {
my $login; my $login;
$sth->bind_columns(undef, \$login) && $sth->fetch(); $sth->bind_columns(undef, \$login) && $sth->fetch();
$dbh->disconnect();
my $msg = new MIME::Lite my $msg = new MIME::Lite
From => 'evoauth@shaktiware.fr', From => 'evoauth@shaktiware.fr',
To => 'aanriot@nerim.net', To => 'aanriot@nerim.net',
@ -51,7 +52,6 @@ sub Mail() {
Data => '$temps : $event de $login ($ip)'; Data => '$temps : $event de $login ($ip)';
$msg -> send && &Log("Un mail a été envoyé."); $msg -> send && &Log("Un mail a été envoyé.");
$dbh->disconnect();
} }
# Ecrit dans le journal # Ecrit dans le journal

View file

@ -17,7 +17,8 @@ my $db = $Config->{bdd}->{db};
my $username = $Config->{bdd}->{username}; my $username = $Config->{bdd}->{username};
my $userpass = $Config->{bdd}->{userpass}; my $userpass = $Config->{bdd}->{userpass};
# Règles # Les règles du fichier de configuration sont stockées dans un tableau
# associatif
our %conf; our %conf;
my $cpt = 1; my $cpt = 1;
@ -30,20 +31,20 @@ sub Alter() {
my $action = shift; my $action = shift;
my $ip = shift; my $ip = shift;
# ajout # mode ajout
if ($action == 1) { if ($action == 1) {
system("/sbin/iptables -I EVOAUTH -s $ip -j ACCEPT 2&>1") && system("/sbin/iptables -I EVOAUTH -s $ip -j ACCEPT 2&>1") &&
&Evoauth::Functions::Log("Ajout de $ip aux connectés.") && &Evoauth::Functions::Log("Ajout de $ip aux connectés.") &&
&Evoauth::Functions::Mail("Connexion", $ip); &Evoauth::Functions::Mail("Connexion", $ip);
} }
# verification # mode vérification
elsif ($action == 2) { elsif ($action == 2) {
&check_iptables; &check_iptables;
&check_timestamp; &check_timestamp;
} }
# suppression # mode suppression
else { else {
my $dbh = DBI->connect( $db, $username, $userpass ) || my $dbh = DBI->connect( $db, $username, $userpass ) ||
@ -52,14 +53,15 @@ sub Alter() {
my $sql = qq{ UPDATE users set statut = 0 where ip = '$ip' }; my $sql = qq{ UPDATE users set statut = 0 where ip = '$ip' };
my $sth = $dbh->prepare($sql); my $sth = $dbh->prepare($sql);
system("/sbin/iptables -D EVOAUTH -s $ip -j ACCEPT"); system("/sbin/iptables -D EVOAUTH -s $ip -j ACCEPT 2&>1");
$sth->execute(); $sth->execute();
$sth->finish(); $sth->finish();
$sth->disconnect();
&Evoauth::Functions::Log("$ip [supprimee]"); &Evoauth::Functions::Log("$ip [supprimee]");
&Evoauth::Functions::Mail("Deconnexion", $ip); &Evoauth::Functions::Mail("Deconnexion", $ip);
} }
return 0;
} }
@ -69,7 +71,7 @@ sub check_iptables() {
&Evoauth::Functions::Log("Suppression des règles obsolètes dans iptables."); &Evoauth::Functions::Log("Suppression des règles obsolètes dans iptables.");
# obtention de la liste des ips # obtention de la liste des ips
system("/sbin/iptables -L EVOAUTH -n |grep ACCEPT |awk '{ print \$4 }' > /tmp/ips.txt"); system("/sbin/iptables -L EVOAUTH -n | grep ACCEPT | awk '{ print \$4 }' > /tmp/ips.txt");
# on ouvre le fichier des ips # on ouvre le fichier des ips
open(IPS, "/tmp/ips.txt") || &ecriture("L'ouverture des IPs a échoué."); open(IPS, "/tmp/ips.txt") || &ecriture("L'ouverture des IPs a échoué.");
@ -88,9 +90,10 @@ sub check_iptables() {
my $statut; my $statut;
$sth->bind_columns(undef, \$statut); $sth->bind_columns(undef, \$statut);
$sth->fetch(); $sth->fetch();
$sth->disconnect();
# si entrée iptables présente mais statut non connecté, on supprime
if ($statut != 1) { if ($statut != 1) {
&Evoauth::Functions::Log("$ip [supprimée]\n"); &Evoauth::Functions::Log("$ip [supprimée]\n");
&Evoauth::Functions::Mail("Suppression", $ip); &Evoauth::Functions::Mail("Suppression", $ip);
@ -103,7 +106,6 @@ sub check_timestamp() {
&Evoauth::Functions::Log("Suppression des règles obsolètes dans iptables."); &Evoauth::Functions::Log("Suppression des règles obsolètes dans iptables.");
# on travaille sur tous les utilisateurs présents # on travaille sur tous les utilisateurs présents
my $dbh = DBI->connect( $db, $username, $userpass ) || my $dbh = DBI->connect( $db, $username, $userpass ) ||
&Evoauth::Functions::Log("La connexion a échoué : $DBI::errstr"); &Evoauth::Functions::Log("La connexion a échoué : $DBI::errstr");
@ -118,18 +120,16 @@ sub check_timestamp() {
\$utype, \$credit, \$ip, \$statut, \$actif, \$firstcon, \$utype, \$credit, \$ip, \$statut, \$actif, \$firstcon,
\$lastupdate, \$kick); \$lastupdate, \$kick);
my ($newtime, $oldtime);
&Evoauth::Functions::Log("Vérification de la base."); &Evoauth::Functions::Log("Vérification de la base.");
# compteur my ($newtime, $oldtime, $cpt);
my $cpt;
while ($sth->fetch() && $sth != 0) { while ($sth->fetch() && $sth != 0) {
if ($statut == 1) { if ($statut == 1) {
$newtime = time(); $newtime = time();
$oldtime = $lastupdate; $oldtime = $lastupdate;
# si le dernier update est trop ancien, on supprime
my $timestamp = $newtime - $oldtime; my $timestamp = $newtime - $oldtime;
if ($timestamp > $conf{timetorem}) { if ($timestamp > $conf{timetorem}) {
# dernière connexion est < 1 min -> suppresion # dernière connexion est < 1 min -> suppresion
@ -137,35 +137,36 @@ sub check_timestamp() {
&Evoauth::Functions::Mail("Suppression", $ip); &Evoauth::Functions::Mail("Suppression", $ip);
} }
# sinon conservation
else { else {
# sinon conservation
&Evoauth::Functions::Log("$ip [conservée]"); &Evoauth::Functions::Log("$ip [conservée]");
} }
} }
} }
$sth->finish(); $sth->finish();
return 0; $sth->disconnect();
} }
sub Control() { sub Control() {
my $action = shift; my $action = shift;
my ( @tmp1, @tmp2, $key, $value ); my ( @tmp1, @tmp2, $key, $value );
# start # initialisation d'Evoauth
if ($action == 1) { if ($action == 1) {
while ( ($key, $value) = each(%conf) ) { while ( ($key, $value) = each(%conf) ) {
@tmp1 = split (/\t/, $value); @tmp1 = split (/\t/, $value);
system("/sbin/iptables -t nat -A PREROUTING -p $tmp1[2] -i ppp0 --dport $tmp1[1] -j DNAT --to $tmp1[0]:$tmp1[1] 2&>1"); system("/sbin/iptables -t nat -A PREROUTING -p $tmp1[2] -i ppp0 --dport $tmp1[1] -j DNAT --to $tmp1[0]:$tmp1[1] 2&>1");
} }
&Evoauth::Functions::Log("1 - Regles de PREROUTING charges"); &Evoauth::Functions::Log("1 - Règles de PREROUTING charges");
system("/sbin/iptables -N EVOAUTH 2&>1"); system("/sbin/iptables -N EVOAUTH 2&>1");
system("/sbin/iptables -A EVOAUTH -j DROP 2&>1"); system("/sbin/iptables -A EVOAUTH -j DROP 2&>1");
&Evoauth::Functions::Log("2 - Tables crées"); &Evoauth::Functions::Log("2 - Tables crées");
# chargement des règles du fichier de configuration
while ( ($key, $value) = each(%conf) ) { while ( ($key, $value) = each(%conf) ) {
@tmp2 = split (/\t/, $value); @tmp2 = split (/\t/, $value);
system("/sbin/iptables -A FORWARD -p $tmp2[2] -i ppp0 -o eth0 --dport $tmp2[1] -j EVOAUTH 2&>1"); system("/sbin/iptables -A FORWARD -p $tmp2[2] -i ppp0 -o eth0 --dport $tmp2[1] -j EVOAUTH 2&>1");
@ -178,13 +179,11 @@ sub Control() {
# arret # arret
elsif ($action == 2) { elsif ($action == 2) {
system("/sbin/iptables -F EVOAUTH") && system("/sbin/iptables -F EVOAUTH 2&>1") &&
&Evoauth::Functions::Log("1 - Flush de la table EVOAUTH"); &Evoauth::Functions::Log("1 - Flush de la table EVOAUTH");
my @tmp3;
while ( ($key, $value) = each(%conf) ) { while ( ($key, $value) = each(%conf) ) {
@tmp3 = split (/\t/, $value); my @tmp3 = split (/\t/, $value);
system("/sbin/iptables -D FORWARD -p $tmp3[2] -i ppp0 -o eth0 --dport $tmp3[1] -j EVOAUTH 2&>1"); system("/sbin/iptables -D FORWARD -p $tmp3[2] -i ppp0 -o eth0 --dport $tmp3[1] -j EVOAUTH 2&>1");
system("/sbin/iptables -t nat -D PREROUTING -p $tmp3[2] -i ppp0 --dport $tmp3[1] -j DNAT --to $tmp3[0]:$tmp3[1] 2&>1"); system("/sbin/iptables -t nat -D PREROUTING -p $tmp3[2] -i ppp0 --dport $tmp3[1] -j DNAT --to $tmp3[0]:$tmp3[1] 2&>1");
} }
@ -199,12 +198,10 @@ sub Control() {
# restart # restart
else { else {
&stop() && &stop();
&start() && &start();
&Evoauth::Functions::Log("Evoauth vient de redémarrer."); &Evoauth::Functions::Log("Evoauth vient de redémarrer.");
} }
return 0;
} }
1; 1;
@ -216,7 +213,7 @@ Evoauth::Iptables - Firewall
=head1 SYNOPSIS =head1 SYNOPSIS
use Evoauth::Iptables; use Evoauth::Iptables;
=head1 DESCRIPTION =head1 DESCRIPTION

View file

@ -9,31 +9,39 @@ session_start();
$statut = getstatut($_SESSION['login']); $statut = getstatut($_SESSION['login']);
// Déconnecté -> Connecté
if ($statut == "0") {
echo '<html><head>'; echo '<html><head>';
if ($_GET['flag'] == "1") {
echo '<script>'; echo '<script>';
echo 'window.open(\'popup_debut.php\', \'connexion\', \'height=147, width=300, toolbar=no, menubar=no, scrollbars=no, resizable=no, status=no\')'; echo 'window.open(\'popup_debut.php\', \'connexion\', \'height=147, width=300, toolbar=no, menubar=no, scrollbars=no, resizable=no, status=no\')';
echo '</script>'; echo '</script>';
}
echo '</head><body>'; echo '</head><body>';
// Déconnecté -> Connecté
if ($statut == "0") {
echo '<p>Vous êtes connecté.'; echo '<p>Vous êtes connecté.';
echo '<p>Pour revenir à l\'accueil tout en restant connecté, cliquez <a href="membre.php">ici</a>.'; echo '<p>Pour revenir à l\'accueil tout en restant connecté, cliquez <a href="membre.php">ici</a>.';
echo '</body></html>';
}
// Connecté mais plus de popup
elseif ($statut == "1" && $_GET['p'] == 1) {
echo '<html><head>';
echo '</head><body>';
echo '<p>Vous êtes toujours connecté.';
echo '<p>Pour revenir à l\'accueil tout en restant connecté, cliquez <a href="membre.php">ici</a>.';
echo '<p>Pour ouvrir à nouveau votre popup de connexion, cliquez <a href="activation.php?p=1">ici</a>.';
echo '<p>Pour vous déconnecter, cliquez <a href="fin.php">ici</a>.';
echo '</body></html>';
} }
// Connecté -> Connecté // Connecté -> Connecté
elseif ($statut == "1") { elseif ($statut == "1") {
echo '<p>Vous êtes déjà connecté...'; echo '<html><head>';
echo '</head><body>';
echo '<p>Vous êtes déjà connecté.';
echo '<p>Pour revenir à l\'accueil tout en restant connecté, cliquez <a href="membre.php">ici</a>.'; echo '<p>Pour revenir à l\'accueil tout en restant connecté, cliquez <a href="membre.php">ici</a>.';
echo '<p>Pour ouvrir à nouveau votre popup de connexion, cliquez <a href="activation.php?flag=1">ici</a>.'; echo '<p>Pour ouvrir à nouveau votre popup de connexion, cliquez <a href="activation.php?p=1">ici</a>.';
echo '<p>Pour vous déconnecter, cliquez <a href="fin.php">ici</a>.'; echo '<p>Pour vous déconnecter, cliquez <a href="fin.php">ici</a>.';
}
echo '</body></html>'; echo '</body></html>';
}
// chargement des règles concernées // chargement des règles concernées
function loadrules() function loadrules()
@ -41,7 +49,7 @@ function loadrules()
// activation des règles de firewall // activation des règles de firewall
system("/usr/bin/sudo /usr/local/share/Evoauth.pl -a ".$_SESSION['ip']); system("/usr/bin/sudo /usr/local/share/Evoauth.pl -a ".$_SESSION['ip']);
// verrouillage // passage au statut authentifié
update_statut($_SESSION['login'], "1"); update_statut($_SESSION['login'], "1");
} }
?> ?>