283 lines
8.6 KiB
PHP
283 lines
8.6 KiB
PHP
<?
|
||
define('FWK_PATH', realpath(dirname(__FILE__)).'/');
|
||
include_once(FWK_PATH.'common/mysql.php');
|
||
include_once(FWK_PATH.'common/strings.php');
|
||
//include_once(FWK_PATH.'common/dates.php');
|
||
|
||
define ('REP_TEMP', '/tmp/');
|
||
// Environnement : DEV ou PRD
|
||
define ('ENV', 'DEV');
|
||
define ('EOL', "\n");
|
||
|
||
define ('MODE_CLI', 1);
|
||
define ('MODE_WWW', 2);
|
||
define ('MODE_WS', 3);
|
||
|
||
if (@$_SERVER['argc']>0) define('MODE_EXEC', MODE_CLI);
|
||
else define('MODE_EXEC', MODE_WS);
|
||
/** @todo Gérer la distinction du mode WWW du WS
|
||
else define('MODE_EXEC', MODE_WWW);
|
||
*/
|
||
|
||
/** TimeStamp Unix
|
||
** Si $onlyMiliSec=true, retourne juste les milisec du timestamp
|
||
**/
|
||
function microtime_float($onlyMiliSec=false) {
|
||
list($usec, $sec) = explode(' ', microtime());
|
||
if (!$onlyMiliSec)
|
||
return ((float)$usec + (float)$sec);
|
||
else
|
||
return $usec;
|
||
}
|
||
|
||
/** Fait une pause aléatoire entre 0 et 15 secondes par défaut
|
||
**/
|
||
function randsleep($min_sec=0, $max_sec=15) {
|
||
sleep(rand($min_sec, $max_sec));
|
||
}
|
||
|
||
/** Retourne la factorielle d'un nombre : 4! = 1*2*3*4 = 24
|
||
**/
|
||
function factorielle($nbr) {
|
||
if($nbr === 0) // condition d'arret
|
||
return 1;
|
||
else
|
||
return $nbr*factorielle($nbr-1);
|
||
}
|
||
|
||
/** Vérification que la variable demandé respecte bien les règles passées en paramètres
|
||
* @param mixed Variable à tester
|
||
* @param int Longueur minimum en caractère de la variable
|
||
* @param int Longueur mximum
|
||
* @param char(1) Type de variable <b>A</b>:Alphanumérique / <b>N</b>:Numérique
|
||
* @param mixed Message textuel d'erreur à afficher en cas d'erreur ou false
|
||
* @return mixed true, false ou Message d'erreur passé en paramètre
|
||
*/
|
||
function valideData($variable, $taille_min, $taille_max, $type_variable, $erreur=false){
|
||
if ( strlen((string)$variable) < $taille_min )
|
||
return $erreur;
|
||
|
||
if ( strlen((string)$variable) > $taille_max )
|
||
return $erreur;
|
||
|
||
if ( $type_variable == 'A' )
|
||
if ( is_string($variable) == true )
|
||
return true;
|
||
else
|
||
return $erreur;
|
||
|
||
elseif ( $type_variable == 'N')
|
||
{
|
||
for ($i=0; $i < strlen((string)$variable); $i++)
|
||
{
|
||
$car = substr((string)$variable,$i,1);
|
||
if ($car<'0' || $car>'9')
|
||
return $erreur;
|
||
}
|
||
return true;
|
||
}
|
||
|
||
return $erreur;
|
||
}
|
||
|
||
function adapteOCtets($size) {
|
||
$kb = 1024; // Kilobyte
|
||
$mb = 1024 * $kb; // Megabyte
|
||
$gb = 1024 * $mb; // Gigabyte
|
||
$tb = 1024 * $gb; // Terabyte
|
||
if($size==0) return '0';
|
||
else if($size < $kb) return $size.'o';
|
||
else if($size < $mb) return round($size/$kb,2).'ko';
|
||
else if($size < $gb) return round($size/$mb,2).'Mo';
|
||
else if($size < $tb) return round($size/$gb,2).'Go';
|
||
else return round($size/$tb,2).'To';
|
||
}
|
||
|
||
/**
|
||
** Enregistrer une information dans la log
|
||
**
|
||
** @param string $debugLevel E=Error, W=Warning, N=Notice, I=Info, D=Debug
|
||
** @param string $message Message d'erreur à inscrire dans la log
|
||
** @param integer $line __LINE__
|
||
** @param string $file __FILE__
|
||
** @param string $function __FUNCTION__
|
||
** @param string $class __CLASS___
|
||
**/
|
||
function debugLog($debugLevel, $message, $line, $file, $function, $class) {
|
||
if (!file_exists(LOG_PATH.'/debug.log')) {
|
||
$fp=fopen(LOG_PATH.'/debug.log', 'a');
|
||
fwrite($fp, 'Date/Heure;Niveau;Script;Login;Password;Adresse IP;Action SOAP;Ligne;Fichier;Fonction;Classe;Domaine;POST DATA;Memory;Message'.EOL);
|
||
} else
|
||
$fp=fopen(LOG_PATH.'/debug.log', 'a');
|
||
|
||
fwrite($fp, date('Y/m/d-H:i:s') .';'. $debugLevel .';'. $_SERVER['PHP_SELF'] .';'. $_SERVER['PHP_AUTH_USER'] .';'. $_SERVER['PHP_AUTH_PW'] .';'.
|
||
$_SERVER['REMOTE_ADDR'] .';'. $_SERVER['HTTP_SOAPACTION'] .';'.$line.';'. $file.';'. $function.';'. $class .';'.
|
||
@gethostbyaddr($_SERVER['REMOTE_ADDR']) .';'. $HTTP_RAW_POST_DATA .';'. @memory_get_usage().';'. $message . EOL);
|
||
fclose($fp);
|
||
|
||
if ($debugLevel=='E'){
|
||
if (!file_exists(LOG_PATH.'/debugError.log')) {
|
||
$fp=fopen(LOG_PATH.'/debugError.log', 'a');
|
||
fwrite($fp, 'Date/Heure;Niveau;Script;Login;Password;Adresse IP;Action SOAP;Ligne;Fichier;Fonction;Classe;Domaine;POST DATA;Message'.EOL);
|
||
} else
|
||
$fp=fopen(LOG_PATH.'/debugError.log', 'a');
|
||
fwrite($fp, date('Y/m/d-H:i:s') .';'. $debugLevel .';'. $_SERVER['PHP_SELF'] .';'. $_SERVER['PHP_AUTH_USER'] .';'. $_SERVER['PHP_AUTH_PW'] .';'.
|
||
$_SERVER['REMOTE_ADDR'] .';'. $_SERVER['HTTP_SOAPACTION'] .';'.$line.';'. $file.';'. $function.';'. $class .';'.
|
||
@gethostbyaddr($_SERVER['REMOTE_ADDR']) .';'. $HTTP_RAW_POST_DATA .';'. @memory_get_usage().';'. $message . EOL);
|
||
fclose($fp);
|
||
//die($message);
|
||
}
|
||
}
|
||
|
||
function prepareString($str) {
|
||
$tabReplace=array();
|
||
for($c=0;$c<32; $c++)
|
||
$tabReplace[''.chr($c)]='';
|
||
for($c=127;$c<256; $c++)
|
||
$tabReplace[''.chr($c)]='';
|
||
|
||
return strtr(
|
||
strtr(htmlentities(utf8_decode(strtr(strtr($str, 'àáâãäåæçèéêëìíîïðñòóôõöùúûüýÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝŸ…‘‹',
|
||
"aaaaaaaceeeeiiiionooooouuuuyyAAAAAAACEEEEIIIIONOOOOOUUUUYY.''"), array('œ'=>'oe'))), ENT_QUOTES, 'ISO-8859-1'),array('€'=>'€','’'=>'"')),
|
||
$tabReplace);
|
||
//return */
|
||
//return utf8_encode($str);
|
||
}
|
||
|
||
|
||
/**
|
||
** Déplacement d'un fichier. Retourne false en cas d'erreur.
|
||
**
|
||
** @param string $from
|
||
** @param string $to
|
||
** @return bool
|
||
**/
|
||
function move($from, $to) {
|
||
return (copy($from, $to) and unlink($from));
|
||
}
|
||
|
||
/** Converti une IP en nombre
|
||
**
|
||
** @param string $ip Adresse IP
|
||
** @return integer
|
||
**/
|
||
function getIpNumber($ip) {
|
||
$tab=explode('.', $ip);
|
||
return (($tab[0]*256*256*256) + ($tab[1]*256*256) + ($tab[2]*256) + ($tab[3]));
|
||
}
|
||
|
||
/** Vérifie si une IP est dans une plage du type 192.168.3.1-192.168.3.10
|
||
**
|
||
** @param string $plage_1 Plage IP de début
|
||
** @param string $plage_2 Plage IP de fin
|
||
** @param string $ip Adresse IP à tester
|
||
** @return boolean
|
||
**/
|
||
function in_plage($plage_1,$plage_2,$ip){
|
||
$ip2=getIpNumber($ip);
|
||
if ($ip2>=getIpNumber($plage_1) && $ip2<=getIpNumber($plage_2))
|
||
return true;
|
||
else
|
||
return false;
|
||
}
|
||
|
||
/** Controle si une adresse IP est dans une liste des IP communiquées sous la forme 192.168.3.5-192.68.3.10;192.168.3.*;192.168.3.10
|
||
**
|
||
** @param string $strPlageIP La plage d'adresses IP
|
||
** @param string $adresseIP L'adresse IP à tester
|
||
** @return boolean
|
||
**/
|
||
function checkPlagesIp($strPlageIP, $adresseIP) {
|
||
$connected=false;
|
||
$tabIpAllowed=explode(';', trim($strPlageIP));
|
||
if (count($tabIpAllowed)==1 && $tabIpAllowed[0]=='')
|
||
$tabIpAllowed=array();
|
||
|
||
foreach ($tabIpAllowed as $ip) {
|
||
$tabPlages=explode('-', $ip);
|
||
// C'est une plage d'adresse '-'
|
||
if (isset($tabPlages[1]))
|
||
$connected=in_plage($tabPlages[0],$tabPlages[1],$adresseIP);
|
||
else {
|
||
// C'est une adresse avec ou sans masque '*'
|
||
if (preg_match('/^'.str_replace('*','.*',str_replace('.','\.',$ip)).'$/', $adresseIP) )
|
||
$connected=true;
|
||
}
|
||
if ($connected) break;
|
||
}
|
||
if (count($tabIpAllowed)==0) return false;
|
||
elseif (!$connected) {
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
|
||
|
||
/**
|
||
* @return bool
|
||
* @param string $in
|
||
* @param string $out
|
||
* @desc compressing the file with the bzip2-extension
|
||
*/
|
||
function bzip2 ($in, $out)
|
||
{
|
||
if (!file_exists ($in) || !is_readable ($in))
|
||
return false;
|
||
if ((!file_exists ($out) && !is_writeable (dirname ($out)) || (file_exists($out) && !is_writable($out)) ))
|
||
return false;
|
||
|
||
$in_file = fopen ($in, 'rb');
|
||
$out_file = bzopen ($out.'.bz2', 'wb');
|
||
|
||
while (!feof ($in_file)) {
|
||
$buffer = fgets ($in_file, 4096);
|
||
bzwrite ($out_file, $buffer, 4096);
|
||
}
|
||
|
||
fclose ($in_file);
|
||
bzclose ($out_file);
|
||
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* @return bool
|
||
* @param string $in
|
||
* @param string $out
|
||
* @desc uncompressing the file with the bzip2-extension
|
||
*/
|
||
function bunzip2 ($in, $out)
|
||
{
|
||
if (!file_exists ($in) || !is_readable ($in))
|
||
return false;
|
||
if ((!file_exists ($out) && !is_writeable (dirname ($out)) || (file_exists($out) && !is_writable($out)) ))
|
||
return false;
|
||
|
||
$in_file = bzopen ($in, "rb");
|
||
$out_file = fopen ($out, "wb");
|
||
|
||
while ($buffer = bzread ($in_file, 4096)) {
|
||
fwrite ($out_file, $buffer, 4096);
|
||
}
|
||
|
||
bzclose ($in_file);
|
||
fclose ($out_file);
|
||
|
||
return true;
|
||
}
|
||
|
||
|
||
|
||
class DomDocument2 extends DOMDocument {
|
||
|
||
function getValueFromTag($tagName) {
|
||
$items=$this->getElementsByTagName($tagName);
|
||
foreach ($items as $item) {
|
||
|
||
return utf8_decode($item->nodeValue);
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
?>
|