petar.company/mail-users.php

349 lines
10 KiB
PHP
Raw Normal View History

2025-03-01 00:58:18 +01:00
<?php
# vers. 20120622-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-mail.php");
?>
<!-- ------------------------------------------------------------------------ -->
<?php require 'include/inc-header.php';?>
<!-- ------------------------------------------------------------------------ -->
<?php require 'include/inc-top.php';?>
<!-- ------------------------------------------------------------------------ -->
<tr bgcolor=navy align=center>
<td colspan=8><font color=yellow><b>Mail Users</b></font></td>
<tr>
<td align=left bgcolor=#dddddd colspan=8>
<FORM NAME=search ACTION=<?php echo $_SERVER["PHP_SELF"]; ?> METHOD=POST>
Parametri di filtro:
&nbsp; [ <a href=<?php echo $_SERVER["PHP_SELF"]; ?>>Reset to default</a> ]
&nbsp; [ <a href='javascript:document.search.submit();'>Inizia ricerca </a> ]
&nbsp; [ <a href=<?php echo $petar_webdir."/mail-adduser.php"; ?> >Nuova email</a> ]
<p>
<select name=campo>
<option value=email>email</option>
<option value=login>login</option>
<option value=domain>domain</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=10 MAXLENGTH=18>
&nbsp; ordina per :
<select name=sort>
<option value=email>email</option>
<option value=domain>domain</option>
<option value=login>login</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>
<INPUT TYPE=HIDDEN name=step value=1>
</FORM>
<?php
$_REQUEST["step"]=$_REQUEST["step"] ?? '';
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 (!isset($_REQUEST["startrec"]) ) { $_REQUEST["startrec"]=0; }
$LIMIT = " limit ".$_REQUEST["startrec"].",".$_REQUEST["nrmax"];
$WHERE = " where ".$_REQUEST["campo"].$RELAZIONE;
$SORT = $_REQUEST["sort"];
$sql = "SELECT login, gid, shell, email, domain FROM mailuser $WHERE order by $SORT $LIMIT";
$index=0;
$result=$dbh->query($sql);
$rows=$result->fetchAll();
if ( count($rows) == 0 ) {
echo "<tr bgcolor=yellow align=center>".
"<td colspan=8><font color=red><b>Nessun record trovato</b></font></td>";
} else {
echo "<tr bgcolor=navy align=center>".
"<td width=4%><font color=yellow><b>nr</b></font></td>".
"<td width=20%><font color=yellow><b>login</b></font></td>".
"<td width=5%><font color=yellow><b>gid</b></font></td>".
"<td width=10%><font color=yellow><b>shell</b></font></td>".
"<td width=27%><font color=yellow><b>email</b></font></td>".
"<td width=22%><font color=yellow><b>domain<b></font></td>".
"<td width=8%><font color=yellow><b>x<b></font></td>";
foreach($rows as $row){
$index = $index+1;
if (($index % 2) == 0){
$bgcolor = $bgcolora;
} else {
$bgcolor = $bgcolorb;
}
echo "<tr align=left bgcolor=$bgcolor>".
"<td>".$index.
"<td><a href=".$_SERVER["PHP_SELF"]."?step=2&login=".$row['login'].">".
$row['login']."</a>".
"<td>".$row['gid'].
"<td><a href=".$_SERVER["PHP_SELF"]."?step=5&login=".$row['login'].">".
$row['shell']."</a>".
"<td>".$row['email'].
"<td>".$row['domain'].
"<td>";
if ($admin_option){
echo "<a href=".$_SERVER["PHP_SELF"]."?step=3&login=".$row['login'].">".
"<img alt='burn it' src=pics/cut.gif border=0></a>";
echo "<a href=".$_SERVER["PHP_SELF"]."?step=2&login=".$row['login'].">".
"<img alt='change pwd' src=pics/pwd.gif border=0></a>";
echo "<a href=".$_SERVER["PHP_SELF"]."?step=5&login=".$row['login'].">".
"<img alt='change shell' src=pics/edit.gif border=0></a>";
} else {
echo "-";
}
echo "</tr>";
}
}
}
### cambio pwd ###
if ($_REQUEST["step"] == "2"){
$pwd=$_REQUEST["pwd"] ?? '';
if (isset($_REQUEST["vapor"])) {
if (strlen($_REQUEST["pwd"]) < "6"){
echo "<p><FONT color=red><b>Errore</b></FONT><p>".
"La pwd <b>'".$_REQUEST["pwd"]."'</b> e' piu' corta di 6 caratteri".
"<p>".
"Nessuna modifica e' stata effettuata";
} else {
$sql = "update mailuser set pwd = '".crypt($pwd, '$6$')."' where login = '".$_REQUEST["login"]."'";
$count = $dbh->exec($sql);
passthru("/usr/local/bin/sudo ".$mng_user." PWD ".$_REQUEST["login"]." ".$pwd, $retval);
if ($retval != "0"){
echo "Script to change PWD - Execution exited with status code:".$retval;
} else {
echo "<p><FONT COLOR=red>Record felicemente modificati: ".$count.
"<p><FONT COLOR=green>Nuova pwd: ".$pwd;
}
}
} else {
$stringa = "1qaz2wsx3edc4rfv5tgb6yhn7ujm8ikolp";
$pwd=substr(str_shuffle($stringa),0,6);
$sql = "SELECT email FROM mailuser where login = '".$_REQUEST["login"]."'";
$result=$dbh->query($sql);
$row=$result->fetch();
echo "<tr bgcolor=white align=center>".
"<td colspan=7><b>Sei sicuro di voler cambiare la pwd di ".$_REQUEST["login"]." (".$row['email'].") ? </b>".
"<font color=red><b>".$row["email"]."</b></font> ? <p>".
"La nuova pwd suggerita e' : ".
"&nbsp;&nbsp;".
"<FORM NAME=changepwd ACTION=".$_SERVER["PHP_SELF"]." METHOD=POST>".
"<INPUT TYPE=TEXT NAME=pwd VALUE=".$pwd." SIZE=6 MAXLENGTH=15>".
"<INPUT TYPE=HIDDEN NAME=step VALUE=2>".
"<INPUT TYPE=HIDDEN NAME=vapor VALUE=yes>".
"<INPUT TYPE=HIDDEN NAME=login VALUE=".$_REQUEST["login"].">".
"<p>".
"La tua risposta e' ".
"[ <a href='javascript:document.changepwd.submit();'>".
"Si, facciamolo impazzire !</a> | ".
"&nbsp;&nbsp;<a href=".$_SERVER["PHP_SELF"].">No, che si tenga la vecchia !!</a> ]".
"</FORM>";
}
}
### delete user ###
if ($_REQUEST["step"] == "3"){
if (isset($_REQUEST["vapor"])) {
$sql = "DELETE from mailuser where login = '".$_REQUEST["login"]."'";
$result=$dbh->exec($sql);
passthru("/usr/local/bin/sudo ".$mng_user." DEL ".$_REQUEST["login"], $retval);
if ($retval != "0"){
echo "Script to delete USER - Execution exited with status code:".$retval;
} else {
echo "<p><FONT COLOR=red>DB record cancellati: ".$result."</font><br>".
"[ <a href=mail-restart.sh>Sincronizza</a> ] o aspetta 2s per la procedura automatica";
echo '<meta http-equiv="refresh" content="2;url=mail-restart.php" />';
}
} else {
$sql = "SELECT email, login FROM mailuser where login = '".$_REQUEST["login"]."'";
$result=$dbh->query($sql);
$row=$result->fetch();
echo "<tr bgcolor=white align=center>".
"<td colspan=7><b>Sei sicuro di voler cancellare <font color=red>".$_REQUEST["login"]."</font> (".$row['email'].") ? </b>".
"<p>".
"La tua risposta e' [ <a href=".$_SERVER["PHP_SELF"]."?step=3&vapor=yes&login=".$row["login"].">Si, vaporizziamola !</a> | ".
"&nbsp;&nbsp;<a href=".$_SERVER["PHP_SELF"].">No, oggi mi sento buono</a> ]";
}
}
####################################################################################
if ($_REQUEST["step"] == "5"){
$shell=$_REQUEST["shell"] ?? '';
if (isset($_REQUEST["vapor"])) {
if ($shell == "nologin"){
$shell="/sbin/nologin";
} else {
$shell="/bin/sh";
}
$sql = "update mailuser set shell = '".$shell."' where login = '".$_REQUEST["login"]."'";
$count = $dbh->exec($sql);
passthru("/usr/local/bin/sudo ".$mng_user." SHL ".$_REQUEST["login"]." ".$shell, $retval);
if ($retval != "0"){
echo "Script to change SHELL - Execution exited with status code:".$retval;
} else {
echo "<p><FONT COLOR=red>Record felicemente modificati: ".$retval;
"<p><FONT COLOR=green>Nuova shell: ".$shell;
}
} else {
$sql = "SELECT shell,email FROM mailuser where login = '".$_REQUEST["login"]."'";
$result=$dbh->query($sql);
$row=$result->fetch();
echo "<tr bgcolor=white align=center>".
"<td colspan=7><b>Sei sicuro di voler cambiare la shell di ".$_REQUEST["login"]." (".$row['email'].") ? </b>".
"<br>Tipo di shell attualmente in uso <font color=red><b>".$row["shell"]."</b></font> ? <p>".
"Possibili shell : ".
"&nbsp;&nbsp;".
"<FORM NAME=changeshell ACTION=".$_SERVER["PHP_SELF"]." METHOD=POST>".
"<SELECT NAME=shell>".
"<OPTION value=nologin>nologin</option>".
"<OPTION value=sh>sh</option>".
"</SELECT>".
"<INPUT TYPE=HIDDEN NAME=step VALUE=5>".
"<INPUT TYPE=HIDDEN NAME=vapor VALUE=yes>".
"<INPUT TYPE=HIDDEN NAME=login VALUE=".$_REQUEST["login"].">".
"<p>".
"La tua risposta e' ".
"[ <a href='javascript:document.changeshell.submit();'>".
"Si, facciamolo impazzire !</a> | ".
"&nbsp;&nbsp;<a href=".$_SERVER["PHP_SELF"].">No, che si tenga la vecchia !!</a> ]".
"</FORM>";
}
}
?>
<!-- ------------------------------------------------------------------------ -->
<?php require 'include/inc-footer.php';?>
<!-- ------------------------------------------------------------------------ -->