petar.company/radius-users.php

290 lines
8.1 KiB
PHP
Raw Normal View History

2025-03-01 00:58:18 +01:00
<?php
# vers. 20071219-01
include_once("./include/cfg-petar.php");
include_once("./include/layout.php");
include_once("./include/users.php");
include_once("./include/db.php");
include_once("./include/cfg-radius.php");
echo makemyheader();
echo maketop();
?>
<table align="center" width=95% border=0 cellspacing=10 cellpadding=0 bordercolor=black>
<tr align=left valign=top>
<td width=15%> <? echo $menu; ?>
<td width=85%>
<table width=85% border=1 align=center cellpadding=3>
<tr bgcolor=navy align=center>
<td colspan=7><font color=yellow><b>Gestione Utenti RADIUS</b></td>
<tr>
<td align=left bgcolor=#dddddd colspan=7>
<FORM ACTION=<?php echo $_SERVER["PHP_SELF"]; ?> METHOD=POST>
Modifica parametri di filtro:
&nbsp; [ <a href=<?php echo $_SERVER["PHP_SELF"]; ?>>Reset</a> ]
<p>
<select name=campo>
<option value=login>login</option>
<option value=pwd>password</option>
<option value=ip>ip</option>
<option value=netmask>netmask</option>
<option value=vendor>vendor</option>
</select>
&nbsp;
<select name=relazione>
<option value=contiene>contiene</option>
<option value=noncontiene>non contiene</option>
<option value=uguale>uguale</option>
<option value=diverso>diverso</option>
<option value=inizia>inizia</option>
<option value=noninizia>non inizia</option>
<option value=finisce>finisce</option>
<option value=nonfinisce>non finisce</option>
</select>
&nbsp;
<INPUT TYPE=TEXT NAME=filter SIZE=18 MAXLENGTH=18>
&nbsp; ordina per :
<select name=sort>
<option value=login>login</option>
<option value=password>password</option>
<option value="inet_aton(ip)">ip</option>
<option value=netmask>netmask</option>
<option value=vendor>vendor</option>
</select>
&nbsp; max :
<select name=nrmax>
<option value=10>10</option>
<option value=30>30</option>
<option value=50>50</option>
<option value=100>100</option>
<option value=300>300</option>
<option value=500>500</option>
<option value=1500>1500</option>
<option value=15000 selected>All</option>
</select>
&nbsp;
<INPUT TYPE=SUBMIT name=submit value=start>
<INPUT TYPE=HIDDEN name=step value=1>
</FORM>
<?php
if ($_REQUEST["step"] == "1"){
switch ($_REQUEST["relazione"]) {
case "contiene":
$RELAZIONE = " like '%".$_REQUEST["filter"]."%'";
break;
case "noncontiene":
$RELAZIONE = " not like '%".$_REQUEST["filter"]."%'";
break;
case "uguale":
$RELAZIONE = " = '".$_REQUEST["filter"]."'";
break;
case "diverso":
$RELAZIONE = " != '".$_REQUEST["filter"]."'";
break;
case "inizia":
$RELAZIONE = " like '".$_REQUEST["filter"]."%'";
break;
case "noninizia":
$RELAZIONE = " not like '".$_REQUEST["filter"]."%'";
break;
case "finisce":
$RELAZIONE = " like '%".$_REQUEST["filter"]."'";
break;
case "nonfinisce":
$RELAZIONE = " not like '%".$_REQUEST["filter"]."'";
break;
}
if ($_REQUEST["startrec"] == ""){
$_REQUEST["startrec"]=0;
}
$LIMIT = " limit ".$_REQUEST["startrec"].",".$_REQUEST["nrmax"];
$WHERE = " where ".$_REQUEST["campo"].$RELAZIONE." ".$VENDOR_RESTR;
$SORT = $_REQUEST["sort"];
$query = sqlite_query($dbhandle, "SELECT login, pwd, ip, netmask, vendor FROM radiususer $WHERE order by $SORT $LIMIT");
$numrecords = sqlite_num_rows($query);
if ($numrecords == 0){
echo "<tr bgcolor=yellow align=center>".
"<td colspan=7><font color=red><b>Nessun record trovato</b></font></td>";
} else {
echo "<tr bgcolor=navy align=center>".
"<td width=3%><font color=yellow><b>Nr.</b></font></td>".
"<td width=22%><font color=yellow><b>Login</b></font></td>".
"<td width=22%><font color=yellow><b>Password</b></font></td>".
"<td width=22%><font color=yellow><b>IP</b></font></td>".
"<td width=22%><font color=yellow><b>NetMask</b></font></td>".
"<td width=22%><font color=yellow><b>Vendor</b></font></td>".
"<td width=12%><font color=yellow><b>-</b></font></td>";
while ($entry = sqlite_fetch_array($query, SQLITE_ASSOC)) {
$index = $index+1;
if (($index % 2) == 0){
$bgcolor = $bgcolora;
} else {
$bgcolor = $bgcolorb;
}
if ( $entry['vendor'] != "cnet" && (substr($entry['ip'],7,3) == "141" || substr($entry['ip'],7,3) == "146")){
$entry['ip'] = "ip dinamico";
}
if ($entry['netmask'] == "255.255.255.248"){
$fntcolor="red";
} else {
$fntcolor="navy";
}
echo "<tr align=left bgcolor=$bgcolor>".
"<td><font color=$fntcolor>$index".
"<td><a href=".$_SERVER["PHP_SELF"]."?step=2&id=".rand(100,999)."&sl=".base64_encode(str_rot13($entry['login'])).">".$entry['login'].
"<td><font color=$fntcolor>".$entry['pwd'].
"<td><font color=$fntcolor>".$entry['ip'].
"<td><font color=$fntcolor>".$entry['netmask'].
"<td><font color=$fntcolor>".$entry['vendor'].
"<td>";
if ($admin_option){
echo "<a href=".$_SERVER["PHP_SELF"]."?step=3&sl=".base64_encode(str_rot13($entry['login']))."><img alt='burn it' src=pics/fire16.png border=0></a>";
} else {
echo "-";
}
echo "</tr>";
}
}
}
if ($_REQUEST["step"] == "2"){
# Simple decoding
$_REQUEST["sl"]=str_rot13(base64_decode($_REQUEST["sl"]));
if (!$_REQUEST["nlog"]){
$_REQUEST["nlog"]=1;
}
$query = sqlite_query($dbhandle, "SELECT login, pwd, ip, netmask, vendor FROM radiususer where login = '".$_REQUEST["sl"]."'".$VENDOR_RESTR);
if (sqlite_num_rows($query) != 1){
echo "Aaarghhhh ! Errore nei dati. Registrato !";
exit;
}
$entry = sqlite_fetch_array($query, SQLITE_ASSOC);
$log=$radius_log_dir."/radius.log";
echo "<tr align=left>";
echo "<td align=center colspan=5 bgcolor=navy ><FONT color=yellow><STRONG>".$_REQUEST["sl"]."</STRONG></FONT>";
# Ping
echo "<tr align=left>";
echo "<td align=left colspan=5 bgcolor=white>";
$cmdstr = "ping -n -t 2 ".$entry["ip"];
$fp = popen($cmdstr, 'r');
echo "<pre>";
while ($line = fgets($fp, 4096)){
echo $line;
}
echo "</pre>";
pclose($fp);
# Log Analyze
$cmdstr = "tail -r ".$log." | grep -m ".$_REQUEST["nlog"]." ".$_REQUEST["sl"];
$fp = popen($cmdstr, 'r');
echo "<tr align=left bgcolor=navy>".
"<td><FONT color=yellow>data".
"<td><FONT color=yellow>status".
"<td><FONT color=yellow>login".
"<td><FONT color=yellow>RAS".
"<td><FONT color=yellow>port";
while ($line = fgets($fp, 4096)){
preg_match_all("|(.{24}).{9}(.*):.*\[(.*)\/.* client (.*) port (.*)\).*|U",$line,$out, PREG_PATTERN_ORDER);
echo "<tr align=left>".
"<td>".$out[1][0].
"<td>".$out[2][0].
"<td>".$out[3][0].
"<td>".$out[4][0].
"<td>".$out[5][0];
}
pclose($fp);
echo "<tr align=center>".
"<td colspan=5>Mostra ultimi [ ".
"<a href=".$_SERVER["PHP_SELF"]."?step=2&id=".rand(100,999)."&nlog=1&sl=".base64_encode(str_rot13($entry['login'])).">1</a> | ".
"<a href=".$_SERVER["PHP_SELF"]."?step=2&id=".rand(100,999)."&nlog=5&sl=".base64_encode(str_rot13($entry['login'])).">5</a> | ".
"<a href=".$_SERVER["PHP_SELF"]."?step=2&id=".rand(100,999)."&nlog=15&sl=".base64_encode(str_rot13($entry['login'])).">15</a> | ".
"<a href=".$_SERVER["PHP_SELF"]."?step=2&id=".rand(100,999)."&nlog=25&sl=".base64_encode(str_rot13($entry['login'])).">25</a> |".
"<a href=".$_SERVER["PHP_SELF"]."?step=2&id=".rand(100,999)."&nlog=50&sl=".base64_encode(str_rot13($entry['login'])).">50</a>".
" ] accessi";
}
if ($_REQUEST["step"] == "3"){
}
if ($_REQUEST["step"] == "3"){
$_REQUEST["sl"]=str_rot13(base64_decode($_REQUEST["sl"]));
if ($_REQUEST["vapor"]) {
sqlite_query($dbhandle, "DELETE from RADIUSUSER where login = '".$_REQUEST["sl"]."'");
echo "<p><FONT COLOR=red>Record felicemente cancellati : ".sqlite_changes($dbhandle);
} else {
echo "<tr bgcolor=white align=center>".
"<td colspan=7><b>Sei sicuro di voler cancellare questo incolpevole radius login: </b>".
"<font color=red><b>".$_REQUEST["sl"]."</b></font> ? <p>".
"La tua risposta e' [ <a href=".$_SERVER["PHP_SELF"]."?step=3&vapor=yes&sl=".base64_encode(str_rot13($_REQUEST["sl"])).">Si, fallo sparire !</a> | ".
"&nbsp;&nbsp;<a href=".$_SERVER["PHP_SELF"].">No, forse domani</a> ]";
}
}
?>
</table>
</td></tr></table>