function isValidIP() { $objLog = new LC_Upgrade_Helper_Log(); $masterData = new SC_DB_MasterData_Ex(); $arrOstoreIPs = $masterData->getMasterData('mtb_ownersstore_ips'); if (isset($_SERVER['REMOTE_ADDR']) && in_array($_SERVER['REMOTE_ADDR'], $arrOstoreIPs)) { $objLog->log('* ip ok ' . $_SERVER['REMOTE_ADDR']); return true; } $objLog->log('* refused ip ' . $_SERVER['REMOTE_ADDR']); return false; }
/** * JSONデータをデコードする. * * php5.2.0からpreg_match関数に渡せるデータ長に制限がある(?)ため, * Services_JSONが正常に動作しなくなる. * そのため5.2.0以上の場合は組み込み関数のjson_decode()を使用する. * * @param string $str * @return StdClass */ function decode($str) { if (function_exists('json_decode')) { LC_Upgrade_Helper_Log::log(' *use json_decode()'); return json_decode($str); } LC_Upgrade_Helper_Log::log(' *use Services_JSON::decode()'); return parent::decode($str); }
/** * Page のプロセス. * * @return void */ function process($mode) { $objLog = new LC_Upgrade_Helper_Log(); $objJson = new LC_Upgrade_Helper_Json(); $objLog->start($mode); // 管理画面ログインチェック $objLog->log('* admin auth start'); if ($this->isLoggedInAdminPage() !== true) { $objJson->setError(OSTORE_E_C_ADMIN_AUTH); $objJson->display(); $objLog->error(OSTORE_E_C_ADMIN_AUTH); return; } // 認証キーの取得 $public_key = $this->getPublicKey(); $sha1_key = $this->createSeed(); $objLog->log('* public key check start'); if (empty($public_key)) { $objJson->setError(OSTORE_E_C_NO_KEY); $objJson->display(); $objLog->error(OSTORE_E_C_NO_KEY); return; } // リクエストを開始 $objLog->log('* http request start'); $arrPostData = array('eccube_url' => SITE_URL, 'public_key' => sha1($public_key . $sha1_key), 'sha1_key' => $sha1_key); $objReq = $this->request('products_list', $arrPostData); // リクエストチェック $objLog->log('* http request check start'); if (PEAR::isError($objReq)) { $objJson->setError(OSTORE_E_C_HTTP_REQ); $objJson->display(); $objLog->error(OSTORE_E_C_HTTP_REQ, $objReq); return; } // レスポンスチェック $objLog->log('* http response check start'); if ($objReq->getResponseCode() !== 200) { $objJson->setError(OSTORE_E_C_HTTP_RESP); $objJson->display(); $objLog->error(OSTORE_E_C_HTTP_RESP, $objReq); return; } $body = $objReq->getResponseBody(); $objRet = $objJson->decode($body); // JSONデータのチェック $objLog->log('* json deta check start'); if (empty($objRet)) { $objJson->setError(OSTORE_E_C_FAILED_JSON_PARSE); $objJson->display(); $objLog->error(OSTORE_E_C_FAILED_JSON_PARSE, $objReq); return; } // ステータスチェック $objLog->log('* json status check start'); if ($objRet->status === OSTORE_STATUS_SUCCESS) { $objLog->log('* get products list ok'); $arrProducts = array(); foreach ($objRet->data as $product) { $arrProducts[] = get_object_vars($product); } $objView = new SC_AdminView(); $objView->assign('arrProducts', $arrProducts); $template = 'ownersstore/products_list.tpl'; if (!$objView->_smarty->template_exists($template)) { $objLog->log('* template not exist, use default template'); // デフォルトテンプレートを使用 $template = DATA_PATH . 'Smarty/templates/default/admin/' . $template; } $html = $objView->fetch('ownersstore/products_list.tpl'); $objJson->setSuccess(array(), $html); $objJson->display(); $objLog->end(); return; } else { // 配信サーバ側でエラーを補足 echo $body; $objLog->error($objRet->errcode, $objReq); return; } }
/** * アクセスチェック * * @return boolean */ public function isValidAccess($mode) { $objLog = new LC_Upgrade_Helper_Log(); switch ($mode) { // モジュールダウンロード case 'download': if ($this->isLoggedInAdminPage() === true) { $objLog->log('* admin login ok'); return true; } break; // 自動アップロード最新ファイル取得 // 自動アップロード最新ファイル取得 case 'patch_download': // モジュール自動アップロード // モジュール自動アップロード case 'auto_update': $objForm = new SC_FormParam(); $objForm->addParam('public_key', 'public_key', MTEXT_LEN, '', array('EXIST_CHECK', 'ALNUM_CHECK', 'MAX_LENGTH_CHECK')); $objForm->addParam('sha1_key', 'sha1_key', MTEXT_LEN, '', array('EXIST_CHECK', 'ALNUM_CHECK', 'MAX_LENGTH_CHECK')); $objForm->setParam($_POST); $objLog->log('* param check start'); $arrErr = $objForm->checkError(); if ($arrErr) { $objLog->log('* invalid param ' . print_r($arrErr, true)); return false; } $objLog->log('* public_key check start'); $public_key = $this->getPublicKey(); if (empty($public_key)) { $objLog->log('* public_key not found'); return false; } $sha1_key = $objForm->getValue('sha1_key'); $public_key_sha1 = $objForm->getValue('public_key'); $objLog->log('* ip check start'); if ($public_key_sha1 === sha1($public_key . $sha1_key)) { $objLog->log('* auto update login ok'); return true; } break; default: $objLog->log('* mode invalid ' . $mode); return false; } return false; }