gestione reti

This commit is contained in:
cmaffio
2016-05-10 17:18:44 +02:00
parent cf1ba29654
commit b3125143e3
6 changed files with 480 additions and 1 deletions

125
proxy/net_acl.php Executable file
View File

@@ -0,0 +1,125 @@
<?php
include_once ("../core/config.php");
$UTENTE = login();
$DIRITTI = diritti(1);
view_top();
if (isset($_POST['id'])) {
$id = $_POST['id'];
foreach ($_POST as $key => $value) {
if ($key == 'id') continue;
$query = " INSERT INTO
proxy_acl_net
SET
idacllist = $key,
idaclnet = $id,
stato = $value,
data = NOW()
ON DUPLICATE KEY UPDATE
stato = $value,
data = NOW()
";
$res = mysql_query( $query, $DB_ID );
}
} elseif (isset($_GET['id'])) {
$id = $_GET['id'];
}
$query = " SELECT
net,
mask
FROM
proxy_net
WHERE
id = $id
";
$res = mysql_query( $query, $DB_ID );
$dato = mysql_fetch_array ( $res );
$net = $dato['net']." / ".$dato['mask'];
$query = " SELECT
proxy_acl_list.id,
proxy_acl_list.nome,
proxy_acl_list.sys,
proxy_acl_net.stato
FROM
proxy_acl_list
JOIN
proxy_acl_net
ON
proxy_acl_net.idacllist = proxy_acl_list.id
AND
proxy_acl_net.idaclnet = $id
AND
proxy_acl_list.attivo = 1
UNION DISTINCT SELECT
proxy_acl_list.id,
proxy_acl_list.nome,
proxy_acl_list.sys,
proxy_acl_list.dflt
FROM
proxy_acl_list
WHERE
proxy_acl_list.id NOT IN (SELECT idacllist FROM proxy_acl_net WHERE idaclnet = $id)
AND
proxy_acl_list.attivo = 1
ORDER BY
sys DESC,
nome
";
$res = mysql_query( $query, $DB_ID );
?>
<script type="text/javascript">
function do_submit() {
document.forms['acl'].submit();
}
</script>
<form name="acl" method="post">
<table cellpadding="0" cellspacing="0" border="0" width="90%">
<input type="hidden" name="id" value="<?php print $id ?>">
<tr>
<td class="sep" width="5%"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="sep" width="20%"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="sep" width="5%"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="sep" width="6%" ><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="sep" width="6%" ><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="sep" width="6%" ><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="sep" width="5%" ><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="sep" width="20%"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="sep" width="27%"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
</tr>
<tr>
<td class="spaziol"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="descrizione">Rete</td>
<td class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="radio">Nega</td>
<td class="radio">Default</td>
<td class="radio">Autorizza</td>
<td class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="descrizione">Nome Lista</td>
<td class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
</tr>
<?php
$res = mysql_query( $query, $DB_ID );
$conta = 0;
while ($dato = mysql_fetch_array ( $res )) {
?>
<tr>
<td class="spaziol"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="descrizione"><?php if (!$conta++) { print $net; } ?></td>
<td class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="radio"><input type="radio" name="<?php print $dato['id']?>" value=-1 <?php if ($dato['stato'] == -1) { print "checked=\"checked\""; } ?> onChange="do_submit()"/></td>
<td class="radio"><input type="radio" name="<?php print $dato['id']?>" value=0 <?php if ($dato['stato'] == 0) { print "checked=\"checked\""; } ?> onChange="do_submit()"/></td>
<td class="radio"><input type="radio" name="<?php print $dato['id']?>" value=1 <?php if ($dato['stato'] == 1) { print "checked=\"checked\""; } ?> onChange="do_submit()"/></td>
<td class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="descrizione"><?php print $dato['nome'] ?></td>
<td class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
</tr>
<?php
} ?>
</table>
</form>
<img src="<?php print $CONF['base_url'] ?>/img/spazio.gif" width="1" height="20" alt="">
<?php view_footer(); ?>

115
proxy/net_edit.php Executable file
View File

@@ -0,0 +1,115 @@
<?php
include_once ("../core/config.php");
$UTENTE = login();
$DIRITTI = diritti(1);
view_top();
if (isset($_POST['id'])) {
$id = $_POST['id'];
$net = $_POST['net'];
$mask = $_POST['mask'];
if ($id) {
$query = " UPDATE
proxy_net
SET
net = '$net',
mask = '$mask',
modifica = NOW()
WHERE
id = $id
";
} else {
$query = " INSERT INTO
proxy_net
SET
net = '$net',
mask = '$mask',
modifica = NOW()
data = NOW(),
attivo = 1
";
}
$res = mysql_query( $query, $DB_ID );
} elseif (isset($_GET['id'])) {
$id = $_GET['id'];
}
?>
<form name="" method="post">
<input type="hidden" name="id" value="<?php print $id ?>">
<table cellpadding="0" cellspacing="0" border="0" width="90%">
<?php
$query = " SELECT
id,
net,
mask,
attivo,
DATE_FORMAT(data, '%d.%m.%Y %H:%i:%s') AS data,
DATE_FORMAT(modifica, '%d.%m.%Y %H:%i:%s') AS modifica
FROM
proxy_net
WHERE
id = $id
";
$res = mysql_query( $query, $DB_ID );
$dato = mysql_fetch_array ( $res );
?>
<tr>
<td class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="colip">Rete</td>
<td class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="colip">NetMask</td>
<td class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="colip">Data attivazione</td>
<td class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="colip">Ultima Modifica</td>
<td class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
</tr>
<tr>
<?php
if ($dato['attivo']) {
?>
<td class="col3btn"><a href="proxy_gest.php?azione=net_down&id=<?php print $dato['id']?>"><img src="<?php print $CONF['base_url'] ?>/img/attivo.gif" ALT="Net Attiva" TITLE="Net Attiva"></a></td>
<?php } else { ?>
<td class="col3btn"><a href="proxy_gest.php?azione=net_up&id=<?php print $dato['id']?>"><img src="<?php print $CONF['base_url'] ?>/img/non_attivo.gif" ALT="Net non Attiva" TITLE="Net non Attiva"></a></td>
<?php } ?>
<td class="colip"><input type="text" size="15" name=net value="<?php print $dato['net'] ?>"></td>
<td class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="colip">
<select name="mask">
<option value="255.255.255.255" <?php if ($dato['mask'] == "255.255.255.255") { print "selected=\"selected\"";}?>>/32 (255.255.255.255)</option>
<option value="255.255.255.252" <?php if ($dato['mask'] == "255.255.255.252") { print "selected=\"selected\"";}?>>/30 (255.255.255.252)</option>
<option value="255.255.255.248" <?php if ($dato['mask'] == "255.255.255.248") { print "selected=\"selected\"";}?>>/29 (255.255.255.248)</option>
<option value="255.255.255.240" <?php if ($dato['mask'] == "255.255.255.240") { print "selected=\"selected\"";}?>>/28 (255.255.255.240)</option>
<option value="255.255.255.224" <?php if ($dato['mask'] == "255.255.255.224") { print "selected=\"selected\"";}?>>/27 (255.255.255.224)</option>
<option value="255.255.255.192" <?php if ($dato['mask'] == "255.255.255.192") { print "selected=\"selected\"";}?>>/26 (255.255.255.192)</option>
<option value="255.255.255.128" <?php if ($dato['mask'] == "255.255.255.128") { print "selected=\"selected\"";}?>>/25 (255.255.255.128)</option>
<option value="255.255.255.0" <?php if ($dato['mask'] == "255.255.255.0") { print "selected=\"selected\"";}?>>/24 (255.255.255.0)</option>
<option value="255.255.254.0" <?php if ($dato['mask'] == "255.255.254.0") { print "selected=\"selected\"";}?>>/23 (255.255.254.0)</option>
<option value="255.255.252.0" <?php if ($dato['mask'] == "255.255.252.0") { print "selected=\"selected\"";}?>>/22 (255.255.252.0)</option>
<option value="255.255.248.0" <?php if ($dato['mask'] == "255.255.248.0") { print "selected=\"selected\"";}?>>/21 (255.255.248.0)</option>
<option value="255.255.240.0" <?php if ($dato['mask'] == "255.255.240.0") { print "selected=\"selected\"";}?>>/20 (255.255.240.0)</option>
<option value="255.255.224.0" <?php if ($dato['mask'] == "255.255.224.0") { print "selected=\"selected\"";}?>>/19 (255.255.224.0)</option>
<option value="255.255.192.0" <?php if ($dato['mask'] == "255.255.192.0") { print "selected=\"selected\"";}?>>/18 (255.255.192.0)</option>
<option value="255.255.128.0" <?php if ($dato['mask'] == "255.255.128.0") { print "selected=\"selected\"";}?>>/17 (255.255.128.0)</option>
<option value="255.255.0.0" <?php if ($dato['mask'] == "255.255.0.0") { print "selected=\"selected\"";}?>>/16 (255.255.0.0)</option>
</select>
</td>
<td class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="colip"><?php print $dato['data'] ?></td>
<td class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="colip"><?php print $dato['modifica'] ?></td>
<td class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
</tr>
<tr><td class="spaziov" colspan=9><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td></tr>
<tr><td class="spaziov" colspan=9><input type="submit" value="Conferma"></td></tr>
</table>
</form>
<img src="<?php print $CONF['base_url'] ?>/img/spazio.gif" width="1" height="20" alt="">
<?php view_footer(); ?>

76
proxy/net_lista.php Executable file
View File

@@ -0,0 +1,76 @@
<?php
include_once ("../core/config.php");
$UTENTE = login();
$DIRITTI = diritti(10);
view_top();
?>
<form name="" method="post">
<table cellpadding="0" cellspacing="0" border="0" width="90%">
<tr>
<td class="sep" width="5%"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="sep" width="5%"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="sep" width="2%"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="sep" width="5%"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="sep" width="2%"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="sep" width="9%"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="sep" width="2%"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="sep" width="9%"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="sep" width="2%"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="sep" width="15%"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="sep" width="44%"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
</tr>
<tr>
<td class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="spazioh"><a href="net_edit.php"><img src="<?php print $CONF['base_url'] ?>/img/addresource.png"></a></td>
<td colspan=9 class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
</tr>
<tr><td class="spaziov" colspan=11><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td></tr>
<?php
$query = " SELECT
id,
attivo,
net,
mask,
data,
modifica
FROM
proxy_net
ORDER BY
net,
mask
";
$res = mysql_query( $query, $DB_ID );
while ($dato = mysql_fetch_array ( $res )) {
?>
<tr>
<?php
if ($dato['attivo']) {
?>
<td rowspan=2 class="col3btn"><a href="proxy_gest.php?azione=net_down&id=<?php print $dato['id']?>"><img src="<?php print $CONF['base_url'] ?>/img/attivo.gif" ALT="Net Abilitata" TITLE="Net Abilitata"></a></td>
<?php } else { ?>
<td rowspan=2 class="col3btn"><a href="proxy_gest.php?azione=net_up&id=<?php print $dato['id']?>"><img src="<?php print $CONF['base_url'] ?>/img/non_attivo.gif" ALT="Net Disabilitata" TITLE="Net Disabilitata"></a></td>
<?php } ?>
<td rowspan=2 class="col3btn"><a href="net_edit.php?id=<?php print $dato['id'] ?>"><img src="<?php print $CONF['base_url'] ?>/img/modify.gif" ALT="Dettaglio" TITLE="Dettaglio"></a></td>
<td rowspan=2 class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td rowspan=2 class="spazioh"><a href="net_acl.php?id=<?php print $dato['id'] ?>"><img src="<?php print $CONF['base_url'] ?>/img/edit-regole.gif" ALT="ACL" TITLE="ACL"></a></td>
<td rowspan=2 class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td rowspan=2 class="colip"><?php print $dato['net'] ?></td>
<td rowspan=2 class="colip"> / </td>
<td rowspan=2 class="colip"><?php print $dato['mask'] ?></td>
<td rowspan=2 class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
<td class="colip"><?php print $dato['data'] ?></td>
<td rowspan=2 class="spazioh"><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td>
</td>
</tr>
<td class="colip"><?php print $dato['modifica'] ?></td>
<tr>
</tr>
<tr><td class="spaziov" colspan=11><img src="<?php print $CONF['base_url'] ?>/img/spazio.gif"></td></tr>
<?php
} ?>
</table>
</form>
<img src="<?php print $CONF['base_url'] ?>/img/spazio.gif" width="1" height="20" alt="">
<?php view_footer(); ?>

44
proxy/proxy_gest.php Executable file
View File

@@ -0,0 +1,44 @@
<?php
include_once ("../core/config.php");
$UTENTE = login();
$DIRITTI = diritti(1);
?>
<html>
<head>
<script type="text/javascript">
<!--
function confirmation(testo) {
alert(testo)
document.location.href='main.php'
}
//-->
</script>
<?php
if (isset($_GET['id'])) {
$id = $_GET['id'];
if (isset($_GET['azione'])) {
$azione = $_GET['azione'];
switch ($azione) {
case "net_up":
$query = "UPDATE proxy_net SET attivo = 1 WHERE id = $id";
mysql_query( $query, $DB_ID );
break;
case "net_down":
$query = "UPDATE proxy_net SET attivo = 0 WHERE id = $id";
mysql_query( $query, $DB_ID );
break;
case "net_rm":
$query = "DELETE FROM proxy_net WHERE id = $id";
mysql_query( $query, $DB_ID );
break;
default:
$testo = "Regola non implementata";
break;
}
}
}
?>
<script type="text/javascript">
document.location.href='<?php print $_SERVER['HTTP_REFERER']?>'
</script>

View File

@@ -24,8 +24,8 @@ $sts->execute ();
open LOG, ">> /srv/www/htdocs/pannello_vbc/proxy/squid_acl/squid_pool.log";
LOG->autoflush(1);
alarm $timeout;
while($limit) {
alarm $timeout;
my $query = "";
my $input = <>;
chop $input;

119
proxy/squid_acl/squid_acl_net.pl Executable file
View File

@@ -0,0 +1,119 @@
#!/usr/bin/perl
$|=1;
use DBI;
use Switch;
use FindBin qw($Bin);
require "$Bin/../script/conntrack.conf";
local $SIG{ALRM} = sub {
my $time = localtime; # scalar context
print LOG "$$ - $time - Exit\n";
exit 1;
};
srand($$);
$timeout = 60 * (int(rand(5))+61);
$limit = 50;
my $dbmysql = DBI->connect("DBI:mysql:;host=$DBhost", $DBuser, $DBpass) or die ($DBI::errstr);
$sts = $dbmysql->prepare("use $DBname");
$sts->execute ();
open LOG, ">> /srv/www/htdocs/pannello_vbc/proxy/squid_acl/squid_pool.log";
LOG->autoflush(1);
while($limit) {
alarm $timeout;
my $query = "";
my $input = <>;
chop $input;
my @param = split / /, $input;
my $ritorno = cerca ($param[1],$param[2], -1);
$limit--;
if ($ritorno) {
print LOG "$param[0] - $param[1] - $param[2] - ERR\n";
print "DENY\n";
} else {
$ritorno = cerca ($param[1],$param[2], 1);
if ($ritorno) {
print LOG "$param[0] - $param[1] - $param[2] - OK\n";
print "OK\n";
} else {
print LOG "$param[0] - $param[1] - $param[2] - ERR\n";
print "\n";
}
}
}
exit;
sub cerca {
my $ip = shift;
my $url = shift;
my $stato = shift;
if ($stato == 1) {
$tutto = "";
} else {
$tutto = "";
}
$query = " SELECT
1
FROM
proxy_net
JOIN
proxy_acl_net
ON
proxy_net.id = proxy_acl_net.idaclnet
AND
proxy_acl_net.stato = $stato
JOIN
proxy_acl_list
ON
proxy_acl_net.idacllist = proxy_acl_list.id
AND
proxy_acl_list.attivo = 1
JOIN
proxy_acl
ON
proxy_acl.idacllist = proxy_acl_list.id
AND
proxy_acl.attivo = 1
AND
LOCATE(proxy_acl.rif, '$url') > 0
WHERE
(INET_ATON('$ip') & INET_ATON(proxy_net.mask)) = INET_ATON(proxy_net.net)
UNION DISTINCT SELECT
1
FROM
proxy_net
JOIN
proxy_acl_net
ON
proxy_net.id = proxy_acl_net.idaclnet
AND
proxy_acl_net.stato = $stato
JOIN
proxy_acl_list
ON
proxy_acl_net.idacllist = proxy_acl_list.id
AND
proxy_acl_list.nome = 'ALL'
WHERE
(INET_ATON('$ip') & INET_ATON(proxy_net.mask)) = INET_ATON(proxy_net.net)
";
# print "$query\n";
$sts = $dbmysql->prepare($query);
$sts->execute ();
if ($ref = $sts->fetchrow_hashref ) {
return 1;
} else {
return 0;
}
}