Initial commit

This commit is contained in:
Charlie Root 2025-03-01 00:58:18 +01:00
commit 529efd53a1
140 changed files with 10310 additions and 0 deletions

224
mail-adduser.php Normal file
View file

@ -0,0 +1,224 @@
<?php
# vers. 20120625-01
include_once("./include/cfg-petar.php");
include_once("./include/cfg-mail.php");
include_once("./include/layout.php");
include_once("./include/users.php");
include_once("./include/db.php");
?>
<!-- ------------------------------------------------------------------------ -->
<?php require 'include/inc-header.php';?>
<!-- ------------------------------------------------------------------------ -->
<?php require 'include/inc-top.php';?>
<!-- ------------------------------------------------------------------------ -->
<tr bgcolor=navy align=center>
<td colspan=5><font color=yellow><b>Email</b></font></td>
<?php
echo "<tr align=left valign=top>".
"<td colspan=6>";
if ($restricted_petar == true){
echo "<tr><td colspan=6><font color=red><b>impossibile creare utenti nel sistema operativo.</b></font></td></tr>".
"<tr><td colspan=6> - per abilitare la scrittura settare la seguente variabile ".
"<b>restricted_petar</b> = <b>false</b> nel file : <b>include/cfg-mail.php</b></tr>";
require 'include/inc-footer.php';
exit;
}
$_REQUEST["step"]=$_REQUEST["step"] ?? null;
if (!$_REQUEST["step"]){
$sql="SELECT domain FROM MAILUSER group by domain order by domain";
$result=$dbh->query($sql);
$rows=$result->fetchAll();
echo "<b>email in nuovo dominio</b>".
"<FORM NAME=ndomain ACTION=".$_SERVER["PHP_SELF"]." METHOD=POST>".
"[ <a href='javascript:document.ndomain.submit();'>Inizializza il dominio</a> ]: ".
"<INPUT TYPE=TEXT NAME=domain SIZE=30 MAXLENGTH=30>".
"&nbsp;&nbsp;".
"<INPUT TYPE=HIDDEN name=step value=1></FORM>";
if ( count($rows) > 0 ) {
echo "<b>email in dominio esistente</b>".
"<FORM NAME=edomain ACTION=".$_SERVER["PHP_SELF"]." METHOD=POST>".
"[ <a href='javascript:document.edomain.submit();'>Crea nuova email nel seguente dominio</a> ]:".
"<select name=domain>";
foreach($rows as $row){
echo "<option value=".$row["domain"].">".$row["domain"]."</option>";
}
echo "</select>".
"&nbsp;".
"<INPUT TYPE=HIDDEN name=step value=1></FORM>".
"<p>";
}
}
if ($_REQUEST["step"] == "1"){
if ($_REQUEST["domain"]){
$_REQUEST["domain"] = preg_replace("/[^A-Za-z0-9.-]/", '', $_REQUEST["domain"]);
# Make some defaults
# Pwd
$stringa = "1qaz2wsx3edc4rfv5tgb6yhn7ujm8ikolp";
$pwd=substr(str_shuffle($stringa),0,6);
echo "Ultime (max 30) email del dominio: <strong>".$_REQUEST["domain"]."</strong>".
"<br><FORM NAME=creamail ACTION=".$_SERVER["PHP_SELF"]." METHOD=POST>";
echo "<tr bgcolor=navy>".
"<td><font color=yellow>nr".
"<td><font color=yellow>login".
"<td><font color=yellow>email".
"<td><font color=yellow>domain";
# Contiamo quante email per prenderne poi le ultime 30.
$sql="SELECT login FROM MAILUSER where domain = '".$_REQUEST["domain"]."'";
$result=$dbh->query($sql);
$rows=$result->fetchAll();
$LIMIT = "LIMIT ".(count($rows) - 30).",30";
# Troviamo le ultime 30 email del dominio
$sql = "SELECT login,email,domain FROM MAILUSER where domain = '".$_REQUEST["domain"]."' ".$LIMIT;
$index = 0;
$result=$dbh->query($sql);
$rows=$result->fetchAll();
foreach($rows as $row){
$index += 1;
echo "<tr>".
"<td width=5%>".$index.
"<td width=30%>".$row["login"].
"<td width=46%>".$row["email"].
"<td width=24%>".$row["domain"];
}
echo "<tr bgcolor=yellow>".
"<td colspan=5>".
"Dati nuovo utente:".
"<p>".
"login: <INPUT TYPE=TEXT NAME=login SIZE=15 MAXLENGTH=15>".
"&nbsp;&nbsp;".
"pwd : <INPUT TYPE=TEXT NAME=pwd VALUE=$pwd SIZE=6 MAXLENGTH=15>".
"&nbsp;&nbsp;".
"email: <INPUT TYPE=TEXT NAME=email SIZE=20 MAXLENGTH=30> @ ".$_REQUEST["domain"].
"<p>".
"shell:&nbsp; <select name=shell>".
"<option value='/sbin/nologin'>no</option>".
"<option value='/bin/sh'>si</option>".
"</select>".
"&nbsp;&nbsp;".
" [ <a href='javascript:document.creamail.submit();'>crea questa email</a> ]".
"&nbsp;&nbsp;".
" [ <a href='mail-adduser.php'>annulla</a> ]".
"<INPUT TYPE=HIDDEN name=domain value=".$_REQUEST["domain"].">".
"<INPUT TYPE=HIDDEN name=step value=2></FORM>".
"</tr></table>";
} else {
echo "<p>&nbsp;<p><font color=red><b>Errore</b></font><p>".
"Campo nuovo dominio vuoto".
"<p><a href='javascript:history.back();'>Correzione</a>";
}
}
if ($_REQUEST["step"] == "2"){
$errore=false;
$email=strtolower($_REQUEST["email"]) ?? '';
$domain=strtolower($_REQUEST["domain"]) ?? '';
$login=strtolower($_REQUEST["login"]) ?? '';
$shell=$_REQUEST["shell"] ?? '';
$pwd=$_REQUEST["pwd"] ?? '';
$fullemail = strtolower($email."@".$domain);
$sql = "SELECT email FROM MAILUSER where email = '".$fullemail."'";
$result=$dbh->query($sql);
$rows=$result->fetchAll();
if ( count($rows) > 0 ) {
$errore .= "email $fullemail presente<p>";
}
if (strlen($email) < "3"){
$errore .= "email <b>".$email."</b> troppo corta<p>";
}
if (strlen($login) < "3"){
$errore .= "login <b>".$login."</b> troppo corto<p>";
}
if (strlen($pwd) < "6"){
$errore .= "pwd <b>".$pwd."</b> troppo corta<p>";
}
$sql = "SELECT login FROM MAILUSER where login = '".$login."'";
$result=$dbh->query($sql);
$rows=$result->fetchAll();
if ( count($rows) > 0 ) {
$errore .= "login ".$login." presente. Riesegui la procedura per una nuova generazione<p>";
}
if ($errore){
echo "<font color=red><b>Errore</b></font><p>".
$errore.
"<p><a href='javascript:history.back();'>Correzione</a>";
} else {
$result=false;
$sql = "insert into MAILUSER (login,pwd,gid,email,home,shell,domain) VALUES ('".$login."','".crypt($pwd, '$6$')."','2000','".$fullemail."','".$def_mail_user_home.$login."','".$shell."','".$_REQUEST["domain"]."')";
$count = $dbh->exec($sql);
passthru("/usr/local/bin/sudo ".$mng_user." ADD ".$login." ".crypt($pwd, '$6$')." ".$shell." ".$def_mail_user_home." ".$fullemail, $retval);
if ($retval != "0"){
echo "Script to create USER - Execution exited with status code:".$retval;
exit;
} else {
echo "<p><FONT COLOR=green>USER DB ... OK</font>";
echo "<p><FONT COLOR=green>MAIL DB ... OK</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" />';
}
}
}
?>
<!-- ------------------------------------------------------------------------ -->
<?php require 'include/inc-footer.php';?>
<!-- ------------------------------------------------------------------------ -->