acces a la base, ouverture popup et commentaires ajoutes.
This commit is contained in:
parent
f21f83d3d4
commit
9de1144094
3 changed files with 48 additions and 43 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
?>
|
||||
|
|
Reference in a new issue