Browse Source

Use symfony/process instead of shell_exec

tags/0.9.0
datagutten 4 years ago
committed by itismadness
parent
commit
7e119aa8e3
4 changed files with 79 additions and 8 deletions
  1. +4
    -3
      composer.json
  2. +64
    -1
      composer.lock
  3. +7
    -3
      src/Chardet.php
  4. +4
    -1
      src/Checks/Checksum.php

+ 4
- 3
composer.json View File

@@ -18,9 +18,10 @@
"require": { "require": {
"php": ">=7.2", "php": ">=7.2",
"ext-mbstring": "*", "ext-mbstring": "*",
"symfony/console": "^3.4",
"symfony/debug": "^3.4",
"symfony/yaml": "^3.4"
"symfony/console": "^3.4 | ^4.0 | ^5.0",
"symfony/debug": "^3.4 | ^4.0 | ^5.0",
"symfony/yaml": "^3.4 | ^4.0 | ^5.0",
"symfony/process": "^3.4 | ^4.0 | ^5.0"
}, },
"bin": ["bin/logchecker"], "bin": ["bin/logchecker"],
"require-dev": { "require-dev": {


+ 64
- 1
composer.lock View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "cd99ec05b86608c741f0f4cdf62b27d9",
"content-hash": "2f3702b4303474d7c0f6960a7bb1cdc3",
"packages": [ "packages": [
{ {
"name": "psr/log", "name": "psr/log",
@@ -354,6 +354,69 @@
], ],
"time": "2020-03-09T19:04:49+00:00" "time": "2020-03-09T19:04:49+00:00"
}, },
{
"name": "symfony/process",
"version": "v5.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "c5ca4a0fc16a0c888067d43fbcfe1f8a53d8e70e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/c5ca4a0fc16a0c888067d43fbcfe1f8a53d8e70e",
"reference": "c5ca4a0fc16a0c888067d43fbcfe1f8a53d8e70e",
"shasum": ""
},
"require": {
"php": "^7.2.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.0-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\Process\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2020-03-27T16:56:45+00:00"
},
{ {
"name": "symfony/yaml", "name": "symfony/yaml",
"version": "v3.4.39", "version": "v3.4.39",


+ 7
- 3
src/Chardet.php View File

@@ -3,6 +3,8 @@
namespace OrpheusNET\Logchecker; namespace OrpheusNET\Logchecker;


use OrpheusNET\Logchecker\Exception\FileNotFoundException; use OrpheusNET\Logchecker\Exception\FileNotFoundException;
use Symfony\Component\Process\Exception\ProcessFailedException;
use Symfony\Component\Process\Process;


class Chardet class Chardet
{ {
@@ -33,13 +35,15 @@ class Chardet
throw new FileNotFoundException($filename); throw new FileNotFoundException($filename);
} }


$output = shell_exec($this->executable . " " . escapeshellarg($filename));
$process = new Process([$this->executable, $filename]);
$process->run();

// Following regex: // Following regex:
// matches[1] - file path // matches[1] - file path
// matches[2] - charset // matches[2] - charset
// matches[3] - confidence // matches[3] - confidence
if ((preg_match('/(.+): (.+) .+confidence:? ([^\)]+)/', $output, $matches) === 0)) {
if ((preg_match('/(.+): (.+) .+confidence:? ([^\)]+)/', $process->getOutput(), $matches) === 0)) {
throw new \Exception('This file is not analyzed'); throw new \Exception('This file is not analyzed');
} elseif (isset($matches[2]) && $matches[2] === 'None') { } elseif (isset($matches[2]) && $matches[2] === 'None') {
throw new \Exception('Could not determine character set'); throw new \Exception('Could not determine character set');


+ 4
- 1
src/Checks/Checksum.php View File

@@ -3,6 +3,7 @@
namespace OrpheusNET\Logchecker\Checks; namespace OrpheusNET\Logchecker\Checks;


use OrpheusNET\Logchecker\Util; use OrpheusNET\Logchecker\Util;
use Symfony\Component\Process\Process;


class Checksum class Checksum
{ {
@@ -25,7 +26,9 @@ class Checksum
} }


if (static::logcheckerExists($command)) { if (static::logcheckerExists($command)) {
$output = shell_exec("{$command} " . escapeshellarg($logPath));
$process = new Process([$command, $logPath]);
$process->run();
$output = $process->getOutput();
if (strpos($output, $goodResult) === false) { if (strpos($output, $goodResult) === false) {
if ($output == null) { if ($output == null) {
return ChecksumStates::CHECKSUM_MISSING; return ChecksumStates::CHECKSUM_MISSING;


Loading…
Cancel
Save