NEW Can control constants values into file integrity checker
This commit is contained in:
parent
2184eabe2f
commit
44ab6ad9b7
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env php
|
#!/usr/bin/env php
|
||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2015 Laurent Destailleur <eldy@users.sourceforge.net>
|
/* Copyright (C) 2015-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -40,13 +40,25 @@ require_once(DOL_DOCUMENT_ROOT."/core/lib/files.lib.php");
|
|||||||
* Main
|
* Main
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
$includeconstants=array();
|
||||||
|
|
||||||
if (empty($argv[1]))
|
if (empty($argv[1]))
|
||||||
{
|
{
|
||||||
print "Usage: ".$script_file." release=x.y.z[-...] [includecustom=1]\n";
|
print "Usage: ".$script_file." release=x.y.z[-...] [includecustom=1] [includeconstant=MY_CONF_NAME:value]\n";
|
||||||
|
print "Example: ".$script_file." release=6.0.0 includecustom=1 includeconstant=INVOICE_CAN_ALWAYS_BE_REMOVED:0 includeconstant=MAILING_NO_USING_PHPMAIL:1\n";
|
||||||
exit -1;
|
exit -1;
|
||||||
}
|
}
|
||||||
parse_str($argv[1]);
|
$i=0;
|
||||||
if (! empty($argv[2])) parse_str($argv[2]);
|
while ($i < $argc)
|
||||||
|
{
|
||||||
|
if (! empty($argv[$i])) parse_str($argv[$i]);
|
||||||
|
if (preg_match('/includeconstant=/',$argv[$i]))
|
||||||
|
{
|
||||||
|
$tmp=explode(':', $includeconstant);
|
||||||
|
if (count($tmp) == 2) $includeconstants[$tmp[0]] = $tmp[1];
|
||||||
|
}
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
|
||||||
if (empty($includecustom))
|
if (empty($includecustom))
|
||||||
{
|
{
|
||||||
@ -54,7 +66,7 @@ if (empty($includecustom))
|
|||||||
|
|
||||||
if (DOL_VERSION != $release)
|
if (DOL_VERSION != $release)
|
||||||
{
|
{
|
||||||
print 'Error: When parameter "includecustom" is not set, version declared into filefunc.in.php ('.DOL_VERSION.') must be exact same value than "release" parmater.'."\n";
|
print 'Error: When parameter "includecustom" is not set, version declared into filefunc.in.php ('.DOL_VERSION.') must be exact same value than "release" parameter ('.$release.')'."\n";
|
||||||
print "Usage: ".$script_file." release=x.y.z[-...] [includecustom=1]\n";
|
print "Usage: ".$script_file." release=x.y.z[-...] [includecustom=1]\n";
|
||||||
exit -1;
|
exit -1;
|
||||||
}
|
}
|
||||||
@ -69,22 +81,37 @@ else
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
print "Version: ".$release."\n";
|
print "Release : ".$release."\n";
|
||||||
print "Include custom: ".$includecustom."\n";
|
print "Include custom : ".$includecustom."\n";
|
||||||
|
print "Include constants: ";
|
||||||
|
foreach ($includeconstants as $constname => $constvalue)
|
||||||
|
{
|
||||||
|
print $constname.'='.$constvalue." ";
|
||||||
|
}
|
||||||
|
print "\n";
|
||||||
|
|
||||||
//$outputfile=dirname(__FILE__).'/../htdocs/install/filelist-'.$release.'.xml';
|
//$outputfile=dirname(__FILE__).'/../htdocs/install/filelist-'.$release.'.xml';
|
||||||
$outputdir=dirname(__FILE__).'/../htdocs/install';
|
$outputdir=dirname(__FILE__).'/../htdocs/install';
|
||||||
print 'Delete current files '.$outputdir.'/filelist-'.$release.'.xml'."\n";
|
print 'Delete current files '.$outputdir.'/filelist-'.$release.'.xml'."\n";
|
||||||
dol_delete_file($outputdir.'/filelist-'.$release.'.xml',0,1,1);
|
dol_delete_file($outputdir.'/filelist-'.$release.'.xml',0,1,1);
|
||||||
|
|
||||||
|
$checksumconcat=array();
|
||||||
|
|
||||||
$outputfile=$outputdir.'/filelist-'.$release.'.xml';
|
$outputfile=$outputdir.'/filelist-'.$release.'.xml';
|
||||||
$fp = fopen($outputfile,'w');
|
$fp = fopen($outputfile,'w');
|
||||||
fputs($fp, '<?xml version="1.0" encoding="UTF-8" ?>'."\n");
|
fputs($fp, '<?xml version="1.0" encoding="UTF-8" ?>'."\n");
|
||||||
fputs($fp, '<checksum_list version="'.$release.'">'."\n");
|
fputs($fp, '<checksum_list version="'.$release.'">'."\n");
|
||||||
|
|
||||||
fputs($fp, '<dolibarr_htdocs_dir includecustom="'.$includecustom.'">'."\n");
|
fputs($fp, '<dolibarr_constants>'."\n");
|
||||||
|
foreach($includeconstants as $constname => $constvalue)
|
||||||
|
{
|
||||||
|
$valueforchecksum=(empty($constvalue)?'0':$constvalue);
|
||||||
|
$checksumconcat[]=$valueforchecksum;
|
||||||
|
fputs($fp, ' <constant name="'.$constname.'" value="'.$valueforchecksum.'">'.$valueforchecksum.'</constant>'."\n");
|
||||||
|
}
|
||||||
|
fputs($fp, '</dolibarr_constants>'."\n");
|
||||||
|
|
||||||
$checksumconcat=array();
|
fputs($fp, '<dolibarr_htdocs_dir includecustom="'.$includecustom.'">'."\n");
|
||||||
|
|
||||||
// TODO Replace RecursiveDirectoryIterator with dol_dir_list
|
// TODO Replace RecursiveDirectoryIterator with dol_dir_list
|
||||||
$dir_iterator1 = new RecursiveDirectoryIterator(dirname(__FILE__).'/../htdocs/');
|
$dir_iterator1 = new RecursiveDirectoryIterator(dirname(__FILE__).'/../htdocs/');
|
||||||
@ -97,18 +124,18 @@ foreach ($files as $file) {
|
|||||||
$newdir = str_replace(dirname(__FILE__).'/../htdocs', '', dirname($file));
|
$newdir = str_replace(dirname(__FILE__).'/../htdocs', '', dirname($file));
|
||||||
if ($newdir!=$dir) {
|
if ($newdir!=$dir) {
|
||||||
if ($needtoclose)
|
if ($needtoclose)
|
||||||
fputs($fp, '</dir>'."\n");
|
fputs($fp, ' </dir>'."\n");
|
||||||
fputs($fp, '<dir name="'.$newdir.'" >'."\n");
|
fputs($fp, ' <dir name="'.$newdir.'" >'."\n");
|
||||||
$dir = $newdir;
|
$dir = $newdir;
|
||||||
$needtoclose=1;
|
$needtoclose=1;
|
||||||
}
|
}
|
||||||
if (filetype($file)=="file") {
|
if (filetype($file)=="file") {
|
||||||
$md5=md5_file($file);
|
$md5=md5_file($file);
|
||||||
$checksumconcat[]=$md5;
|
$checksumconcat[]=$md5;
|
||||||
fputs($fp, '<md5file name="'.basename($file).'">'.$md5.'</md5file>'."\n");
|
fputs($fp, ' <md5file name="'.basename($file).'">'.$md5.'</md5file>'."\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fputs($fp, '</dir>'."\n");
|
fputs($fp, ' </dir>'."\n");
|
||||||
fputs($fp, '</dolibarr_htdocs_dir>'."\n");
|
fputs($fp, '</dolibarr_htdocs_dir>'."\n");
|
||||||
|
|
||||||
asort($checksumconcat); // Sort list of checksum
|
asort($checksumconcat); // Sort list of checksum
|
||||||
@ -133,18 +160,18 @@ foreach ($files as $file) {
|
|||||||
$newdir = str_replace(dirname(__FILE__).'/../scripts', '', dirname($file));
|
$newdir = str_replace(dirname(__FILE__).'/../scripts', '', dirname($file));
|
||||||
if ($newdir!=$dir) {
|
if ($newdir!=$dir) {
|
||||||
if ($needtoclose)
|
if ($needtoclose)
|
||||||
fputs($fp, '</dir>'."\n");
|
fputs($fp, ' </dir>'."\n");
|
||||||
fputs($fp, '<dir name="'.$newdir.'" >'."\n");
|
fputs($fp, ' <dir name="'.$newdir.'" >'."\n");
|
||||||
$dir = $newdir;
|
$dir = $newdir;
|
||||||
$needtoclose=1;
|
$needtoclose=1;
|
||||||
}
|
}
|
||||||
if (filetype($file)=="file") {
|
if (filetype($file)=="file") {
|
||||||
$md5=md5_file($file);
|
$md5=md5_file($file);
|
||||||
$checksumconcat[]=$md5;
|
$checksumconcat[]=$md5;
|
||||||
fputs($fp, '<md5file name="'.basename($file).'">'.$md5.'</md5file>'."\n");
|
fputs($fp, ' <md5file name="'.basename($file).'">'.$md5.'</md5file>'."\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fputs($fp, '</dir>'."\n");
|
fputs($fp, ' </dir>'."\n");
|
||||||
fputs($fp, '</dolibarr_script_dir>'."\n");
|
fputs($fp, '</dolibarr_script_dir>'."\n");
|
||||||
|
|
||||||
asort($checksumconcat); // Sort list of checksum
|
asort($checksumconcat); // Sort list of checksum
|
||||||
|
|||||||
@ -160,6 +160,52 @@ if ($xml)
|
|||||||
$file_list = array();
|
$file_list = array();
|
||||||
$out = '';
|
$out = '';
|
||||||
|
|
||||||
|
// Forced constants
|
||||||
|
if (is_object($xml->dolibarr_constants[0]))
|
||||||
|
{
|
||||||
|
$out.=load_fiche_titre($langs->trans("ForcedConstants"));
|
||||||
|
|
||||||
|
$out.='<table class="noborder">';
|
||||||
|
$out.='<tr class="liste_titre">';
|
||||||
|
$out.='<td>#</td>';
|
||||||
|
$out.='<td>' . $langs->trans("Constant") . '</td>';
|
||||||
|
$out.='<td align="center">' . $langs->trans("ExpectedValue") . '</td>';
|
||||||
|
$out.='<td align="center">' . $langs->trans("Value") . '</td>';
|
||||||
|
$out.='</tr>'."\n";
|
||||||
|
$var = true;
|
||||||
|
|
||||||
|
$i = 0;
|
||||||
|
foreach ($xml->dolibarr_constants[0]->constant as $constant) // $constant is a simpleXMLElement
|
||||||
|
{
|
||||||
|
$constname=$constant['name'];
|
||||||
|
$constvalue=(string) $constant;
|
||||||
|
$constvalue = (empty($constvalue)?'0':$constvalue);
|
||||||
|
// Value found
|
||||||
|
$value='';
|
||||||
|
if ($constname && $conf->global->$constname != '') $value=$conf->global->$constname;
|
||||||
|
$valueforchecksum=(empty($value)?'0':$value);
|
||||||
|
|
||||||
|
$checksumconcat[]=$valueforchecksum;
|
||||||
|
|
||||||
|
$i++;
|
||||||
|
$var = !$var;
|
||||||
|
$out.='<tr ' . $bc[$var] . '>';
|
||||||
|
$out.='<td>'.$i.'</td>' . "\n";
|
||||||
|
$out.='<td>'.$constname.'</td>' . "\n";
|
||||||
|
$out.='<td align="center">'.$constvalue.'</td>' . "\n";
|
||||||
|
$out.='<td align="center">'.$valueforchecksum.'</td>' . "\n";
|
||||||
|
$out.="</tr>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($i==0)
|
||||||
|
{
|
||||||
|
$out.='<tr ' . $bc[false] . '><td colspan="4" class="opacitymedium">'.$langs->trans("None").'</td></tr>';
|
||||||
|
}
|
||||||
|
$out.='</table>';
|
||||||
|
|
||||||
|
$out.='<br>';
|
||||||
|
}
|
||||||
|
|
||||||
// Scan htdocs
|
// Scan htdocs
|
||||||
if (is_object($xml->dolibarr_htdocs_dir[0]))
|
if (is_object($xml->dolibarr_htdocs_dir[0]))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1611,6 +1611,7 @@ FixTZ=TimeZone fix
|
|||||||
FillFixTZOnlyIfRequired=Example: +2 (fill only if problem experienced)
|
FillFixTZOnlyIfRequired=Example: +2 (fill only if problem experienced)
|
||||||
ExpectedChecksum=Expected Checksum
|
ExpectedChecksum=Expected Checksum
|
||||||
CurrentChecksum=Current Checksum
|
CurrentChecksum=Current Checksum
|
||||||
|
ForcedConstants=Required constant values
|
||||||
MailToSendProposal=To send customer proposal
|
MailToSendProposal=To send customer proposal
|
||||||
MailToSendOrder=To send customer order
|
MailToSendOrder=To send customer order
|
||||||
MailToSendInvoice=To send customer invoice
|
MailToSendInvoice=To send customer invoice
|
||||||
|
|||||||
@ -599,6 +599,8 @@ SessionName=Session name
|
|||||||
Method=Method
|
Method=Method
|
||||||
Receive=Receive
|
Receive=Receive
|
||||||
CompleteOrNoMoreReceptionExpected=Complete or nothing more expected
|
CompleteOrNoMoreReceptionExpected=Complete or nothing more expected
|
||||||
|
ExpectedValue=Expected Value
|
||||||
|
CurrentValue=Current Value
|
||||||
PartialWoman=Partial
|
PartialWoman=Partial
|
||||||
TotalWoman=Total
|
TotalWoman=Total
|
||||||
NeverReceived=Never received
|
NeverReceived=Never received
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user