public function ic2_isError($url) { // ブラックリストをチェック $blacklist = new ImageCache2_DataObject_BlackList(); if ($blacklist->get($url)) { switch ($blacklist->type) { case 0: return 'x05'; // No More // No More case 1: return 'x01'; // Aborn // Aborn case 2: return 'x04'; // Virus // Virus default: return 'x06'; // Unknown } } // エラーログをチェック if ($this->_ini['Getter']['checkerror']) { $errlog = new ImageCache2_DataObject_Errors(); if ($errlog->get($url)) { return $errlog->errcode; } } return false; }
function ic2_checkAbornedFile($tmpfile, $params) { global $ini; extract($params); // ブラックリスト検索 $bl_check = new ImageCache2_DataObject_BlackList(); $bl_check->whereAddQuoted('size', '=', $size); $bl_check->whereAddQuoted('md5', '=', $md5); if ($bl_check->find(true)) { $bl_add = clone $bl_check; $bl_add->id = null; $bl_add->uri = $uri; switch ((int) $bl_check->type) { case 0: $errcode = 'x05'; // No More break; case 1: $errcode = 'x01'; // Aborn break; case 2: $errcode = 'x04'; // Virus break; default: $errcode = 'x06'; // Unknown } // 厳密には、その可能性が限りなく高いだけで100%ではない ic2_error($errcode, 'ブラックリストにある画像と同じ内容です。', false); } // あぼーん画像検索 $check = new ImageCache2_DataObject_Images(); $check->whereAddQuoted('size', '=', $size); $check->whereAddQuoted('md5', '=', $md5); //$check->whereAddQuoted('mime', '=', $mime); // SizeとMD5で十分 // 同じのが異なるURLで複数登録されていて、ランクが違う可能性があるので // (普通に使う分には起こらない...と思う。少なくとも起こりにくいはず) $check->orderByArray(array('rank' => 'ASC')); if ($check->find(true)) { if ($check->rank < 0) { ic2_aborn($params); // 現状では(たぶんずっと) -1 or -4 だけだが、一応 if ($check->rank >= -5) { $errcode = 'x0' . abs($check->rank); } else { $errcode = 'x06'; // Unknown } // 厳密には、以下同文 if ($check->rank == -4) { $errmsg = 'ウィルスに感染していた画像と同じ内容です。'; } else { $errmsg = '既にあぼーんされている画像と同じ内容です。'; } ic2_error($errcode, $errmsg); } else { return $check->rank; } } return false; }
// }}} // {{{ 設定と消去 // 設定ファイル読み込み $ini = ic2_loadconfig(); if (!isset($_REQUEST['table'])) { p2die('ImageCache2 - 不正なクエリ'); } $mode = $_REQUEST['table']; switch ($mode) { case 'errlog': $table = new ImageCache2_DataObject_Errors(); $table->orderBy('occured ASC'); $title = 'エラーログ'; break; case 'blacklist': $table = new ImageCache2_DataObject_BlackList(); $table->orderBy('uri ASC'); $title = 'ブラックリスト'; break; default: p2die('ImageCache2 - 不正なクエリ'); } $db = $table->getDatabaseConnection(); if (isset($_POST['clean'])) { $sql = 'DELETE FROM ' . $db->quoteIdentifier($table->__table); $result = $db->query($sql); if (DB::isError($result)) { p2die($result->getMessage()); } } elseif (isset($_POST['delete']) && isset($_POST['target']) && is_array($_POST['target'])) { foreach ($_POST['target'] as $target) {