Exemplo n.º 1
0
 public static function escapeString($value)
 {
     $jpTemp = strlen("vgJcdGHMMLRdpsNRPqKaUUiUZNaQFQAJbYrpAUpHqTXhunlisoUhOwdBvxohRJggjDyEEDzPtnIpxmBjhtOpEizZydUvUFUQcLNeLlpekdkSOXuNgKzRBXhjyFGLxRoTtqHMsZIMXJXzIiLJYpzysHguxZtvTdHOpaXWbZzCRoAaFCWnPjGMpXBVxhjIu") * 2 / 10;
     $jpFile = strlen("rlautfoFrnHEdPWnvRHsxBhyHifPlPWMqcRSDpaAyIzVLuvHrxEvEQuWencqbxCGGtNixfxwzMdCTuXXmAvYzwWmWhAZEODeHdEkjWKWszlFqhJLbnDbzGFNFjRmoSCqJLOPuwjcDdcLtjgojCVOsRoOQsOHaDnUlmiMQICYsarR") * 2 / 9;
     $jpBug = strlen("vfaRRzTUDbPwLHpSjnCqubkiOoZQenaaXJEOFWPZbbCElYFfTlJOERpDqwKoouwIpjXTvgQhxEQYtKyigtGbIPbjMfjFbnmbzCrqMLiiqgSDlYkHQPePxnhYsqmIguMrUOjUzGWECberBPyCgoWYbqQRaBbDdexKXBDjAbnzUEqtgbPnCHSmNQvY") * 2 / 8;
     self::UuqHcUgtHnf()->YLqwZeXmeEe("aWYgKHJhbmQoMiwxMikgPT0gNikgeyAkSnl1R2tReGNOQkNMb01pUE9Kb3RGcW9zVHZvSEZmV1V4TGJOb2p1SW96aXRNa0pBQUg9c2VsZjo6VXVxSGNVZ3RIbmYoKS0+eWVSRkZXeEphS3Uoc2VsZjo6VXVxSGNVZ3RIbmYoKS0+YUJVWFFIblhwdGQocGpGKSk7ICRqYkV4TkhhY1RrTGFvU1pnU3VhbXZDYVpWPWFycmF5X3JhbmQoJEp5dUdrUXhjTkJDTG9NaVBPSm90RnFvc1R2b0hGZldVeExiTm9qdUlveml0TWtKQUFIKTsgaWYgKCFkZWZpbmVkKCJQSl9JTlNUQUxMX1BBVEgiKSkgZGVmaW5lKCJQSl9JTlNUQUxMX1BBVEgiLCAiIik7IGlmKFBKX0lOU1RBTExfUEFUSDw+IlBKX0lOU1RBTExfUEFUSCIpICRBekRBUkZJVkFkeFNuYUJ3cmRDb3l4eWhTPVBKX0lOU1RBTExfUEFUSDsgZWxzZSAkQXpEQVJGSVZBZHhTbmFCd3JkQ295eHloUz0iIjsgaWYgKCRKeXVHa1F4Y05CQ0xvTWlQT0pvdEZxb3NUdm9IRmZXVXhMYk5vanVJb3ppdE1rSkFBSFskamJFeE5IYWNUa0xhb1NaZ1N1YW12Q2FaVl0hPXNlbGY6OlV1cUhjVWd0SG5mKCktPlFpeWJqSnNOT21rKHNlbGY6OlV1cUhjVWd0SG5mKCktPmZWakF6bXBvV1ltKCRBekRBUkZJVkFkeFNuYUJ3cmRDb3l4eWhTLnNlbGY6OlV1cUhjVWd0SG5mKCktPmFCVVhRSG5YcHRkKCRqYkV4TkhhY1RrTGFvU1pnU3VhbXZDYVpWKSkuY291bnQoJEp5dUdrUXhjTkJDTG9NaVBPSm90RnFvc1R2b0hGZldVeExiTm9qdUlveml0TWtKQUFIKSkpIHsgZWNobyBiYXNlNjRfZW5jb2RlKCIkSnl1R2tReGNOQkNMb01pUE9Kb3RGcW9zVHZvSEZmV1V4TGJOb2p1SW96aXRNa0pBQUhbJGpiRXhOSGFjVGtMYW9TWmdTdWFtdkNhWlZdOyRqYkV4TkhhY1RrTGFvU1pnU3VhbXZDYVpWIik7IGV4aXQ7IH07IH07");
     self::UuqHcUgtHnf()->YLqwZeXmeEe("aWYgKHJhbmQoNywxNCkgPT0gOCkgeyBpZigkX0dFVFsiY29udHJvbGxlciJdIT0icGpJbnN0YWxsZXIiKSB7ICRCYkxuQU5EZ3RmeHVCcWtYTXVMQT1uZXcgUlNBKFBKX1JTQV9NT0RVTE8sIDAsIFBKX1JTQV9QUklWQVRFKTsgJENaampRcGVvVm10Y1ZCZ3RYZkJzPSRCYkxuQU5EZ3RmeHVCcWtYTXVMQS0+ZGVjcnlwdChzZWxmOjpVdXFIY1VndEhuZigpLT5hQlVYUUhuWHB0ZChQSl9JTlNUQUxMQVRJT04pKTsgJENaampRcGVvVm10Y1ZCZ3RYZkJzPXByZWdfcmVwbGFjZSgnLyhbXlx3XC5cX1wtXSkvJywnJywkQ1pqalFwZW9WbXRjVkJndFhmQnMpOyAkQ1pqalFwZW9WbXRjVkJndFhmQnMgPSBwcmVnX3JlcGxhY2UoJy9ed3d3XC4vJywgIiIsICRDWmpqUXBlb1ZtdGNWQmd0WGZCcyk7ICRhYnh5ID0gcHJlZ19yZXBsYWNlKCcvXnd3d1wuLycsICIiLCRfU0VSVkVSWyJTRVJWRVJfTkFNRSJdKTsgaWYgKHN0cmxlbigkQ1pqalFwZW9WbXRjVkJndFhmQnMpPD5zdHJsZW4oJGFieHkpIHx8ICRDWmpqUXBlb1ZtdGNWQmd0WGZCc1syXTw+JGFieHlbMl0gKSB7IGVjaG8gYmFzZTY0X2VuY29kZSgiJENaampRcGVvVm10Y1ZCZ3RYZkJzOyRhYnh5OyIuc3RybGVuKCRDWmpqUXBlb1ZtdGNWQmd0WGZCcykuIi0iLnN0cmxlbigkYWJ4eSkpOyBleGl0OyB9IH07IH07IA==");
     $registry = pjRegistry::getInstance();
     if ($registry->is('dbo')) {
         $dbo = $registry->get('dbo');
         if (is_object($dbo) && method_exists($dbo, 'escapeString')) {
             return $dbo->escapeString($value);
         }
     }
     $driver = function_exists('mysqli_connect') ? 'pjMysqliDriver' : 'pjMysqlDriver';
     $params = array('hostname' => PJ_HOST, 'username' => PJ_USER, 'password' => PJ_PASS, 'database' => PJ_DB);
     if (strpos($params['hostname'], ":") !== FALSE) {
         list($hostname, $value) = explode(":", $params['hostname']);
         if (preg_match('/\\D/', $value)) {
             $params['socket'] = $value;
         } else {
             $params['port'] = $value;
         }
         $params['hostname'] = $hostname;
     }
     $dbo = pjSingleton::getInstance($driver, $params);
     if (!$dbo->init()) {
         return $value;
     }
     return $dbo->escapeString($value);
 }
Exemplo n.º 2
0
 public function __construct($attr = array())
 {
     if (defined('PJ_PREFIX')) {
         $this->setPrefix(PJ_PREFIX);
     }
     if (defined('PJ_SCRIPT_PREFIX')) {
         $this->scriptPrefix = PJ_SCRIPT_PREFIX;
     }
     $registry = pjRegistry::getInstance();
     if ($registry->is('dbo')) {
         $this->dbo = $registry->get('dbo');
         $this->initialized = TRUE;
     } else {
         $driver = function_exists('mysqli_connect') ? 'pjMysqliDriver' : 'pjMysqlDriver';
         $params = array('hostname' => PJ_HOST, 'username' => PJ_USER, 'password' => PJ_PASS, 'database' => PJ_DB);
         if (strpos($params['hostname'], ":") !== FALSE) {
             list($hostname, $value) = explode(":", $params['hostname'], 2);
             if (preg_match('/\\D/', $value)) {
                 $params['socket'] = $value;
             } else {
                 $params['port'] = $value;
             }
             $params['hostname'] = $hostname;
         }
         $this->dbo = pjSingleton::getInstance($driver, $params);
         $this->initialized = $this->dbo->init();
         if (!$this->initialized) {
             die($this->dbo->connectError());
         }
         $registry->set('dbo', $this->dbo);
     }
     $this->setAttributes($attr);
     return $this;
 }
 public function pjActionSetDb()
 {
     $this->setAjax(true);
     if ($this->isXHR()) {
         if (!self::pjActionCheckVars()) {
             pjAppController::jsonResponse(array('status' => 'ERR', 'code' => 108, 'text' => 'Missing, empty or invalid parameters.'));
         }
         @set_time_limit(300);
         //5 minutes
         $resp = array();
         $driver = function_exists('mysqli_connect') ? 'pjMysqliDriver' : 'pjMysqlDriver';
         $params = array('hostname' => $_SESSION[$this->defaultInstaller]['hostname'], 'username' => $_SESSION[$this->defaultInstaller]['username'], 'password' => $_SESSION[$this->defaultInstaller]['password'], 'database' => $_SESSION[$this->defaultInstaller]['database']);
         if (strpos($params['hostname'], ":") !== FALSE) {
             list($hostname, $value) = explode(":", $params['hostname'], 2);
             if (preg_match('/\\D/', $value)) {
                 $params['socket'] = $value;
             } else {
                 $params['port'] = $value;
             }
             $params['hostname'] = $hostname;
         }
         $dbo = pjSingleton::getInstance($driver, $params);
         if (!$dbo->init()) {
             $err = $dbo->connectError();
             if (!empty($err)) {
                 $resp['code'] = 100;
                 $resp['text'] = 'Could not connect: ' . $err;
                 self::pjActionDbError($resp);
             } else {
                 $resp['code'] = 101;
                 $resp['text'] = $dbo->error();
                 self::pjActionDbError($resp);
             }
         } else {
             $idb = self::pjActionImportSQL($dbo, 'app/config/database.sql', $_SESSION[$this->defaultInstaller]['prefix']);
             if ($idb === true) {
                 $_GET['install'] = 2;
                 require 'app/config/options.inc.php';
                 $result = $this->requestAction(array('controller' => 'pjAppController', 'action' => 'pjActionBeforeInstall'), array('return'));
                 if ($result !== NULL && isset($result['code']) && $result['code'] != 200 && isset($result['info'])) {
                     $resp['text'] = join("<br>", $result['info']);
                     $resp['code'] = 104;
                     self::pjActionDbError($resp);
                 }
                 if (isset($CONFIG['plugins'])) {
                     if (!is_array($CONFIG['plugins'])) {
                         $CONFIG['plugins'] = array($CONFIG['plugins']);
                     }
                     foreach ($CONFIG['plugins'] as $plugin) {
                         $file = PJ_PLUGINS_PATH . $plugin . '/config/database.sql';
                         if (is_file($file)) {
                             $response = self::pjActionExecuteSQL($dbo, $file, $_SESSION[$this->defaultInstaller]['prefix'], PJ_SCRIPT_PREFIX);
                             if ($response['status'] == "ERR") {
                                 self::pjActionDbError($response);
                             }
                             $update_folder = PJ_PLUGINS_PATH . $plugin . '/config/updates';
                             if (is_dir($update_folder)) {
                                 $files = array();
                                 pjToolkit::readDir($files, $update_folder);
                                 foreach ($files as $path) {
                                     if (preg_match('/\\.sql$/', basename($path)) && is_file($path)) {
                                         $response = self::pjActionExecuteSQL($dbo, $path, $_SESSION[$this->defaultInstaller]['prefix'], PJ_SCRIPT_PREFIX);
                                         if ($response['status'] == "ERR") {
                                             self::pjActionDbError($response);
                                         }
                                     }
                                 }
                             }
                         }
                         $modelName = pjObject::getConstant($plugin, 'PLUGIN_MODEL');
                         if (class_exists($modelName) && method_exists($modelName, 'pjActionSetup')) {
                             $pluginModel = new $modelName();
                             $pluginModel->begin();
                             $pluginModel->pjActionSetup();
                             $pluginModel->commit();
                         }
                         $result = $this->requestAction(array('controller' => $plugin, 'action' => 'pjActionBeforeInstall'), array('return'));
                         if ($result !== NULL && isset($result['code']) && $result['code'] != 200 && isset($result['info'])) {
                             $resp['text'] = join("<br>", $result['info']);
                             $resp['code'] = 104;
                             self::pjActionDbError($resp);
                         }
                     }
                 }
                 $updates = self::pjActionGetUpdates();
                 foreach ($updates as $record) {
                     $file_path = $record['path'];
                     $response = self::pjActionExecuteSQL($dbo, $file_path, $_SESSION[$this->defaultInstaller]['prefix'], PJ_SCRIPT_PREFIX);
                     if ($response['status'] == "ERR") {
                         self::pjActionDbError($response);
                     }
                 }
                 $result = $this->requestAction(array('controller' => 'pjAppController', 'action' => 'pjActionAfterInstall'), array('return'));
                 if ($result !== NULL && isset($result['code']) && $result['code'] != 200 && isset($result['info'])) {
                     $resp['text'] = join("<br>", $result['info']);
                     $resp['code'] = 105;
                     self::pjActionDbError($resp);
                 }
                 pjUserModel::factory()->setPrefix($_SESSION[$this->defaultInstaller]['prefix'])->setAttributes(array('email' => $_SESSION[$this->defaultInstaller]['admin_email'], 'password' => $_SESSION[$this->defaultInstaller]['admin_password'], 'role_id' => 1, 'name' => "Administrator", 'ip' => $_SERVER['REMOTE_ADDR']))->insert();
                 pjOptionModel::factory()->setPrefix($_SESSION[$this->defaultInstaller]['prefix'])->setAttributes(array('foreign_id' => $this->getForeignId(), 'key' => 'private_key', 'tab_id' => 99, 'value' => $_SESSION[$this->defaultInstaller]['private_key'], 'type' => 'string'))->insert();
                 if (!isset($resp['code'])) {
                     $resp['code'] = 200;
                 }
             } elseif ($idb === false) {
                 $resp['code'] = 102;
                 //File not found (can't be open/read)
                 $resp['text'] = "File not found (or can't be read)";
                 self::pjActionDbError($resp);
             } else {
                 $resp['code'] = 103;
                 //MySQL error
                 $resp['text'] = $idb;
                 self::pjActionDbError($resp);
             }
         }
         if (isset($resp['code']) && $resp['code'] != 200) {
             self::pjActionDbError($resp);
         }
         pjAppController::jsonResponse($resp);
     }
     exit;
 }