Merge branch 'userOptions' into kt-dev
Conflicts: .gitignore
This commit is contained in:
commit
6185cbeeaf
4 changed files with 244 additions and 237 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -220,3 +220,4 @@ mypersonaldata/public/
|
||||||
mypersonaldata/zipversions/
|
mypersonaldata/zipversions/
|
||||||
!mypersonaldata/zipversions/index.html
|
!mypersonaldata/zipversions/index.html
|
||||||
pass.php
|
pass.php
|
||||||
|
user_config.php
|
|
@ -1,185 +1,185 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @author bronco@warriordudimanche.com / www.warriordudimanche.net
|
* @author bronco@warriordudimanche.com / www.warriordudimanche.net
|
||||||
* @copyright open source and free to adapt (keep me aware !)
|
* @copyright open source and free to adapt (keep me aware !)
|
||||||
* @version 2.0
|
* @version 2.0
|
||||||
*
|
*
|
||||||
* Verrouille l'accès à une page
|
* Verrouille l'accès à une page
|
||||||
* Il suffit d'inclure ce fichier pour bloquer l'accès
|
* Il suffit d'inclure ce fichier pour bloquer l'accès
|
||||||
* il gère seul l'expiration de session, la connexion,
|
* il gère seul l'expiration de session, la connexion,
|
||||||
* la déconnexion.
|
* la déconnexion.
|
||||||
*
|
*
|
||||||
* Améliorations eventuelles:
|
* Améliorations eventuelles:
|
||||||
* ajouter compteur de tentatives sur ban id.
|
* ajouter compteur de tentatives sur ban id.
|
||||||
* ajouter la sécurisation du $_POST (en cas d'usage d'une base de donnees)
|
* ajouter la sécurisation du $_POST (en cas d'usage d'une base de donnees)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
session_start();
|
session_start();
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
// configuration
|
// configuration
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
$auto_restrict['error_msg']='Erreur - impossible de se connecter.';// utilisé si on ne veut pas rediriger
|
$auto_restrict['error_msg']='Erreur - impossible de se connecter.';// utilisé si on ne veut pas rediriger
|
||||||
$auto_restrict['cookie_name']='sonarrss';// nom du cookie
|
$auto_restrict['cookie_name']='sonarrss';// nom du cookie
|
||||||
$auto_restrict['encryption_key']='abcdef';// clé pour le cryptage de la chaine de vérification
|
$auto_restrict['encryption_key']='abcdef';// clé pour le cryptage de la chaine de vérification
|
||||||
$auto_restrict['session_expiration_delay']=120;//minutes
|
$auto_restrict['session_expiration_delay']=120;//minutes
|
||||||
//$auto_restrict['login']='bronco'; // caractères alphanum + _ et .
|
//$auto_restrict['login']='bronco'; // caractères alphanum + _ et .
|
||||||
$auto_restrict['redirect_error']='index.php?public';// si précisé, pas de message d'erreur
|
$auto_restrict['redirect_error']='index.php?public';// si précisé, pas de message d'erreur
|
||||||
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------------
|
||||||
// sécurisation du passe: procédure astucieuse de JérômeJ (http://www.olissea.com/)
|
// sécurisation du passe: procédure astucieuse de JérômeJ (http://www.olissea.com/)
|
||||||
@include('pass.php');
|
@include('pass.php');
|
||||||
if(!isset($auto_restrict['pass'])){
|
if(!isset($auto_restrict['pass'])){
|
||||||
if(isset($_POST['pass'])&&isset($_POST['login'])&&$_POST['pass']!=''&&$_POST['login']!=''){ # Création du fichier pass.php
|
if(isset($_POST['pass'])&&isset($_POST['login'])&&$_POST['pass']!=''&&$_POST['login']!=''){ # Création du fichier pass.php
|
||||||
$salt = md5(uniqid('', true));
|
$salt = md5(uniqid('', true));
|
||||||
file_put_contents('pass.php', '<?php $auto_restrict["login"]="'.$_POST['login'].'";$auto_restrict["salt"] = '.var_export($salt,true).'; $auto_restrict["pass"] = '.var_export(hash('sha512', $salt.$_POST['pass']),true).'; ?>');
|
file_put_contents('pass.php', '<?php $auto_restrict["login"]="'.$_POST['login'].'";$auto_restrict["salt"] = '.var_export($salt,true).'; $auto_restrict["pass"] = '.var_export(hash('sha512', $salt.$_POST['pass']),true).'; ?>');
|
||||||
include('login_form.php');exit();
|
include('login_form.php');exit();
|
||||||
}
|
}
|
||||||
else{ # On affiche un formulaire invitant à rentrer le mdp puis on exit le script
|
else{ # On affiche un formulaire invitant à rentrer le mdp puis on exit le script
|
||||||
include('login_form.php');exit();
|
include('login_form.php');exit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ---------------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
// gestion de post pour demande de connexion
|
// gestion de post pour demande de connexion
|
||||||
// si un utilisateur tente de se loguer, on gère ici
|
// si un utilisateur tente de se loguer, on gère ici
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
if (isset($_POST['login'])&&isset($_POST['pass'])){
|
if (isset($_POST['login'])&&isset($_POST['pass'])){
|
||||||
log_user($_POST['login'],$_POST['pass']);
|
log_user($_POST['login'],$_POST['pass']);
|
||||||
if (isset($_POST['cookie'])){setcookie($auto_restrict['cookie_name'],sha1($_SERVER['HTTP_USER_AGENT']),time()+31104000);}//un an
|
if (isset($_POST['cookie'])){setcookie($auto_restrict['cookie_name'],sha1($_SERVER['HTTP_USER_AGENT']),time()+31104000);}//un an
|
||||||
header('location: index.php');
|
header('location: index.php');
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
// si pas de demande de connexion on verifie les vars de session
|
// si pas de demande de connexion on verifie les vars de session
|
||||||
// et la duree d'inactivité de la session
|
// et la duree d'inactivité de la session
|
||||||
// si probleme,on include un form de login.
|
// si probleme,on include un form de login.
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
if (!is_ok()){session_destroy();header('location: index.php?public');exit();}
|
if (!is_ok()){session_destroy();header('location: index.php?public');exit();}
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
// demande de deco via la variable get 'deconnexion'
|
// demande de deco via la variable get 'deconnexion'
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
if (isset($_GET['deconnexion'])){log_user($_POST['login'],$_POST['pass']);}
|
if (isset($_GET['deconnexion'])){log_user($_POST['login'],$_POST['pass']);}
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
//header('location: index.php?public');
|
//header('location: index.php?public');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
// fonctions de cryptage
|
// fonctions de cryptage
|
||||||
// récupérées sur http://www.info-3000.com/phpmysql/cryptagedecryptage.php
|
// récupérées sur http://www.info-3000.com/phpmysql/cryptagedecryptage.php
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
function GenerationCle($Texte,$CleDEncryptage)
|
function GenerationCle($Texte,$CleDEncryptage)
|
||||||
{
|
{
|
||||||
$CleDEncryptage = md5($CleDEncryptage);
|
$CleDEncryptage = md5($CleDEncryptage);
|
||||||
$Compteur=0;
|
$Compteur=0;
|
||||||
$VariableTemp = "";
|
$VariableTemp = "";
|
||||||
for ($Ctr=0;$Ctr<strlen($Texte);$Ctr++)
|
for ($Ctr=0;$Ctr<strlen($Texte);$Ctr++)
|
||||||
{
|
{
|
||||||
if ($Compteur==strlen($CleDEncryptage))
|
if ($Compteur==strlen($CleDEncryptage))
|
||||||
$Compteur=0;
|
$Compteur=0;
|
||||||
$VariableTemp.= substr($Texte,$Ctr,1) ^ substr($CleDEncryptage,$Compteur,1);
|
$VariableTemp.= substr($Texte,$Ctr,1) ^ substr($CleDEncryptage,$Compteur,1);
|
||||||
$Compteur++;
|
$Compteur++;
|
||||||
}
|
}
|
||||||
return $VariableTemp;
|
return $VariableTemp;
|
||||||
}
|
}
|
||||||
function Crypte($Texte,$Cle)
|
function Crypte($Texte,$Cle)
|
||||||
{
|
{
|
||||||
srand((double)microtime()*1000000);
|
srand((double)microtime()*1000000);
|
||||||
$CleDEncryptage = md5(rand(0,32000) );
|
$CleDEncryptage = md5(rand(0,32000) );
|
||||||
$Compteur=0;
|
$Compteur=0;
|
||||||
$VariableTemp = "";
|
$VariableTemp = "";
|
||||||
for ($Ctr=0;$Ctr<strlen($Texte);$Ctr++)
|
for ($Ctr=0;$Ctr<strlen($Texte);$Ctr++)
|
||||||
{
|
{
|
||||||
if ($Compteur==strlen($CleDEncryptage))
|
if ($Compteur==strlen($CleDEncryptage))
|
||||||
$Compteur=0;
|
$Compteur=0;
|
||||||
$VariableTemp.= substr($CleDEncryptage,$Compteur,1).(substr($Texte,$Ctr,1) ^ substr($CleDEncryptage,$Compteur,1) );
|
$VariableTemp.= substr($CleDEncryptage,$Compteur,1).(substr($Texte,$Ctr,1) ^ substr($CleDEncryptage,$Compteur,1) );
|
||||||
$Compteur++;
|
$Compteur++;
|
||||||
}
|
}
|
||||||
return base64_encode(GenerationCle($VariableTemp,$Cle) );
|
return base64_encode(GenerationCle($VariableTemp,$Cle) );
|
||||||
}
|
}
|
||||||
function Decrypte($Texte,$Cle)
|
function Decrypte($Texte,$Cle)
|
||||||
{
|
{
|
||||||
$Texte = GenerationCle(base64_decode($Texte),$Cle);
|
$Texte = GenerationCle(base64_decode($Texte),$Cle);
|
||||||
$VariableTemp = "";
|
$VariableTemp = "";
|
||||||
for ($Ctr=0;$Ctr<strlen($Texte);$Ctr++)
|
for ($Ctr=0;$Ctr<strlen($Texte);$Ctr++)
|
||||||
{
|
{
|
||||||
$md5 = substr($Texte,$Ctr,1);
|
$md5 = substr($Texte,$Ctr,1);
|
||||||
$Ctr++;
|
$Ctr++;
|
||||||
$VariableTemp.= (substr($Texte,$Ctr,1) ^ $md5);
|
$VariableTemp.= (substr($Texte,$Ctr,1) ^ $md5);
|
||||||
}
|
}
|
||||||
return $VariableTemp;
|
return $VariableTemp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
function id_user(){
|
function id_user(){
|
||||||
// retourne une chaine identifiant l'utilisateur que l'on comparera par la suite
|
// retourne une chaine identifiant l'utilisateur que l'on comparera par la suite
|
||||||
// cette chaine cryptée contient les variables utiles sérialisées
|
// cette chaine cryptée contient les variables utiles sérialisées
|
||||||
$id=array();
|
$id=array();
|
||||||
$id['REMOTE_ADDR']=$_SERVER['REMOTE_ADDR'];
|
$id['REMOTE_ADDR']=$_SERVER['REMOTE_ADDR'];
|
||||||
$id['HTTP_USER_AGENT']=$_SERVER['HTTP_USER_AGENT'];
|
$id['HTTP_USER_AGENT']=$_SERVER['HTTP_USER_AGENT'];
|
||||||
$id['session_id']=session_id();
|
$id['session_id']=session_id();
|
||||||
$id=serialize($id);
|
$id=serialize($id);
|
||||||
return $id;
|
return $id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function is_ok(){
|
function is_ok(){
|
||||||
// vérifie et compare les variables de session
|
// vérifie et compare les variables de session
|
||||||
// en cas de problème on sort/redirige en détruisant la session
|
// en cas de problème on sort/redirige en détruisant la session
|
||||||
global $auto_restrict;
|
global $auto_restrict;
|
||||||
$expired=false;
|
$expired=false;
|
||||||
if (isset($_COOKIE[$auto_restrict['cookie_name']])&&$_COOKIE[$auto_restrict['cookie_name']]==sha1($_SERVER['HTTP_USER_AGENT'])){return true;}
|
if (isset($_COOKIE[$auto_restrict['cookie_name']])&&$_COOKIE[$auto_restrict['cookie_name']]==sha1($_SERVER['HTTP_USER_AGENT'])){return true;}
|
||||||
if (!isset($_SESSION['id_user'])){return false;}
|
if (!isset($_SESSION['id_user'])){return false;}
|
||||||
if ($_SESSION['expire']<time()){$expired=true;}
|
if ($_SESSION['expire']<time()){$expired=true;}
|
||||||
$sid=Decrypte($_SESSION['id_user'],$auto_restrict['encryption_key']);
|
$sid=Decrypte($_SESSION['id_user'],$auto_restrict['encryption_key']);
|
||||||
$id=id_user();
|
$id=id_user();
|
||||||
if ($sid!=$id || $expired==true){// problème
|
if ($sid!=$id || $expired==true){// problème
|
||||||
return false;
|
return false;
|
||||||
}else{ // tout va bien
|
}else{ // tout va bien
|
||||||
//on redonne un délai à la session
|
//on redonne un délai à la session
|
||||||
$_SESSION['expire']=time()+(60*$auto_restrict['session_expiration_delay']);
|
$_SESSION['expire']=time()+(60*$auto_restrict['session_expiration_delay']);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function log_user($login_donne,$pass_donne){
|
function log_user($login_donne,$pass_donne){
|
||||||
//cree les variables de session
|
//cree les variables de session
|
||||||
global $auto_restrict;
|
global $auto_restrict;
|
||||||
if ($auto_restrict['login']==$login_donne && $auto_restrict['pass']==hash('sha512', $auto_restrict["salt"].$pass_donne)){
|
if ($auto_restrict['login']==$login_donne && $auto_restrict['pass']==hash('sha512', $auto_restrict["salt"].$pass_donne)){
|
||||||
$_SESSION['id_user']=Crypte(id_user(),$auto_restrict['encryption_key']);
|
$_SESSION['id_user']=Crypte(id_user(),$auto_restrict['encryption_key']);
|
||||||
$_SESSION['login']=$auto_restrict['login'];
|
$_SESSION['login']=$auto_restrict['login'];
|
||||||
$_SESSION['expire']=time()+(60*$auto_restrict['session_expiration_delay']);
|
$_SESSION['expire']=time()+(60*$auto_restrict['session_expiration_delay']);
|
||||||
return true;
|
return true;
|
||||||
}else{
|
}else{
|
||||||
|
|
||||||
exit_redirect();
|
exit_redirect();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function redirect_to($page){header('Location: '.$page); }
|
function redirect_to($page){header('Location: '.$page); }
|
||||||
function exit_redirect(){
|
function exit_redirect(){
|
||||||
global $auto_restrict;
|
global $auto_restrict;
|
||||||
@session_unset();
|
@session_unset();
|
||||||
@session_destroy();
|
@session_destroy();
|
||||||
setcookie($auto_restrict['cookie_name'],'',time()+1);
|
setcookie($auto_restrict['cookie_name'],'',time()+1);
|
||||||
if ($auto_restrict['redirect_error']&&$auto_restrict['redirect_error']!=''){//tester sans la deuxième condition
|
if ($auto_restrict['redirect_error']&&$auto_restrict['redirect_error']!=''){//tester sans la deuxième condition
|
||||||
redirect_to($auto_restrict['redirect_error']);
|
redirect_to($auto_restrict['redirect_error']);
|
||||||
}else{exit($auto_restrict['error_msg']);}
|
}else{exit($auto_restrict['error_msg']);}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
?>
|
?>
|
|
@ -129,13 +129,16 @@ function render_form($var){
|
||||||
}
|
}
|
||||||
include('auto_restrict.php');
|
include('auto_restrict.php');
|
||||||
include('config.php');
|
include('config.php');
|
||||||
|
if(file_exists('user_config.php')){
|
||||||
|
include('user_config.php');
|
||||||
|
}
|
||||||
unset($GLOBAL['private_data_folder']);
|
unset($GLOBAL['private_data_folder']);
|
||||||
unset($GLOBAL['public_data_folder']);
|
unset($GLOBAL['public_data_folder']);
|
||||||
$GLOBAL['default_data_folder']=basename($GLOBAL['default_data_folder']);
|
$GLOBAL['default_data_folder']=basename($GLOBAL['default_data_folder']);
|
||||||
|
|
||||||
$message='';
|
$message='';
|
||||||
if ($_POST){
|
if ($_POST){
|
||||||
$auto_form['filename']='config.php';
|
$auto_form['filename']='user_config.php';
|
||||||
$auto_form['filecontent']="<?php \n /* The configuration generated with auto_form*/\n\n";
|
$auto_form['filecontent']="<?php \n /* The configuration generated with auto_form*/\n\n";
|
||||||
$auto_form['variable_name']='$GLOBAL';
|
$auto_form['variable_name']='$GLOBAL';
|
||||||
$all_keys=explode(' | ',$_POST['all_keys']);
|
$all_keys=explode(' | ',$_POST['all_keys']);
|
||||||
|
|
|
@ -35,6 +35,9 @@ if (isset($_GET['tag'])){$search_tags=strip_tags($_GET['tag']);}else{$search_tag
|
||||||
// CONFIGURABLE OPTIONS
|
// CONFIGURABLE OPTIONS
|
||||||
// adapter la configuration dans le fichier config.php
|
// adapter la configuration dans le fichier config.php
|
||||||
include('config.php');
|
include('config.php');
|
||||||
|
if(file_exists('user_config.php')){
|
||||||
|
include('user_config.php');
|
||||||
|
}
|
||||||
|
|
||||||
$GLOBAL['version']='2.2';
|
$GLOBAL['version']='2.2';
|
||||||
$GLOBAL['respawn_url']=returncurrenturl();
|
$GLOBAL['respawn_url']=returncurrenturl();
|
||||||
|
|
Reference in a new issue