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 f21f83d3d4
commit 9de1144094
3 changed files with 48 additions and 43 deletions

View file

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

View file

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

View file

@ -9,31 +9,39 @@ session_start();
$statut = getstatut($_SESSION['login']);
// Déconnecté -> Connecté
if ($statut == "0") {
echo '<html><head>';
if ($_GET['flag'] == "1") {
echo '<script>';
echo 'window.open(\'popup_debut.php\', \'connexion\', \'height=147, width=300, toolbar=no, menubar=no, scrollbars=no, resizable=no, status=no\')';
echo '</script>';
}
echo '</head><body>';
// Déconnecté -> Connecté
if ($statut == "0") {
echo '<p>Vous êtes connecté.';
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é
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 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 '</body></html>';
}
// chargement des règles concernées
function loadrules()
@ -41,7 +49,7 @@ function loadrules()
// activation des règles de firewall
system("/usr/bin/sudo /usr/local/share/Evoauth.pl -a ".$_SESSION['ip']);
// verrouillage
// passage au statut authentifié
update_statut($_SESSION['login'], "1");
}
?>