plesk / wappspector
Command-line interface utility to analyze the file structure of a web hosting server and identify the frameworks and CMS used in the websites hosted on it.
Installs: 9 971
Dependents: 0
Suggesters: 0
Security: 0
Stars: 12
Watchers: 19
Forks: 0
Open Issues: 0
Language:HTML
Type:project
pkg:composer/plesk/wappspector
Requires
- php: >=8.0
- league/flysystem: ^3.0
- php-di/php-di: ^6.0 || ^7.0
Requires (Dev)
- mikey179/vfsstream: ^1.6
- phpunit/phpunit: ^10
- psr/log: ^2.0
- rector/rector: ^1.0
- slevomat/coding-standard: ^8.8.0
- squizlabs/php_codesniffer: ^3.7.2
- symfony/console: ^5.0
README
Command-line interface utility to analyze the file structure of a web hosting server and identify the frameworks and CMS used in the websites hosted on it.
Matchers
Technology & Frameworks
| Technology | Version | Check type |
|---|---|---|
| PHP | - | Any *.php file |
| Ruby | 2, 3 | Rakefile in root dir |
| Python | 2, 3 | Any *.py file |
| Laravel | 8, 9, 10 | artisan file in root dir |
| Symfony | 3, 4, 5, 6 | symfony.lock file in root dir |
| CodeIgniter | 4 | spark file in root dir |
| CakePHP | 3, 4 | bin/cake file |
| Yii | 2 | yii file in root dir |
| Composer | - | composer.json file in root dir |
| .NET | - | Any *.dll file |
| Node.js | - | package.json file in root dir |
CMS
| Name | Major version | Check type |
|---|---|---|
| WordPress | 2 - 6 | Existence and contents of wp-includes/version.php |
| Joomla! | 1 - 4 | Existence and contents of configuration.php in root dir |
| Drupal | 6 - 10 | Existence and contents of /modules/system/system.info or /core/modules/system/system.info.yml |
| PrestaShop | 1.6, 1.7.8, 8.0 | Existence and contents of /config/settings.inc.php |
| TYPO3 | 7.6, 8.7, 9, 10, 11, 12 | Existence and contents of /typo3/sysext/core/Classes/Core/SystemEnvironmentBuilder.php or /typo3/sysext/core/Classes/Information/Typo3Version.php or /t3lib/config_default.php |
Site builders
| Name | Check type |
|---|---|
| Sitejet | The index.html file exists and contains the ed-element and webcard.apiHost= strings |
| WebPresenceBuilder | The index.html file contains the <meta name="generator" content="Web Presence Builder <vesrion>"> tag or contains the following DOM structure: the div tag with the page ID contains the div tags with the watermark and layout IDs |
| Site.pro | The sitepro folder exists and the sitepro string is contained in the web.config or .htaccess files |
| Duda.co | The Style folder contains the desktop.css, mobile.css, or tablet.css files. The style file contains the dmDudaonePreviewBody or dudaSnipcartProductGalleryId strings, or the Scripts/runtime.js file contains the duda string |
| Siteplus | The index.html file exists and contains the edit.site string, and the /bundle/publish/<version> directory exists and contains the bundle.js file. The bundle.js file contains the siteplus string |
How to build phar
composer global require clue/phar-composer composer install php -d phar.readonly=off ~/.composer/vendor/bin/phar-composer build .
Run the created wappspector.phar:
./wappspector.phar ./test-data
Changing matchers order
To change the matchers order or to disable some of them, you should override matchers entry of DI container.
$diContainer = \Plesk\Wappspector\DIContainer::build(); $matchers = $diContainer->get('matchers'); array_unshift($matchers, \Some\New\Matcher::class); $diContainer->set('matchers', $matchers);
or
// only detect WordPress installs $diContainer = \Plesk\Wappspector\DIContainer::build(); $diContainer->set('matchers', [\Plesk\Wappspector\Matchers\Wordpress::class]);
Testing
./vendor/bin/phpunit