Simple Multi User Managed Directory 0.00063
SMUMD
source/install/secure/smumd-core.php-Dateireferenz

gehe zum Quellcode dieser Datei

Funktionen

 dircmp ($a, $b)
 vergleichsfunktion sortierung
 pathcmp ($a, $b)
 vergleichsfunktion sortierung
 dirHTML ($thedir)
 Direktory Ausgabe Tabelle.
 userloginForm ()
 user Login Form
 logThis ($logdata, $pathdata)
 write to logfile
 userexists ($uname)
 check username exist
 createanewuser ($uname, $ulogin, $upass, $upassproof)
 create a new user
 createfolder ($foldername)
 neuen ordner anlegen
 deletefolder ($foldername)
 lösche ordner
 deletefile ($filename)
 lösche Datei
 showprotection ($filepath)
 lookup actual Protektion username and Time
 getperms ($filepath)
 File Permissions human readable unix style.
 getFileInfo ($filepath)
 zeigt file infos
 checkDir ($aktueller_pfad)
 check dir may hafe files
 getDir ($aktueller_pfad)
 Directory Aufbau.
 format_size ($size)
 readable filesize
 formlink ($typ, $id, $name, $what, $action, $about, $field="", $size="0")
 form link build
 getactionadminmenue ()
 Ausgabe Menue Allgemein:neuen Ordner erzeugen,Datei uploaden.
 getactionmenue ()
 Ausgabe Menue Allgemein:neuen Ordner erzeugen,Datei uploaden.
 GetUploadFile ($update)
 upload function
 unprotectaFile ($filename)
 unprotect a file
 unprotectFile ($filetounprotect)
 unprotect file, delete the file from the dbfile
 protectaFile ($filename)
 protect a file , write into db file
 checkprotection ($filetoprotect, $typ=false)
 check protection of a file
 checkuserlogin ($userlogin, $userpass)
 check user login file
 changeuserlogin ($userlogin, $userpass, $newpass)
 change user login file
 getprotectiondata ()
 get protections from database file for pathnow
 getlogdata (&$dirlist)
 check last log entry
 protectFile ($filetoprotect)
 add the protected file to the dbfile
 downloading ($name, $filename)
 download work
 downloaduserLog ()
 download userlog
 downloadFile ($filename)
 download file
 securepath ($path)
 path controll

Dokumentation der Funktionen

changeuserlogin ( userlogin,
userpass,
newpass 
)

change user login file

Parameter:
$userloginder Loginname
$userpassdas Loginpasswort
$newpassdas neue Loginpasswort

globale variablen festlegen

arbeits variablen default

user level default 0

login datei zum lesen oeffnen

wenn fehler beim lesen

dann error ausgeben

datei geeofnet , solange bis datei ende

zeile einlesen

auf fehler beim zeile einlesen pruefen

fuer debugging fehler beim zeile lesen ausgeben

regexpression fuer usernamen

wenn regexpression user login tag in zeile

login verschluesseln

regexpression fuer login name

wenn regexpression user login tag in zeile

passwort user verschluesseln

regexpression fuer user passwort user

wenn regexpression user password tag in zeile

dann neues passwort verschluesseln fuer user

user level auf 500 setzen , normaler user

passwort admin verschluesseln

regexpression fuer user passwort

wenn regexpression user password tag in zeile

dann neues passwort verschluesseln fuer admin

user level auf 100 setzen , admin user

nur fuer richtigen user

username tag

user login verschluesseln

usern login tag

user pass tag

tag zeile

eintragen in alluser

nicht user , also zeile uebernehmen

nicht richtiger user , also zeile uebernehmen

datei schliessen

nur fuer richtigen user

login datei zum schreiben oeffen

error ausgabe das öffnen der datenbank datei zum daten anhängen ist fehlgeschlagen

login datei geoefnet also schreibe inhalt

error ausgabe kann datenbank datei keine daten anhängen

datei schliessen

kein update erfolgt

Definiert in Zeile 1210 der Datei smumd-core.php.

Benutzt $debugging, $FS, $out, $used und logThis().

                                                        {
        /*! globale variablen festlegen */
        global $out;
        global $used;
        global $FS;
        global $debugging;
        /*! arbeits variablen default */
        $newpassstring = "";
        $addnewuserline = "";
        $alluserslines ="";
        /*! user level default 0 */
        $userlevel = 0;
        /*! login datei zum lesen oeffnen  */
        $fh = fopen($used["userlogindb"], 'r');
        /*! wenn fehler beim lesen */
        if($fh == false){
                /*! dann error ausgeben */
                $out["errors"] .= "ERROR: File not found -> ".$used["userlogindb"]."<br>";
        }else {
        /*! datei geeofnet , solange bis datei ende */
        while (!feof($fh)){
                /*! zeile einlesen */
                   $line= fgets ($fh);
                   /*! auf fehler beim zeile einlesen pruefen */
                   if ($line===FALSE) {
                        /*! fuer debugging fehler beim zeile lesen ausgeben */
                                if ($debugging)  $out["errors"] .= " cant read line <br>"; 
                   } else {
                                /*! regexpression fuer usernamen */
                                $theunametag = "|<username>".quotemeta($used['username'])."</username>|";
                                /*! wenn regexpression user login tag in zeile */
                                if (preg_match($theunametag,$line)) { 
                                        /*! login verschluesseln */
                                        $usermd5login = md5($userlogin);
                                        /*! regexpression fuer login name */
                                        $thelogintag = "|<userlogin>".quotemeta($usermd5login)."</userlogin>|";
                                        /*! wenn regexpression user login tag in zeile */
                                        if (preg_match($thelogintag,$line)) { 
                                                /*! passwort user verschluesseln */
                                                $usermd5pass = md5($userpass."isuser");
                                                /*! regexpression fuer user passwort user */
                                                $thepasstag = "|<userpass>".quotemeta($usermd5pass)."</userpass>|";     
                                                /*! wenn regexpression user password tag in zeile */
                                                if (preg_match($thepasstag,$line)) {
                                                        /*! dann neues passwort verschluesseln fuer user */
                                                        $newpassstring = md5($newpass."isuser");        
                                                        /*! user level auf 500 setzen , normaler user */
                                                        $userlevel = 500;
                                                        
                                                } 
                                                /*! passwort admin verschluesseln */
                                                $usermd5pass = md5($userpass."isadmin");
                                                /*! regexpression fuer user passwort  */
                                                $thepasstag = "|<userpass>".quotemeta($usermd5pass)."</userpass>|";
                                                /*! wenn regexpression user password tag in zeile */
                                                if (preg_match($thepasstag,$line)) {
                                                        /*! dann neues passwort verschluesseln fuer admin */
                                                        $newpassstring = md5($newpass."isadmin");
                                                        /*! user level auf 100 setzen , admin user */
                                                        $userlevel = 100;
                                                        
                                                }       
                                                /*! nur fuer richtigen  user */
                                                if ($userlevel > 99) {
                                                        /*! username tag */
                                                        $theusernametag = "<username>".$used['username']."</username>";
                                                        /*! user login verschluesseln */
                                                        $usermd5ulogin = md5($userlogin);
                                                        /*! usern login tag */
                                                        $theuserlogintag ="<userlogin>".$usermd5ulogin."</userlogin>";
                                                        /*! user pass tag */
                                                        $theuserpasstag ="<userpass>".$newpassstring."</userpass>";
                                                        /*! tag zeile */
                                                        $taggedline = $theusernametag.$theuserlogintag.$theuserpasstag;
                                                        /*! eintragen in alluser  */
                                                        $alluserslines .= $taggedline."\n";
                                                } else {
                                                                /*! nicht user , also zeile uebernehmen  */
                                                                $alluserslines .= $line;
                                                }
                                        } 
                                } else {
                                /*! nicht richtiger  user , also zeile uebernehmen  */
                                $alluserslines .= $line;
                                };
                   };
        };
        /*! datei schliessen */
    fclose($fh);        
        }
        /*! nur fuer richtigen user */
        if ($userlevel > 99) {
                /*! login datei zum schreiben oeffen */
           if (!$fh = fopen($used["userlogindb"], 'w')) {
                        /*! error ausgabe das öffnen der datenbank datei zum daten anhängen ist fehlgeschlagen */
                        $out["errors"] .= "Cannot open db file to append stuff  <br>";
                } else {
                        /*! login datei geoefnet also schreibe inhalt */
                        if (fwrite($fh, $alluserslines) === FALSE) {
                                /*! error ausgabe kann datenbank datei keine daten anhängen */
                                $out["errors"] .= "Cannot write to db file to append stuff <br>";
                        } else {
                                /* inhalt wurde geschrieben ausgabe */
                                $out["errors"] .= "user changed password";
                                /* inhalt wurde geschrieben loggen */
                                logThis("changed userpass ",$used['username']);
                        }
                        /*! datei schliessen */
                        fclose($fh);
                }
        } else {
                /*! kein update erfolgt */
                $out["errors"] .= "user password untouched";
        }
}
checkDir ( aktueller_pfad)

check dir may hafe files

Parameter:
$aktueller_pfadaktueller Datei Pfad
Rückgabe:
$entryfound anzahl gefundener Einträge

arbeitsvariable setzen

directory oeffnen

zaehler fuer eintraege negative

solange eintrag in directory und kein entry gefunden

nur wenn wirklich ein eintrag dann eintrag gefunden

datei schliessen

rueckgabe eintrag vorhanden (wahr/falsch)

Definiert in Zeile 575 der Datei smumd-core.php.

                                   {
        /*! arbeitsvariable setzen */
        $entryfound = false;
        /*! directory oeffnen */
        if ($dh = opendir($aktueller_pfad)) {
                /*! zaehler fuer eintraege negative */
                $entrycount = -1;
                /*! solange eintrag in directory und kein entry gefunden */
                while ((($file = readdir($dh)) !== false) AND !$entryfound ) {
                        /*! nur wenn wirklich ein eintrag dann eintrag gefunden */
                        if ($file != "." and $file != "..") {$entryfound = true;}
                }
                /*! datei schliessen */
                closedir($dh);
        }
        /*! rueckgabe eintrag vorhanden (wahr/falsch) */
        return $entryfound;
}
checkprotection ( filetoprotect,
typ = false 
)

check protection of a file

Parameter:
$filetoprotectDatei Pfad
$typrückgabe typ (default = false)
Rückgabe:
$fileprotectiondata Datei Angaben in Datenbankdatei

globale variablen festlegen

default protektion objekt

default user daten

datei zum lesen oeffnen

pruefen ob fehler beim oeffnen

datei geoeffnet also solange bis datei ende

zeile einlesen

auf fehler beim zeile einlesen pruefen

fuer debugging fehler beim zeile lesen ausgeben

regexpression fur datei pfad

wenn tag in Zeile

dann status wahr

regexpression fuer user

user name extrahieren

user name eintragen

datei schliessen

rueckgabe auf parameter basierend

wenn typ wahr dann als objekt

wenn typ falsch dann als boolean

Definiert in Zeile 1077 der Datei smumd-core.php.

Benutzt $debugging, $FS, $out und $used.

                                                    {
        /*! globale variablen festlegen */
        global $out;
        global $used;
        global $FS;
        global $debugging;
        /*! default protektion objekt */
        $fileprotectiondata = array("status"=>false,
                                                                "username"=>""
                                                                );
        /*! default user daten */
        $userdata = array();
        /*! datei zum lesen oeffnen */
        $fh = fopen($used["protectiondb"], 'r');
        /*! pruefen ob fehler beim oeffnen */
        if($fh == false){
        $out["errors"] .= "ERROR: File not found -> ".$used["userlogindb"]."<br>";
        }else {
        /*! datei geoeffnet also solange bis datei ende */
        while (!feof($fh)){
                /*! zeile einlesen */
                   $line= fgets ($fh);
                   /*! auf fehler beim zeile einlesen pruefen */
                   if ($line===FALSE) {
                   /*! fuer debugging fehler beim zeile lesen ausgeben */
                        if ($debugging)  $out["errors"] .= " cant read line <br>"; 
                   } else {
                   /*! regexpression fur datei pfad */
                        $thefilepathtag = "|<filepath>(".quotemeta($filetoprotect).")</filepath>|";
                        /*! wenn tag in Zeile */
                        if (preg_match($thefilepathtag,$line)) { 
                                /*! dann status wahr */
                                $fileprotectiondata["status"] = true; 
                                /*! regexpression fuer user */
                                $theusernametag = "|<user>(.*)</user>|";
                                /*! user name  extrahieren */
                                $founduser = preg_match($theusernametag,$line,$userdata);
                                /*! user name eintragen  */
                                $fileprotectiondata["username"]=$userdata[1];
                        };
                   };
        }
        /*! datei schliessen */
    fclose($fh);
        }
        /*! rueckgabe auf parameter basierend */
        if ($typ) {
                /*! wenn typ wahr dann als objekt */
                return $fileprotectiondata;
        } else {
                /*! wenn typ falsch dann als boolean */
                return $fileprotectiondata["status"];
        }
}
checkuserlogin ( userlogin,
userpass 
)

check user login file

Parameter:
$userloginder Loginname
$userpassdas Loginpasswort

globale variablen festlegen

default user level

login datei zum lesen oeffnen

wenn fehler beim lesen

dann error ausgeben

datei geeofnet , solange bis datei ende

zeile einlesen

auf fehler beim zeile einlesen pruefen

fuer debugging fehler beim zeile lesen ausgeben

userloign verschluesseln

regexpression userlogin tag

wenn regexpression user login tag in zeile

dann password fur user verschluesseln

regexpression userpass tag

wenn regexpression userpass tag in zeile

dann user level 500 , normaler user

kein user dann password fur admin verschluesseln

regexpression userpass tag

wenn regexpression userpass tag in zeile

dann user level 100 , admin user

nur fuer user

regexpression username tag

extrahieren des usernamens

username wurde extrahiert

dann user name lesen

dann user level lesen

datei schliessen

Definiert in Zeile 1135 der Datei smumd-core.php.

Benutzt $debugging, $FS, $out und $used.

                                              {
        /*! globale variablen festlegen */
        global $out;
        global $used;
        global $FS;
        global $debugging;
        /*! default user level */
        $userlevel = 0;
        /*! login datei zum lesen oeffnen  */
        $fh = fopen($used["userlogindb"], 'r');
        /*! wenn fehler beim lesen */
        if($fh == false){
                /*! dann error ausgeben */
        $out["errors"] .= "ERROR: File not found -> ".$used["userlogindb"]."<br>";
        }else {
                /*! datei geeofnet , solange bis datei ende */
        while (!feof($fh)){
                        /*! zeile einlesen */
                   $line= fgets ($fh);
                   /*! auf fehler beim zeile einlesen pruefen */
                   if ($line===FALSE) {
                        /*! fuer debugging fehler beim zeile lesen ausgeben */
                        if ($debugging)  $out["errors"] .= " cant read line <br>"; 
                   } else {
                        /*! userloign verschluesseln */
                        $usermd5login = md5($userlogin);
                        /*! regexpression userlogin tag */
                        $thelogintag = "|<userlogin>".quotemeta($usermd5login)."</userlogin>|";
                        /*! wenn regexpression user login tag in zeile */
                        if (preg_match($thelogintag,$line)) { 
                                /*! dann  password  fur user verschluesseln */
                                $usermd5pass = md5($userpass."isuser");
                                /*! regexpression userpass tag */
                                $thepasstag = "|<userpass>".quotemeta($usermd5pass)."</userpass>|";     
                                /*! wenn regexpression userpass tag in zeile */
                                if (preg_match($thepasstag,$line)) {
                                        /*! dann user level 500 , normaler user */
                                        $userlevel = 500;       
                                } 
                                /*! kein user dann  password  fur admin verschluesseln */
                                $usermd5pass = md5($userpass."isadmin");
                                /*! regexpression userpass tag */
                                $thepasstag = "|<userpass>".quotemeta($usermd5pass)."</userpass>|";
                                /*! wenn regexpression userpass tag in zeile */
                                if (preg_match($thepasstag,$line)) {
                                        /*! dann user level 100 , admin user */
                                        $userlevel = 100;       
                                }       
                                
                                /*! nur fuer user */
                                if ($userlevel > 99) {
                                        /*! regexpression username tag */
                                        $theusertag = "|<username>(.*)</username>|";
                                        /*! extrahieren des usernamens */
                                        $gotit = preg_match($theusertag,$line,$thisusersname);
                                        /*! username wurde extrahiert */
                                        if ($gotit > 0 ) {
                                                /*! dann user name lesen */
                                                $used["username"] = $thisusersname[1];
                                                /*! dann user level lesen */
                                                $used["userlevel"] = $userlevel;
                                        }
                                }
                        };
                   };
        };
        /*! datei schliessen */
    fclose($fh);        
        }
}
createanewuser ( uname,
ulogin,
upass,
upassproof 
)

create a new user

Parameter:
$unameUsername für neuen Benutzer
$uloginLoginname für neuen Benutzer
$upassUserpasswort für neuen Benutzer
$upassproofUserpasswort prüfung

globale variablen festlegen

boolean fuer existierende usernamen

benoetigte daten checken

fehler ausgabe für

username fehlt

loginname fehlt

passwort fehlt

pass verify fehlt

alle daten vorhanden also checken ob user schon existiert

user exisitert nicht dann

pruefen ob passwort sicherheits eingabe uebereinstimmt

sicherheitsabfrage ok also login datei zum anhaengen oeffnen

fehler beim oeffnen von datei ausgeben

datei wurde geoeffnet

usertage erzeugen

loginname verschlüsseln

logintag erzeugen

passwort fuer user verschluesseln

passworttag erzeugen

textzeile fuer userlogin erzeugen

neuer user zeile mit zeilenvorschub

neuen user anhaengen

error ausgabe File Write

inhalt konnte geschrieben werden erfolg ausgeben

logdatei erfolg schreiben

datei schliessen

rueckgabe user wurde geschrieben (wahr )

error ausgabe passwort stimmt nicht ueberein

error ausgabe user existiert schon

fehler beim hinzufuegen von neuem user

Definiert in Zeile 277 der Datei smumd-core.php.

Benutzt $debugging, $FS, $out, $used, logThis() und userexists().

                                                           {
        /*! globale variablen festlegen */
        global $out;
        global $used;
        global $FS;
        global $debugging;
        /*! boolean fuer existierende usernamen */
        $alreadyuser = false; 
        /*! benoetigte daten checken */
        if ($uname == "" OR $ulogin == "" OR $upass == ""  OR $upassproof == "" ) {
                /*! fehler ausgabe für */
                $out["errors"] .= "kein ";
                /*! username fehlt */
                if ($uname == "") $out["errors"] .= "Username ";
                /*! loginname fehlt */
                if ($ulogin == "") $out["errors"] .= "Loginname ";
                /*! passwort fehlt */
                if ($upass == "") $out["errors"] .= "Password ";
                /*! pass verify fehlt */
                if ($upassproof == "") $out["errors"] .= "verifikation  <br>";
        } else {
                /*! alle daten vorhanden also checken ob user schon existiert */
                $alreadyuser = userexists($uname);
                /*! user exisitert nicht dann */
                if (!$alreadyuser) {
                        /*! pruefen ob passwort sicherheits eingabe uebereinstimmt */
                        if ($upass == $upassproof) {
                                /*! sicherheitsabfrage ok also login datei zum anhaengen oeffnen */
                                if (!$fh = fopen($used["userlogindb"], 'a')) {
                                        /*! fehler beim oeffnen von datei ausgeben */
                                         $out["errors"] .= "Cannot open userlogin db file to append stuff  <br>";
                                } else {
                                        /*! datei wurde geoeffnet */
                                        /*! usertage erzeugen */
                                        $theusernametag = "<username>".$uname."</username>";
                                        /*! loginname verschlüsseln */
                                        $usermd5ulogin = md5($ulogin);
                                        /*! logintag erzeugen */
                                        $theuserlogintag ="<userlogin>".$usermd5ulogin."</userlogin>";
                                        /*! passwort fuer user verschluesseln */
                                        $usermd5upass = md5($upass."isuser");
                                        /*! passworttag erzeugen */
                                        $theuserpasstag ="<userpass>".$usermd5upass."</userpass>";
                                        /*! textzeile fuer userlogin erzeugen */
                                        $taggedline = $theusernametag.$theuserlogintag.$theuserpasstag;
                                        /*! neuer user zeile mit zeilenvorschub */
                                        $addnewuserline = $taggedline."\n";
                                        /*! neuen user anhaengen */
                                        if (fwrite($fh, $addnewuserline) === FALSE) {
                                                /*! error ausgabe File Write */
                                                $out["errors"] .= "Cannot write to userlogin db file to append stuff <br>";
                                        } else {
                                                /*! inhalt konnte geschrieben werden erfolg ausgeben */
                                                $out["errors"] .= "Added a new User ".$uname."<br>";
                                                /*! logdatei erfolg schreiben */
                                                logThis("added new user",$uname);
                                        }
                                        /*! datei schliessen */
                                        fclose($fh);
                                        /*! rueckgabe user wurde geschrieben (wahr ) */
                                        return true;
                                }
                        } else {
                                /*! error ausgabe passwort stimmt nicht ueberein */
                                $out["errors"] .= "passwords missmatch error <br>";
                        }
                } else {
                        /*! error ausgabe user existiert schon */
                        $out["errors"] .= "Username exists already <br>";
                }
        }
        /*! fehler beim hinzufuegen von neuem user */
        return false;
}
createfolder ( foldername)

neuen ordner anlegen

Parameter:
$foldernameOrdner Name

globale variablen festlegen

ordnername vorhanden

kein foldername dann error ausgeben

gesamt pfad fuer ordner erzeugen

ueberpruefen ob ordner existiert

ordner existiert nicht also verzeichnis erzeugen

error ausgabe Fehler beim Verzeichnis erstellen

erfolg Ordner ausgabe fuer debug

erfolg Ordner erzeugt loggen

fehler beim Ordner erzeugen ausgeben

Definiert in Zeile 355 der Datei smumd-core.php.

Benutzt $debugging, $FS, $out, $used und logThis().

                                   {
        /*! globale variablen festlegen */
        global $out;
        global $used;
        global $FS;
        global $debugging;
        /*! ordnername vorhanden */
        if ($foldername == "" ) {
                /*! kein foldername dann error ausgeben */
                $out["errors"] .= "geben sie einen Namen für den Ordner an";
        } else {
                /*! gesamt pfad fuer ordner erzeugen */
                $structure = $used['pathnow'].$foldername;
                /*! ueberpruefen ob ordner existiert */
                if (!file_exists($structure)) {
                        /*! ordner existiert nicht also verzeichnis erzeugen */
                        if (!mkdir($structure, 0755)) {
                                /*! error ausgabe Fehler beim Verzeichnis erstellen */
                                $out["errors"] .= "Erstellung des Verzeichnis '.$structure.' schlug fehl... ";
                        } else {
                                /*! erfolg Ordner ausgabe fuer debug */
                                if ($debugging) $out["errors"] .= "Ordner ".$foldername." wurde angelegt "; 
                                /*! erfolg Ordner erzeugt loggen */
                                logThis("created folder",$structure);
                        }
                } else {
                        /*! fehler beim Ordner erzeugen ausgeben */
                        $out["errors"] .= "Datei oder Verzeichnis mit gleichem namen vorhanden ";
                }
        }
}
deletefile ( filename)

lösche Datei

Parameter:
$filenameDatei Name

globale variablen festlegen

gesamt pfad fuer ordner erzeugen

ueberpruefen ob datei existiert

ueberpruefen ob datei

ist datei also loeschen

ausgabe fuer debugger , datei geloescht

datei geloescht loggen

error ausgabe Datei löschen

error ausgabe datei gibt es nicht

Definiert in Zeile 425 der Datei smumd-core.php.

Benutzt $debugging, $FS, $out, $used und logThis().

                               {
        /*! globale variablen festlegen */
        global $out;
        global $used;
        global $FS;
        global $debugging;
        /*! gesamt pfad fuer ordner erzeugen */
        $structure = $used['pathnow'].$filename;
        /*! ueberpruefen ob datei existiert */
        if (file_exists($structure)) {
                /*! ueberpruefen ob datei */
                if (is_file($structure)) {
                        /*! ist datei also loeschen */
                        unlink($structure);
                        /*! ausgabe fuer debugger , datei geloescht */
                        if ($debugging) $out["errors"] .= "Datei ".$filename." wurde gelöscht "; 
                        /*! datei geloescht loggen */
                        logThis("deleted file",$structure);
                } else { 
                        /*! error ausgabe Datei löschen */
                        $out["errors"] .= "Datei existiert nicht ";
                }
        }       else {
                        /*! error ausgabe datei gibt es nicht */
                        $out["errors"] .= "Datei oder Verzeichnis existiert nicht ";
        }
}
deletefolder ( foldername)

lösche ordner

Parameter:
$foldernameOrdner Name

globale variablen festlegen

gesamt pfad fuer ordner erzeugen

ueberpruefen ob datei existiert

ueberpruefen ob ordner

ist ordner also loeshen

fuer debugger fehler beim loeschen ausgeben

error ausgabe Ordner löschen

fuer debugger loesch erfolg ausgeben

loesch erfolg loggen

error ausgabe Ordner löschen

error ausgabe verzeichnis nicht vorhanden

Definiert in Zeile 389 der Datei smumd-core.php.

Benutzt $debugging, $FS, $out, $used und logThis().

                                   {
        /*! globale variablen festlegen */
        global $out;
        global $used;
        global $FS;
        global $debugging;
        /*! gesamt pfad fuer ordner erzeugen */
        $structure = $used['pathnow'].$foldername;
        /*! ueberpruefen ob datei existiert */
        if (file_exists($structure)) {
                /*! ueberpruefen ob ordner*/
                if (is_dir($structure)) {
                        /*! ist ordner also loeshen */
                        if (!rmdir($structure)) {
                                /*! fuer debugger fehler beim loeschen ausgeben */
                                if ($debugging) $out["errors"] .= "is dir - die Löschung des Verzeichnis '.$structure.' schlug fehl... ";
                                /*! error ausgabe Ordner löschen */
                                $out["errors"] .= "Ordner ".$foldername." konnte nicht gelöscht werden ";
                        } else {
                                /*! fuer debugger  loesch erfolg ausgeben */
                                if ($debugging) $out["errors"] .= "Ordner ".$foldername." wurde gelöscht ";
                                /*! loesch erfolg loggen */                             
                                logThis("deleted folder",$structure);
                        }
                } else {
                        /*! error ausgabe Ordner löschen */
                        $out["errors"] .= "Ordner ".$foldername." konnte nicht gelöscht werden weil kein directory ";          
                }
        } else {
                        /*! error ausgabe verzeichnis nicht vorhanden */
                        $out["errors"] .= "Datei oder Verzeichnis existiert nicht ";
        }
}
dircmp ( a,
b 
)

vergleichsfunktion sortierung

This is the Core Function File - Simple Multi User Managed Directory - SMUMD by Sascha Heinatz * sascha.heinatz@alice.de Copyright 2011.

This file is part of Simple Multi User Managed Directory - SMUMD.

Simple Multi User Managed Directory - SMUMD is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Simple Multi User Managed Directory - SMUMD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with Simple Multi User Managed Directory - SMUMD. If not, see <http://www.gnu.org/licenses/>.


Parameter:
$aerster wert
$bzweiter wert
Rückgabe:
strcasecmp()

globale variablen festlegen

vergleichs variablen setzen

typ erster wert auf 'd' prüfen

typ ist 'd' erster vergleichwert equivalent 10- setzen

typ ist nicht 'd' erster vergleichwert equivalent 20- setzen

typ zweiter wert auf 'd' prüfen

typ ist 'd' zweiter vergleichwert equivalent 10- setzen

typ ist nicht 'd' zweiter vergleichwert equivalent 20- setzen

typ zweiter wert auf 'y' prüfen

typ ist 'y' zweiter vergleichwert equivalent 05- setzen

typ zweiter wert auf 'z' prüfen

typ ist 'z' zweiter vergleichwert equivalent 01- setzen

typ erster wert auf 'y' prüfen

typ ist 'y' erster vergleichwert equivalent 05- setzen

typ erster wert auf 'z' prüfen

typ ist 'z' erster vergleichwert equivalent 01- setzen

rückgabe verleichs ergebnis grösser gleich kleiner case sensitiv

Definiert in Zeile 32 der Datei smumd-core.php.

Benutzt $thedir.

                        {
        /*! globale variablen festlegen */
        global $thedir;
        /*! vergleichs variablen setzen */
        $ab="";
        $bb="";
        /*! typ erster wert auf 'd' prüfen */
        if ($thedir[$a]["rights"]["typ"] == "d" ) {
        /*! typ ist 'd' erster vergleichwert equivalent 10- setzen */
        $ab = "10-".$thedir[$a]["filename"];
        } else {
        /*! typ ist nicht 'd' erster vergleichwert equivalent 20- setzen */
        $ab = "20-".$thedir[$a]["filename"];
        }
        /*! typ zweiter wert auf 'd' prüfen */
        if ($thedir[$b]["rights"]["typ"] == "d" ) {
        /*! typ ist 'd' zweiter vergleichwert equivalent 10- setzen */
        $bb = "10-".$thedir[$b]["filename"];
        } else {
        /*! typ ist nicht 'd' zweiter vergleichwert equivalent 20- setzen */
        $bb = "20-".$thedir[$b]["filename"];
        }
        /*! typ zweiter wert auf 'y' prüfen */
        if ($thedir[$b]["rights"]["typ"] == "y" ) {
        /*! typ ist 'y' zweiter vergleichwert equivalent 05- setzen */
        $bb = "05-";
        } 
        /*! typ zweiter wert auf 'z' prüfen */
        if ($thedir[$b]["rights"]["typ"] == "z" ) {
        /*! typ ist 'z' zweiter vergleichwert equivalent 01- setzen */
        $bb = "01-";
        }
        /*! typ erster wert auf 'y' prüfen */
        if ($thedir[$a]["rights"]["typ"] == "y" ) {
        /*! typ ist 'y' erster vergleichwert equivalent 05- setzen */
        $ab = "05-";
        } 
        /*! typ erster wert auf 'z' prüfen */
        if ($thedir[$a]["rights"]["typ"] == "z" ) {
        /*! typ ist 'z' erster vergleichwert equivalent 01- setzen */
        $ab = "01-";
        }
        /*! rückgabe verleichs ergebnis grösser gleich kleiner case sensitiv */
        return strcasecmp($ab, $bb);            
}
dirHTML ( thedir)

Direktory Ausgabe Tabelle.

Parameter:
$thedirdas Directory Array
Rückgabe:
$thedirhtml Direktory Tabelle in HTML

globale variablen festlegen

Direktory Tabelle aufbauen

Für Jeden Eintrag von Direktroy Tabelle

Tabellenzeile START

kein hintergrund

typ ist 'd' dann background setzen

Icons finden

für d z y ordner icon

für datei mit option protected datei gruen

für datei mit keiner option protected

für datei mit option unprotected

Icon Bild

Datei Name

Datei Grösse lesbar dezimal

Protektion Benutzername

Optionen protektion

wenn option protect dann protect button speichern

wenn option unprotect dann unprotect button speichern

opion ausgeben

Optionen Datei Updaten

Datei Letzter Eintrag von LogDatei

Optionen löschen

Datei Rechte Dateityp

Datei Rechte Besitzer Lesen

Datei Rechte Besitzer Schreiben

Datei Rechte Besitzer Ausführen

Datei Rechte Gruppe Lesen

Datei Rechte Gruppe Schreiben

Datei Rechte Gruppe Ausführen

Datei Rechte Alle Lesen

Datei Rechte Alle Schreiben

Datei Rechte Alle Ausführen

Tabellenzeile ENDE

Tabelle ENDE

Direktory HTML Zurückgeben

Definiert in Zeile 95 der Datei smumd-core.php.

Benutzt $thedir, $used und format_size().

                          {
        /*! globale variablen festlegen */
        global $used;
        /*! Direktory Tabelle aufbauen */
        $thedirhtml=<<<DIRHTML
        <table class="dateitabelle" cellpadding="0" cellspacing="0">
        <tr>
                <th class="yellowbk dateiicon">Typ</th>
                <th class="yellowbk dateiname">Name</th>
                <th class="yellowbk dateisize">size</th>
                <th class="yellowbk dateiprotect">protector</th>
                <th class="yellowbk dateioptions" colspan=2>options</th>
                <th class="yellowbk dateilastlog" colspan=3>Last Log</th>
                <th class="yellowbk dateidelete" >del</th>
                <th class="yellowbk dateipermissions" colspan=10>permission</th>
        </tr>
DIRHTML;
        uksort($thedir ,"dircmp");
        /*! Für Jeden Eintrag von Direktroy Tabelle */
        foreach ($thedir as $aentry) {
                /*! Tabellenzeile START */
                $thedirhtml .="<tr>";
                /*! kein hintergrund */
                $colorbk ="";
                /*! typ ist 'd' dann background setzen */
                if ($aentry["rights"]["typ"] == "d" ) {$colorbk ="greybk ";}
                /*! Icons finden */
                if ($aentry["rights"]["typ"] == "d" or $aentry["rights"]["typ"] == "z" or $aentry["rights"]["typ"] == "y" ) {
                        /*! für d z y ordner icon */
                        $dateiicon=$used["images"]."folder.gif";
                } else {
                                /*! für datei mit option protected datei gruen*/
                                if ($aentry["options"]["protect"] != "") { $dateiicon=$used["images"]."item_moz-free.gif"; }
                                /*! für datei mit keiner option protected */
                                if ($aentry["options"]["protect"] == "") { $dateiicon=$used["images"]."item_moz.gif"; }
                                /*! für datei mit option unprotected */
                                if ($aentry["options"]["unprotect"] !="" ) {$dateiicon=$used["images"]."item_moz-access.gif";}
                }
                /*! Icon Bild */
                $thedirhtml .="<td class=\"".$colorbk."dateiicon\"><img src=\"".$dateiicon."\" alter=\"Datei Icon\"></td>";
                /*! Datei Name */
                $thedirhtml .="<td class=\"".$colorbk."dateiname\">".$aentry["name"]."</td>";
                /*! Datei Grösse lesbar dezimal */
                $thedirhtml .="<td class=\"".$colorbk."dateigroesse\">".format_size($aentry["size"])."</td>";
                /*! Protektion Benutzername */
                $thedirhtml .="<td class=\"".$colorbk."benutzer\" >".$aentry["protection"]["user"]."</td>";
                /*! Optionen protektion */
                $theprotect="";
                /*! wenn option protect dann protect button speichern */
                if ($aentry["options"]["protect"] != "") $theprotect =$aentry["options"]["protect"];
                /*! wenn option unprotect dann unprotect button speichern */
                if ($aentry["options"]["unprotect"] != "") $theprotect =$aentry["options"]["unprotect"];
                /*! opion ausgeben */
                $thedirhtml .="<td  class=\"".$colorbk."sperrung\">".$theprotect."</td>";
                /*! Optionen Datei Updaten */
                $thedirhtml .="<td  class=\"".$colorbk."dateiupdate\">".$aentry["options"]["upload"]."</td>";
                /*! Datei Letzter Eintrag von LogDatei */
                $thedirhtml .="<td class=\"".$colorbk."lastlogseit\">".$aentry["lastlog"]["entry"]."</td>";
                $thedirhtml .="<td class=\"".$colorbk."lastloguser\" >".$aentry["lastlog"]["user"]."</td>";
                $thedirhtml .="<td class=\"".$colorbk."lastlogaction\">".$aentry["lastlog"]["action"]."</td>";
                /*! Optionen löschen */
                $thedirhtml .="<td class=\"".$colorbk."optiondelete\">".$aentry["options"]["delete"]."</td>";
                /*! Datei Rechte  Dateityp */
                $thedirhtml .="<td class=\"".$colorbk."permission\">".$aentry["rights"]["typ"]."</td>";
                /*! Datei Rechte  Besitzer Lesen */
                $thedirhtml .="<td class=\"".$colorbk."permission\">".$aentry["rights"]["owner"]["r"]."</td>";
                /*! Datei Rechte  Besitzer Schreiben*/
                $thedirhtml .="<td class=\"".$colorbk."permission\">".$aentry["rights"]["owner"]["w"]."</td>";
                /*! Datei Rechte  Besitzer Ausführen*/
                $thedirhtml .="<td class=\"".$colorbk."permission\">".$aentry["rights"]["owner"]["x"]."</td>";
                /*! Datei Rechte  Gruppe Lesen */
                $thedirhtml .="<td class=\"".$colorbk."permission\">".$aentry["rights"]["group"]["r"]."</td>";
                /*! Datei Rechte  Gruppe Schreiben */
                $thedirhtml .="<td class=\"".$colorbk."permission\">".$aentry["rights"]["group"]["w"]."</td>";
                /*! Datei Rechte  Gruppe Ausführen */
                $thedirhtml .="<td class=\"".$colorbk."permission\">".$aentry["rights"]["group"]["x"]."</td>";
                /*! Datei Rechte  Alle Lesen */
                $thedirhtml .="<td class=\"".$colorbk."permission\">".$aentry["rights"]["other"]["r"]."</td>";
                /*! Datei Rechte  Alle Schreiben */
                $thedirhtml .="<td class=\"".$colorbk."permission\">".$aentry["rights"]["other"]["w"]."</td>";
                /*! Datei Rechte  Alle Ausführen */
                $thedirhtml .="<td class=\"".$colorbk."permission\">".$aentry["rights"]["other"]["x"]."</td>";
                /*! Tabellenzeile ENDE */
                $thedirhtml .="</tr>";
        }
        /*! Tabelle ENDE */
        $thedirhtml .="</table>";
        /*! Direktory HTML Zurückgeben */
        return $thedirhtml;
}
downloadFile ( filename)

download file

Parameter:
$filenameName der download Datei

globale variablen festlegen

datei absoluten pfad erzeugen

arbeits variablen default

protektion Daten Objekt fuer pfad lesen

wenn protekt status wahr und protekt name gleich username

dann downloade pfad

logging vom download

programm ende , daten wurden schon gesendet

error ausgabe kann nicht downgeloaded werden da ungeschützt

Definiert in Zeile 1595 der Datei smumd-core.php.

Benutzt $debugging, $FS, $out, $used, checkprotection(), downloading() und logThis().

                                 {
        /*! globale variablen festlegen */
        global $out;
        global $used;
        global $FS;
        global $debugging;
        /*! datei absoluten pfad erzeugen */
        $name = $used["pathnow"].$filename;
        /*! arbeits variablen default */
        $isuser=false;
        $isprotected =false;
        /*! protektion Daten Objekt fuer pfad lesen */
        $protectdata=checkprotection($name,true);
        /*! wenn protekt status wahr und protekt name gleich username */
        if ($protectdata["status"] AND $protectdata["username"] == $used["username"]) {
                /*! dann downloade pfad */
                downloading($name,      $filename);
                /*! logging vom download */
                logThis("downloaded file",$name);
                /*! programm ende , daten wurden schon gesendet */
                exit;
        } else {        
                /*! error ausgabe kann nicht downgeloaded werden da ungeschützt */
                $out["errors"] .= "cant download file, you need protect this file <br>";        
        }
}
downloading ( name,
filename 
)

download work

Parameter:
$namePfad der download Datei
$filenameName der download Datei

datei oeffnen zum lesen binar

wenn fehler beim lesen

dann error ausgeben

kein fehler also header senden

warten damit datei im speicher

chache senden vorbereiten

cache ausgeben

solange kein datei ende

block lesen

und ausgeben

datei schliessen

Definiert in Zeile 1546 der Datei smumd-core.php.

Benutzt $out.

                                           {
                /*! datei oeffnen zum lesen binar */
                $fh = fopen($name, 'rb');
                /*! wenn fehler beim lesen */
                if($fh == false){
                        /*! dann error ausgeben */
        $out["errors"] .= "ERROR: File not found -> ".$used["userlogindb"]."<br>";
        }else {
                /*! kein fehler also header senden */
                header("Cache-Control: ");// leave blank to avoid IE errors
                header("Pragma: ");// leave blank to avoid IE errors
                header("Content-type: application/octet-stream");
                header("Content-Disposition: attachment; filename=\"" . $filename . "\"");
                header("Content-length:".(string)(filesize($name)));
                /*! warten damit datei im speicher */
                sleep(1);
                /*! chache senden vorbereiten */
                ob_flush();
                /*! cache ausgeben */
                flush();
                /*! solange kein datei ende */
                while(!feof($fh)) {
                        /*! block lesen */
                   $buffer = fread($fh, 2048);
                   /*! und ausgeben */
                   print $buffer;
                }
                /*! datei schliessen */
                fclose ($fh);
        }
}
downloaduserLog ( )

download userlog

globale variablen festlegen

log file name

log file pfad

daownload starten

programm ende , daten wurden schon gesendet

Definiert in Zeile 1580 der Datei smumd-core.php.

Benutzt $used und downloading().

                            {
        /*! globale variablen festlegen */
        global  $used;          
        /*! log file name */
        $filename = $used["logfile"];
        /*! log file pfad */
        $name = $used["logfilepath"];
        /*! daownload starten */
        downloading($name,      $filename);
        /*! programm ende , daten wurden schon gesendet */
        exit;
 }
format_size ( size)

readable filesize

Parameter:
$sizeDatei Grösse in Bytes
Rückgabe:
$fomatedsize Dateigrösse in Dezimal und mit grösster Einheit

alle moeglichen Bezeichnungen setzen

arbeitsvariable setzen

wenn groesse nicht null

berechne dezimal groesse

rueckgabe lesbare groesse

Definiert in Zeile 797 der Datei smumd-core.php.

                            {
        /*! alle moeglichen Bezeichnungen setzen */
        $sizes = array(" b", " kb", " M", " G", " T", " PB", " EB", " ZB", " YB");
        /*! arbeitsvariable setzen */
        $fomatedsize ="";
        /*! wenn groesse nicht null */
    if ($size != 0) {
                /*! berechne dezimal groesse */
                $fomatedsize = round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $sizes[$i];
        }
        /*! rueckgabe lesbare groesse */
    return $fomatedsize;
}
formlink ( typ,
id,
name,
what,
action,
about,
field = "",
size = "0" 
)

form link build

Parameter:
$typFormular Typ (file,input,option)
$idFormular ID
$nameFormular Name
$whatFormular ORDER 1 Teil
$actionFormular ORDER 2 Teil
$aboutFormular Submit Botton (Datenfeld bei Vorgabe)
$fieldFormular Datenfeld (eingabe , datei auswahl)
$sizeFormular Datenfeld länge (default 0)
Rückgabe:
$form HTML Formular

globale variablen festlegen

arbeitsvariablen setzen

wenn fuer datei upload dann multipart form setzen

form tag bauen

sid feld

aktueller pfad

order what feld mit parameter

order action feld mit parameter

sende button mit parameter

wenn $field nicht leer

und typ input

dann leeres input feld

und typ file

dann datei upload feld

wenn keine neue datei

dann feld mit parameter

und typ option

dann feld mit parameter

form tag schliessen

rueckgabe des formular strings

Definiert in Zeile 821 der Datei smumd-core.php.

Benutzt $out, $sid und $used.

                                                                             {
        /*! globale variablen festlegen */
        global $out;
        global $sid;
        global $used;
        /*! arbeitsvariablen setzen */
        $multipart ="";
        $form  ="\n";
        /*! wenn fuer datei upload dann multipart form setzen */
        if ($typ == "file") {$multipart = "enctype=\"multipart/form-data\"";}
        /*! form tag bauen */
        $form .="\t\t<form id=\"".$id."\" action=\"?".$used["sidurl"]."\" name=\"".$name."\" ".$multipart." method=\"post\">"."\n";
        /*! sid feld */
        $form .= $used["sidfield"] ;
        /*! aktueller pfad */
        $form .="\t\t\t"."<input id=\"".$id."pathnow\" name=\"pathnow\" value=\"".$used['pathnow']."\" type=\"hidden\" />"."\n";
        /*! order what feld mit parameter */
        $form .="\t\t\t"."<input id=\"".$id."what\" name=\"what\" value=\"".$what."\" type=\"hidden\" />"."\n";
        /*! order action feld mit parameter */
        $form .="\t\t\t"."<input id=\"".$id."action\" name=\"action\" value=\"".$action."\" type=\"hidden\" />"."\n";
        /*! sende button  mit parameter */
        $form .="\t\t\t"."<input id=\"".$id."about\" name=\"about\" value=\"".$about."\" type=\"submit\" />"."\n";
        /*! wenn $field nicht leer */
        if ($field !="") {
                /*! und typ input */
                if ($typ == "input") {
                        /*! dann leeres input feld */
                        $form .="\t\t\t"."<input id=\"".$id."field\" name=\"field\" value=\"\" type=\"input\" size=\"".$size."\" />"."\n";
                }
                /*! und typ file */
                if ($typ == "file") {
                        /*! dann datei upload feld */
                        $form .="\t\t\t"."<input id=\"file\" name=\"file\" type=\"file\" size=\"".$size."\" />"."\n";
                        /*! wenn keine neue datei */
                        if ($field !="newfile") {
                                /*! dann feld mit parameter */
                                $form .="\t\t\t"."<input id=\"".$id."field\" name=\"field\" value=\"".$field."\" type=\"hidden\" size=\"".$size."\" />"."\n";
                        }
                }
                /*! und typ option */
                if ($typ == "option") {
                        /*! dann feld mit parameter */
                        $form .="\t\t\t"."<input id=\"".$id."field\" name=\"field\" value=\"".$field."\" type=\"hidden\" size=\"".$size."\" />"."\n";
                }
        } 
        /*! form tag schliessen */
        $form .="\t\t</form>"."\n";
        /*! rueckgabe des formular strings */
        return $form;
}
getactionadminmenue ( )

Ausgabe Menue Allgemein:neuen Ordner erzeugen,Datei uploaden.

globale variablen festlegen

arbeits variable default setzen

wenn angemeldeter user

form fuer neuen user

rueckgabe des form strings

Definiert in Zeile 874 der Datei smumd-core.php.

Benutzt $out, $sid und $used.

                               {
        /*! globale variablen festlegen */
        global $out;
        global $sid;
        global $used;
        /*! arbeits variable default setzen */
        $outmenu="";
        /*! wenn angemeldeter user */
        if ($used["userlevel"] > 99 and $used["userlevel"] < 499) {
                /*! form fuer neuen user  */
$outmenu .= <<<ADMINMENU
        <div class="adminbox">
        <p class="yellowbk">Administration :</p>
        <form id="addnewuser" action="?$used[sidurl]" name="addnewuser"  method="post" class="addnewuser">
Admin -> Add NewUser :<input id="addnewusername" name="pathnow" value="$used[pathnow]" type="hidden" />
        <input id="addnewuserwhat" name="what" value="usermng" type="hidden" />
        <input id="addnewuseraction" name="action" value="addnew" type="hidden" />
        Name:<input id="addnewuseruname" name="uname" value="" type="input" size="20" />
        Login:<input id="addnewuserulogin" name="ulogin" value="" type="input" size="20" />
        Pass:<input id="addnewuserupass" name="upass" value="" type="password" size="20" />
        Pass:<input id="addnewuserupassproof" name="upassproof" value="" type="password" size="20" />
        <input id="addnewuserabout" name="about" value="add new user" type="submit" />
</form>
</div>
ADMINMENU;
        }
        /*! rueckgabe des form strings */
        return $outmenu;
}
getactionmenue ( )

Ausgabe Menue Allgemein:neuen Ordner erzeugen,Datei uploaden.

globale variablen festlegen

allgemeines menu

Definiert in Zeile 906 der Datei smumd-core.php.

Benutzt $out, $sid, $used und formlink().

                          {
        /*! globale variablen festlegen */
        global $out;
        global $sid;
        global $used;
        /*! allgemeines menu */
        $out["menu"] .= "<!-- menue -->"."\n";
        $out["menu"] .="<div id=\"newfolderupload\" class=\"newfolderupload\">";
        $out["menu"] .= formlink("input","newfolder","newfolder","menue","newfolder","neuer Ordner","foldername","20");
        $out["menu"] .= formlink("file","newupload","newupload","upload","newfile","upload neue Datei","newfile","40");
        $out["menu"] .="</div>";
}
getDir ( aktueller_pfad)

Directory Aufbau.

Parameter:
$aktueller_pfadaktueller Datei Pfad
Rückgabe:
$thedir das aktuelle Direktory als Array

globale variablen festlegen

protection daten aus protectionfile lesen

objekt default fuer directory daten

auf directory preufen

debugg ausgabe ist directory

directory oeffnen

eintrag zaehler negativ

solange eintrag in directory

eintrag zaehler incrementieren

fuer spezial directory eintraege

fuer upperDir nur wenn nicht home directory

default objekt fuer direktory erzeugen

filename eintragen

top pfad realtive erzeugen

pfad bereinigen

pfad trennen bei /

letzten ordner entfernen

pfad worder zusammensetzen

upper ordner link

typ z zum sortieren setzen

fuer thisDir

default objekt fuer direktory erzeugen

filename eintragen

relativen pfad erzeugen

link fuer thisDir

typ y zum sortieren setzen

kein spezial directory eintrag

default objekt fuer direktory erzeugen

filename eintragen

aktuellen pfad erzeugen

fals pfad in protection data

ist protected whar

fals username in protection data

ist user wahr

nur wenn keine spezial directory eintraege

checken ob directory

realtiven pfad erzeugen

link fuer verzeichnis

pverzeichnisfad eintragen

verzeichnis groesse ignorieren

verzeichnis datum infos

verzeichnis rechte

verzeichnis protekt status

wenn nicht protekted und direktory

loesch button form eintragen

ist datei

ist geschuetzt durch user

download button eintragen

ist nicht geschuetzt also nur text

pfad eintragen

dateigroesse eintragen

datei infos eintragen

datei rechte eintragen

datei ptotektion eintragen

wenn nicht protected

dann loesch button eintragen

dann protect button eintragen

wenn protected durch user

dann unprotekt button eintragen

dann upload button eintragen

directory schliessen

letzten log eintrag holen

error ausgabe aktuelles Verzeichnis zugriff

error ausgabe kein aktuelles Verzeichnis vorhanden

rueckgabe des directorys

Definiert in Zeile 597 der Datei smumd-core.php.

Benutzt $debugging, $FS, $out, $thedir, $used, checkDir(), formlink(), getFileInfo(), getlogdata(), getperms(), getprotectiondata() und showprotection().

                                 {
        /*! globale variablen festlegen */
        global $out;
        global $used;
        global $FS;
        global $debugging;
        global $thedir;
        global $INSTALL_DIR;
        /*! protection daten aus protectionfile lesen */
        $used["protectiondatas"]=getprotectiondata();
        /*! objekt default fuer directory daten */
        $dirset = array(        "name"=>"",
                                                "filename"=>"",
                                                "path"=>"",
                                                "size"=>"",
                                                "info"=>array(  "create"=>array("date"=>"",
                                                                                                                "time"=>""),
                                                                                "modifie"=>array("date"=>"",
                                                                                                                "time"=>"")
                                                                         ),
                                                "rights"=>array (       "typ" =>"",
                                                                                        "owner"=> array(        "r"=>"",
                                                                                                                                "w"=>"",
                                                                                                                                "x"=>""),
                                                                                        "group"=> array(        "r"=>"",
                                                                                                                                "w"=>"",
                                                                                                                                "x"=>""),
                                                                                        "other"=> array(        "r"=>"",
                                                                                                                                "w"=>"",
                                                                                                                                "x"=>"")
                                                                                ),
                                                "protection"=> array(   "user"=>"",
                                                                                                "date"=>"",
                                                                                                "time"=>""
                                                                                        ),
                                                "options"=> array(      "delete"=>"",
                                                                                        "protect"=>"",
                                                                                        "unprotect"=>"",
                                                                                        "upload"=>""
                                                                                ),
                                                "lastlog"=>array(       "entry"=>"",
                                                                                        "date"=>"",
                                                                                        "time"=>"",
                                                                                        "user"=>"",
                                                                                        "action"=>""
                                                                                )
                                        );
        /*! auf directory preufen */
        if (is_dir($aktueller_pfad)) {
                /*! debugg ausgabe ist directory */
                if ($debugging) { $out["errors"] .= "ist directory".$aktueller_pfad."<br>";     }
                /*! directory oeffnen */
                if ($dh = opendir($aktueller_pfad)) {
                        /*! eintrag zaehler negativ */
                        $entrycount = -1;
                        /*! solange eintrag in directory */
                        while (($file = readdir($dh)) !== false) {
                                /*! eintrag zaehler incrementieren */
                                ++$entrycount;
                                /*! fuer spezial directory eintraege */
                                if ($file == "." or $file == "..") {
                                        /*! fuer upperDir nur wenn nicht home directory */
                                        if ($file == ".." and ( $used['path']."/" != $used['pathnow'] )) {
                                                /*! default objekt fuer direktory erzeugen */
                                                $thedir[$entrycount]=$dirset;
                                                /*! filename eintragen */
                                                $thedir[$entrycount]["filename"] = $file;                                               
                                                /*! top pfad realtive erzeugen */
                                                $urlpfadtop = preg_replace("$".quotemeta($used['path'])."/$","",$used['pathnow']);
                                                /*! pfad bereinigen */
                                                $urlpfadtop = trim($urlpfadtop,'/');
                                                /*! pfad trennen bei / */
                                                $arraypfad = explode("/",$urlpfadtop);
                                                /*! letzten ordner entfernen */
                                                array_pop($arraypfad);
                                                /*! pfad worder zusammensetzen */
                                                $urlpfadtop = implode("/",$arraypfad);
                                                /*! upper ordner link */
                                                $thedir[$entrycount]["name"] = "<a href=\"/".$INSTALL_DIR."/?pathnow=".$urlpfadtop."\">upper dir</a>";                                                  
                                                /*! typ z zum sortieren setzen */
                                                $thedir[$entrycount]["rights"]["typ"]="z";                                              
                                        }
                                        /*! fuer thisDir */
                                        if ($file == ".") {
                                                /*! default objekt fuer direktory erzeugen */
                                                $thedir[$entrycount]=$dirset;
                                                /*! filename eintragen */
                                                $thedir[$entrycount]["filename"] = $file;
                                                /*! relativen pfad erzeugen */
                                                $urlpfadtop = preg_replace("$".quotemeta($used['path'])."/$","",$used['pathnow']);
                                                /*! link fuer thisDir */
                                                $thedir[$entrycount]["name"] = "<a href=\"/".$INSTALL_DIR."/?pathnow=".$urlpfadtop."\">this dir</a>";
                                                /*! typ y zum sortieren setzen */
                                                $thedir[$entrycount]["rights"]["typ"]="y";
                                        }                               
                                } else {
                                        /*! kein spezial directory eintrag */
                                        /*! default objekt fuer direktory erzeugen */
                                        $thedir[$entrycount]=$dirset;
                                        /*! filename eintragen */
                                        $thedir[$entrycount]["filename"] = $file;
                                }
                                /*! aktuellen pfad erzeugen */
                                $filepath = $aktueller_pfad . $file;
                                /* manage flags for managed access */
                                $isuser = false;
                                $isprotected = false;
                                /* check if protected and user */
                                foreach ($used["protectiondatas"] as $pdata) {
                                        /*! fals pfad in protection data */
                                        if ($filepath == $pdata[1]) {
                                                /*! ist protected whar */
                                                $isprotected = true;
                                                /*! fals username in protection data */
                                                if ($used["username"] == $pdata[2]) {
                                                        /*! ist user wahr */
                                                        $isuser = true;
                                                }
                                        }
                                }
                                /*! nur wenn keine spezial directory eintraege */
                                if ($file != "." and $file != "..") {
                                        /*! checken ob directory */
                                        if (is_dir($filepath)) {
                                                /*! realtiven pfad erzeugen */
                                                $urlpfad = preg_replace("|".$used['path']."/|","",$filepath);
                                                /*! link  fuer verzeichnis */
                                                $thedir[$entrycount]["name"]= "<a href=\"/".$INSTALL_DIR."/?pathnow=".$urlpfad."\">".$file."</a>";      
                                                /*! pverzeichnisfad eintragen */
                                                $thedir[$entrycount]["path"]= $filepath;
                                                /*! verzeichnis groesse ignorieren */
                                                $thedir[$entrycount]["size"] = "";
                                                /*! verzeichnis datum infos */
                                                $thedir[$entrycount]["info"] = getFileInfo($filepath);
                                                /*! verzeichnis rechte */
                                                $thedir[$entrycount]["rights"] = getperms($filepath);
                                                /*! verzeichnis protekt status */
                                                $thedir[$entrycount]["protection"] = showprotection($filepath);                                                 
                                                /*! wenn nicht protekted und direktory  */
                                                if ( !$isprotected and !checkDir($filepath)) {  
                                                        /*! loesch button form eintragen  */
                                                        $thedir[$entrycount]["options"]["delete"]= formlink("option","optiondel".$entrycount,"optiondel","folderoption","del","del",$file,$size="0");
                                                }
                                        }
                                        /*! ist datei */
                                        if ( is_file($filepath) ) {
                                                /*! ist geschuetzt durch user */
                                                if ($isprotected AND $isuser) {
                                                        /*! download button eintragen */
                                                        $thedir[$entrycount]["name"]= formlink("link","downloadfile","downloadfile".$entrycount,"download","file",$file,"","0");        
                                                } else {
                                                        /*! ist nicht geschuetzt also nur text  */
                                                        $thedir[$entrycount]["name"]= $file;    
                                                }
                                                /*! pfad eintragen */
                                                $thedir[$entrycount]["path"]= $filepath;
                                                /*! dateigroesse eintragen */
                                                $thedir[$entrycount]["size"] = filesize($filepath);
                                                /*! datei infos eintragen */
                                                $thedir[$entrycount]["info"] = getFileInfo($filepath);
                                                /*! datei rechte eintragen */
                                                $thedir[$entrycount]["rights"] = getperms($filepath);
                                                /*! datei ptotektion  eintragen */
                                                $thedir[$entrycount]["protection"] = showprotection($filepath);
                                                /*! wenn nicht protected */
                                                if (!$isprotected) {
                                                        /*! dann loesch button eintragen */
                                                        $thedir[$entrycount]["options"]["delete"]= formlink("option","optiondel".$entrycount,"optiondel","fileoption","del","del",$file,$size="0");
                                                        /*! dann protect button eintragen */
                                                        $thedir[$entrycount]["options"]["protect"]= formlink("option","optionprotect".$entrycount,"optionprotect","fileoption","protect","use",$file,$size="0");
                                                }
                                                /*! wenn protected durch user */
                                                if ($isprotected AND $isuser) {
                                                        /*! dann unprotekt button eintragen */
                                                        $thedir[$entrycount]["options"]["unprotect"]= formlink("option","optionunprotect".$entrycount,"optionunprotect","fileoption","unprotect","free",$file,$size="0");
                                                        /*! dann upload button eintragen */
                                                        $thedir[$entrycount]["options"]["upload"]= formlink("file","optionupdate".$entrycount,"optionupdate","fileoption","update","update",$file,"5");
                                                }
                                        }
                                }
                        }
                        /*! directory schliessen */
                        closedir($dh);
                        /*! letzten log eintrag holen */
                        getlogdata($thedir);
                } else {
                        /*! error ausgabe aktuelles Verzeichnis zugriff */
                        $out["errors"] .= "konnte auf aktuelles Verzeichnis nicht zugreifen ";
                }
        } else {
                /*! error ausgabe kein aktuelles Verzeichnis vorhanden */
                $out["errors"] .= "kein aktuelles Verzeichnis";
        }
        /*! rueckgabe des directorys */
        return $thedir;
} 
getFileInfo ( filepath)

zeigt file infos

Parameter:
$filepathDatei Pfad
Rückgabe:
$finfo Datei Informationen

globale variablen festlegen

arbeitsvariable setzen

ueberpruefen ob datei existiert

datum und zeit von erzeugt und modifiziert eintragen

fehler keine datei / berzeichnis vorhanden

rueckgabe datei datum info

Definiert in Zeile 549 der Datei smumd-core.php.

Benutzt $out.

                                {
        /*! globale variablen festlegen */
        global $out;
        /*! arbeitsvariable setzen */
        $finfo = array();
        /*! ueberpruefen ob datei existiert */
        if (file_exists($filepath)) {
                /*! datum und zeit von erzeugt und modifiziert eintragen */
                $finfo = array("create"=>array("date"=>date("Y-m-d", filectime($filepath)),
                                                                        "time"=>date("H:i", filectime($filepath))
                                                                        ),
                                        "modifie"=>array("date"=>date("Y-m-d", filemtime($filepath)),
                                                                        "time"=>date("H:i", filemtime($filepath))
                                                                        )
                                        );
        }       else {
                /*! fehler keine datei / berzeichnis vorhanden */
                $out["errors"] .= "Datei oder Verzeichnis existiert nicht ";
        }
        /*! rueckgabe datei datum info */
        return $finfo;
}
getlogdata ( &$  dirlist)

check last log entry

globale variablen festlegen

default log datei daten

login datei zum lesen oeffnen

wenn fehler beim lesen

dann error ausgeben

datei geeofnet , solange bis datei ende

zeile einlesen

auf fehler beim zeile einlesen pruefen

fuer debugging fehler beim zeile lesen ausgeben

log file data loeschen

regepression fuer log entry data

log file data extrahieren

gefundenen pfad verschluesseln

daten fuer pfad eintragen

datei schliessen

fuer jeden eintrag in direktory liste

fuer jeden logfile eintrag

wenn list pfad und log pfad gleich

dann date aus liste

dann timestamp aus datum von liste

dann date aus log

dann timestamp aus datum von log

wenn beide werte nicht 0

wenn neues datum groesser altes datum

dann berechne Differenz

secunden pro minute

secunden pro stunde

secunden pro tag

rest secunden

lesbare einheiten default

schalter fuer gefundene differenz

wenn rest groesser tag und noch nichts gefunden

dann berechne tage

tage string ausgabe

rest secunden berechnen

wert wurde gefunden

wenn rest groesser studnen und noch nichts gefunden

dann berechne stunden

stunden string ausgabe

rest secunden berechnen

wert wurde gefunden

minuten string ausgabe

rest secunden berechnen

wert wurde gefunden

rest secunden festhalten

secunden string ausgabe

wert wurde gefunden

wenn wert vorhanden dann zeitpsannen wort vor setzen

last log entry setzen augabe string

last log datum setzen

last log zeit setzen

last log user setzen

last log aktion setzen

Definiert in Zeile 1373 der Datei smumd-core.php.

Benutzt $debugging, $FS, $out und $used.

                               {
        /*! globale variablen festlegen */
        global $out;
        global $used;
        global $FS;
        global $debugging;
        /*! default log datei daten */
        $logfiledata = array();
        /*! login datei zum lesen oeffnen  */
        $fh = fopen($used["logfilepath"], 'r');
        /*! wenn fehler beim lesen */
        if($fh == false){
                /*! dann error ausgeben */
                $out["errors"] .= "ERROR: File not found -> ".$used["logfilepath"]."<br>";
        }else {
        /*! datei geeofnet , solange bis datei ende */
        while (!feof($fh)){
                /*! zeile einlesen */
                   $line= fgets ($fh);
                   /*! auf fehler beim zeile einlesen pruefen */
                   if ($line===FALSE) {
                        /*! fuer debugging fehler beim zeile lesen ausgeben */
                        if ($debugging)  $out["errors"] .= " cant read line <br>"; 
                   } else {
                    /*! log file data loeschen */
                    $logfiledatas = array();
                        /*! regepression fuer log entry data */
                        $thematchdatas = "|^<date>(.*)</date><time>(.*)</time><user>(.*)</user><text>(.*)</text><path>(".quotemeta($used["pathnow"]).".*)</path>|";
                        /*! log file data extrahieren */
                        if(preg_match($thematchdatas,$line,$logfiledatas)) {
                                /*! gefundenen pfad verschluesseln */
                                $md5logname = md5($logfiledatas[5]);
                                /*! daten fuer pfad eintragen */
                                $logfiledata[$md5logname]=$logfiledatas;
                        }
                   };
        }
        /*! datei schliessen */
    fclose($fh);
        }
        /*! fuer jeden eintrag in direktory liste */
        foreach ($dirlist as &$dlist) {
                        /*! fuer jeden logfile eintrag */
                        foreach ($logfiledata as $logentry) {
                                /*! wenn  list pfad und log pfad  gleich  */
                                if (md5($dlist["path"]) == md5($logentry[5])) {
                                        /*! dann date aus liste */
                                        $targetdate = date_parse($dlist["lastlog"]["date"]." ".$dlist["lastlog"]["time"].".0");
                                        /*! dann timestamp aus datum von liste */
                                        $oldts = mktime($targetdate["hour"], $targetdate["minute"], $targetdate["second"],  $targetdate["month"], $targetdate["day"],$targetdate["year"]);
                                        /*! dann date aus log */
                                        $targetdate = date_parse($logentry[1]." ".$logentry[2].".0");
                                        /*! dann timestamp aus datum von log */
                                        $newdts = mktime($targetdate["hour"], $targetdate["minute"], $targetdate["second"],  $targetdate["month"],$targetdate["day"], $targetdate["year"]);                             
                                        /*! wenn beide werte nicht 0 */
                                        if ($newdts > 0 and $oldts > 0) {
                                                /*! wenn neues datum groesser altes datum */
                                                if ($newdts > $oldts) { 
                                                        /*! dann berechne Differenz */
                                                        $wasdts = floor(((time()-$newdts) ));
                                                        $wasstr = "";
                                                        /*! secunden pro minute */
                                                        $minutensecunden = 60;
                                                        /*! secunden pro stunde */
                                                        $stundensecunden = 60*60;
                                                        /*! secunden pro tag */
                                                        $tagsecunden =  $stundensecunden *24;
                                                        /*! rest secunden */
                                                        $secundenrest = $wasdts;
                                                        /*! lesbare einheiten default */
                                                        $tage="";
                                                        $stunden="";
                                                        $minuten="";
                                                        $secunden="";
                                                        /*! schalter fuer gefundene differenz */
                                                        $highest = true;
                                                        /*! wenn rest groesser tag und noch nichts gefunden */
                                                        if ($secundenrest > $tagsecunden AND $highest ) {
                                                        /*! dann berechne tage */
                                                        $tage = floor($secundenrest/$tagsecunden);
                                                            /*! tage string ausgabe */
                                                                $wasstr.=$tage." Tag ";
                                                        /*! rest secunden berechnen */
                                                        $secundenrest = $secundenrest -($tage*$tagsecunden);
                                                        /*! wert wurde gefunden */
                                                        $highest = false;
                                                        }
                                                        /*! wenn rest groesser studnen und noch nichts gefunden */
                                                        if ($secundenrest > $stundensecunden AND $highest ) {
                                                        /*! dann berechne stunden */
                                                        $stunden = floor($secundenrest /$stundensecunden);
                                                        /*! stunden string ausgabe */
                                                                $wasstr.=$stunden." Std ";
                                                        /*! rest secunden berechnen */
                                                        $secundenrest =  $secundenrest-($stundensecunden * $stunden);
                                                        /*! wert wurde gefunden */
                                                        $highest = false;
                                                        }
                                                        if ($secundenrest > $minutensecunden AND $highest ) {
                                                        $minuten = floor($secundenrest /$minutensecunden);
                                                        /*! minuten string ausgabe */
                                                                $wasstr.=$minuten." Min ";
                                                        /*! rest secunden berechnen */
                                                        $secundenrest =  $secundenrest-($minutensecunden * $minuten);
                                                        /*! wert wurde gefunden */
                                                        $highest = false;
                                                        }
                                                        if ($highest ) {
                                                                /*! rest secunden festhalten */
                                                                $secunden = $secundenrest;
                                                                /*! secunden string ausgabe */
                                                                        $wasstr.=$secunden." Sek ";                                                                     
                                                                /*! wert wurde gefunden */
                                                                $highest = false;
                                                        } 
                                                        /*! wenn wert vorhanden dann zeitpsannen wort vor setzen */
                                                        if (!$highest) {$wasstr="vor ".$wasstr;}
                                                        /*! last log entry setzen augabe string */
                                                        $dlist["lastlog"]["entry"] = $wasstr; 
                                                        /*! last log datum setzen  */
                                                        $dlist["lastlog"]["date"] = $logentry[1];
                                                        /*! last log zeit setzen  */
                                                        $dlist["lastlog"]["time"] = $logentry[2];
                                                        /*! last log user setzen  */
                                                        $dlist["lastlog"]["user"] = $logentry[3];
                                                        /*! last log aktion setzen  */
                                                        $dlist["lastlog"]["action"] = $logentry[4];     
                                                }       
                                        }                                       
                                }
                        }
        }
}
getperms ( filepath)

File Permissions human readable unix style.

Parameter:
$filepathDatei Pfad
Rückgabe:
$allperms rechte lesbar , sonst default array

globale variablen festlegen

arbeitsvariable sdefault setzen

ueberpruefen ob datei existiert

datei rechte holen

Socket

Symbolic Link

Regular

Block special

Directory

Character special

FIFO pipe

Unknown

Owner lesen

Owner schreiben

Owner ausfuehren

Group lesen

Group schreiben

Group ausfuehren

Others lesen

Others schreiben

Others ausfuehren

fehler keine datei / berzeichnis vorhanden

rueckgabe date rechte

Definiert in Zeile 484 der Datei smumd-core.php.

Benutzt $out.

                             {
        /*! globale variablen festlegen */
        global $out;
        /*! arbeitsvariable sdefault setzen */
        $allperms = array (     "typ" =>"",
                                                "owner"=> array(        "r"=>"",
                                                                                        "w"=>"",
                                                                                        "x"=>""),
                                                "group"=> array(        "r"=>"",
                                                                                        "w"=>"",
                                                                                        "x"=>""),
                                                "other"=> array(        "r"=>"",
                                                                                        "w"=>"",
                                                                                        "x"=>"")
                                        );
        /*! ueberpruefen ob datei existiert */
        if (file_exists($filepath)) {
                /*! datei rechte holen */
                $perms = fileperms($filepath);
                if (($perms & 0xC000) == 0xC000) {
                        $allperms["typ"]= 's'; /*! Socket */
                } elseif (($perms & 0xA000) == 0xA000) {                
                        $allperms["typ"]= 'l'; /*! Symbolic Link */
                } elseif (($perms & 0x8000) == 0x8000) {                
                        $allperms["typ"]= '-'; /*! Regular */
                } elseif (($perms & 0x6000) == 0x6000) {                
                        $allperms["typ"]= 'b'; /*! Block special */
                } elseif (($perms & 0x4000) == 0x4000) {                
                        $allperms["typ"]= 'd'; /*! Directory */
                } elseif (($perms & 0x2000) == 0x2000) {                
                        $allperms["typ"]= 'c'; /*! Character special */
                } elseif (($perms & 0x1000) == 0x1000) {                
                        $allperms["typ"]= 'p'; /*! FIFO pipe */
                } else {                
                        $allperms["typ"]= 'u'; /*! Unknown */
                }
                /*! Owner lesen */
                $allperms["owner"]["r"]= (($perms & 0x0100) ? 'r' : '-');
                /*! Owner schreiben */
                $allperms["owner"]["w"]= (($perms & 0x0080) ? 'w' : '-');
                /*! Owner ausfuehren */
                $allperms["owner"]["x"]= (($perms & 0x0040) ? (($perms & 0x0800) ? 's' : 'x' ) : (($perms & 0x0800) ? 'S' : '-'));
                /*! Group lesen */
                $allperms["group"]["r"]= (($perms & 0x0020) ? 'r' : '-');
                /*! Group schreiben */
                $allperms["group"]["w"]= (($perms & 0x0010) ? 'w' : '-');
                /*! Group ausfuehren */
                $allperms["group"]["x"]= (($perms & 0x0008) ? (($perms & 0x0400) ? 's' : 'x' ) : (($perms & 0x0400) ? 'S' : '-'));
                /*! Others lesen */
                $allperms["other"]["r"]= (($perms & 0x0004) ? 'r' : '-');
                /*! Others schreiben */
                $allperms["other"]["w"]= (($perms & 0x0002) ? 'w' : '-');
                /*! Others ausfuehren */
                $allperms["other"]["x"]= (($perms & 0x0001) ? (($perms & 0x0200) ? 't' : 'x' ) : (($perms & 0x0200) ? 'T' : '-'));
        } else {
                /*! fehler keine datei / berzeichnis vorhanden */
                $out["errors"] .= "Datei oder Verzeichnis existiert nicht ";
        }
        /*! rueckgabe date rechte */
        return $allperms;
}
getprotectiondata ( )

get protections from database file for pathnow

Rückgabe:
$protections Protectionsdaten aus der Datenbank

globale variablen festlegen

login datei zum lesen oeffnen

wenn fehler beim lesen

dann error ausgeben

datei geeofnet , solange bis datei ende

zeile einlesen

auf fehler beim zeile einlesen pruefen

fuer debugging fehler beim zeile lesen ausgeben

default objekt protekt daten

regexpression fuer pfad

pfad aus zeile extrahieren

pfad gefunden

dann protect datas lesen

datei schliessen

rueckgabe protekt daten objekt

Definiert in Zeile 1328 der Datei smumd-core.php.

Benutzt $debugging, $FS, $out und $used.

                             {
        /*! globale variablen festlegen */
        global $out;
        global $used;
        global $FS;
        global $debugging;
        $protections = array();
        /*! login datei zum lesen oeffnen  */
        $fh = fopen($used["protectiondb"], 'r');
        /*! wenn fehler beim lesen */
        if($fh == false){
                /*! dann error ausgeben */
                $out["errors"] .= "ERROR: File not found -> ".$used["protectiondb"]."<br>";
        }else {
        /*! datei geeofnet , solange bis datei ende */
        while (!feof($fh)){
                /*! zeile einlesen */
                   $line= fgets ($fh);
                   /*! auf fehler beim zeile einlesen pruefen */
                   if ($line===FALSE) {
                        /*! fuer debugging fehler beim zeile lesen ausgeben */
                        if ($debugging)  $out["errors"] .= " cant read line <br>"; 
                   } else {
                        /*! default objekt protekt daten */
                    $protectiondatas = array();
                        /*! regexpression fuer pfad */
                        $thematchdatas = "|<filepath>(".quotemeta($used["pathnow"]).".*)</filepath><user>(.*)</user><datetime>(.*)</datetime>|";
                        /*! pfad aus zeile extrahieren */
                        $gotit = preg_match($thematchdatas,$line,$protectiondatas);
                        /*! pfad gefunden */
                        if ($gotit > 0) {
                                /*! dann protect datas lesen */
                                $protections[]=$protectiondatas;
                        }
                   };
        }
        /*! datei schliessen  */
    fclose($fh);        
        }
        /*! rueckgabe protekt daten objekt */
        return $protections;
}
GetUploadFile ( update)

upload function

Parameter:
$updateStausflag (true = vorhanden ,false = neu) für Dateiupload
Rückgabe:
$uploaded Status Dateiupload

globale variablen festlegen

arbeits variablen default setzen

schlater fuer kopieren

pruefen ob datei hochgeladen wurde

Datei pfad zum kopieren

keine Datei aber update also nicht kopieren

Datei aber kein update also nicht kopieren

pruefen ob datei existiert und ein update

protekt daten holen

wenn status falsch dann nicht kopieren

wenn upload name nicht paramter name dann nicht kopieren

wenn status ok und username nicht protektor dann nicht kopieren

wenn kopieren erlaubt

dann kopier datei

es wurde upgeloaded

auf update pruefen

kein update also upload in loggen

ist update also update loggen

error ausgabe kann upload datei nicht kopieren

error akeine datei zum uploaden da

rueckgabe upload status

Definiert in Zeile 922 der Datei smumd-core.php.

Benutzt $debugging, $FS, $out, $used, checkprotection() und logThis().

                                 {
        /*! globale variablen festlegen */
        global $out; 
        global $used;
        global $FS;
        global $debugging;
        /*! arbeits variablen default setzen */
        $uploaded=false;
        /*! schlater fuer kopieren */
        $copythefile = true;
        /*! pruefen ob datei hochgeladen wurde */
        if(is_uploaded_file($_FILES["file"]["tmp_name"])) { 
                        /*! Datei pfad zum kopieren */
                        $uploadtocopy = $used["pathnow"].$_FILES["file"]["name"];
                        /*! keine Datei aber update also nicht kopieren */
                        if (!file_exists($uploadtocopy) AND $update )  { $copythefile = false; };
                        /*! Datei aber kein update also nicht kopieren */
                        if (file_exists($uploadtocopy) AND !$update )  {$copythefile = false;}
                        /*! pruefen ob datei existiert und ein update */                        
                        if (file_exists($uploadtocopy) AND $update )  {  
                                /*! protekt daten holen */
                                $protectdata = checkprotection($uploadtocopy,true);
                                /*! wenn status falsch dann nicht kopieren */
                                if (!$protectdata["status"] )  { $copythefile = false; } ;
                                /*!  wenn upload name nicht paramter name dann nicht kopieren */
                                if ($_FILES["file"]["name"] != $_POST["field"]) { $copythefile = false; };
                                /*! wenn status ok und username nicht protektor dann nicht kopieren */
                                if ($protectdata["status"] AND ($protectdata["username"] != $used["username"]))  { $copythefile = false; };
                        };
                        /*! wenn kopieren erlaubt */
                        if ($copythefile) {
                                /*! dann kopier datei */
                                if(copy($_FILES["file"]["tmp_name"], $uploadtocopy)) {
                                        /*! es wurde upgeloaded */
                                        $uploaded = true;
                                        /*! auf update pruefen */
                                        if (!$update) { 
                                                /*! kein update also upload in loggen  */
                                                logThis("uploaded file",$uploadtocopy);
                                        } else {
                                                /*! ist update also update loggen */
                                                logThis("updated file",$uploadtocopy);
                                        }
                                } else { 
                                        /*! error ausgabe kann upload datei nicht kopieren */
                                        $out["errors"] .= "cant copy uploaded file"; 
                                }       
                        }
        } else { 
                /*! error akeine datei zum uploaden da */
                $out["errors"] .= "no file to upload sorry"; 
        }
        /*! rueckgabe upload status */
        return $uploaded;
}
logThis ( logdata,
pathdata 
)

write to logfile

Parameter:
$logdataAktion Text
$pathdatader Pfad

globale variablen festlegen

datei zum anhängen öffnen

fehlgeschlagen also error schreiben

erfolg also schreiben

log text string erzeugen

prüfen log text string geschrieben werden konnte

fehlgeschlagen also error schreiben

log datei schliessen

Definiert in Zeile 210 der Datei smumd-core.php.

Benutzt $out und $used.

                                     {
        /*! globale variablen festlegen */
        global $used;
        /*! datei zum anhängen öffnen */
    if (!$fh = fopen($used["logfilepath"], 'a')) {
        /*! fehlgeschlagen also error schreiben */
         $out["errors"] .= "Cannot open logfile file to append stuff  <br>";
        /*! erfolg also schreiben */     
    } else {
                /*! log text string erzeugen    */
                $logtext = "<date>".date("Y-m-d")."</date><time>".date("H:i:s")."</time><user>".$used["username"]."</user><text>".$logdata."</text><path>".$pathdata."</path>\n";
                /*! prüfen log text string geschrieben werden konnte */
                if (fwrite($fh, $logtext) === FALSE) {
                        /*! fehlgeschlagen also error schreiben */
                        $out["errors"] .= "Cannot write to db file to append stuff <br>";
                }
                /*! log datei schliessen */
                fclose($fh); 
        }
}
pathcmp ( a,
b 
)

vergleichsfunktion sortierung

Parameter:
$aerster wert
$bzweiter wert

globale variablen festlegen

ersten wert setzen

zweiter wert setzen

rückgabe verleichs ergebnis grösser gleich kleiner case sensitiv

Definiert in Zeile 81 der Datei smumd-core.php.

Benutzt $thedir.

                         {
        /*! globale variablen festlegen */
        global $thedir;
        /*! ersten wert setzen */
        $ab = $thedir[$a]["filename"];
        /*! zweiter wert setzen */
        $bb = $thedir[$b]["filename"];
        /*! rückgabe verleichs ergebnis grösser gleich kleiner case sensitiv  */
        return strcasecmp($ab, $bb);            
}
protectaFile ( filename)

protect a file , write into db file

Parameter:
$filenameDatei Name

globale variablen festlegen

pfad fuer unprotekt datei

check protektion

wenn nicht protekt

wdann protekt datei

error ausgabe datei schon geschützt

Definiert in Zeile 1053 der Datei smumd-core.php.

Benutzt $debugging, $FS, $out, $used, checkprotection() und protectFile().

                                 {
        /*! globale variablen festlegen */
        global $out;
        global $used;
        global $FS;
        global $debugging;
        /*! pfad fuer unprotekt datei */
        $filetoprotect = $used["pathnow"].$filename;
        /*! check protektion */
        $fileprotected = checkprotection($filetoprotect);
        /*! wenn nicht protekt */
        if (!$fileprotected) {
                /*! wdann protekt datei  */
                protectFile($filetoprotect);
        } else {
                /*! error ausgabe datei schon geschützt */
                $out["errors"] .= " sorry file is protected , please wait or unprotect <br>"; 
        }
}
protectFile ( filetoprotect)

add the protected file to the dbfile

Parameter:
$filetoprotectDatei Pfad

globale variablen festlegen

datei zum anhaengen oeffnen

error ausgabe das öffnen der datenbank datei zum daten anhängen ist fehlgeschlagen

datei ist geoeffnet , also pfad tag erzeugen

user namen tag erzeugen

date time tag erzeugen

tags zusammen setzen

tagzeile zum schreiben ergaenzen

zeile in datei schreiben

error ausgabe kann datenbank datei keine daten anhängen

erfolgreiches schreiben loggen

datei schliessen

Definiert in Zeile 1509 der Datei smumd-core.php.

Benutzt $debugging, $FS, $out, $used und logThis().

                                     {
        /*! globale variablen festlegen */
        global $out;
        global $used;
        global $FS;
        global $debugging;
        /*! datei zum anhaengen oeffnen */
    if (!$fh = fopen($used["protectiondb"], 'a')) {
                /*! error ausgabe das öffnen der datenbank datei zum daten anhängen ist fehlgeschlagen */
        $out["errors"] .= "Cannot open db file to append stuff  <br>";
    } else {
                /*! datei ist geoeffnet , also pfad tag erzeugen */
                $thefilepathtag = "<filepath>".$filetoprotect."</filepath>";
                /*! user namen tag erzeugen */
                $theusertag ="<user>".$used["username"]."</user>";
                /*! date time tag erzeugen */
                $thedatetimetag ="<datetime>".date("Y-m-d H:i:s")."</datetime>";
                /*! tags zusammen setzen */
                $taggedline = $thefilepathtag.$theusertag.$thedatetimetag;
                /*! tagzeile zum schreiben ergaenzen */
                $protectionline = $taggedline."\n";
                /*! zeile in datei schreiben */
                if (fwrite($fh, $protectionline) === FALSE) {
                        /*! error ausgabe kann datenbank datei keine daten anhängen */
                        $out["errors"] .= "Cannot write to db file to append stuff <br>";
                } else {
                        /*! erfolgreiches schreiben loggen */
                        logThis("file protected",$filetoprotect);
                }
                /*! datei schliessen */
                fclose($fh);
        }
}
securepath ( path)

path controll

Parameter:
$paththe path to check for injections.
Rückgabe:
$newpath the path without injections.

delete injections in a path , stay in observer folder.

arbeit variable default

entfernen von steuer zeichenfolge im pfad

rueckgabe pfad ohne steuer zeichen folge

Definiert in Zeile 1627 der Datei smumd-core.php.

                           {
        /*! arbeit variable default */
        $newpath ="";
        /*! entfernen von steuer zeichenfolge im pfad */
        $newpath = preg_replace("$\.+/$","",$path);
        /*! rueckgabe pfad ohne steuer zeichen folge */
        return $newpath;
}
showprotection ( filepath)

lookup actual Protektion username and Time

Parameter:
$filepathDatei Pfad

globale variablen festlegen

arbeitsvariablen setzen

alle protection datas durchgehen

check ob pfad vorhanden

pfad vorhanden , zwischenpreichern name

zwischenpreichern datum und zeit als array

protection daten setzen

rueckgabe protection info array

Definiert in Zeile 455 der Datei smumd-core.php.

Benutzt $out und $used.

                                   {
        /*! globale variablen festlegen */
        global $out;
        global $used;
        /*! arbeitsvariablen setzen */
        $haveusername = "";
        $havedatetime = array("","");
        /*! alle protection datas durchgehen */
        foreach ($used["protectiondatas"] as $pdata) {
                /*! check ob pfad vorhanden */
                if ($filepath == $pdata[1]) {
                        /*! pfad vorhanden , zwischenpreichern name */
                        $haveusername = $pdata[2];
                        /*! zwischenpreichern datum und zeit als array  */
                        $havedatetime = explode(" ",$pdata[3]);         
                }
        }
        /*! protection daten setzen */
        $protectinfo = array(   "user"=>$haveusername,
                                                        "date"=>$havedatetime[0],
                                                        "time"=>$havedatetime[1]
                                                );
        /*! rueckgabe protection info array */
        return $protectinfo;
}
unprotectaFile ( filename)

unprotect a file

Parameter:
$filenameDatei Namen

globale variablen festlegen

pfad fuer unprotekt datei

check protektion

wenn protekt

dann datei protektion aufheben

error ausgabe datei protektion fehler

Definiert in Zeile 980 der Datei smumd-core.php.

Benutzt $debugging, $FS, $out, $used, checkprotection() und unprotectFile().

                                   {
        /*! globale variablen festlegen */
        global $out;
        global $used;
        global $FS;
        global $debugging;
        /*! pfad fuer unprotekt datei */
        $filetounprotect = $used["pathnow"].$filename;
        /*! check protektion */
        $fileprotected = checkprotection($filetounprotect);
        /*! wenn protekt */
        if ($fileprotected) {
                /*! dann datei protektion aufheben */
                unprotectFile($filetounprotect);
        } else {
                /*! error ausgabe datei protektion fehler */
                $out["errors"] .= " sorry file is unprotected <br>"; 
        }
}
unprotectFile ( filetounprotect)

unprotect file, delete the file from the dbfile

Parameter:
$filetounprotectDatei Pfad

globale variablen festlegen

oeffen der protektion datei zum lesen

neue db datei inhalt default

datei handle auf fehler pruefen

datei geoffnet , solange bis datei ende ist

zeile einlesen

auf fehler beim zeile einlesen pruefen

fuer debugging fehler beim zeile lesen ausgeben

kein fehler beim lesen also regexpression fuer datei erzeugen

wenn datei pfad nicht gefunden dann zeile zur neuen db hinzufuegen

datei schliessen

pruefen ob datei zum schreiben geoeffnet werden kann

error ausgabe datenbank datei nicht schreibbar

wenn geoeffnet dann schreibe neue db

error ausgabe fehler beim schreiben der datenbank

datei schliessen

datei unprotekt loggen

Definiert in Zeile 1002 der Datei smumd-core.php.

Benutzt $debugging, $FS, $out, $used und logThis().

                                         {
        /*! globale variablen festlegen */
        global $out;
        global $used;
        global $FS;
        global $debugging;
        /*! oeffen der protektion datei zum lesen */
        $fh = fopen($used["protectiondb"], 'r');
        /*! neue db datei inhalt default */
        $newdbfilecontent = "";
        /*! datei handle auf fehler pruefen */
        if($fh == false) {
        $out["errors"] .= "ERROR: File not found -> ".$used["userlogindb"]."<br>";
        }else {
        /*! datei geoffnet , solange bis datei ende ist  */
        while (!feof($fh)){
                        /*! zeile einlesen */
                   $line = fgets ($fh);
                   /*! auf fehler beim zeile einlesen pruefen */
                   if ($line===FALSE) {
                        /*! fuer debugging fehler beim zeile lesen ausgeben */
                        if ($debugging)  $out["errors"] .= " cant read line <br>"; 
                   } else {
                        /*! kein fehler beim lesen also regexpression fuer datei erzeugen */
                        $thefilepathtag = "|<filepath>".quotemeta($filetounprotect)."</filepath>|";
                        /*! wenn datei pfad nicht gefunden dann zeile zur neuen db hinzufuegen  */
                         if (!preg_match($thefilepathtag,$line)) {  $newdbfilecontent .= $line; } 
                   };
        }
        /*! datei schliessen */
    fclose($fh); 
        }
        /*! pruefen ob datei zum schreiben geoeffnet werden kann */
    if (!$fh = fopen($used["protectiondb"], 'w')) {
                /*! error ausgabe datenbank datei nicht schreibbar */
        $out["errors"] .= "Cannot open db file to write stuff  <br>";
    } else {
                /*! wenn geoeffnet dann schreibe neue db */
                if (fwrite($fh, $newdbfilecontent) === FALSE) {
                        /*! error ausgabe fehler beim schreiben der datenbank */
                        $out["errors"] .= "Cannot rewrite  db file <br>";
                }       
                /*! datei schliessen */
                fclose($fh);
        }
        /*! datei unprotekt loggen */
        logThis("file unprotected",$filetounprotect);
}
userexists ( uname)

check username exist

globale variablen festlegen

Datei zum lesen oeffnen

fehler beim oeffen zum lesen

datei wird gelesen

setzt regexpression username tag suche

solange datei nicht zu ende ist

lese zeile

fehler beim lesen von zeile

wenn debugg dann lese fehler ausgeben

username gefunden also datei schliessen

rueckgabe wahr weil username gefunden

datei schliessen

rueckgabe falsch weil usernametag nicht gefunden

Definiert in Zeile 233 der Datei smumd-core.php.

Benutzt $debugging, $FS, $out und $used.

                            {
        /*! globale variablen festlegen */
        global $out;
        global $used;
        global $FS;
        global $debugging;
        /*! Datei zum lesen oeffnen */
        if (!$fh = fopen($used["userlogindb"], 'r')) {
                /*! fehler beim oeffen zum lesen */
                 $out["errors"] .= "Cannot open userlogin db file to read stuff  <br>";
        } else {                
                /*! datei wird gelesen */
                /*! setzt regexpression username tag suche */
                $theusernametag = "$<username>".$uname."</username>$";
                /*! solange datei nicht zu ende ist */
                while (!feof($fh)){
                                /*! lese zeile */
                           $line = fgets ($fh);
                           /*! fehler beim lesen von zeile */
                           if ($line===FALSE) {
                                /*! wenn debugg dann lese fehler ausgeben */
                                if ($debugging)  $out["errors"] .= " cant read line <br>"; 
                           } else {
                                /* gelesene zeile auf username tag untersuchen */
                                 if (preg_match($theusernametag,$line)) {  
                                        /*! username gefunden also datei schliessen */
                                 fclose($fh);
                                        /*! rueckgabe wahr weil username gefunden */
                                 return true; 
                                 } 
                           };
                }
                /*! datei schliessen */
                fclose($fh);
        }
        /*! rueckgabe falsch weil usernametag nicht gefunden */
        return false;
}
userloginForm ( )

user Login Form

Rückgabe:
$htmlloginform user Login HTML Formular

globale variablen festlegen

loginform erzeugen

rueckgabe loginform

Definiert in Zeile 188 der Datei smumd-core.php.

Benutzt $used.

                         {
        /*! globale variablen festlegen */
        global $used;
        /*! loginform erzeugen */
        $htmlloginform =<<<HTMLLOGIN
        <FORM ID="USERLOGIN" ACTION="?" METHOD="POST" CLASS="gastlogin">
        <fieldset>
        <legend>User Login</legend>
        <label for="LOGINNAME">Login :</label><INPUT ID="LOGINNAME" NAME="username" VALUE="" TYPE="TEXT" SIZE="20" /><br />
        <label for="LOGINPASS">Password :</label><INPUT ID="LOGINPASS" NAME="userpass" VALUE="" TYPE="PASSWORD" SIZE="16" />
        $used[sidfield]
        <INPUT ID="LOGIN" NAME="LOGIN" TYPE="SUBMIT" VALUE="LogMeIn" />
        </fieldset>
        </FORM>
HTMLLOGIN;
        /*! rueckgabe loginform */
        return $htmlloginform;
}