#!/usr/bin/php
<?php

   /*
    * CMS Version Scanner Script - shell mode
    * Version 1.0
    * by Malin Cenusa
    * Send bugz, ideas, beers, flowers, nudes or whatever to malin@cenusa.me 
    *
    * TODO: 
    *   - Fix remaining script versions
    *   - Add the rest of the scripts from Softaculous - work in progress
    *   - Add scripts from outside Softaculous - work in progress
    *   - Add "Current Status" - work in progress
    *   - get Cake.PHP version from /cake/asari/lib/Cake/VERSION.txt using this snippet?
    ==================
    $versionFile = file(CAKE . 'VERSION.txt');
    $config['Cake.version'] = trim(array_pop($versionFile));
    return $config;
    ==================
    *   - add SunShop if possible > creat167
    */

    if ($_SERVER['argc'] >= 2) {
        echo "Scanning for CMS scripts under /home/".$argv[1]."/public_html/\n";
    } else {
        die("You must specify the username for this to work out!\n");
    }


    $versions = array(
        array("Wordpress", "/wp-includes/version.php", "\$wp_version =", "Maintained"),
        array("Drupal 6/7", "/modules/system/system.info", "version = ", "EOL"),
        array("Drupal 8", "/core/modules/system/system.info.yml", "version: '", "Maintained"),
        array("osCommerce", "/includes/application_top.php", "define('PROJECT_VERSION', 'osCommerce Online Merchant", "Maintained"),
        array("phpBB", "/includes/constants.php", "define('PHPBB_VERSION',", "Maintained"),
        array("SMF", "/index.php", "\$forum_version = 'SMF", "Maintained"),
        array("Gallery2", "/modules/gallery/helpers/gallery.php", "const VERSION =", "EOL"),
        array("Gallery", "/config.php", "\$gallery->app->config_version =", "EOL"),
        array("Gallery2", "/modules/core/module.inc", "\$this->setGalleryVersion(", "EOL"),
        array("Coppermine", "/versioncheck.inc.php", "Coppermine version:", ""),
        array("4images", "/includes/constants.php", "define('SCRIPT_VERSION',", ""),
        array("MediaWiki", "/includes/DefaultSettings.php", "\$wgVersion =", ""),
        array("PHPlist", "/admin/init.php", "define(\"VERSION\",", "Maintained"),
        array("PHPlist", "/admin/connect.php", "define(\"VERSION\",", "Maintained"),    
        array("RoundCube", "/program/include/iniset.php", "define('RCMAIL_VERSION',", "Maintained"),
        array("Squirrel Mail", "/functions/strings.php", "\$version =", ""),
        array("Dede CMS", "/include/config_base.php", "\$cfg_soft_enname\|\$cfg_version", ""),
        array("Dede CMS", "/index.php", "Power by DedeCms", "Maintained"),
        array("Sugar CRM", "/sugar_version.php", "\$sugar_version", ""),
        array("XOOPS", "/version.php", "XOOPS_VERSION", ""),
        array("Concrete5", "/config/concrete.php", "version_installed", ""),
        array("Concrete5", "/concrete/config/version.php", "\$APP_VERSION =", ""),
        array("Serendipity", "/serendipity_config.inc.php", "\$serendipity\['version'\] =", ""),
        array("OpenBlog", "/application/config/open_blog.php", "\$config\['version'\] =", ""),
        array("b2evolution", "/conf/_application.php", "\$app_version =", ""),
        array("Nucleus", "/nucleus/libs/globalfunctions.php", "\$nucleus\['version'\] =", "EOL"),
        array("Dotclear", "/inc/prepend.php", "define('DC_VERSION',", ""),
        array("TextPattern", "/textpattern/index.php", "\$thisversion =", ""),
        array("NibbleBlog", "/admin/boot/rules/98-constants.bit", "define('NIBBLEBLOG_VERSION',", "EOL"),
        array("Lifetype", "/version.php", "\$version = \"lifetype", "EOL"),
        array("Chyrp", "/includes/common.php", "define('CHYRP_VERSION',", "EOL"),
        array("PivotX", "/pivotx/lib.php", "\$version =", "EOL"),
        array("FlatPress", "/fp-includes/core/core.system.php", "define('SYSTEM_VER',", "EOL"),
        array("Status.Net", "/lib/framework.php", "define('STATUSNET_BASE_VERSION',", ""),
        array("Sharetronix", "/system/conf_main.php", "\$C->VERSION", ""),
        array("PageCookery", "/global.php", "\$pcm_version =", ""),
        array("StoryTLR", "/index.php", "define(\"STORYTLR_VERSION\",", ""),
        array("PHP-Fusion", "/administration/upgrade.php", "WHERE settings_name='version'", ""),
        array("e107", "/e107_admin/ver.php", "\$e107info\['e107_version'\] =", ""),
        array("Open Real Estate", "/index.php", "define('ORE_VERSION',", ""),
        array("Zikula", "/lib/Zikula/Core.php", "const VERSION_NUM =", ""),
        array("Website Baker", "/pages/posts/index.php", "by WebsiteBaker Ver.", ""),
        array("Subrion", "/index.php", "define('IA_VERSION', '", ""),
        array("Pligg", "/languages/lang_english.conf", "//<VERSION>", "EOL"),
        array("PyroCMS", "/system/cms/config/constants.php", "define('CMS_VERSION',=", ""),
        array("Contao", "/system/config/localconfig.php", "\$GLOBALS\['TL_CONFIG'\]\['latestVersion'\] =", ""),
        array("Geeklog", "/siteconfig.php", "define('VERSION',", ""),
        array("sNews", "/snews.php", "sNews Version:", ""),
        array("jCore", "/config.inc.php", "@define('JCORE_VERSION',", ""),
        array("ImpressPages", "/Ip/Application.php", "; //CHANGE_ON_VERSION_UPDATE", ""),
        array("Quick.CMS", "/database/config.php", "\$config\['version'\] =", ""),
        array("ImpressCMS", "/include/version.php", "define('ICMS_VERSION_NAME',", ""), /* triggers false positive for XOOPS as it's a fork of it */
        array("Monstra", "/engine/Monstra.php", "const VERSION =", ""),
        array("phpwcms", "/include/inc_lib/revision/revision.php", "define('PHPWCMS_VERSION'", ""),
        array("Redaxscript", "/languages/en.json", "version", ""),
        array("Silex", "/version.txt", "version=v", ""),
        array("Mahara", "/lib/version.php", "\$config->release =", ""),
        array("Saurus", "/classes/site.class.php", "\$this->script_version =", ""),
        array("Jamroom", "/modules/jrCore/include.php", "'version'     =>", ""),
        array("Bolt", "/src/Application.php", "\$values\['bolt_version'\] =", ""),
        array("Pluck", "/data/inc/security.php", "define('PLUCK_VERSION',", ""),
        array("Kirby", "/kirby/kirby.php", "static public \$version =", ""),
        array("Zenario", "/zenario/admin/db_updates/latest_revision_no.inc.php", "define('ZENARIO_CMS_VERSION',", ""),
        array("Cotonti", "/system/functions.php", "\$cfg\['version'\] =", ""),
        array("appRain", "/development/definition/system_configuration/config.xml", "<appRainversion>", ""),
        array("ClipperCMS", "/manager/includes/version.inc.php", "define('CMS_RELEASE_VERSION',", ""), // forked from ModX
        array("MyBB", "/inc/class_core.php", "public \$version =", ""),
        array("AEF", "/globals.php", "// AEF : Advanced Electron Forum", ""),
        array("Vanilla", "/conf/config.php", "\$Configuration\['Vanilla'\]\['Version'\] =". ""),
        array("PunBB", "/include/constants.php", "define('FORUM_VERSION',", ""),
        array("FluxBB", "/include/common.php", "define('FORUM_VERSION',", ""),
        array("Phorum", "/common.php", "define( \"PHORUM\",", ""),
        array("MiniBB", "/bb_functions.php", "\$version=", ""),
        array("Piwigo", "/include/constants.php", "define('PHPWG_VERSION", "Maintained"),
        array("TinyWebGallery", "/config.php", "TWG version:", ""),
        array("phpAlbum", "/main.php", "\$phpalbum_version=", ""),
        array("iGalerie", "/includes/classes/system.class.php", "public static \$galleryVersion =", ""),
        array("Oxwall", "/ow_version.xml", "<version>", ""),
        array("Etano", "/includes/defines.inc.php", "define('_INTERNAL_VERSION_',", ""),
        array("PeoplePods", "/peoplepods/lib/etc/options.php", "\$this->setLibOptions('last_database_update','", ""),
        array("Family Connections", "/install.php", "\$_POST\['contact'\], 'Family Connections", ""),
        array("OSClass", "/oc-load.php", "define('OSCLASS_VERSION',", ""),
        array("Revive AdServer", "/constants.php", "define('VERSION',", ""),
        array("WebCalendar", "/includes/config.php", "\$PROGRAM_VERSION =", ""),
        array("Booked", "/lib/Config/Configuration.php", "const VERSION =", ""),
        array("PHP iCalendar", "/default_config.php", "\$this->phpicalendar_version =", ""),
        array("Piwik", "/core/Version.php", "const VERSION =", ""),
        array("Little Poll", "/lp_admin.php", "Little Poll Admin Center v", ""),
        array("Sphider", "/settings/conf.php", "\$version_nr", ""),
        array("BigTree CMS", "/core/version.php", "define(\"BIGTREE_VERSION\",\"", ""),
        array("Quick Cart", "/database/config/general.php", "\$config\['version'\] =", ""),
        array("gpEasy", "/include/common.php", "define('gpversion','", ""),
        array("Elxis", "/includes/version.php", "\$elxis_version = array(", ""),
        array("CMSimple", "/cmsimple/cms.php", "define('CMSIMPLE_VERSION', '", ""),
        array("CRE Loaded", "/includes/version.php", "define('PROJECT_VERSION', '\[CRE Loaded v", ""),
        array("Expression Engine", "/config/config.php", "\$config['app_version']", "Maintained"), // not detected correctly
        array("Pydio", "/conf/VERSION.php", "define(\"AJXP_VERSION\", \"", ""),
        array("Aardvark Topsites", "/index.php", "\$TMPL['version'] =", ""),
        array("Open Web Analytics", "/owa_env.php", "define('OWA_VERSION', '", ""),
        array("CJ Dynamic Poll", "/poll_config.php", "\$version = \"", ""),
        array("Logaholic", "/includes/version.php", "define(\"LOGAHOLIC_VERSION_NUMBER\", \"", ""),
        array("Little Software Stats", "/inc/version.php", "define( 'VERSION'", ""),
        array("qdPM", "/core/apps/qdPM/templates/_footer.php", "target=\"_blank\">qdPM", ""),
        array("eyeOS", "/settings.php", "define('EYE_VERSION', '", ""),
        array("Collabtive", "/init.php", "\$template->assign(\"myversion\"", ""),
        array("ProjectPier", "/version.php", "return '", ""),
        array("PHProjekt", "/VERSION", "PHProjekt", ""),
        array("TaskFreak", "/include/config.php", "define('FRK_VERSION','", ""),
        array("todoyu", "/core/inc/version.php", "define('TODOYU_VERSION', '", ""),
        array("FlySpray", "/includes/class.flyspray.php", "public \$version =", ""),
        array("Traq", "/vendor/traq/version.php", "define(\"TRAQ_VER\",", ""),
        array("Eventum", "/init.php", "define('APP_VERSION',", ""),
        array("Burden", "/config.php", "define('VERSION',", ""), /* could produce too many false positives but there's no other way */
        array("Livezilla", "/_definitions/definitions.inc.php", "define(\"VERSION\",", ""),
        array("Perch", "/admin/core/lib/Perch.class.php", "public \$version =", ""),
        array("Elefant CMS", "/conf/version.php", "ELEFANT_VERSION", ""),
        array("Wolf CMS", "/index.php", "define('CMS_VERSION\', '", ""),
        array("Anchor CMS", "/index.php", "define('VERSION', '", ""),
        array("CodeIgniter", "/CodeIgniter.php", "define('CI_VERSION', '", ""),
        array("GotCMS", "/library/Gc/Version.php", "const VERSION =", ""),
        array("Frog CMS", "/admin/index.php", "define('FROG_VERSION', '"," "),
        array("Pulse CMS", "/admin/index.php", "class=\"ver\">Pulse CMS"),
        array("Couch CMS", "/header.php", "define( 'K_COUCH_VERSION', '", ""),
        array("Kanboard", "/app/constants.php", "define('APP_VERSION', '", ""),
        array("XpressEngine", "/config/config.inc.php", "define('__XE_VERSION__',", ""),
        array("Hesk", "/hesk_settings.inc.php", "\$hesk_settings['hesk_version']=", ""),
        array("PHPWiki", "/lib/config.php", "define('PHPWIKI_VERSION',", ""),
        array("PixelPost", "/includes/pixelpost.php", "Pixelpost version ", ""),
        array("PrestaShop", "/config/settings.inc.php", "define('_PS_VERSION_',", "Maintained"),
        array("tDah Webmail", "/config.system.php", "\/SW_VERSION\/", ""),
        array("Agora Cart", "/agora.cgi", "\$versions{'agora.cgi'}", ""),
        array("CKeditor", "/ckeditor/CHANGES.html", "CKEditor Changelog", ""),
        array("Dokeos", "main/inc/installedVersion.inc.php", "\$dokeos_version", ""),
        array("CakePHP","cake/config/config.php","\$config['Cake.version'] =", ""),
        array("phpFormGenerator", "/fields.php", "<title>phpFormGenerator v", ""), // does not escape correctly in browser, but works great via SSH
        array("ZenPhoto", "/zp-core/functions.php", "define('ZENPHOTO_VERSION',", ""),
        array("ZenPhoto", "/zp-core/version.php","define('ZENPHOTO_VERSION',", ""),
        array("Eventum Issue Tracker", "/init.php", "define('APP_VERSION',", ""),
        array("PHPDevShell", "/includes/PHPDS.inc.php", "define('phpdevshell_version', 'PHPDevShell V", ""),
        array("phpAds", "/libraries/lib-dbconfig.inc.php", "\$phpAds_version_readable =", ""),
        array("Smarty Framework", "/smarty/libs/Smarty.class.php", "var \$_version", ""),
        array("phpDealerLocator", "/config.php", "phpDealerLocator v", ""),
        array("CraftySyntax", "/admin_common.php", "CVS will be released with version", ""),
        array("NextCloud/OwnCloud", "/version.php", "\$OC_VersionString =", "Not Allowed"),
        array("Timthumb", "/thumb.php", "define ('VERSION',", "EOL"), 
        array("Timthumb", "/image.php", "define ('VERSION',", "EOL"), 
        array("Timthumb", "/timthumb.php", "define ('VERSION',", "EOL"),
        array("phpMyAdmin", "/libraries/defines.lib.php", "define('PMA_VERSION',", "Not Allowed"),
        array("phpMyAdmin", "/libraries/Config.php", "\$this->set('PMA_VERSION',", "Not Allowed"),
        array("phpMyAdmin", "/libraries/Config.class.php", "\$this->set('PMA_VERSION',", "Not Allowed"),
        array("CubeCart", "/ini.inc.php", "define('CC_VERSION',", "Maintained"),
        array("Simple PHP Blog", "/scripts/sb_functions.php", "\$sb_info[ 'version' ] =", "EOL"),
        array("Claroline", "/inc/installedVersion.inc.php", "\$new_version =", "EOL"),
        array("Moodle", "/version.php", "\$release  =", "Maintained"),
        array("WebAsyst", "/kernel/wbs.xml", "<WBS VERSION=", "EOL"),
        array("Invision Power Board", "/admin.php", "|   Invision Power Board v", "EOL"),
        array("Easy PHP Calendar", "/config.inc.php", "\$epcCheckVersion=", "EOL"),
        array("MediaWiki", "/includes/DefaultSettings.php", "\$wgVersion", "Maintained"),
        array("YapGB", "/gbconfig.php", "\$cfgYapGBVersion", "EOL"),
        array("PowerPhlogger", "/main.php", "\$curr_ver", "EOL"),
        array("Invision Power Board", "/index.php", " * IP.Board v", "EOL"),
        array("phpWebSite", "/conf/core_info.php", "\$version =", "EOL"),
        array("Achievo ATK", "/atk/version.inc", "\$atk_version =", "EOL"),
        array("CRE Loaded/Loaded Commerce", "/includes/version.php", "define('PROJECT_VERSION', 'Loaded Commerce", "EOL"),
        array("CodeIgniter", "/system/codeigniter/core/CodeIgniter.php", "define('CI_VERSION',", "Maintained"),
        array("LimeSurvey", "/application/config/version.php", "\$config['versionnumber'] =", "Maintained"),
        array("ELGG", "/vendor/elgg/elgg/composer.json", "\"version\":", "Maintained"),
        array("Grav CMS", "/system/defines.php", "define('GRAV_VERSION',", "Maintained"),
        array("CuteNews", "/inc/functions.inc.php", "\$config_version_name = \"CuteNews v", "EOL"),
        array("UCenter", "/index.php", "define('UC_VERSION',", "EOL"),
        array("Discuz!", "/discuz_version.php", "define('DISCUZ_VERSION',", "EOL"),
        array("PH7CMS", "/_protected/app/configs/config.ini", "version =", "EOL"),
        array("Chamilo", "/app/config/configuration.php", "\$_configuration['system_version'] =", "Maintained"),
        array("CodeIgniter", "/system/core/CodeIgniter.php", "define('CI_VERSION',", "Maintained"),
        array("Reportico", "/reportico.php", "\$version =", "EOL"),
        array("YetiForce", "/config/version.php", "'appVersion' =>", "Maintained"),
        array("e107", "/e107_admin/ver.php", "\$e107info['e107_version']", "EOL"),
        array("Glype", "/includes/settings.php","\$CONFIG['version'] =", "EOL"),
        array("ListMail", "/admin.php", "\$current_version =", "EOL"),


// still need to work on these
    array("Silverstripe", "/cms/silverstripe_version", "*"), //needs review
    array("Croogo", "/Vendor/croogo/croogo/VERSION.txt", "*"), // needs further review
    array("Dolphin", "/modules/boonex/news/install/config.php", "'compatible_with' => array("), // needs 2nd line too
    array("WebMail Lite", "/adminpanel/VERSION", "*"), // needs further review
    array("PHPCollab", "/includes/settings.php", "# PhpCollab version"), // needs second line as well
    array("Admidio", "/adm_program/system/constants.php", "define('ADMIDIO_VERSION_MAIN',"), // needs two more lines
    array("Get Simple CMS", "/admin/inc/configuration.php", "\$site_full_name"), // needs one more line
    array("SquirrelCart", "/squirrelcart/functions/base/sc_version.func.php", "function sc_version() {"), //needs one more line
    array("DataLife Engine", "/index.php", "dle_version ="), //needs one more line
    array("phpCoin", "/version.php", "ThisVersion"), //needs one more line
    array("Avactis", "/version.php", "PRODUCT_VERSION_NUMBER"), // needs one more line
    array("AccountLab Plus", "/version.php", "ALPversion="), // needs one more line
    array("Flynax Classifieds", "/control.inc.php", "VERSION:"), // may need one more line
    array("vBulletin", "/version.php", "fr_version ="), // may need one more line
    array("PHP Pro Bid", "/index.php", "PHP Pro Bid v"), // needs one more line
    array("ITLPoll", "/index.php", "ITLPoll Version"), // needs one more line
    array("Openads", "/index.php", "\/\* Openads"), // needs one more line
    array("LightMon Engine", "/index.php", "*           LightMon v"), // needs one more line
    array("Kasseler CMS", "/index.php", "by Kasseler CMS"), // needs 4 more lines
    array("Silurus Classifieds Builder", "/index.php", "* Silurus Classifieds Builder"), // needs 7 more lines
    array("Bitweaver", "/config_defaults_inc.php", "BIT_MAJOR_VERSION"), // needs 3 more
    array("phpFoX", "/version.php", "\$_CONF\[\'info.version\'\] ="), // needs one more
    array("Open Conference System", "/version.xml", "<release>"), // needs one more
    array("SPIP", "/svn.revision", "Origine: svn:"), // needs one more
    array("Oxy Classifieds", "/version", "*"), // two from the head
    array("Anova Pro", "/version.txt", "Anova Pro :"), // one more
);

foreach($versions as $row){

// scripts installed in subdirectories/subdomains
foreach(glob("/home/".$argv[1]."/public_html/{**/*,*}".$row[1], GLOB_BRACE) as $versionfile){

    $file = file_get_contents($versionfile);
    $pattern = preg_quote($row[2], '/');
	$pattern = "/^.*$pattern.*\$/m";
	if(preg_match_all($pattern, $file, $matches)){
	echo "\n";
   	echo "\n".$row[0]." found - (".$row[3]."):\n";
   	echo implode("\n", $matches[0]);
    echo "\n";
    $location = $versionfile;
    $trim = str_replace($row[1], '', $location);   
   	print_r ("location:".$trim)."\n";
    echo "\n";

	}
  }

// scripts installed in docroot
foreach(glob("/home/".$argv[1]."/public_html/".$row[1], GLOB_BRACE) as $versionfile){

    $file = file_get_contents($versionfile);
    $pattern = preg_quote($row[2], '/');
	$pattern = "/^.*$pattern.*\$/m";
	if(preg_match_all($pattern, $file, $matches)){
	echo "\n";
   	echo "\n".$row[0]." found - (".$row[3]."):\n";
   	echo implode("\n", $matches[0]);
    echo "\n";
    $location = $versionfile;
    $trim = str_replace($row[1], '', $location);   
    print_r ("location:".$trim)."\n";
    echo "\n";

	}
  }
}
$versiondouble = array (
    array("Joomla 1.0/Mambo", "/includes/version.php", "var \$RELEASE", "var \$DEV_LEVEL", "EOL"),
    array("Joomla 1.5", "/libraries/joomla/version.php", "var \$RELEASE", "var \$DEV_LEVEL", "EOL"),
    array("Joomla 1.6/1.7", "/libraries/cms/version.php", "\$RELEASE =", "\$DEV_LEVEL =", "EOL"),
    array("Joomla 2.5/3.x", "/libraries/cms/version/version.php", "\$RELEASE =", "\$DEV_LEVEL =", "EOL"),
    array("Joomla 3.5+", "/libraries/cms/version/version.php", "const RELEASE =", "const DEV_LEVEL =","Maintained"),
    array("CS-Cart", "/config.php", "define('PRODUCT_NAME',", "define('PRODUCT_VERSION',", "Maintained"),
    array("SohoLaunch", "/sohoadmin/version.php", "## Soholaunch(R)", "## Version", "EOL"),
    array("XMB", "/db/mysql.php", "* eXtreme Message Board", " * XMB ", "EOL"),

    
    );

foreach($versiondouble as $raw){

// scripts installed in subdirectories/subdomains
foreach(glob("/home/".$argv[1]."/public_html/{**/*,*}".$raw[1], GLOB_BRACE) as $versionfiles){

    $file = file_get_contents($versionfiles);
    $pattern1 = preg_quote($raw[2], '/');
    $pattern2 = preg_quote($raw[3], '/');
	$pattern = "/^.*$pattern1.*\$|^.*$pattern2.*\$/m";  
	if(preg_match_all($pattern, $file, $matches)){
	echo "\n";
    echo "\n".$raw[0]." found - (".$raw[4]."):\n";
   	echo implode("\n", $matches[0]);
   	echo "\n";
    $location = $versionfiles;
    $trim = str_replace($raw[1], '', $location);   
    print_r ("location:".$trim)."\n";
    echo "\n";

	}
  }

  // scripts installed in docroot
  foreach(glob("/home/".$argv[1]."/public_html/".$raw[1], GLOB_BRACE) as $versionfiles){

    $file = file_get_contents($versionfiles);
    $pattern1 = preg_quote($raw[2], '/');
    $pattern2 = preg_quote($raw[3], '/');
	$pattern = "/^.*$pattern1.*\$|^.*$pattern2.*\$/m";  
	if(preg_match_all($pattern, $file, $matches)){
	echo "\n";
    echo "\n".$raw[0]." found - (".$raw[4]."):\n";
   	echo implode("\n", $matches[0]);
   	echo "\n";
    $location = $versionfiles;
    $trim = str_replace($raw[1], '', $location);   
    print_r ("location:".$trim."\n");   	
    echo "\n";

	}
  }

}
  $versiontriple = array (
    array("Joomla 3.8.x", "/libraries/src/Version.php", "const MAJOR_VERSION =", "const MINOR_VERSION =", "const PATCH_VERSION =", "Maintained"),
    array("Exponent", "/exponent_version.php", "EXPONENT_VERSION_MAJOR", "EXPONENT_VERSION_MINOR", "EXPONENT_VERSION_REVISION", ""),
    array("CMS Made Simple", "version.php", "\$CMS_VERSION =", "\$CMS_VERSION_NAME =", "\$CMS_SCHEMA_VERSION =", ""),
    array("ZenCart", "/includes/version.php", "define('PROJECT_VERSION_NAME', 'Zen Cart');", "define('PROJECT_VERSION_MAJOR',", "define('PROJECT_VERSION_MINOR',", ""),
    array("Magento", "/app/Mage.php", "'major'     =>", "'minor'     =>", "'revision'  =>", ""),
    array("AbanteCart", "/core/version.php", "define('MASTER_VERSION',", "define('MINOR_VERSION',", "define('VERSION_BUILT',", ""),
    array("DotProj", "/includes/version.php", "\$dp_version_major", "\$dp_version_minor", "\$dp_version_patch", ""), 
    array("web2project", "/includes/version.php", "\$w2p_version_major =", "\$w2p_version_minor =", "\$w2p_version_patch =", "EOL")
);

foreach($versiontriple as $rxw){

// scripts installed in subdirectories/subdomains
foreach(glob("/home/".$argv[1]."/public_html/{**/*,*}".$rxw[1], GLOB_BRACE) as $versionfilex){

    $file = file_get_contents($versionfilex);
    $pattern1 = preg_quote($rxw[2], '/');
    $pattern2 = preg_quote($rxw[3], '/');
    $pattern3 = preg_quote($rxw[4], '/');
	$pattern = "/^.*$pattern1.*\$|^.*$pattern2.*\$|^.*$pattern3.*\$/m";  
	if(preg_match_all($pattern, $file, $matches)){
	echo "\n";
    echo "\n".$rxw[0]." found - (".$rxw[5]."):\n";
   	echo implode("\n", $matches[0]);
   	echo "\n";
    $location = $versionfilex;
    $trim = str_replace($rxw[1], '', $location);   
    print_r ("location:".$trim."\n");   	
    echo "\n";

	}
  }

  // scripts installed in docroot
  foreach(glob("/home/".$argv[1]."/public_html/".$rxw[1], GLOB_BRACE) as $versionfilex){

    $file = file_get_contents($versionfilex);
    $pattern1 = preg_quote($rxw[2], '/');
    $pattern2 = preg_quote($rxw[3], '/');
    $pattern3 = preg_quote($rxw[4], '/');
	$pattern = "/^.*$pattern1.*\$|^.*$pattern2.*\$|^.*$pattern3.*\$/m";  
	if(preg_match_all($pattern, $file, $matches)){
	echo "\n";
    echo "\n".$rxw[0]." found - (".$rxw[5]."):\n";
   	echo implode("\n", $matches[0]);
   	echo "\n";
    $location = $versionfilex;
    $trim = str_replace($rxw[1], '', $location);   
    print_r ("location:".$trim."\n");   	
    echo "\n";

	}
  }

}
