Initial commit

Functional, without SSO
This commit is contained in:
Jimmy Monin
2016-09-18 11:03:26 +02:00
commit 57708e3169
253 changed files with 30787 additions and 0 deletions

View File

@ -0,0 +1,21 @@
<?php
$user = new \App\User\User();
$errors = array();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (!isset($_POST["username"]) || !trim($_POST["username"])) {
$errors["username"] = "Veuillez indiquer un nom d'utilisateur.";
} else {
$user->setUsername(trim($_POST["username"]));
}
if (empty($_POST["password"])) {
$errors["password"] = "Veuillez indiquer un mot de passe.";
} elseif (empty($_POST["password"]) || $_POST["password"] != $_POST["confirmPassword"]) {
$errors["confirmPassword"] = "Les deux mots de passe ne correspondent pas.";
}
if (empty($errors)) {
$user->setPassword(sha1($_POST["password"]));
$userStorage->save($user);
header("LOCATION: ?mod=admin&a=users");
exit;
}
}

View File

@ -0,0 +1,15 @@
<?php
if (!isset($_GET["username"]) || !$user = $userStorage->fetchByUsername($_GET["username"])) {
header("LOCATION: ?mod=admin&a=users");
exit;
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$userStorage->delete($user);
$configAlert = DOCUMENT_ROOT."/var/configs/".$user->getUsername().".csv";
if (is_file($configAlert)) {
unlink($configAlert);
}
header("LOCATION: ?mod=admin&a=users");
exit;
}

View File

@ -0,0 +1,12 @@
<?php
$filename = DOCUMENT_ROOT."/var/log/info.log";
$lines = array();
if (is_file($filename)) {
$lines = file($filename);
if (count($lines) > 200) {
$lines = array_slice($lines, count($lines)-200);
}
}

View File

@ -0,0 +1,76 @@
<?php
$errors = array();
$options = array(
"host" => "", "port" => "",
"username" => "", "password" => "",
"secure" => "",
"from" => "",
"testMail" => ""
);
if ($config->hasSection("mailer")) {
if ($smtp = $config->get("mailer", "smtp", array())) {
$options = array_merge($options, $smtp);
}
if ($from = $config->get("mailer", "from", null)) {
$options["from"] = $from;
}
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$options = array_merge($options, array_map("trim", $_POST));
if (isset($_POST["testSMTP"])) {
require_once "PHPMailer/class.phpmailer.php";
$mailer = new PHPMailer($exceptions=true);
$mailer->setLanguage("fr", DOCUMENT_ROOT."/lib/PHPMailer/language/");
$mailer->CharSet = "utf-8";
if (!empty($options["host"])) {
$mailer->Host = $options["host"];
$mailer->isSMTP();
}
if (!empty($options["port"])) {
$mailer->Port = $options["port"];
$mailer->isSMTP();
}
if (!empty($options["username"])) {
$mailer->SMTPAuth = true;
$mailer->Username = $options["username"];
}
if (!empty($options["password"])) {
$mailer->SMTPAuth = true;
$mailer->Password = $options["password"];
}
if (!empty($options["secure"])) {
$mailer->SMTPSecure = $options["secure"];
}
if (!empty($options["from"])) {
$mailer->Sender = $options["from"];
$mailer->From = $options["from"];
}
if (empty($_POST["testMail"])) {
$errors["testMail"] = "Indiquez une adresse e-mail pour l'envoi du test.";
} else {
$mailer->clearAddresses();
$mailer->addAddress($_POST["testMail"]);
if ($options["from"]) {
$mailer->FromName = $options["from"];
}
$mailer->Subject = "Test d'envoi de mail";
$mailer->Body = "Bravo.\nVotre configuration mail est validée.";
try {
$mailer->send();
$testSended = true;
} catch (phpmailerException $e) {
$testError = $e->getMessage();
}
}
} else {
$config->set("mailer", "smtp", array(
"host" => $options["host"], "port" => $options["port"],
"username" => $options["username"], "password" => $options["password"],
"secure" => $options["secure"]
));
$config->set("mailer", "from", $options["from"]);
$config->save();
header("LOCATION: ?mod=admin&a=mail");
exit;
}
}

View File

@ -0,0 +1,46 @@
<?php
$errors = array();
$options = array(
"proxy_ip" => $config->get("proxy", "ip", ""),
"proxy_port" => $config->get("proxy", "port", ""),
"proxy_user" => $config->get("proxy", "user", ""),
"proxy_password" => $config->get("proxy", "password", "")
);
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$options = array_merge(array(
"proxy_ip" => "",
"proxy_port" => "",
"proxy_user" => ""
), array_map("trim", $_POST));
if (isset($options["proxy_ip"])) {
$options["proxy_ip"] = $options["proxy_ip"];
if (isset($options["proxy_port"])) {
$options["proxy_port"] = $options["proxy_port"];
}
}
if (isset($_POST["testProxy"])) {
$client->setProxyIp($options["proxy_ip"])
->setProxyPort($options["proxy_port"])
->setProxyUser($options["proxy_user"]);
if (!empty($options["proxy_password"])) {
$client->setProxyPassword($options["proxy_password"]);
}
$errors["test"] = array();
if (false === $client->request("http://portail.free.fr")) {
$errors["test"]["site"] = $client->getError();
}
if (false === $client->request("https://www.leboncoin.fr")) {
$errors["test"]["lbc"] = $client->getError();
}
} else {
$config->set("proxy", "ip", $options["proxy_ip"]);
$config->set("proxy", "port", $options["proxy_port"]);
$config->set("proxy", "user", $options["proxy_user"]);
if (!empty($options["proxy_password"])) {
$config->set("proxy", "password", $options["proxy_password"]);
}
$config->save();
header("LOCATION: ?mod=admin&a=proxy");
exit;
}
}

View File

@ -0,0 +1,102 @@
<?php
$storageType = $config->get("storage", "type", "files");
$currentStorage = array(
"type" => $config->get("storage", "type", "files"),
"options" => $config->get("storage", "options", array())
);
$errors = array();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (!isset($_POST["type"]) || !trim($_POST["type"])
|| !in_array($_POST["type"], array("files", "db"))) {
$errors["type"] = "Type de stockage invalide.";
}
$currentStorage = array(
"type" => isset($_POST["type"]) ? $_POST["type"] : $currentStorage["type"],
"options" => array_merge($currentStorage["options"],
isset($_POST["options"]) && is_array($_POST["options"]) ? $_POST["options"] : array())
);
if ($_POST["type"] == "db") {
if (!isset($_POST["options"]["password"])) {
$_POST["options"]["password"] = "";
}
if (empty($_POST["options"]["host"])) {
$errors["host"] = "Nom d'hôte invalide.";
}
if (empty($_POST["options"]["user"])) {
$errors["user"] = "Spécifiez un nom d'utilisateur.";
}
if (empty($_POST["options"]["dbname"])) {
$errors["dbname"] = "Spécifiez une base de données.";
}
if (!empty($_POST["options"]["user"]) && !empty($_POST["options"]["dbname"])) {
// test de connexion
$dbConnection = new mysqli(
$_POST["options"]["host"], $_POST["options"]["user"],
$_POST["options"]["password"], $_POST["options"]["dbname"]);
if ($dbConnection->connect_error) {
$errors["host"] = "Connexion impossible à la base de données.";
}
}
}
if (empty($errors)) {
if ($_POST["type"] == "db") {
$config->set("storage", "type", "db");
$config->set("storage", "options", array(
"host" => $_POST["options"]["host"],
"user" => $_POST["options"]["user"],
"password" => $_POST["options"]["password"],
"dbname" => $_POST["options"]["dbname"],
));
} else {
$config->set("storage", "type", "files");
}
$config->save();
if ($_POST["type"] == "db" && !empty($_POST["importtodb"])) {
// installation de la base
require DOCUMENT_ROOT."/others/install/schema.php";
$userStorageDb = new \App\Storage\Db\User($dbConnection);
$users = array();
$usersDb = $userStorageDb->fetchAll(); // utilisateurs actuellement en BDD
foreach ($usersDb AS $user) {
$users[$user->getUsername()] = $user;
}
unset($usersDb);
$userStorageFiles = new \App\Storage\File\User(DOCUMENT_ROOT."/var/users.db");
$usersFiles = $userStorageFiles->fetchAll();
foreach ($usersFiles AS $user) {
if (!isset($users[$user->getUsername()])) {
$userStorageDb->save($user);
}
}
$users = $userStorageDb->fetchAll();
foreach ($users AS $user) {
$file = DOCUMENT_ROOT."/var/configs/".$user->getUsername().".csv";
if (!is_file($file)) {
continue;
}
$storageFiles = new \App\Storage\File\Alert($file);
$storageDb = new \App\Storage\Db\Alert($userStorageDb->getDbConnection(), $user);
$alerts = $storageFiles->fetchAll();
foreach ($alerts AS $alert) {
$storageDb->save($alert, $forceinsert=true);
}
}
}
header("LOCATION: ?mod=admin&a=storage&success=1");
exit;
}
}

View File

@ -0,0 +1,76 @@
<?php
$updater = new \App\Updater();
if ($url = $config->get("general", "url_version", "")) {
$updater->setUrlVersion($url);
}
if ($url = $config->get("general", "url_archive", "")) {
$updater->setUrlArchive($url);
}
if (isset($_POST["checkVersion"])) {
unset($_SESSION["lbcLastVersion"], $_SESSION["lbcLastVersionTime"]);
header("LOCATION: ?mod=admin&a=upgrade");
exit;
}
if ($_SERVER["REQUEST_METHOD"] == "POST" || empty($_SESSION["lbcLastVersion"]) || empty($_SESSION["lbcLastVersionTime"])) {
try {
$_SESSION["lbcLastVersion"] = $updater->getLastVersion();
$_SESSION["lbcLastVersionTime"] = time();
} catch (Exception $e) {
}
}
$lastVersion = "";
if (!empty($_SESSION["lbcLastVersion"])) {
$lastVersion = $_SESSION["lbcLastVersion"];
}
$errors = array();
$allow_update = true;
if (!is_writable(DOCUMENT_ROOT."/version.php")) {
$allow_update = false;
$errors[] = "Le fichier version.php est en lecture seule, la mise à jour automatique ne peut être effectuée.".
"<br />Vérifiez que tous les fichiers soient accéssibles en écriture (pas seulement le fichier version.php).";
} elseif (is_file(DOCUMENT_ROOT."/var/.lock")) {
$allow_update = false;
$errors[] = "Une vérification de nouvelle annonce est en cours, veuillez attendre la fin de celle-ci pour mettre à jour.";
}
$currentVersion = $config->get("general", "version");
$upgradeStarted = version_compare($currentVersion, APPLICATION_VERSION, "<");
$upgradeAvailable = version_compare($currentVersion, $lastVersion, "<");
if ($upgradeStarted && !empty($_POST["upgrade"])) {
$updater->update($currentVersion, $lastVersion);
// mise à jour du numéro de version dans la config.
$config->set("general", "version", $lastVersion);
$config->save();
header("LOCATION: ?mod=admin&a=upgrade");
exit;
} elseif ($allow_update && $upgradeAvailable && !empty($_POST["upgrade"])) {
file_put_contents(DOCUMENT_ROOT."/var/.lock_update", time());
try {
$updater->installFiles($lastVersion);
} catch (Exception $e) {
$errors[] = $e->getMessage();
}
$version = require DOCUMENT_ROOT."/version.php";
if ($version != $lastVersion) {
$errors[] = "La mise à jour semble avoir échouée.";
} else {
$updater->update($currentVersion, $lastVersion);
// mise à jour du numéro de version dans la config.
$config->set("general", "version", $lastVersion);
$config->save();
}
unlink(DOCUMENT_ROOT."/var/.lock_update");
if (!$errors) {
header("LOCATION: ?mod=admin&a=upgrade");
exit;
}
}

View File

@ -0,0 +1,2 @@
<?php
$users = $userStorage->fetchAll();