<?php
session_start();
ini_set('display_errors',1);
require('functions.php');
$config = loadConfig();
unlock_all_files();
$action = $_GET['action'];

if($config[4]=="not_executed") {
header('location: setup.php');
}
if($action=="password_reset" AND $config[9]=="true") {
$empfaenger = $config[3];
$betreff = "Passwort zurücksetzen";
$from = "From: Opolytics <opolytics@".$_SERVER['SERVER_NAME'].">";
$text = "Hallo. Soeben wollten Sie Ihr Passwort zurücksetzen. Ihr Benutzername lautet: ".$config[1]." und Ihr Passwort lautet: ".$config[2].". Ihr Opolytics.";
 
mail($empfaenger, $betreff, $text, $from);
echo '<!DOCTYPE html><html lang="de">'; include("menu.php"); echo '
<head><meta name="viewport" content="initial-scale=1"><title>Opolytics Wiederherstellung</title><link rel="Shortcut Icon" href="opolytics.png"></head>
<body><h1>E-Mail bereits auf dem Weg</h1><p>Die E-Mail, in der Sie alle weiteren Daten finden, ist schon auf dem Weg. Schauen Sie doch einmal in Ihr E-Mail-Programm.</p>';
}

if($action=="password_reset" AND $config[9]=="false" AND !isset($_POST['mail'])) {
$_SESSION['security-key'] = uniqid();
echo '<!DOCTYPE html><html lang="de">'; include("menu.php"); echo '
<head><meta name="viewport" content="initial-scale=1"><title>Opolytics Wiederherstellung</title><link rel="Shortcut Icon" href="opolytics.png"></head>
<body><h1>Zurücksetzen abgelehnt</h1><p>Der Webmaster hat den direkten Zugriff auf die Passwort-Zurücksetzen-Funktion aus Sicherheitsgründen abgelehnt. Bitte geben Sie unten als Sicherheitsbestätigung Ihre E-Mail ein: <form action="?action=password_reset_confirmation" method="post"><input type="text" name="mail"> <input type="submit" value="Bestätigen"></form>';
}

// Checking updates
include("updater.php");

if($action=="password_reset_confirmation") {
if($_POST['mail']==$config[3]) {
$empfaenger = $config[3];
$betreff = "Passwort zurücksetzen";
$from = "From: Opolytics <opolytics@".$_SERVER['SERVER_NAME'].">";
$text = 'Hallo. Soeben wollten Sie Ihr Passwort zurücksetzen. Natürlich können Sie dies tun, klicken Sie dazu einfach auf den Link (Achtung, das zurücksetzen muss mit dem selben Browser auf dem selben Gerät erfolgen, welches Sie jetzt benützen): https://'.$_SERVER['SERVER_NAME'].'/opolytics/login.php?action=password_reset_check&key='.$_SESSION['security-key'];

mail($empfaenger, $betreff, $text, $from);
echo '<!DOCTYPE html><html lang="de"><head><meta name="viewport" content="initial-scale=1"><title>Opolytics Wiederherstellung</title><link rel="Shortcut Icon" href="opolytics.png"></head>';
include('menu.php');
echo '<body><h1>E-Mail bereits auf dem Weg</h1><p>Die E-Mail, in der Sie alle weiteren Daten finden, ist schon auf dem Weg. Schauen Sie doch einmal in Ihr E-Mail-Programm.</p>';
}
else {
echo '<!DOCTYPE html><html lang="de"><head><meta name="viewport" content="initial-scale=1"><title>Opolytics Wiederherstellung</title><link rel="Shortcut Icon" href="opolytics.png"></head><body>';
include('menu.php');
echo '<h1>Falsche E-Mail-Adresse</h1><p>Sorry, diese E-Mailadresse ist leider falsch. Bitte versuchen Sie es <a href="?action=password_reset">hier</a> noch einmal.</p>';
}
}
if($_GET['action']=="password_reset_check" AND $_SESSION['security-key']==$_GET['key']) {
echo '<!DOCTYPE html><html lang="de"><head><meta name="viewport" content="initial-scale=1"><title>Opolytics Wiederherstellung</title><link rel="Shortcut Icon" href="opolytics.png"></head><body>';
include('menu.php');
echo '<h1>Neues Passwort wählen</h1><form action="?action=password_reset_save" method="post"><input type="hidden" name="key" value="'.$_SESSION['security-key'].'"><input type="password" name="new_password"><br><input type="submit" value="Passwort ändern"></form></body></html>';
}
if($action=="password_reset_save" AND $_SESSION['security-key']==$_POST['key']) {
$config[2] = password_hash($_POST['new_password'],PASSWORD_DEFAULT);
file_put_contents('config.txt',implode(', ',$config));
echo '<!DOCTYPE html><html lang="de"><head><meta name="viewport" content="initial-scale=1"><title>Opolytics Wiederherstellung</title><link rel="Shortcut Icon" href="opolytics.png"></head><body>';
include('menu.php');
echo '<h1>Gespeichert</h1><p>Das neue Passwort wurde soeben gespeichert, Sie können sich nun mit dem neuen Passwort einloggen</p>';
}
if($action=="password_reset_noadmin") {
echo '<!DOCTYPE html><html lang="de"><head><meta name="viewport" content="initial-scale=1"><title>Opolytics Wiederherstellung für Nicht-Admins</title><link rel="Shortcut Icon" href="opolytics.png"></head><body>';
include('menu.php');
echo '<h1>Passwort zurücksetzen für Nicht-Admins</h1><p>Sofern Sie das Passwort vergessen haben und nicht selbst ein Admin sind, müssen Sie den Admin darum bitten Ihr Passwort zu ändern. Er kann dies unter Einstellungen -> Benutzer verwalten tun.</p><form action="?action=password_reset_noadmin_contact_webmaster" method="post"><input type="text" placeholder="Benutzername" name="username"><br><input type="submit" value="Den Admin kontaktieren"></form>';
}
if($action=="password_reset_noadmin_contact_webmaster") {
$users = unserialize(file_get_contents('users.txt'));
$user = $_POST['username'];
$empfaenger = $config[3];
$betreff = 'Passwort für '.$_POST['username'].' zurücksetzen';
$from = "From: Opolytics <opolytics@".$_SERVER['SERVER_NAME'].">";
$text = 'Hallo. Soeben ist bei einem Nutzer ('.$_POST['username'].') offenbar ein Problem aufgetreten. Die Person hat ihr Passwort vergessen. Die Person bittet Sie daher, das Passwort für '.$_POST['username'].' (möglicherweise nach Absprache) zu ändern und den Nutzer über das neue Passwort zu informieren. Sie können das Passwort in Ihrer Opolytics-Installation unter Einstellungen->Benutzer verwalten ändern. Ihr Opolytics.';
if(isset($users[$user])) {
echo '<!DOCTYPE html><html lang="de"><head><meta name="viewport" content="initial-scale=1"><title>Opolytics Wiederherstellung für Nicht-Admins</title><link rel="Shortcut Icon" href="opolytics.png"></head><body>';
include('menu.php');
echo '<h1>Passwort zurücksetzen für Nicht-Admins</h1><p>Der Administrator wurde soeben über Ihren Wunsch das Passwort zu ändern informiert. Bitte haben Sie etwas Geduld, bis er Ihnen helfen kann.</p>';
mail($empfaenger, $betreff, $text, $from);
}
}
if($action=="") {
echo '<!DOCTYPE html><html lang="de"><head><meta name="viewport" content="initial-scale=1">
<title>Opolytics Login</title><link rel="Shortcut Icon" href="opolytics.png"></head><body>';
include('menu.php');
echo '<h1>Login für Opolytics</h1>
<p>Willkommen beim Login für Opolytics, Ihrem Nutzerfreundlichen Tracking-System.</p>
<form action="'.(isset($_GET['forward_to']) ? $_GET['forward_to'] : 'view.php').'" method="post">';
if(!ismobile()) {
echo '<b>Benutzername:</b> <input type="text" name="user"><br>
<b>Passwort:</b> <input type="password" name="password"><br>';
}
else {
echo '<input type="text" name="user" placeholder="Nutzername" style="width:100%;margin-bottom:5px"><br>
<input type="password" name="password" placeholder="Passwort" style="width:100%;margin-bottom:10px"><br>';
}
echo '<input type="submit" value="Login in Opolytics"><br>
';
if(isset($_GET['reason'])) {
if(!ismobile()) {
echo 'Deshalb sehen Sie das: <b>'.$_GET['reason'].'</b><br>';
}
else {
echo '<b>'.$_GET['reason'].'</b><br>';
}
}
if($action=="password_reset") { echo 'Es wurde Ihnen eine E-Mail mit den entsprechenden Angaben zugesendet.'; }
else if(ismobile()) { echo'<b>Passwort zurücksetzen</b><br><a href="?action=password_reset">Administrator</a> - <a href="?action=password_reset_noadmin">Kein Admin</a>'; }
if(!ismobile() AND $action!="password_reset") { echo '<a href="?action=password_reset">Passwort zurücksetzen (nur Administrator)</a> - <a href="?action=password_reset_noadmin">Passwort zurücksetzen (kein Admin)</a>'; }
echo '</form>';
}
include('footer.php');
?><link rel="Stylesheet" href="style.php" type="text/css">
<style>
body {
font-family: Arial;
text-align: center;
}
h1, h2{
text-align: center;
}
form {
line-height: 2;
}
</style>
</body>
</html>