Changeset 16839
- Timestamp:
- 2007/11/28 22:53:02 (15 years ago)
- Location:
- branches/feature-module-update/data/class/pages/upgrade
- Files:
-
- 4 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/feature-module-update/data/class/pages/upgrade/LC_Page_Upgrade_Download.php
r16759 r16839 23 23 24 24 // {{{ requires 25 require_once CLASS_PATH . 'pages/LC_Page.php'; 26 require_once 'utils/LC_Utils_Upgrade.php'; 27 require_once 'utils/LC_Utils_Upgrade_Log.php'; 25 require_once CLASS_PATH . 'pages/upgrade/LC_Page_Upgrade_Base.php'; 26 require_once DATA_PATH . 'module/Tar.php'; 28 27 29 28 /** … … 36 35 * @version $Id$ 37 36 */ 38 class LC_Page_Upgrade_Download extends LC_Page {37 class LC_Page_Upgrade_Download extends LC_Page_Upgrade_Base { 39 38 40 39 // }}} … … 47 46 */ 48 47 function init() { 49 $this->objJson = new Services_Json(); 50 $this->objLog = new LC_Utils_Upgrade_Log('Download'); 51 52 $this->objForm = new SC_FormParam(); 53 $this->objForm->addParam( 54 'product_id', 'product_id', INT_LEN, '', 55 array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK') 48 parent::init(); 49 } 50 51 /** 52 * Page のプロセス. 53 * 54 * @return void 55 */ 56 function process($mode) { 57 $objLog = new LC_Upgrade_Helper_Log; 58 $objLog->start($mode); 59 60 $objJson = new LC_Upgrade_Helper_Json; 61 62 // アクセスチェック 63 $objLog->log('* auth start'); 64 if ($this->isValidAccess($mode) !== true) { 65 // TODO 66 $objJson->setError(OSTORE_E_C_INVALID_ACCESS); 67 $objJson->display(); 68 $objLog->error(OSTORE_E_C_INVALID_ACCESS); 69 return; 70 } 71 72 // パラメーチェック 73 $this->initParam(); 74 $objLog->log('* post param check start'); 75 if ($this->objForm->checkError()) { 76 // TODO 77 $objJson->setError(OSTORE_E_C_INVALID_PARAM); 78 $objJson->display(); 79 $objLog->error(OSTORE_E_C_INVALID_PARAM, $_POST); 80 return; 81 } 82 83 if ($mode == 'auto_update' 84 && $this->autoUpdateEnable($this->objForm->getValue('product_id')) !== true) { 85 // TODO 86 $objJson->setError(OSTORE_E_C_AUTOUP_DISABLE); 87 $objJson->display(); 88 $objLog->error(OSTORE_E_C_INVALID_PARAM, $_POST); 89 return; 90 } 91 92 // TODO CSRF対策 93 94 // 認証キーの取得 95 $public_key = $this->getPublicKey(); 96 $sha1_key = $this->createSeed(); 97 98 // 認証キーチェック 99 $objLog->log('* public key check start'); 100 if (empty($public_key)) { 101 $objJson->setError(OSTORE_E_C_NO_KEY); 102 $objJson->display(); 103 $objLog->error(OSTORE_E_C_NO_KEY); 104 return; 105 } 106 107 // リクエストを開始 108 $objLog->log('* http request start'); 109 $arrPostData = array( 110 'eccube_url' => SITE_URL, 111 'public_key' => sha1($public_key . $sha1_key), 112 'sha1_key' => $sha1_key, 113 'product_id' => $this->objForm->getValue('product_id') 56 114 ); 57 $this->objForm->setParam($_POST); 58 59 } 60 61 /** 62 * Page のプロセス. 63 * 64 * @return void 65 */ 66 function process() { 67 $this->objLog->start(); 68 69 // 管理画面ログインチェック 70 $this->objLog->log('* admin auth start'); 71 if (LC_Utils_Upgrade::isLoggedInAdminPage() !== true) { 72 $arrErr = array( 73 'status' => OWNERSSTORE_STATUS_ERROR, 74 'errcode' => OWNERSSTORE_ERR_DL_ADMIN_AUTH, 75 'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_DL_ADMIN_AUTH) 76 ); 77 echo $this->objJson->encode($arrErr); 78 $this->objLog->errLog($arrErr['errcode']); 79 exit; 80 } 81 82 // パラメーチェック 83 $this->objLog->log('* post parameter check start'); 84 if ($this->objForm->checkError()) { 85 $arrErr = array( 86 'status' => OWNERSSTORE_STATUS_ERROER, 87 'errcode' => OWNERSSTORE_ERR_DL_POST_PARAM, 88 'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_DL_POST_PARAM) 89 ); 90 echo $this->objJson->encode($arrErr); 91 $this->objLog->errLog($arrErr['errcode'], $_POST); 92 exit; 93 } 94 95 // TODO CSRF対策が必須 96 97 // ダウンロードリクエストを開始 98 $this->objLog->log('* http request start'); 99 $objReq = LC_Utils_Upgrade::request( 100 'download', 101 array('product_id' => $this->objForm->getValue('product_id')) 102 ); 103 104 // リクエストの懸賞 105 $this->objLog->log('* http request check start'); 115 $objReq = $this->request('download', $arrPostData); 116 117 // リクエストチェック 118 $objLog->log('* http request check start'); 106 119 if (PEAR::isError($objReq)) { 107 $arrErr = array( 108 'status' => OWNERSSTORE_STATUS_ERROR, 109 'errcode' => OWNERSSTORE_ERR_DL_HTTP_REQ, 110 'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_DL_HTTP_REQ) 111 ); 112 echo $this->objJson->encode($arrErr); 113 $this->objLog->errLog($arrErr['errcode'], $objReq); 114 exit; 115 } 116 117 // レスポンスの検証 118 $this->objLog->log('* http response check start'); 120 $objJson->setError(OSTORE_E_C_HTTP_REQ); 121 $objJson->display(); 122 $objLogerr(OSTORE_E_C_HTTP_REQ, $objReq); 123 return; 124 } 125 126 // レスポンスチェック 127 $objLog->log('* http response check start'); 119 128 if ($objReq->getResponseCode() !== 200) { 120 $arrErr = array( 121 'status' => OWNERSSTORE_STATUS_ERROR, 122 'errcode' => OWNERSSTORE_ERR_DL_HTTP_RESP_CODE, 123 'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_DL_HTTP_RESP_CODE) 124 ); 125 echo $this->objJson->encode($arrErr); 126 $this->objLog->errLog($arrErr['errcode'], $objReq); 127 exit; 128 } 129 130 // JSONデータの検証 129 $objJson->setError(OSTORE_E_C_HTTP_RESP); 130 $objJson->display(); 131 $objLog->error(OSTORE_E_C_HTTP_RESP, $objReq); 132 return; 133 } 134 131 135 $body = $objReq->getResponseBody(); 132 $objRet = $this->objJson->decode($body); 133 134 $this->objLog->log('* json data check start'); 136 $objRet = $objJson->decode($body); 137 138 // JSONデータのチェック 139 $objLog->log('* json deta check start'); 135 140 if (empty($objRet)) { 136 $arrErr = array( 137 'status' => OWNERSSTORE_STATUS_ERROR, 138 'errcode' => OWNERSSTORE_ERR_DL_INVALID_JSON_DATA, 139 'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_DL_INVALID_JSON_DATA) 140 ); 141 echo $this->objJson->encode($arrErr); 142 $this->objLog->errLog($arrErr['errcode'], $objReq); 143 exit; 144 } 141 $objJson->setError(OSTORE_E_C_FAILED_JSON_PARSE); 142 $objJson->display(); 143 $objLog->error(OSTORE_E_C_FAILED_JSON_PARSE, $objReq); 144 return; 145 } 146 145 147 // ダウンロードデータの保存 146 if ($objRet->status === O WNERSSTORE_STATUS_SUCCESS) {147 $ this->objLog->log('* save file start');148 if ($objRet->status === OSTORE_STATUS_SUCCESS) { 149 $objLog->log('* save file start'); 148 150 $time = time(); 149 151 $dir = DATA_PATH . 'downloads/tmp/'; 150 152 $filename = $time . '.tar.gz'; 151 153 152 $data = base64_decode($objRet-> body);153 154 $ this->objLog->log("* open ${filename} start");154 $data = base64_decode($objRet->dl_file); 155 156 $objLog->log("* open ${filename} start"); 155 157 if ($fp = fopen($dir . $filename, "w")) { 156 158 fwrite($fp, $data); 157 159 fclose($fp); 158 160 } else { 159 $arrErr = array( 160 'status' => OWNERSSTORE_STATUS_ERROR, 161 'errcode' => OWNERSSTORE_ERR_DL_FILE_WRITE, 162 'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_DL_FILE_WRITE) 163 ); 164 echo $this->objJson->encode($arrErr); 165 $this->objLog->errLog($arrErr['errcode'], $dir . $filename); 166 exit; 161 $objJson->setError(OSTORE_E_C_FILE_WRITE); 162 $objJson->display(); 163 $objLog->error(OSTORE_E_C_FILE_WRITE, $objReq); 164 return; 167 165 } 168 166 169 167 // ダウンロードアーカイブを展開する 170 168 $exract_dir = $dir . $time; 171 $ this->objLog->log("* mkdir ${exract_dir} start");169 $objLog->log("* mkdir ${exract_dir} start"); 172 170 if (!@mkdir($exract_dir)) { 173 $arrErr = array( 174 'status' => OWNERSSTORE_STATUS_ERROR, 175 'errcode' => OWNERSSTORE_ERR_DL_MKDIR, 176 'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_DL_MKDIR) 177 ); 178 echo $this->objJson->encode($arrErr); 179 $this->objLog->errLog($arrErr['errcode'], $exract_dir); 180 exit; 181 } 182 183 $this->objLog->log("* extract ${dir}${filename} start"); 171 $objJson->setError(OSTORE_E_C_MKDIR); 172 $objJson->display(); 173 $objLog->error(OSTORE_E_C_MKDIR, $objReq); 174 return; 175 } 176 177 $objLog->log("* extract ${dir}${filename} start"); 184 178 $tar = new Archive_Tar($dir . $filename); 185 179 $tar->extract($exract_dir); 186 180 187 $ this->objLog->log("* copy batch start");188 include_once CLASS_PATH . 'batch/SC_Batch_Update.php';181 $objLog->log("* copy batch start"); 182 @include_once CLASS_PATH . 'batch/SC_Batch_Update.php'; 189 183 $objBatch = new SC_Batch_Update(); 190 184 $arrCopyLog = $objBatch->execute($exract_dir); 191 185 192 186 // テーブルの更新 193 $ this->objLog->log("* insert/update dtb_module start");194 $this->updateMdlTable($objRet-> product_data);187 $objLog->log("* insert/update dtb_module start"); 188 $this->updateMdlTable($objRet->data); 195 189 196 190 // 配信サーバへ通知 197 $this->objLog->log("* notify to lockon server start"); 198 $this->notifyDownload($objReq->getResponseCookies()); 199 200 $arrParam = array( 201 'status' => OWNERSSTORE_STATUS_SUCCESS, 202 'body' => 'インストール/アップデートに成功しました!' 203 ); 204 echo $this->objJson->encode($arrParam); 205 $this->objLog->log('* file save ok'); 206 exit; 191 //$objLog->log("* notify to lockon server start"); 192 //$this->notifyDownload($objReq->getResponseCookies()); 193 194 $objJson->setSUCCESS(array(), 'インストール/アップデートに成功しました。'); 195 $objJson->display(); 196 $objLog->end(); 197 return; 207 198 } else { 199 // 配信サーバ側でエラーを補足 208 200 echo $body; 209 $ this->objLog->errLog($arrErr['errcode'], array($objRet, $objReq));210 exit;201 $objLog->error($objRet->errcode, $objReq); 202 return; 211 203 } 212 204 } … … 218 210 */ 219 211 function destroy() { 220 $this->objLog->end(); 212 parent::destroy(); 213 } 214 215 function initParam() { 216 $this->objForm = new SC_FormParam(); 217 $this->objForm->addParam( 218 'product_id', 'product_id', INT_LEN, '', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK') 219 ); 220 $this->objForm->setParam($_POST); 221 221 } 222 222 … … 242 242 'module_id' => $objRet->product_id, 243 243 'module_name' => $objRet->product_code, 244 //'sub_data' => $objRet->sub_data, 244 245 'auto_update_flg' => '0', 245 246 'create_date' => 'NOW()', … … 258 259 */ 259 260 function notifyDownload($arrCookies) { 260 $objReq = LC_Utils_Upgrade::request('download_log', array(), $arrCookies); 261 261 $objReq = $this->request('download_log', array(), $arrCookies); 262 262 return true; 263 } 264 265 /** 266 * アクセスチェック 267 * 268 * @return boolean 269 */ 270 function isValidAccess($mode) { 271 $objLog = new LC_Upgrade_Helper_Log; 272 switch ($mode) { 273 case 'download': 274 if ($this->isLoggedInAdminPage() === true) { 275 $objLog->log('* admin login ok'); 276 return true; 277 } 278 break; 279 case 'auto_update': 280 $objForm = new SC_FormParam; 281 $objForm->addParam('public_key', 'public_key', MTEXT_LEN, '', array('EXIST_CHECK', 'ALNUM_CHECK', 'MAX_LENGTH_CHECK')); 282 $objForm->addParam('sha1_key', 'sha1_key', MTEXT_LEN, '', array('EXIST_CHECK', 'ALNUM_CHECK', 'MAX_LENGTH_CHECK')); 283 $objForm->setParam($_POST); 284 285 if ($objForm->CheckError()) { 286 $objLog->log('* invalid param'); 287 return false; 288 } 289 290 $public_key = $this->getPublicKey(); 291 if (empty($public_key)) { 292 $objLog->log('* public_key not found'); 293 return false; 294 } 295 296 $sha1_key = $objForm->getValue('sha1_key'); 297 $public_key_sha1 = $objForm->getValue('public_key'); 298 299 if ($this->isValidIP() 300 && $public_key_sha1 === sha1($public_key . $sha1_key)) { 301 $objLog->log('* auto update login ok'); 302 return true; 303 } 304 break; 305 default: 306 $objLog->log('* mode invalid ' . $mode); 307 return false; 308 } 309 return false; 263 310 } 264 311 } -
branches/feature-module-update/data/class/pages/upgrade/LC_Page_Upgrade_ProductsList.php
r16620 r16839 23 23 24 24 // {{{ requires 25 require_once CLASS_PATH . 'pages/LC_Page.php'; 26 require_once 'utils/LC_Utils_Upgrade.php'; 27 require_once 'utils/LC_Utils_Upgrade_Log.php'; 25 require_once 'LC_Page_Upgrade_Base.php'; 28 26 29 27 /** … … 34 32 * @version $Id$ 35 33 */ 36 class LC_Page_Upgrade_ProductsList extends LC_Page {34 class LC_Page_Upgrade_ProductsList extends LC_Page_Upgrade_Base { 37 35 38 36 // }}} … … 45 43 */ 46 44 function init() { 47 $this->objJson = new Services_Json(); 48 $this->objLog = new LC_Utils_Upgrade_Log('Products List'); 45 parent::init(); 49 46 } 50 47 … … 54 51 * @return void 55 52 */ 56 function process() { 57 $this->objLog->start(); 53 function process($mode) { 54 $objLog = new LC_Upgrade_Helper_Log; 55 $objJson = new LC_Upgrade_Helper_Json; 56 57 $objLog->start($mode); 58 58 59 59 // 管理画面ログインチェック 60 $this->objLog->log('* admin auth start'); 61 if (LC_Utils_Upgrade::isLoggedInAdminPage() !== true) { 62 $arrErr = array( 63 'status' => OWNERSSTORE_STATUS_ERROR, 64 'errcode' => OWNERSSTORE_ERR_PL_ADMIN_AUTH, 65 'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_PL_ADMIN_AUTH) 66 ); 67 echo $this->objJson->encode($arrErr); 68 $this->objLog->errLog($arrErr['errcode']); 69 exit; 60 $objLog->log('* admin auth start'); 61 if ($this->isLoggedInAdminPage() !== true) { 62 $objJson->setError(OSTORE_E_C_ADMIN_AUTH); 63 $objJson->display(); 64 $objLog->error(OSTORE_E_C_ADMIN_AUTH); 65 return; 66 } 67 68 // 認証キーの取得 69 $public_key = $this->getPublicKey(); 70 $sha1_key = $this->createSeed(); 71 72 $objLog->log('* public key check start'); 73 if (empty($public_key)) { 74 $objJson->setError(OSTORE_E_C_NO_KEY); 75 $objJson->display(); 76 $objLog->error(OSTORE_E_C_NO_KEY); 77 return; 70 78 } 71 79 72 80 // リクエストを開始 73 $this->objLog->log('* http request start'); 74 $objReq = LC_Utils_Upgrade::request('products_list'); 81 $objLog->log('* http request start'); 82 $arrPostData = array( 83 'eccube_url' => SITE_URL, 84 'public_key' => sha1($public_key . $sha1_key), 85 'sha1_key' => $sha1_key 86 ); 87 $objReq = $this->request('products_list', $arrPostData); 75 88 76 89 // リクエストチェック 77 $ this->objLog->log('* http request check start');90 $objLog->log('* http request check start'); 78 91 if (PEAR::isError($objReq)) { 79 $arrErr = array( 80 'status' => OWNERSSTORE_STATUS_ERROR, 81 'errcode' => OWNERSSTORE_ERR_PL_HTTP_REQ, 82 'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_PL_HTTP_REQ) 83 ); 84 echo $this->objJson->encode($arrErr); 85 $this->objLog->errLog($arrErr['errcode'], $objReq); 86 exit; 92 $objJson->setError(OSTORE_E_C_HTTP_REQ); 93 $objJson->display(); 94 $objLogerr(OSTORE_E_C_HTTP_REQ, $objReq); 95 return; 87 96 } 88 97 89 98 // レスポンスチェック 90 $ this->objLog->log('* http response check start');99 $objLog->log('* http response check start'); 91 100 if ($objReq->getResponseCode() !== 200) { 92 $arrErr = array( 93 'status' => OWNERSSTORE_STATUS_ERROR, 94 'errcode' => OWNERSSTORE_ERR_PL_HTTP_RESP_CODE, 95 'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_PL_HTTP_RESP_CODE) 96 ); 97 echo $this->objJson->encode($arrErr); 98 $this->objLog->errLog($arrErr['errcode'], $objReq); 99 exit; 101 $objJson->setError(OSTORE_E_C_HTTP_RESP); 102 $objJson->display(); 103 $objLog->error(OSTORE_E_C_HTTP_RESP, $objReq); 104 return; 100 105 } 101 106 102 107 $body = $objReq->getResponseBody(); 103 $objRet = $ this->objJson->decode($body);108 $objRet = $objJson->decode($body); 104 109 105 110 // JSONデータのチェック 106 $ this->objLog->log('* json deta check start');111 $objLog->log('* json deta check start'); 107 112 if (empty($objRet)) { 108 $arrErr = array( 109 'status' => OWNERSSTORE_STATUS_ERROR, 110 'errcode' => OWNERSSTORE_ERR_PL_INVALID_JSON_DATA, 111 'body' => LC_Utils_Upgrade::getErrMessage(OWNERSSTORE_ERR_PL_INVALID_JSON_DATA) 112 ); 113 echo $this->objJson->encode($arrErr); 114 $this->objLog->errLog($arrErr['errcode'], $body); 115 exit; 113 $objJson->setError(OSTORE_E_C_FAILED_JSON_PARSE); 114 $objJson->display(); 115 $objLog->error(OSTORE_E_C_FAILED_JSON_PARSE, $objReq); 116 return; 116 117 } 117 118 118 119 // ステータスチェック 119 $this->objLog->log('* json status check start'); 120 if ($objRet->status === OWNERSSTORE_STATUS_SUCCESS) { 121 $this->objLog->log('* get products list ok'); 120 $objLog->log('* json status check start'); 121 if ($objRet->status === OSTORE_STATUS_SUCCESS) { 122 $objLog->log('* get products list ok'); 123 124 $arrProducts = array(); 125 126 foreach ($objRet->data as $product) { 127 $arrProducts[] = get_object_vars($product); 128 } 129 $objView = new SC_AdminView(); 130 $objView->assign('arrProducts', $arrProducts); 131 //print_r($arrProducts); 132 $html = $objView->fetch('ownersstore/products_list.tpl'); 133 134 $objJson->setSuccess(array(), $html); 135 $objJson->display(); 136 $objLog->end(); 137 return; 138 } else { 139 // 配信サーバ側でエラーを補足 122 140 echo $body; 123 exit; 124 } else { 125 echo $body; 126 $this->objLog->errLog($objRet->errcode, $objReq); 127 exit; 141 $objLog->error($objRet->errcode, $objReq); 142 return; 128 143 } 129 144 } … … 135 150 */ 136 151 function destroy() { 137 $this->objLog->end();152 parent::destroy(); 138 153 } 139 154 }
Note: See TracChangeset
for help on using the changeset viewer.