HOR-1400 "Remove code scanner review for ProcessMaker plugins" SOLVED

Issue:
    Remove code scanner review for ProcessMaker plugins
Cause:
    Nuevo requerimiento de validacion
Solution:
    Se a incluido la validacion para los "Enterprise Edition Plugin"; donde se evita que el "Code Scanner" revise estos plugins
This commit is contained in:
Victor Saisa Lopez
2016-07-14 12:16:12 -04:00
parent 44756feb18
commit 61dc644bfd
5 changed files with 51 additions and 16 deletions

View File

@@ -2688,7 +2688,12 @@ function run_check_plugin_disabled_code($task, $args)
$pluginName = str_replace(".php", "", $file);
if (is_file(PATH_PLUGINS . $pluginName . ".php") && is_dir(PATH_PLUGINS . $pluginName)) {
if (preg_match("/^.*class\s+" . $pluginName . "Plugin\s+extends\s+(\w*)\s*\{.*$/i", str_replace(array("\n", "\r"), array(" ", " "), file_get_contents(PATH_PLUGINS . $pluginName . ".php")), $arrayMatch)) {
if (preg_match(
'/^.*class\s+' . $pluginName . 'Plugin\s+extends\s+(\w*)\s*\{.*$/i',
str_replace(["\n", "\r", "\t"], ' ', file_get_contents(PATH_PLUGINS . $pluginName . '.php')),
$arrayMatch
)
) {
$pluginParentClassName = $arrayMatch[1];
switch ($option2) {

View File

@@ -1814,5 +1814,25 @@ class PMPluginRegistry
}
return $plugin;
}
/**
* Checks if the plugin name is Enterprise Plugin
*
* @param string $pluginName Plugin name
* @param string $path Path to plugin
*
* @return bool Returns TRUE when plugin name is Enterprise Plugin, FALSE otherwise
*/
public function isEnterprisePlugin($pluginName, $path = null)
{
$path = (!is_null($path) && $path != '')? rtrim($path, '/\\') . PATH_SEP : PATH_PLUGINS;
$pluginFile = $pluginName . '.php';
//Return
return preg_match(
'/^.*class\s+' . $pluginName . 'Plugin\s+extends\s+(?:enterprisePlugin)\s*\{.*$/i',
str_replace(["\n", "\r", "\t"], ' ', file_get_contents($path . $pluginFile))
);
}
}

View File

@@ -96,6 +96,13 @@ try {
}
$res = $tar->extract($path);
//Verify if not is Enterprise Plugin
if (!$oPluginRegistry->isEnterprisePlugin($sClassName, $path)) {
throw new Exception(G::LoadTranslation('ID_EEPLUGIN_IMPORT_PLUGIN_NOT_IS_ENTERPRISE', [$filename]));
}
//Get contents of plugin file
$sContent = file_get_contents($path . $pluginFile);
$sContent = str_ireplace($sAux, $sAux . '_', $sContent);
$sContent = str_ireplace('PATH_PLUGINS', "'".$path."'", $sContent);

View File

@@ -52,7 +52,9 @@ if ($handle = opendir( PATH_PLUGINS )) {
if (is_file(PATH_PLUGINS . $pluginName . ".php") && is_dir(PATH_PLUGINS . $pluginName)) {
/*----------------------------------********---------------------------------*/
if (PMLicensedFeatures::getSingleton()->verifyfeature("B0oWlBLY3hHdWY0YUNpZEtFQm5CeTJhQlIwN3IxMEkwaG4=")) {
if (!$oPluginRegistry->isEnterprisePlugin($pluginName) &&
PMLicensedFeatures::getSingleton()->verifyfeature('B0oWlBLY3hHdWY0YUNpZEtFQm5CeTJhQlIwN3IxMEkwaG4=')
) {
//Check disabled code
G::LoadClass("codeScanner");

View File

@@ -242,6 +242,11 @@ try {
}
$res = $tar->extract( $path );
//Check if is enterprise plugin
if ($oPluginRegistry->isEnterprisePlugin($sClassName, $path)) {
throw new Exception(G::LoadTranslation('ID_PMPLUGIN_IMPORT_PLUGIN_IS_ENTERPRISE', [$filename]));
}
/*----------------------------------********---------------------------------*/
if (PMLicensedFeatures::getSingleton()->verifyfeature("B0oWlBLY3hHdWY0YUNpZEtFQm5CeTJhQlIwN3IxMEkwaG4=")) {
//Check disabled code
@@ -259,12 +264,8 @@ try {
}
/*----------------------------------********---------------------------------*/
//Check if is enterprise plugin
//Get contents of plugin file
$sContent = file_get_contents( $path . $pluginFile );
$chain = preg_quote( 'extends enterprisePlugin' );
if (strpos( $sContent, $chain )) {
throw (new Exception( 'The plugin ' . $filename . ' is a Enterprise Edition Plugin, please install the Enterprise Plugins Manager to use this plugin.' ));
}
$sContent = str_ireplace( $sAux, $sAux . '_', $sContent );
$sContent = str_ireplace( 'PATH_PLUGINS', "'" . $path . "'", $sContent );
$sContent = preg_replace( "/\\\$oPluginRegistry\s*=\s*&\s*PMPluginRegistry::getSingleton\s*\(\s*\)\s*;/i", null, $sContent );