diff --git a/.gitignore b/.gitignore index ff15a1953..5103fdefe 100755 --- a/.gitignore +++ b/.gitignore @@ -89,6 +89,7 @@ VERSION REVISION .php_cs.cache manifest.json +checksum.json /tests/_log/* /tests/_temp/* diff --git a/composer.json b/composer.json index 3e84bda1f..8b51491fc 100755 --- a/composer.json +++ b/composer.json @@ -46,7 +46,7 @@ "league/csv": "^8.2", "maximebf/debugbar": "^1.15", "monolog/monolog": "^1.22", - "mpdf/mpdf": "^7.1", + "mpdf/mpdf": "^v8.0.7", "mpociot/vat-calculator": "^2.3", "owasp/csrf-protector-php": "^1.0", "phpmailer/phpmailer": "^6.0", diff --git a/gulpfile.js b/gulpfile.js index 0070750d2..c66c88ddf 100755 --- a/gulpfile.js +++ b/gulpfile.js @@ -3,7 +3,6 @@ var gulp = require('gulp'); var merge = require('merge-stream'); var del = require('del'); var debug = require('gulp-debug'); -var shell = require('shelljs'); var mainBowerFiles = require('main-bower-files'); var gulpIf = require('gulp-if'); @@ -25,6 +24,13 @@ var concat = require('gulp-concat'); // Altro var flatten = require('gulp-flatten'); var rename = require('gulp-rename'); + +// Release +var glob = require('globby'); +var md5File = require('md5-file') +var fs = require('fs'); +var archiver = require('archiver'); +var shell = require('shelljs'); var inquirer = require('inquirer'); // Configurazione @@ -282,24 +288,9 @@ function phpDebugBar() { // Operazioni per la release function release(done) { - var archiver = require('archiver'); - var fs = require('fs'); - - // Rimozione file indesiderati - del([ - './vendor/tecnickcom/tcpdf/fonts/*', - '!./vendor/tecnickcom/tcpdf/fonts/*helvetica*', - './vendor/mpdf/mpdf/tmp/*', - './vendor/mpdf/mpdf/ttfonts/*', - '!./vendor/mpdf/mpdf/ttfonts/DejaVuinfo.txt', - '!./vendor/mpdf/mpdf/ttfonts/DejaVu*Condensed*', - './vendor/maximebf/debugbar/src/DebugBar/Resources/vendor/*', - './vendor/respect/validation/tests/*', - ]); - // Impostazione dello zip - var output = fs.createWriteStream('./release.zip'); - var archive = archiver('zip'); + let output = fs.createWriteStream('./release.zip', {flags: 'w'}); + let archive = archiver('zip'); output.on('close', function () { console.log('ZIP completato!'); @@ -311,65 +302,90 @@ function release(done) { archive.pipe(output); - // Aggiunta dei file - archive.glob('**/*', { + // Individuazione dei file da aggiungere + glob([ + '**/*', + '!checksum.json', + '!.idea/**', + '!.git/**', + '!node_modules/**', + '!backup/**', + '!files/**', + '!logs/**', + '!config.inc.php', + '!**/*.(lock|phar|log|zip|bak|jar|txt)', + '!**/~*', + '!vendor/tecnickcom/tcpdf/examples/*', + '!vendor/tecnickcom/tcpdf/fonts/*', + 'vendor/tecnickcom/tcpdf/fonts/*helvetica*', + '!vendor/mpdf/mpdf/tmp/*', + '!vendor/mpdf/mpdf/ttfonts/*', + 'vendor/mpdf/mpdf/ttfonts/DejaVuinfo.txt', + 'vendor/mpdf/mpdf/ttfonts/DejaVu*Condensed*', + '!vendor/maximebf/debugbar/src/DebugBar/Resources/vendor/*', + '!vendor/respect/validation/tests/*', + ], { dot: true, - ignore: [ - '.git/**', - 'node_modules/**', - 'backup/**', - 'files/**', - 'logs/**', - 'config.inc.php', - '**/*.lock', - '**/*.phar', - '**/*.log', - '**/*.zip', - '**/*.bak', - '**/*.jar', - '**/*.txt', - '**/~*', - ] - }); + }).then(function (files){ + // Aggiunta dei file con i relativi checksum + let checksum = {}; + for (const file of files) { + if (fs.lstatSync(file).isDirectory()) { + archive.directory(file, file); + } else { + archive.file(file); - // Eccezioni - archive.file('backup/.htaccess'); - archive.file('files/.htaccess'); - archive.file('files/my_impianti/componente.ini'); - archive.file('logs/.htaccess'); - - // Aggiunta del commit corrente nel file REVISION - archive.append(shell.exec('git rev-parse --short HEAD', { - silent: true - }).stdout, { - name: 'REVISION' - }); - - // Opzioni sulla release - inquirer.prompt([{ - type: 'input', - name: 'version', - message: 'Numero di versione:', - }, { - type: 'confirm', - name: 'beta', - message: 'Versione beta?', - default: false, - }]).then(function (result) { - version = result.version; - - if (result.beta) { - version += 'beta'; + if (!file.startsWith('vendor')) { + checksum[file] = md5File.sync(file); + } + } } - archive.append(version, { - name: 'VERSION' + // Eccezioni + archive.file('backup/.htaccess', {}); + archive.file('files/.htaccess', {}); + archive.file('files/my_impianti/componente.ini', {}); + archive.file('logs/.htaccess', {}); + + // Aggiunta del file dei checksum + let checksumFile = fs.createWriteStream('./checksum.json', {flags: 'w'}); + checksumFile.write(JSON.stringify(checksum)); + checksumFile.close(); + archive.file('checksum.json', {}); + + // Aggiunta del commit corrente nel file REVISION + archive.append(shell.exec('git rev-parse --short HEAD', { + silent: true + }).stdout, { + name: 'REVISION' }); - // Completamento dello zip - archive.finalize(); + // Opzioni sulla release + inquirer.prompt([{ + type: 'input', + name: 'version', + message: 'Numero di versione:', + }, { + type: 'confirm', + name: 'beta', + message: 'Versione beta?', + default: false, + }]).then(function (result) { + let version = result.version; - done(); + if (result.beta) { + version += 'beta'; + } + + archive.append(version, { + name: 'VERSION' + }); + + // Completamento dello zip + archive.finalize(); + + done(); + }); }); } diff --git a/include/riferimenti/righe_riferimenti.php b/include/riferimenti/righe_riferimenti.php index a2b20ff28..221663b92 100644 --- a/include/riferimenti/righe_riferimenti.php +++ b/include/riferimenti/righe_riferimenti.php @@ -52,6 +52,6 @@ if (!$riferimenti->isEmpty()) { } else { echo '
- '.tr('Nessun riferimento presente').'. + '.tr('Nessun riferimento presente').'.
'; } diff --git a/modules/aggiornamenti/checksum.php b/modules/aggiornamenti/checksum.php new file mode 100644 index 000000000..bb8d97e45 --- /dev/null +++ b/modules/aggiornamenti/checksum.php @@ -0,0 +1,95 @@ + + + + +
+ '.tr('Caricamento in corso').'... +
+ +'; + + return; +} + +$contents = file_get_contents(DOCROOT.'/checksum.json'); +$checksum = json_decode($contents); + +if (empty($checksum)) { + echo ' +
+ '.tr('Impossibile effettuare controlli di integrità in assenza del file _FILE_', [ + '_FILE_' => 'checksum.json', + ]).'. +
'; + + return; +} + +// Controllo degli errori +$errors = []; +foreach ($checksum as $file => $md5) { + $verifica = md5_file(DOCROOT.'/'.$file); + if ($verifica != $md5) { + $errors[] = $file; + } +} + +// Schermata di visualizzazione degli errori +if (!empty($errors)) { + echo ' +

'.tr("Segue l'elenco dei file che presentano checksum diverso rispetto a quello regitrato nella versione ufficiale").'.

+
+ + '.tr('Attenzione: questa funzionalità può presentare dei risultati falsamente positivi, sulla base del contenuto del file _FILE_', [ + '_FILE_' => 'checksum.json', +]).'. +
+ + + + + + + + + '; + + foreach ($errors as $error) { + echo ' + + + '; + } + + echo ' + +
'.tr('File con integrità errata').'
+ '.$error.' +
'; +} else { + echo ' +
+ '.tr('Nessun file con problemi di integrità').'. +
'; +} diff --git a/modules/aggiornamenti/edit.php b/modules/aggiornamenti/edit.php index f5d8dfdd9..fd7a38ab7 100755 --- a/modules/aggiornamenti/edit.php +++ b/modules/aggiornamenti/edit.php @@ -47,7 +47,9 @@ if (function_exists(custom)) { echo '
- Attenzione! Ci sono delle tabelle non previste nella versione standard del gestionale: '.implode(', ', $tables).'. + '.tr('Attenzione!').' '.tr('Ci sono delle tabelle non previste nella versione standard del gestionale: _LIST_', [ + '_LIST_' => implode(', ', $tables), + ]).'.
'; } @@ -114,8 +116,12 @@ function update() { } } +function checksum(button) { + openModal("'.tr('Controllo di integrità').'", "'.$module->fileurl('checksum.php').'?id_module='.$id_module.'"); +} + function search(button) { - buttonLoading(button); + let restore = buttonLoading(button); $.ajax({ url: globals.rootdir + "/actions.php", @@ -136,11 +142,10 @@ function search(button) { } }); } -'; + - echo '
-
+

@@ -159,9 +164,22 @@ function search(button) {

-
'; +
- echo ' +
+
+
+

+ '.tr("Verifica l'integrità dell'intallazione").' +

+
+
+ +
+
+
diff --git a/package.json b/package.json index f2a77499d..5a44a58fa 100755 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "archiver": "^3.0.0", "cwd": "^0.10.0", "del": "^4.0.0", + "globby": "^11.0.1", "gulp": "^4.0.0", "gulp-autoprefixer": "^7.0.0", "gulp-clean-css": "^4.0.0", @@ -59,6 +60,7 @@ "gulp-util": "^3.0.8", "inquirer": "^4.0.1", "main-bower-files": "^2.13.1", + "md5-file": "^5.0.0", "shelljs": "^0.7.7" }, "scripts": {