<?
if ( !defined('IN_MFA') )
	die("Hacking attempt");

//automatisch die Install.php aufrufen
if(!file_exists("config.php"))
	header("location:install.php");

//Sachen einbinden
include("includes/functions.php");
include("includes/user.php");
include("includes/dir.php");
include("includes/file.php");
include("includes/file_extended.php");
include("includes/template.php");
include("work/data/constants.php");
include("config.php");

//setting up FTP-Connection
if(FTP_USED == 1)
{	
	$ftp_conn_id = @ftp_connect($ftp_server);
	if(!$ftp_conn_id) //wenn keine Verbindung zustande kommt
		message_die("No connection to FTP-Server","<p class='error'>Keine Verbindung zum FTP-Server</p>","Critical Error");
	
	if(! @ftp_login($ftp_conn_id, $ftp_user, $ftp_password))
		message_die("FTP-Login failed", "<p class='error'>Please check your FTP-user and password. <br>Another reason could be, that there are too many people online with the FTP-User '".$ftp_user."'. Please try it again, or wait a moment.</p>","Critical Error");
}
//unset obsolete vars
unset($ftp_password);

//$show_after_header enthält alles, was nach dem header angezeigt werden soll.(wirklich alles)
//Die Variable wird dann in der index.php in das template eingebunden
$show_after_header = "";
//temporary template-instance für Fehlermeldungen beim Login
$template = new template("default");
//find obsolete userentries
$users = getusers();
if(gettype($users) != "boolean")
{
	foreach($users as $user)
	{
		$check = new users($user);
		//wenn noch die Session-Datei existiert, dann ist der User noch online
		$user_session = new file(SCRIPT_PATH."/work/temp/".$check->user_name.".usf");
		if(file_exists(ROOT_DIR."/".$user_session->file_path ))
		{
			//wenn sie länger als eine halbe Stunde alt ist, dann logout
			if((time() - $user_session->lastchange) > 30 * 60)
			{
				$check->user_tmppw = 0;
				$user_session->delete();
				$check->writeuser();
			}
		}
	}
}
//Finding the current username
unset($username);
if(IsSet($_COOKIE['mfausername'])) $username = $_COOKIE['mfausername'];
if(IsSet($_POST['txtusername'])) $username = $_POST['txtusername'];

//do user things(i.e. login)
if(IsSet($username))
{
	$user = new users($username);
	if($user->user_id == -1)
		$login_warning = "Unknown User";
	else
	{	
		//das temporäre Passwort, dass für eine Session gültig ist und als Cookie abgespeichert ist.
		if(IsSet($_COOKIE['mfatmppw'])) $tmppw = $_COOKIE['mfatmppw'];
		
		if(IsSet($_GET['login']))
		{
			//temporäres Passwort erstellen
			$tmppw = $user->login($_POST['txtpassword']);
			if(gettype($tmppw) == "boolean") $login_warning = "Wrong Password";
		}	
		if(!IsSet($login_warning))
		{
			if($tmppw == "0")
  		{
  			//der User ist eigentlich nicht eingeloggt -> Cookie löschen
  			setcookie("mfausername",'', 0, "/",'', 0) or die("Konnte Cookie nicht setzen.");					
  			message_die("HACKING BLOCKED", "You tryed to hack myFileAdmin, by using an incorrect Sessionid.<br>Your session was closed.", "Critical Error");
  		}
  		elseif(!$user->checkpassword($tmppw))
  		{	
  			//das temporäre Passwort ist nicht mehr aktuell
				setcookie("mfausername", '', 0, "/",'', 0);
  			setcookie("mfatmppw", '', 0, "/",'', 0);
  			message_die("Error with sessionid","You were inactive for over 30 minutes, so your session was closed. Please login again.", "Error");
  		}
  		else
  		{
  			setcookie("mfausername", $user->user_name, 0, "/",'', 0) or die("Konnte Cookie nicht setzen.");					
  			setcookie("mfatmppw", $tmppw, 0, "/",'', 0) or die("Konnte Cookie nicht setzen.");
  			//Datei [username].usf bekommt eine neue Zeitmarke verpasst
				touch("work/temp/".$user->user_name.".usf");
			}
  		if(IsSet($_GET['logout'])) $user->logout();
		}
	}		
	
	if(IsSet($login_warning)) $show_after_header .= "<p class='error'>".$login_warning."</p>";
}
else
	$user = new users("Anonymous");

//*******************************
//Language											*
//*******************************
if(IsSet($_POST['sellang']))
	$user->changelang($_POST['sellang']);

//die für den User richtige Sprachdatei einbinden
if($user->IsValid())
	include("includes/lang/".$user->user_lang.".php");

//*******************************
//Templateänderung im usercp		*
//*******************************
if(IsSet($_POST['seltemplate']))
	$user->changetemplate($_POST['seltemplate']);

//template
if($user->isValid())
	$template = new template($user->user_template);

//*******************************
//FILE-OPERATIONS								*
//*******************************
include("includes/action_list.php");
//Variable mit aktuellem Verzeichnis initialisieren
$verzname = (!IsSet($_GET['dir']))? "": $_GET['dir'];
if($verzname != "")
{
	if(substr($verzname, 0, 1) == "/") 
		$verzname = substr($verzname, 1);
	if(substr($verzname, -1) != "/") 
		$verzname = $verzname."/"; 		 	
}

//Dateioperation ausführen

if(IsSet($_GET['mode']))
{
	if(IsSet($actions[$_GET['mode']]))
	{
			$show_explorer = $actions[$_GET['mode']]->show_explorer; //shall i show file-list(if the operation won't give back own content)
			include($actions[$_GET['mode']]->path);
	}
	else
		$show_after_header .= "<p class='error'>unknown operation</p>";
}

?>