/opt/cpanel/ea-wappspector/src/Matchers
<?php namespace Plesk\Wappspector\Matchers; use League\Flysystem\Filesystem; use League\Flysystem\FilesystemException; use Plesk\Wappspector\MatchResult\Drupal as MatchResult; use Plesk\Wappspector\MatchResult\EmptyMatchResult; use Plesk\Wappspector\MatchResult\MatchResultInterface; class Drupal implements MatcherInterface { /** * Drupal has changed the way how the version number is stored multiple times, so we need this comprehensive array */ private const VERSIONS = [ [ 'file' => 'modules/system/system.info', 'regex' => "/version\\s*=\\s*\"(\\d\\.[^']+)\"[\\s\\S]*project\\s*=\\s*\"drupal\"/", ], [ 'file' => 'core/modules/system/system.info.yml', 'regex' => "/version:\\s*'(\\d+\\.[^']+)'[\\s\\S]*project:\\s*'drupal'/", ], ]; /** * @throws FilesystemException */ public function match(Filesystem $fs, string $path): MatchResultInterface { // Iterate through version patterns foreach (self::VERSIONS as $version) { $versionFile = rtrim($path, '/') . '/' . $version['file']; if (!$fs->fileExists($versionFile)) { continue; } $version = $this->detectVersion($version['regex'], $versionFile, $fs); return new MatchResult($path, $version); } return new EmptyMatchResult(); } private function detectVersion(string $regexPattern, string $versionFile, Filesystem $fs): ?string { preg_match($regexPattern, $fs->read($versionFile), $matches); return count($matches) ? $matches[1] : null; } }
.
Edit
..
Edit
CakePHP.php
Edit
CodeIgniter.php
Edit
Composer.php
Edit
DotNet.php
Edit
Drupal.php
Edit
Duda.php
Edit
Joomla.php
Edit
Laravel.php
Edit
MatcherInterface.php
Edit
NodeJs.php
Edit
Php.php
Edit
Prestashop.php
Edit
Python.php
Edit
Ruby.php
Edit
Sitejet.php
Edit
Siteplus.php
Edit
Sitepro.php
Edit
Symfony.php
Edit
Typo3.php
Edit
UpLevelMatcherTrait.php
Edit
WebPresenceBuilder.php
Edit
Wordpress.php
Edit
Yii.php
Edit