120 lines
3.7 KiB
PHP
120 lines
3.7 KiB
PHP
<?php
|
|
define ("DBHOST", "localhost");
|
|
define ("DBUSER", "squid");
|
|
define ("DBPASS", "squid");
|
|
define ("DBDATABASE", "squid");
|
|
|
|
mysql_pconnect(DBHOST, DBUSER, DBPASS) or die("");
|
|
mysql_select_db(DBDATABASE) or die("");
|
|
?>
|
|
|
|
<html><head>
|
|
<link rel="stylesheet" type="text/css" href="format.css">
|
|
</head><body bgcolor="#FFFFFF">
|
|
<h1>Squid ACLs</h1>
|
|
|
|
<?php
|
|
if (isset($_GET['del'])) {
|
|
$sql= "DELETE FROM acl WHERE id = '".$_GET['del']."'";
|
|
mysql_query($sql);
|
|
}
|
|
|
|
//
|
|
if (isset($_POST['form'])) {
|
|
$form= $_POST['form'];
|
|
|
|
// ACL targets abpruefen
|
|
if ($form['acl'] != 1 && $form['acl'] != 2)
|
|
$formerr= "Unbekanntes ACL Target.";
|
|
|
|
|
|
// IP aufspalten
|
|
$ip= explode("/", trim($form['fullip']));
|
|
$iplong= ip2long($ip[0]);
|
|
|
|
// IP gueltig?
|
|
if (trim($ip[0]) == long2ip($iplong)) {
|
|
$form['ip']= long2ip($iplong);
|
|
} else {
|
|
$form['ip']= trim($ip[0]);
|
|
$formerr= "Ungültige IP.";
|
|
}
|
|
|
|
// mask gueltig?
|
|
if (isset($ip[1])) {
|
|
$form['mask']= trim($ip[1]);
|
|
if ($ip[1] <= 0 || $ip[1] > 32) {
|
|
$formerr= "Ungültige Netmask.";
|
|
}
|
|
} else {
|
|
$form['mask']= 32;
|
|
}
|
|
|
|
// wenn kein fehler, dann in DB einfuegen
|
|
if (!isset($formerr)) {
|
|
$sql= "INSERT INTO acl SET ".
|
|
"flags = '".$form['acl']."', ".
|
|
"ip = INET_ATON('".$form['ip']."'), ".
|
|
"mask = '".$form['mask']."', ".
|
|
"url = '".$form['url']."', ".
|
|
"info = '".$form['info']."'";
|
|
|
|
mysql_query($sql);
|
|
unset($_POST);
|
|
|
|
} else {
|
|
echo '<p class="fehler">'.$formerr.'</p>';
|
|
}
|
|
|
|
}
|
|
|
|
// keine form daten vorhanden -> defaults
|
|
if (!isset($_POST['form'])) {
|
|
$form= array("acl" => 2, "ip" => "", "mask" => 32, "url" => "", "info" => "");
|
|
}
|
|
|
|
?>
|
|
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tr><td class="navbar">
|
|
<table width="100%" cellspacing="1" cellpadding="3">
|
|
<tr>
|
|
<td class="navbar" align="center"><b>ACL</b></td>
|
|
<td class="navbar" align="center"><b>IP / Mask</b></td>
|
|
<td class="navbar" align="center"><b>URL</b></td>
|
|
<td class="navbar" align="center"><b>Beschreibung</b></td>
|
|
<td class="navbar" align="center"><b>X</b></td>
|
|
</tr>
|
|
|
|
<?php
|
|
$aclArr= array(1 => "ALLOW", 2 => "DENY");
|
|
|
|
$sql= "SELECT id, flags, INET_NTOA(ip) AS ip, mask, url, info FROM acl ORDER BY ip, url";
|
|
$res= mysql_query($sql);
|
|
|
|
$tdclass= "hblau";
|
|
while ($row= mysql_fetch_assoc($res)) {
|
|
echo '<tr><td class="'.$tdclass.'" align="center">'.$aclArr[$row['flags']].'</td>'."\n".
|
|
'<td class="'.$tdclass.'">'.$row['ip'].(($row['mask'] != 32) ? ' /'.$row['mask'] : '').'</td>'."\n".
|
|
'<td class="'.$tdclass.'"><a href="http://'.$row['url'].'" target="_blank">'.$row['url'].'</td>'."\n".
|
|
'<td class="'.$tdclass.'">'.$row['info'].'</td>'."\n".
|
|
'<td class="'.$tdclass.'" align="center"><a href="'.$_SERVER['PHP_SELF'].'?del='.$row['id'].'"><font color="#ff0000">DEL</font></td></tr>'."\n";
|
|
|
|
$tdclass= ($tdclass == "hblau") ? "dblau" : "hblau";
|
|
}
|
|
?>
|
|
|
|
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="squid">
|
|
<tr><td class="dblau"><select name="form[acl]">
|
|
<option value="1" <?php if ($form['acl'] == 1) echo "selected"; ?>>ALLOW</option>
|
|
<option value="2" <?php if ($form['acl'] == 2) echo "selected"; ?>>DENY</option>
|
|
</select></td>
|
|
<td class="dblau"><input type="text" name="form[fullip]" value="<?php echo $form['ip'].(($form['mask'] != 32) ? ' /'.$form['mask'] : '') ?>"></td>
|
|
<td class="dblau"><input type="text" name="form[url]" value="<?php echo $form['url'] ?>"></td>
|
|
<td class="dblau"><input type="text" name="form[info]" value="<?php echo $form['info'] ?>"></td>
|
|
<td class="dblau"><input type="submit" value="ADD"></td></tr>
|
|
</form>
|
|
|
|
</table></td></tr></table>
|
|
|
|
</body></html>
|