xssFilterHard($_POST); $_GET = $filter->xssFilterHard($_GET); $request = isset($_POST['request']) ? $_POST['request'] : (isset($_GET['request']) ? $_GET['request'] : null); function testConnection($type, $server, $user, $passwd, $port = 'none', $dbName = "") { if (($port == 'none') || ($port == '') || ($port == 0)) { //setting defaults ports switch ($type) { case 'mysql': $port = 3306; break; case 'pgsql': $port = 5432; break; case 'mssql': $port = 1433; break; case 'oracle': $port = 1521; break; } } G::LoadClass('net'); $Server = new NET($server); G::LoadSystem('inputfilter'); $filter = new InputFilter(); if ($Server->getErrno() == 0) { $Server->scannPort($port); if ($Server->getErrno() == 0) { $Server->loginDbServer($user, $passwd); $Server->setDataBase($dbName, $port); if ($Server->errno == 0) { $response = $Server->tryConnectServer($type); if ($response->status == 'SUCCESS') { if ($Server->errno == 0) { $message = ""; $response = $Server->tryConnectServer($type); $server = $filter->validateInput($server); $user = $filter->validateInput($user); $passwd = $filter->validateInput($passwd); $connDatabase = @mysql_connect($server, $user, $passwd); $dbNameTest = "PROCESSMAKERTESTDC"; $dbNameTest = $filter->validateInput($dbNameTest, 'nosql'); $query = "CREATE DATABASE %s"; $query = $filter->preventSqlInjection($query, array($dbNameTest), $connDatabase); $db = @mysql_query($query, $connDatabase); $success = false; if (!$db) { $message = mysql_error();; } else { $usrTest = "wfrbtest"; $chkG = "GRANT ALL PRIVILEGES ON `%s`.* TO %s@'%%' IDENTIFIED BY 'sample' WITH GRANT OPTION"; $chkG = $filter->preventSqlInjection($chkG, array($dbNameTest, $usrTest), $connDatabase); $ch = @mysql_query($chkG, $connDatabase); if (!$ch) { $message = mysql_error(); } else { $sqlCreateUser = "CREATE USER '%s'@'%%' IDENTIFIED BY '%s'"; $user = $filter->validateInput($user, 'nosql'); $sqlCreateUser = $filter->preventSqlInjection($sqlCreateUser, array($user . "_usertest", "sample"), $connDatabase); $result = @mysql_query($sqlCreateUser, $connDatabase); if (!$result) { $message = mysql_error(); } else { $success = true; $message = G::LoadTranslation('ID_SUCCESSFUL_CONNECTION'); } $sqlDropUser = "DROP USER '%s'@'%%'"; $user = $filter->validateInput($user, 'nosql'); $sqlDropUser = $filter->preventSqlInjection($sqlDropUser, array($user . "_usertest"), $connDatabase); @mysql_query($sqlDropUser, $connDatabase); $sqlDropUser = "DROP USER %s@'%%'"; $usrTest = $filter->validateInput($usrTest, 'nosql'); $sqlDropUser = $filter->preventSqlInjection($sqlDropUser, array($usrTest), $connDatabase); @mysql_query($sqlDropUser, $connDatabase); } $sqlDropDb = "DROP DATABASE %s"; $dbNameTest = $filter->validateInput($dbNameTest, 'nosql'); $sqlDropDb = $filter->preventSqlInjection($sqlDropDb, array($dbNameTest), $connDatabase); @mysql_query($sqlDropDb, $connDatabase); } return array($success, ($message != "") ? $message : $Server->error); } else { return array(false, $Server->error); } } else { return array(false, $Server->error); } } else { return array(false, $Server->error); } } else { return array(false, $Server->error); } } else { return array(false, $Server->error); } } switch ($request) { //check if the APP_CACHE VIEW table and their triggers are installed case 'info': $result = new stdClass(); $result->info = array(); //check the language, if no info in config about language, the default is 'en' G::loadClass('configuration'); $oConf = new Configurations(); $oConf->loadConfig($x, 'APP_CACHE_VIEW_ENGINE', '', '', '', ''); $appCacheViewEngine = $oConf->aConfig; if (isset($appCacheViewEngine['LANG'])) { $lang = (defined('SYS_LANG')) ? SYS_LANG : $appCacheViewEngine['LANG']; $status = strtoupper($appCacheViewEngine['STATUS']); } else { $confParams = array('LANG' => (defined('SYS_LANG')) ? SYS_LANG : 'en', 'STATUS' => ''); $oConf->aConfig = $confParams; $oConf->saveConfig('APP_CACHE_VIEW_ENGINE', '', '', ''); $lang = (defined('SYS_LANG')) ? SYS_LANG : 'en'; $status = ''; } //get user Root from hash $result->info = array(); $result->error = false; //setup the appcacheview object, and the path for the sql files $appCache = new AppCacheView(); $appCache->setPathToAppCacheFiles(PATH_METHODS . 'setup' . PATH_SEP . 'setupSchemas' . PATH_SEP); $res = $appCache->getMySQLVersion(); //load translations G::LoadTranslation $result->info[] = array('name' => G::LoadTranslation('ID_CACHE_BUILDER_MYSQL_VERSION'), 'value' => $res); $res = $appCache->checkGrantsForUser(false); $currentUser = $res['user']; $currentUserIsSuper = $res['super']; $result->info[] = array('name' => G::LoadTranslation('ID_CACHE_BUILDER_CURRENT_USER'), 'value' => $currentUser); $result->info[] = array('name' => G::LoadTranslation('ID_CACHE_BUILDER_USER_SUPER_PRIVILEGE'), 'value' => $currentUserIsSuper); try { PROPEL::Init(PATH_METHODS . 'dbConnections/rootDbConnections.php'); $con = Propel::getConnection("root"); } catch (Exception $e) { $result->info[] = array('name' => 'Checking MySql Root user', 'value' => 'failed'); $result->error = true; $result->errorMsg = $e->getMessage(); } //if user does not have the SUPER privilege we need to use the root user and grant the SUPER priv. to normal user. if (!$currentUserIsSuper && !$result->error) { $res = $appCache->checkGrantsForUser(true); if (!isset($res['error'])) { $result->info[] = array('name' => G::LoadTranslation('ID_ROOT_USER'), 'value' => $res['user']); $result->info[] = array('name' => G::LoadTranslation('ID_ROOT_USER_SUPER'), 'value' => $res['super']); } else { $result->info[] = array('name' => 'Error', 'value' => $res['msg']); } } //now check if table APPCACHEVIEW exists, and it have correct number of fields, etc. $res = $appCache->checkAppCacheView(); $result->info[] = array('name' => G::LoadTranslation('ID_CACHE_BUILDER_TABLE'), 'value' => $res['found']); $result->info[] = array('name' => G::LoadTranslation('ID_CACHE_BUILDER_ROWS'), 'value' => $res['count']); //now check if we have the triggers installed //APP_DELEGATION INSERT $res = $appCache->triggerAppDelegationInsert($lang, false); $result->info[] = array('name' => G::LoadTranslation('ID_CACHE_BUILDER_TRIGGER_INSERT'), 'value' => $res); //APP_DELEGATION Update $res = $appCache->triggerAppDelegationUpdate($lang, false); $result->info[] = array('name' => G::LoadTranslation('ID_CACHE_BUILDER_TRIGGER_UPDATE'), 'value' => $res); //APPLICATION UPDATE $res = $appCache->triggerApplicationUpdate($lang, false); $result->info[] = array('name' => G::LoadTranslation('ID_CACHE_BUILDER_TRIGGER_APPLICATION_UPDATE'), 'value' => $res); //APPLICATION DELETE $res = $appCache->triggerApplicationDelete($lang, false); $result->info[] = array('name' => G::LoadTranslation('ID_CACHE_BUILDER_TRIGGER_APPLICATION_DELETE'), 'value' => $res); //SUB_APPLICATION INSERT $res = $appCache->triggerSubApplicationInsert($lang, false); //CONTENT UPDATE $res = $appCache->triggerContentUpdate($lang, false); $result->info[] = array("name" => G::LoadTranslation('ID_CACHE_BUILDER_TRIGGER_CONTENT_UPDATE'), "value" => $res); //show language $result->info[] = array('name' => G::LoadTranslation('ID_CACHE_BUILDER_LANGUAGE'), 'value' => $lang); echo G::json_encode($result); break; case 'getLangList': $Translations = G::getModel('Translation'); $result = new stdClass(); $result->rows = array(); $langs = $Translations->getTranslationEnvironments(); foreach ($langs as $lang) { $result->rows[] = array('LAN_ID' => $lang['LOCALE'], 'LAN_NAME' => $lang['LANGUAGE']); } print (G::json_encode($result)); break; case 'build': $sqlToExe = array(); G::LoadClass('configuration'); $conf = new Configurations(); //DEPRECATED $lang = $_POST['lang']; //there is no more support for other languages that english $lang = (defined('SYS_LANG')) ? SYS_LANG : 'en'; try { //setup the appcacheview object, and the path for the sql files $appCache = new AppCacheView(); $appCache->setPathToAppCacheFiles(PATH_METHODS . 'setup' . PATH_SEP . 'setupSchemas' . PATH_SEP); //Update APP_DELEGATION.DEL_LAST_INDEX data $res = $appCache->updateAppDelegationDelLastIndex($lang, true); //$result->info[] = array("name" => "update APP_DELEGATION.DEL_LAST_INDEX", "value" => $res); //APP_DELEGATION INSERT $res = $appCache->triggerAppDelegationInsert($lang, true); //$result->info[] = array ('name' => 'Trigger APP_DELEGATION INSERT', 'value'=> $res); //APP_DELEGATION Update $res = $appCache->triggerAppDelegationUpdate($lang, true); //$result->info[] = array ('name' => 'Trigger APP_DELEGATION UPDATE', 'value'=> $res); //APPLICATION UPDATE $res = $appCache->triggerApplicationUpdate($lang, true); //$result->info[] = array ('name' => 'Trigger APPLICATION UPDATE', 'value'=> $res); //APPLICATION DELETE $res = $appCache->triggerApplicationDelete($lang, true); //$result->info[] = array ('name' => 'Trigger APPLICATION DELETE', 'value'=> $res); //SUB_APPLICATION INSERT $res = $appCache->triggerSubApplicationInsert($lang, false); //CONTENT UPDATE $res = $appCache->triggerContentUpdate($lang, true); //$result->info[] = array("name" => "Trigger CONTENT UPDATE", "value" => $res); //build using the method in AppCacheView Class $res = $appCache->fillAppCacheView($lang); //$result->info[] = array ('name' => 'build APP_CACHE_VIEW', 'value'=> $res); //set status in config table $confParams = array('LANG' => $lang, 'STATUS' => 'active'); $conf->aConfig = $confParams; $conf->saveConfig('APP_CACHE_VIEW_ENGINE', '', '', ''); $result = new StdClass(); $result->success = true; $result->msg = G::LoadTranslation('ID_TITLE_COMPLETED'); G::auditLog("BuildCache"); echo G::json_encode($result); } catch (Exception $e) { $confParams = array('lang' => $lang, 'status' => 'failed'); $appCacheViewEngine = $oServerConf->setProperty('APP_CACHE_VIEW_ENGINE', $confParams); $token = strtotime("now"); PMException::registerErrorLog($e, $token); $varRes = '{success: false, msg:"' . G::LoadTranslation("ID_EXCEPTION_LOG_INTERFAZ", array($token)) . '"}'; G::outRes( $varRes ); } break; case 'recreate-root': $user = $_POST['user']; $passwd = $_POST['password']; $server = $_POST['host']; $code = $_POST['codeCaptcha']; $aServer = explode(':', $server); $serverName = $aServer[0]; $port = (count($aServer) > 1) ? $aServer[1] : "none"; if ($code !== $_SESSION['securimage_code_disp']['default']) { echo G::loadTranslation('ID_CAPTCHA_CODE_INCORRECT'); break; } list($sucess, $msgErr) = testConnection(DB_ADAPTER, $serverName, $user, $passwd, $port); if ($sucess) { $sh = G::encryptOld(filemtime(PATH_GULLIVER . "/class.g.php")); $h = G::encrypt($_POST['host'] . $sh . $_POST['user'] . $sh . $_POST['password'] . $sh . (1), $sh); $insertStatements = "define ( 'HASH_INSTALLATION','{$h}' ); \ndefine ( 'SYSTEM_HASH', '{$sh}' ); \n"; $lines = array(); $content = ''; $filename = PATH_HOME . 'engine' . PATH_SEP . 'config' . PATH_SEP . 'paths_installed.php'; $lines = file($filename); $count = 1; foreach ($lines as $line_num => $line) { $pos = strpos($line, "define"); if ($pos !== false && $count < 3) { $content = $content . $line; $count++; } } $content = "show(); break; }