151 lines
4.7 KiB
PHP
151 lines
4.7 KiB
PHP
<?php
|
|
/**
|
|
* /config/config.php
|
|
* @version 1.0
|
|
* @desc configuration
|
|
* @author Fándly Gergő Zoltán (gergo@systemtest.tk, systemtest.tk)
|
|
* @copy 2018 Fándly Gergő Zoltán
|
|
* License:
|
|
Systemtest.tk website's.
|
|
Copyright (C) 2018 Fándly Gergő Zoltán
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program 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 General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
**/
|
|
|
|
|
|
const VERSION="0.5";
|
|
|
|
/*
|
|
* Includes
|
|
*/
|
|
require_once("lib/loginManager/loginManager.php");
|
|
require_once("lib/PasswordStorage.php");
|
|
require_once("lib/functions.php");
|
|
|
|
$config=parse_ini_file("config.ini", true);
|
|
|
|
/*
|
|
* Regionals
|
|
*/
|
|
date_default_timezone_set($config['general']['timezone']);
|
|
mb_internal_encoding("UTF-8");
|
|
|
|
/*
|
|
* Language files
|
|
*/
|
|
$langstr="";
|
|
if(isset($_GET['setlang'])){
|
|
$langstr=$_GET['setlang'];
|
|
setcookie("language", $langstr, time() + 90*86000);
|
|
}
|
|
else if(isset($_COOKIE['language'])){
|
|
$langstr=$_COOKIE['language'];
|
|
}
|
|
else{
|
|
$langstr=$config['language']['default'];
|
|
}
|
|
if(!in_array($langstr, $config['language']['available'])){
|
|
$langstr=$config['language']['default'];
|
|
}
|
|
$langcode="";
|
|
if($langstr=="en_US"){
|
|
$langcode="eng";
|
|
}
|
|
else if($langstr=="hu_HU"){
|
|
$langcode="hun";
|
|
}
|
|
else if($langstr=="ro_RO"){
|
|
$langcode="rou";
|
|
}
|
|
$lang=parse_ini_file("lang/".$langstr.".ini", false);
|
|
|
|
/*
|
|
* DB setup
|
|
*/
|
|
$db=new PDO($config['database']['type'].":host=".$config['database']['host'].";dbname=".$config['database']['name'].";charset=utf8", $config['database']['user'], $config['database']['password']);
|
|
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
|
|
|
|
/*
|
|
* UTF8 BOM
|
|
*/
|
|
$BOM=chr(239).chr(187).chr(191);
|
|
|
|
/*
|
|
* DEBUG
|
|
*/
|
|
if($config['general']['debug']){
|
|
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
|
ini_set("display_errors", true);
|
|
}
|
|
|
|
/*
|
|
* Login manager
|
|
*/
|
|
class handler implements lmHandler{
|
|
public function handle($state, $target=0){
|
|
global $db;
|
|
switch($state){
|
|
case lmStates::LOGIN_FAILED:
|
|
functions::setError(1);
|
|
functions::safeReload();
|
|
break;
|
|
case lmStates::LOGIN_OK:
|
|
$sql=$db->prepare("SELECT id, username, fullname, email, accesslevel, quota, orderer FROM users WHERE id=:id");
|
|
$sql->execute(array(":id"=>$target));
|
|
$res=$sql->fetch(PDO::FETCH_ASSOC);
|
|
$_SESSION['id']=$res['id'];
|
|
$_SESSION['username']=$res['username'];
|
|
$_SESSION['fullname']=$res['fullname'];
|
|
$_SESSION['email']=$res['email'];
|
|
$_SESSION['accesslevel']=$res['accesslevel'];
|
|
$_SESSION['quota']=$res['quota'];
|
|
$_SESSION['orderer']=$res['orderer'];
|
|
header("Location: /userarea");
|
|
break;
|
|
case lmStates::CAPTCHA_FAILED:
|
|
functions::setError(2);
|
|
functions::safeReload();
|
|
break;
|
|
case lmStates::BANNED:
|
|
functions::setError(3);
|
|
functions::safeReload();
|
|
break;
|
|
case lmStates::FORGET_DONE:
|
|
functions::setMessage(1);
|
|
functions::safeReload();
|
|
break;
|
|
case lmStates::LOGOUT_DONE:
|
|
functions::setMessage(2);
|
|
functions::safeReload();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
class password implements lmPassword{
|
|
public function verifyPassword($cleartext, $database){
|
|
if($database==""){
|
|
return false;
|
|
}
|
|
return PasswordStorage::verify_password($cleartext, $database);
|
|
}
|
|
}
|
|
class twoFactor implements lmTwoFactor{
|
|
public function secondFactor($uid){
|
|
return true;
|
|
}
|
|
}
|
|
|
|
$lm=new loginManager(new lmConfig($db, $config['login']['session_lifetime'], $config['login']['captcha_enable'], $config['login']['captcha_after'], $config['login']['captcha_sitekey'], $config['login']['captcha_secretkey'], $config['login']['ban_enable'], $config['login']['ban_after'], $config['login']['ban_time'], $config['login']['look'], $config['login']['remember_enable'], $config['login']['remember_time'], lmStates::AUTH_UNAME), new handler(), new password(), new twoFactor());
|
|
$lm->init();
|