{"id":36976025,"url":"https://github.com/plesk/wappspector","last_synced_at":"2026-01-13T22:07:11.465Z","repository":{"id":143436314,"uuid":"613448682","full_name":"plesk/wappspector","owner":"plesk","description":"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.","archived":false,"fork":false,"pushed_at":"2025-01-23T12:43:06.000Z","size":504,"stargazers_count":12,"open_issues_count":0,"forks_count":0,"subscribers_count":19,"default_branch":"main","last_synced_at":"2025-10-11T01:25:37.934Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/plesk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-13T15:33:48.000Z","updated_at":"2025-01-22T13:44:44.000Z","dependencies_parsed_at":"2024-03-19T11:33:27.676Z","dependency_job_id":"32da3358-0183-4d03-a9bd-fde4b0b9a329","html_url":"https://github.com/plesk/wappspector","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/plesk/wappspector","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plesk%2Fwappspector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plesk%2Fwappspector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plesk%2Fwappspector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plesk%2Fwappspector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/plesk","download_url":"https://codeload.github.com/plesk/wappspector/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plesk%2Fwappspector/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28402212,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T14:36:09.778Z","status":"ssl_error","status_checked_at":"2026-01-13T14:35:19.697Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-13T22:07:10.729Z","updated_at":"2026-01-13T22:07:11.457Z","avatar_url":"https://github.com/plesk.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# wappspector\nCommand-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.\n\n[![unit-test](https://github.com/plesk/wappspector/actions/workflows/unit-test.yml/badge.svg)](https://github.com/plesk/wappspector/actions/workflows/unit-test.yml)\n\n## Matchers\n### Technology \u0026 Frameworks\n\n| Technology  | Version    | Check type                       |\n|-------------|------------|----------------------------------|\n| PHP         | -          | Any `*.php` file                 |\n| Ruby        | 2, 3       | `Rakefile` in root dir           |\n| Python      | 2, 3       | Any `*.py` file                  |\n| Laravel     | 8, 9, 10   | `artisan` file in root dir       |\n| Symfony     | 3, 4, 5, 6 | `symfony.lock` file in root dir  |\n| CodeIgniter | 4          | `spark` file in root dir         |\n| CakePHP     | 3, 4       | `bin/cake` file                  |\n| Yii         | 2          | `yii` file in root dir           |\n| Composer    | -          | `composer.json` file in root dir |\n| .NET        | -          | Any `*.dll` file                 |\n| Node.js     | -          | `package.json` file in root dir  |\n\n### CMS\n| Name       | Major version           | Check type                                                                                                                                                                           |\n|------------|-------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| WordPress  | 2 - 6                   | Existence and contents of `wp-includes/version.php`                                                                                                                                  |\n| Joomla!    | 1 - 4                   | Existence and contents of `configuration.php` in root dir                                                                                                                            |\n| Drupal     | 6 - 10                  | Existence and contents of `/modules/system/system.info` or `/core/modules/system/system.info.yml`                                                                                    |\n| PrestaShop | 1.6, 1.7.8, 8.0         | Existence and contents of `/config/settings.inc.php`                                                                                                                                 |\n| 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` |\n\n### Site builders\n| Name               | Check type                                                                                                                                                                                                                                        |\n|--------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Sitejet            | The `index.html` file exists and contains the `ed-element` and `webcard.apiHost=` strings                                                                                                                                                         |\n| WebPresenceBuilder | The `index.html` file contains the `\u003cmeta name=\"generator\" content=\"Web Presence Builder \u003cvesrion\u003e\"\u003e` tag or contains the following DOM structure: the `div` tag with the `page` ID contains the `div` tags with the `watermark` and `layout` IDs |\n| Site.pro           | The `sitepro` folder exists and the `sitepro` string is contained in the `web.config` or `.htaccess` files                                                                                                                                        |                                                                                                                                                                                                         \n| 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     |\n| Siteplus           | The `index.html` file exists and contains the `edit.site` string, and the `/bundle/publish/\u003cversion\u003e` directory exists and contains the `bundle.js` file. The `bundle.js` file contains the `siteplus` string                                     |\n\n## How to build phar\n```shell\ncomposer global require clue/phar-composer\ncomposer install\nphp -d phar.readonly=off ~/.composer/vendor/bin/phar-composer build .\n```\n\nRun the created `wappspector.phar`:\n```shell\n./wappspector.phar ./test-data\n```\n\n## Changing matchers order\nTo change the matchers order or to disable some of them, you should override `matchers` entry of DI container.\n\n```php\n$diContainer = \\Plesk\\Wappspector\\DIContainer::build();\n$matchers = $diContainer-\u003eget('matchers');\narray_unshift($matchers, \\Some\\New\\Matcher::class);\n$diContainer-\u003eset('matchers', $matchers);\n```\n\nor\n\n```php\n// only detect WordPress installs\n$diContainer = \\Plesk\\Wappspector\\DIContainer::build();\n$diContainer-\u003eset('matchers', [\\Plesk\\Wappspector\\Matchers\\Wordpress::class]);\n```\n\n## Testing\n```shell\n./vendor/bin/phpunit\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplesk%2Fwappspector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplesk%2Fwappspector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplesk%2Fwappspector/lists"}