acces a la base, ouverture popup et commentaires ajoutes.
This commit is contained in:
parent
200a3c0300
commit
cd43b9eb97
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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");
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
Reference in a new issue