--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
+<title>ldapVmail</title>
+</head>
+<body>
+<h1>Zakladne informacie:</h1>
+Postovy system je tvoreny z niekolkych sluzieb, ktore su zabezpecovane
+samostatnym programovym vybavenim. Jedna sa o nasledujuce casti:<br>
+<h2>POSTFIX</h2>
+Stara sa o prijem posty z internetu a intranetu. Jeho ulohou je pocuvat na
+porte 25 a porte 465. Po pripojeni sa klienta, na niektory z uvedenych
+portov, postfix skontroluje ci prichadzajuca posta moze byt prijata a bud ju
+prijme alebo odmietne. Prijatu postu potom ulozi do mailboxu alebo preposle
+podla poziadaviek prijimatela.
+<h2>COURIER</h2>
+Caka na portoch 110, 143, 993 a 995. Po pripojeni klienta skontroluje login
+a heslo a podla tychto parametrov spristupni pre klienta jeho mailbox, alebo
+pri nespravnom prihlaseni uzivatela odmietne.
+<h2>SQUIRRELMAIL</h2>
+Samostatna WEB aplikacia, ktora vyuziva COURIER aj POSTFIX tak, ze umoznuje
+pomocou WEB rozhrania odosielat a prezerat postu pre uzivatelov.
+<h2>LDAP</h2>
+Autentifikacny a autorizacny server. Tento udrzuje informacie o postovych
+kontach mailsystemu. U tohoto serveru si POSTFIX aj COURIER overuju, ci
+prijimana posta ma byt prijata, resp. ci sa uzivatel spravne prihlasil pri
+pristupe k svojemu mailboxu.
+<hr>
+<H1>Informacie o mailovom konte</H1>
+<h2>Mailova schranka</h2>
+<p>Je spristupnovana pre uzivatela pomocou <b>loginu</b> a <b>hesla</b>. Kazda
+mailova schranka ma svoju <b>mail adresu</b>.</p>
+
+<p>K mailovej schranke je mozne priradit niekolko dalsich adries, ktore sa
+nazyvaju <b>alias</b>. Nie je mozne mat rovnaky alias alebo mail adresu
+pridelenu pre viacero schranok.</p>
+
+<p>Uzivatel moze od mailsystemu pozadovat, aby posty urcene pre jeho mailovu
+schranku boli presmerovane na inu mail adresu. Mechanizmus ktory toto
+umoznuje sa nazyva <b>forward</b>.</p>
+
+<hr> <H1>Informacie o WEB rozhrani pre prezeranie, pridavanie a zmenu
+vlastnosti mail schranok</H1>
+
+<h2>Administrator systemu</h2>
+Ma plne prava k vytvaraniu, mazaniu a editovaniu schranok uzivatelov. Na
+prislusnych strankach zadava svoj login s plnym kontextom a prislusne heslo
+k nemu. Je dolezite pristupovat k stranke len cez sifrovane pripojenie t.j.
+protokolom https.
+
+<H2>Zakladna stranka</h2>
+
+<p>Zakladna stranka WEB rozhrania obsahuje v hornej casti formular,
+umoznujuci pridat noveho uzivatela. Dole pokracuje zoznam aktualne
+evidovanych mail schranok. </p>
+
+<h2>Stranka uzivatela</h2>
+
+<p>Tato stranka je rozdelena na niekolko casti. V hornej casti je login a
+mail prisluchajuci chranke, smerom dole pokracuje zoznam aliasov a dalej
+zoznam forwardov pre danu mail schranku. Uplne naspodku je niekolko
+tlacidiel, ktore umoznuju ulozit pozmenene forwards a aliases, zmenit heslo
+uzivatela, zmazat uzivatela pripadne sa vratit na hlavnu stranku.</p>
+
+<h2>Ovladanie hlavnej stranky</h2>
+
+<p>Pridavanie uzivatela sa realizuje zadanim emailu do textoveho pola v
+hornej casti stranky a po stlaceni tlacidla na pridanie, pokracujete v
+nasledujucej stranke autorizacie (ci mozete pridavat uzivatelov) a
+nasledne po pridani uzivatela pokracujete na stranke uzivatela, t.j. mozete
+doplnit alias, forward, zmenit heslo alebo uzivatela hned zmazat.</p>
+
+<p>V spodnej casti je zoznam aktualnych stranok, obsahuje 3 stlpce, v prvom
+je nazov schranky v druhom zoznam adries (hlavnej aj aliasov) k schranke a v
+tretom je pole, kam sa ma obsah schranky preposielat, t.j. zoznam forwardov. V
+pripade, ze je forwardov alebo aliasov viacej, je mozne si ich prezerat
+"roletkou" v danom poli. Uzivatela je mozne vybrat pre editaciu kliknutim na
+meno schranky v prvom stlpci tabulky.<p>
+
+<h2>Stranka autorizacie</h2>
+
+<p>Akcie chranene heslom (zmena hesla, mazanie uzivatela, pridavanie
+uzivatela a editovanie aliasov a forwardov) ziadaju autorizaciu
+administratora. Jedna sa stale o stranku, ktora v hornej casti oznamuje
+informacie o ktoru schranku sa jedna a v spodnej casti je identifikacia
+administratora a jeho heslo. Identifikacia administratora je predvyplnena.
+Po zadani hesla nasledujuca stranka oznamuje aka akcia bola prevedena a
+informuje o pripadnej chybe pri prevedeni akcie.
+
+<h2>Ovladanie stranky uzivatela</h2>
+
+<p>Pridanie aliasu alebo forwardu realizujete zapisom do volneho textoveho
+pola a stlacenim prislusneho tlacidla na pridanie, resp. odobratie forwardu
+alebo aliasu realizujete kliknutim na prislusne tlacidla vedla mazaneho
+aliasu/forwardu. Zmeny takto prevedene, sa aktivuju az po stlaceni tlacitka
+pre ulozenie zmien v dolnej casti stranky. Dalej je mozne tlacidlami v
+spodnej casti stranky vyziadat zmenu hesla uzivatela alebo zmazanie
+uzivatela. Vsetky operacie su chranene heslom a su pristupne len pre
+administratora systemu.<p>
+
+</body>
+</html>
--- /dev/null
+<?
+
+function putHiddenVariables ($runtype)
+{
+global $dn,$uid,$mail,$alias,$forward;
+
+printf("<input type=\"hidden\" name=\"dn\" value=\"%s\">",base64_encode($dn));
+printf("<input type=\"hidden\" name=\"running\" value=\"%s\">",$runtype);
+printf("<input type=\"hidden\" name=\"uid\" value=\"%s\">\n",base64_encode($uid));
+printf("<input type=\"hidden\" name=\"mail\" value=\"%s\">\n",base64_encode($mail));
+ for($j=0;strlen($alias[$j])>0;$j++){
+ printf("<input type=\"hidden\" name=\"alias[%s]\" value=\"%s\">\n",$j,base64_encode($alias[$j]));
+ }
+ for($j=0;strlen($forward[$j])>0;$j++){
+ printf("<input type=\"hidden\" name=\"forward[%s]\" value=\"%s\">\n",$j,base64_encode($forward[$j]));
+ }
+}
+
+function putEditForm ($warningMessage)
+{
+global $dn,$uid,$mail,$alias,$forward;
+printf("<html>");
+//-------------------------------------------
+ printf("Login: <b>%s</b><hr>Mail: %s<br><hr>Aliases:<br>\n",htmlspecialchars($uid),htmlspecialchars($mail));
+ $alias1=$alias;
+ //remove alias if match primary mail
+ foreach($alias1 as $i=>$value1){
+ if($alias1[$i]==$mail){
+ printf("<b>Upozornenie, nasiel sa alias zhodny s primarnym mailom, pouzite SAVE na ulozenie zmien</b><br>");
+ unset($alias1[$i]);
+ }
+ //remove duplicate aliases
+ foreach($alias1 as $jx=>$value2){
+ if(($j != $i) && ($alias1[$j]==$alias1[$i])){
+ printf("<b>Upozornenie, nasiel sa duplicitny alias, pouzite SAVE na ulozenie zmien</b><br>");
+
+ unset($alias1[$j]);
+ }
+ }
+ }
+ $alias=$alias1;
+ foreach($alias as $i => $value1){
+ if(strlen($alias[$i])>0){
+ printf("<form method=\"post\" name=\"%s\">",base64_encode($alias[$i]));
+ putHiddenVariables("EDITform");;
+ printf("<input type=\"hidden\" name=\"zmazA\" value=\"%s\">\n",base64_encode($alias[$i]));
+ printf("<input type=\"submit\" value=\"Delete\"> %s<br>",htmlspecialchars($alias[$i]));
+ printf("</form>\n\n");
+ }
+ }
+ //-------------------------------------------------
+ printf("<form method=\"post\" name=\"newalias\">");
+ putHiddenVariables("EDITform");;
+ printf("<input type=\"submit\" value=\"Add alias\">");
+ printf("<input type=\"text\" value=\"\" name=\"aliasN\">");
+ printf("</form><hr>Forwards:<br>\n");
+ //-------------------------------------------------
+ $fcount=0;
+ $selfForward=0;
+ $forward1=$forward;
+ foreach($forward1 as $i => $value1){
+ //remove duplicate forwards
+ foreach($forward1 as $j => $value2){
+ if(($j != $i) && ($forward1[$j]==$forward1[$i])){
+ printf("<b>Upozornenie, nasiel sa duplicitny forward, pouzite SAVE na ulozenie zmien</b><br>");
+ unset($forward1[$j]);
+ }
+ else
+ $fcount++;
+ }
+ //if mail is forwarded to my alias .. change forward to primary mail
+ foreach($alias as $j => $value2){
+ if($alias[$j]==$forward1[$i]){
+ printf("<b>Upozornenie, nasiel sa forward na alias, bude zmeneny na primarny mail, pouzite SAVE na ulozenie zmien</b><br>");
+ $forward1[$i]=$mail;
+ }
+ }
+ if($forward1[$i]==$mail)
+ $selfForward=1;
+
+ }
+ if($fcount==1 && $selfForward==1){
+ printf("<b>Upozornenie, nepotrebny forward, pouzite SAVE na ulozenie zmien</b><br>");
+ foreach($forward1 as $i => $value1){
+ unset($forward1[$i]);
+ }
+ $selfForward=0;
+ $fcount=0;
+ }
+ $forward=$forward1;
+ if($selfForward==0) {
+ printf("<form method=\"post\" name=\"%s_selfForward\">",base64_encode($forward[$i]));
+ printf("<input type=\"button\" value=\"Vypnut\" style=\"color:gray\" name=\"selfForward\">\n");
+ printf("<input type=\"submit\" value=\"Zapnut\" name=\"selfForward\">\n");
+ putHiddenVariables("EDITform");
+ printf("Aktualny stav: mail neostava v lokalnom mailboxe<br>");
+ }
+ else {
+ printf("<form method=\"post\" name=\"%s_selfForward\">",base64_encode($forward[$i]));
+ printf("<input type=\"submit\" value=\"Vypnut\" name=\"selfForward\">\n");
+ printf("<input type=\"button\" value=\"Zapnut\" style=\"color:gray\" name=\"selfForward\">\n");
+ putHiddenVariables("EDITform");
+ printf("Aktualny stav: mail ostava v lokalnom mailboxe<br>");
+ }
+ foreach($forward as $i => $value1) {
+ if($forward[$i]!=$mail){
+ printf("<form method=\"post\" name=\"%s\">",base64_encode($forward[$i]));
+ putHiddenVariables("EDITform");
+ printf("<input type=\"hidden\" name=\"zmazF\" value=\"%s\">\n",base64_encode($forward[$i]));
+ printf("<input type=\"submit\" value=\"Delete\"> %s<br>",strip_tags($forward[$i]));
+ printf("</form>\n\n");
+ }
+ }
+ //-------------------------------------------------
+ printf("<form method=\"post\" name=\"newforward\">");
+ putHiddenVariables("EDITform");;
+ printf("<input type=\"submit\" value=\"Add forward\">");
+ printf("<input type=\"text\" value=\"\" name=\"forwardN\">");
+ printf("</form><hr>\n");
+ //-------------------------------------------------
+ if(strlen($warningMessage)>0)
+ printf("%s<hr>",$warningMessage);
+ //-------------------------------------------------
+ printf("<table><tr><td>");
+ printf("<form method=\"post\" name=\"ULOZ\">");
+ putHiddenVariables("SAVE");
+ printf("<input type=\"submit\" value=\"SAVE to LDAP\">");
+ printf("</form></td><td>");
+ printf("<form method=\"post\" name=\"ULOZ\">");
+ putHiddenVariables("PASS");
+ printf("<input type=\"submit\" value=\"PASSWORD\">");
+ printf("</form></td><td>");
+ printf("<form method=\"post\" name=\"ULOZ\">");
+ putHiddenVariables("DEL");
+ printf("<input type=\"submit\" value=\"DELETE user\">");
+ printf("</form></td><td>");
+ printf("<form method=\"post\" action=\"index.php\">");
+ printf("<input type=\"submit\" value=\"BROWSE\">");
+ printf("</form></td></tr></table>");
+ printf("</html>");
+}
+
+function putAdminPassInput($LdapAdmin,$submitString)
+{
+ printf("<table>\n");
+ printf("<tr><td>Admin name:</td>");
+ printf("<td><input type=\"text\" name=\"admin\" value=\"%s\"></td></tr>\n",strip_tags($LdapAdmin));
+ printf("<tr><td>Admin password: </td>");
+ printf("<td><input type=\"password\" name=\"adminpasswd\"></td></tr></table><hr>\n");
+ printf("<input type=\"submit\" name=\"changepassword\" value=\"%s\">",strip_tags($submitString));
+}
+
+function continueForm1 ($warningMessage)
+{
+printf("<html>%s<form method=\"post\" name=\"XX1a\">",$warningMessage);
+putHiddenVariables ("EDITform");
+printf("<input type=\"submit\" name=\"XX1\" value=\"Continue\">");
+printf("</form></html>");
+}
+
+function browseForm ($warningMessage)
+{
+printf("<html>%s<form action=\"index.php\" method=\"post\" name=\"XX2a\">",$warningMessage);
+putHiddenVariables ("BROWSEform");
+printf("<input type=\"submit\" name=\"XX2\" value=\"Continue\">");
+printf("</form></html>");
+}
+
+function getValuesFromForm ()
+{
+global $dn,$uid,$mail,$alias,$forward;
+ $dn=base64_decode($_POST["dn"]);
+ $uid=base64_decode($_POST["uid"]);
+ $mail=base64_decode($_POST["mail"]);
+}
+function getAllValuesFromForm ()
+{
+global $dn,$uid,$mail,$alias,$forward;
+ getValuesFromForm ();
+ for($j=0,$i=0;strlen(base64_decode($_POST["alias"][$i]))>0;$i++)
+ $alias[$j++]=base64_decode($_POST["alias"][$i]);
+ for($j=0,$i=0;strlen(base64_decode($_POST["forward"][$i]))>0;$i++)
+ $forward[$j++]=base64_decode($_POST["forward"][$i]);
+}
+/*
+echo "<pre>";
+print_r ($_POST);
+echo "</pre><hr>";
+*/
+
+global $dn,$uid,$mail,$alias,$forward;
+
+require("config.php");
+$ds=@ldap_connect($LdapHost);
+if($ds==FALSE)
+ {
+ printf("<html>INIT: Ldap server connect error</html>");
+ exit(0);
+ }
+$r=@ldap_bind($ds,$LdapBind,$LdapPass);
+if($r==FALSE)
+ {
+ printf("<html>Ldap server bind error</html>");
+ exit(0);
+ }
+
+switch($_POST["running"]) {
+case "ADDnew" :
+ $uid=$_POST["uid"];
+ if(strlen($uid)>0) {
+ printf("<html>Novy uzivatel <b>%s</b>:<hr>",strip_tags($uid));
+ printf("<table><form method=\"post\" name=\"addnew\">\n");
+ putHiddenVariables ("ADDgo");
+ putAdminPassInput($LdapAdmin,"SAVE");
+ printf("</html>");
+ }
+ else {
+ browseForm ("Novy uzivatel bol chybne zadany");
+ }
+ break;
+
+case "ADDgo":
+ getAllValuesFromForm ();
+ @ldap_close($ds); //rebind
+ $ds=@ldap_connect($LdapHost);
+ if($ds==FALSE){
+ continueForm1("SAVE user: Ldap server connect error");
+ break;
+ }
+ $r=@ldap_bind($ds,$_POST['admin'],$_POST['adminpasswd']);
+ if ($r==FALSE) {
+ continueForm1("Bad admin password\n");
+ break;
+ }
+
+ unset ($entree);
+ $entree["objectClass"][0]="top";
+ $entree["objectClass"][1]="person";
+ $entree["objectClass"][2]="organizationalPerson";
+ $entree["objectClass"][3]="inetOrgPerson";
+ $entree["objectClass"][4]="qmailUser";
+ $entree["mail"]=$uid;
+ $entree["uid"]=$uid;
+ $entree["cn"]=$uid;
+ $entree["sn"]=$uid;
+ $entree["givenname"]=$uid;
+ $entree["userpassword"]=$uid;
+ $entree["accountstatus"]="active";
+ $entree["mailmessagestore"]="/home/vmail/".$uid."/Maildir/";
+ $dn="uid=".$uid.",".$netBase ;
+ $r=@ldap_add($ds, $dn, $entree);
+ $mail=$uid;
+ if ($r==FALSE)
+ continueForm1(sprintf("Nie je mozne upravit data uzivatela <b>%s</b>",strip_tags($uid)));
+ else
+ continueForm1(sprintf("uzivatel <b>%s</b> zavedeny",strip_tags($uid)));
+ break;
+
+
+//run from edited editform
+case "EDITform" :
+ getValuesFromForm ();
+ for($j=0,$i=0;strlen(base64_decode($_POST["alias"][$i]))>0;$i++)
+ if($_POST["zmazA"]!=$_POST["alias"][$i])
+ $alias[$j++]=base64_decode($_POST["alias"][$i]);
+ if(strlen($_POST["aliasN"])>0) {
+ $aliasN=stripslashes($_POST["aliasN"]);
+ $filterx="(|(mail=".$aliasN.")(mailalternateaddress=".$aliasN."))";
+ $sr=@ldap_search($ds,$netBase,$filterx);
+ if ($sr!=NULL) {
+ $info = @ldap_get_entries($ds, $sr);
+ if($info["count"]==0)
+ $alias[$j++]=$aliasN;
+ else
+ $warningMessage=sprintf("Pridavany alias <b>%s</b> uz pouziva iny uzivatel!<br>\n",strip_tags($aliasN));
+ }
+ else
+ $warningMessage=sprintf("Ldapsearch error, pridavany alias moze byt pouzivany");
+ }
+ for($j=0,$i=0;strlen(base64_decode($_POST["forward"][$i]))>0;$i++)
+ if($_POST["zmazF"]!=$_POST["forward"][$i])
+ $forward[$j++]=base64_decode($_POST["forward"][$i]);
+ if(strlen($_POST["forwardN"])>0)
+ $forward[$j++]=stripslashes($_POST["forwardN"]);
+
+ if(strlen($_POST["selfForward"])>0)
+ {
+ getAllValuesFromForm ();
+ if(in_array($mail,$forward))
+ unset($forward[array_search($mail, $forward)]);
+ else
+ array_push($forward, $mail);
+ }
+ putEditForm($warningMessage);
+ break;
+
+//Add to ldap
+case "SAVE":
+ getAllValuesFromForm ();
+ printf("<html>Uzivatel <b>%s</b> zmena udajov:<hr>",strip_tags($uid));
+ printf("<table><form method=\"post\" name=\"save\">\n");
+ putHiddenVariables ("SAVEgo");
+ putAdminPassInput($LdapAdmin,"SAVE");
+ printf("</html>");
+ break;
+
+case "SAVEgo":
+ getAllValuesFromForm ();
+ @ldap_close($ds); //rebind
+ $ds=@ldap_connect($LdapHost);
+ if($ds==FALSE){
+ continueForm1("SAVE user: Ldap server connect error");
+ break;
+ }
+ $r=@ldap_bind($ds,$_POST['admin'],$_POST['adminpasswd']);
+ if ($r==FALSE) {
+ continueForm1("Bad admin password\n");
+ break;
+ }
+
+ unset ($entree);
+ for($j=0;strlen($forward[$j])>0;$j++)
+ $entree["mailforwardingaddress"][$j] = $forward[$j];
+ if($j==0) {//workaround
+ $entree["mailforwardingaddress"]=$mail;
+ $r=@ldap_mod_replace($ds, $dn, $entree);
+ if($r==FALSE){
+ continueForm1(sprintf("Nie je mozne upravit data uzivatela <b>%s</b>",strip_tags($uid)));
+ break;
+ }
+ $entree["mailforwardingaddress"]=$mail;
+ $r=ldap_mod_del($ds, $dn, $entree);
+ if($r==FALSE){
+ continueForm1(sprintf("Nie je mozne upravit data uzivatela <b>%s</b>",strip_tags($uid)));
+ break;
+ }
+ }
+ else {
+ $r=ldap_mod_replace($ds, $dn, $entree);
+ if($r==FALSE){
+ continueForm1(sprintf("Nie je mozne upravit data uzivatela <b>%s</b>",strip_tags($uid)));
+ break;
+ }
+ }
+ unset ($entree);
+ for($j=0;strlen($alias[$j])>0;$j++)
+ $entree["mailalternateaddress"][$j] = $alias[$j];
+ if($j==0) {//workaround
+ $entree["mailalternateaddress"]=$mail;
+ $r=ldap_mod_replace($ds, $dn, $entree);
+ if($r==FALSE){
+ continueForm1(sprintf("Nie je mozne upravit data uzivatela <b>%s</b>",strip_tags($uid)));
+ break;
+ }
+ $entree["mailalternateaddress"]=$mail;
+ $r=ldap_mod_del($ds, $dn, $entree);
+ if($r==FALSE){
+ continueForm1(sprintf("Nie je mozne upravit data uzivatela <b>%s</b>",strip_tags($uid)));
+ break;
+ }
+ }
+ else {
+ $r=ldap_mod_replace($ds, $dn, $entree);
+ if($r==FALSE){
+ continueForm1(sprintf("Nie je mozne upravit data uzivatela <b>%s</b>",strip_tags($uid)));
+ break;
+ }
+ }
+ continueForm1(sprintf("data uzivatela <b>%s</b> su upravene",strip_tags($uid)));
+ break;
+
+//password change button was pressed
+case "PASS":
+ $userpassword=0; //now only admin is approved to change passwords
+ getAllValuesFromForm ();
+ $sr=@ldap_search($ds,$dn,$filter);
+ if ($sr==NULL) {
+ $warningMessage=sprintf("Ldapsearch error, neviem najst uzivatela pre zmenu hesla");
+ putEditForm($warningMessage);
+ exit(0);
+ }
+ $info = @ldap_get_entries($ds, $sr);
+ if($info["count"]!=1) {
+ $warningMessage=sprintf("Ldapsearch error, neviem najst uzivatela pre zmenu hesla");
+ putEditForm($warningMessage);
+ exit(0);
+ }
+ $uid=$info[0]["uid"][0];
+ printf("<html>Changing password for pop3/imap user <b>%s</b><hr>",strip_tags($uid));
+ printf("<table><form method=\"post\" name=\"pass\">\n");
+ printf("<tr><td>New user password: </td>");
+ printf("<td><input type=\"password\" name=\"new1passwd\"></td></tr>\n");
+ printf("<tr><td>Retype user password: </td>");
+ printf("<td><input type=\"password\" name=\"new2passwd\"></td></tr></table><hr>\n");
+ if($userpassword==0)
+ putAdminPassInput($LdapAdmin,"Change password");
+ else
+ putAdminPassInput($uid,"Change password");
+ putHiddenVariables ("PASSgo");
+ printf("</html>");
+ break;
+
+
+//new password update
+case "PASSgo":
+ getAllValuesFromForm ();
+ if(strlen($_POST['new1passwd'])<8 ) {
+ continueForm1("Prilis kratke heslo, ma mat aspon 8 znakov\n");
+ break;
+ }
+ if($_POST['new1passwd'] != $_POST['new2passwd']) {
+ continueForm1("Nove hesla uzivatela sa nezhoduju\n");
+ break;
+ }
+ @ldap_close($ds); //rebind
+ $ds=@ldap_connect($LdapHost);
+ if($ds==FALSE){
+ continueForm1("Password change: Ldap server connect error");
+ break;
+ }
+ $r=@ldap_bind($ds,$_POST['admin'],$_POST['adminpasswd']);
+ if ($r==FALSE) {
+ continueForm1("Bad admin password\n");
+ break;
+ }
+ $CRYPT_MD5=1; //create a md5 password
+ $infoNew["userpassword"]="{crypt}".crypt($_POST['new1passwd']);
+ $r2=@ldap_mod_replace($ds, $dn, $infoNew);
+ if($r2==FALSE){
+ continueForm1(sprintf("Nebolo mozne zmenit heslo<br>Server oznamil: [%s]\n",strip_tags($ldap_error($ds))));
+ break;
+ }
+ continueForm1(sprintf("Heslo pre uzivatela %s bolo uspesne zmenene",strip_tags($uid)));
+ break;
+
+case "DEL":
+ getAllValuesFromForm ();
+ printf("<html>Delete user <b>%s</b> mail: %s ? ",strip_tags($uid),strip_tags($mail));
+ printf("<table><form method=\"post\" name=\"del\">\n");
+ putHiddenVariables ("DELgo");
+ putAdminPassInput($LdapAdmin,"Delete user");
+ printf("</html>");
+ break;
+
+case "DELgo":
+ getAllValuesFromForm ();
+ @ldap_close($ds); //rebind
+ $ds=@ldap_connect($LdapHost);
+ if($ds==FALSE){
+ continueForm1("DEL user: Ldap server connect error");
+ break;
+ }
+ $r=@ldap_bind($ds,$_POST['admin'],$_POST['adminpasswd']);
+ if ($r==FALSE) {
+ continueForm1("Bad admin password\n");
+ break;
+ }
+ $r2=@ldap_delete($ds, $dn);
+ if($r2==FALSE){
+ continueForm1(sprintf("Nie je mozne zmazat uzivatela <b>%s</b>",strip_tags($uid)));
+ break;
+ }
+ browseForm(sprintf("Uzivatel %s bol zmazany",strip_tags($uid)));
+ break;
+
+//first run
+default:
+ $uid=$_GET["uid"];
+ $sr=@ldap_search($ds,$netBase,"uid=".$uid);
+ if ($sr==NULL) {
+ printf("<html>ldapsearch error</html>\n");
+ exit(0);
+ }
+ @ldap_sort ($ds, $sr, "uid" );
+ $info = @ldap_get_entries($ds, $sr);
+ if($info["count"]!=1) {
+ printf("<html>Multiple uid selections !, database integrity error or bad query! %d</html>\n",$info["count"]);
+ exit(0);
+ }
+ $mail=$info[0]["mail"][0];
+ $dn=$info[0]["dn"];
+ for($i=0;$i<$info[0]["mailalternateaddress"]["count"];$i++)
+ $alias[$i]=$info[0]["mailalternateaddress"][$i];
+ for($i=0;$i<$info[0]["mailforwardingaddress"]["count"];$i++)
+ $forward[$i]=$info[0]["mailforwardingaddress"][$i];
+ putEditForm("");
+ break;
+} //switch
+@ldap_close($ds);
+?>