function plugin_dump_upload() { global $vars, $_STORAGE; if (!PLUGIN_DUMP_ALLOW_RESTORE) { return array('code' => false, 'msg' => 'Restoring function is not allowed'); } $filename = $_FILES['upload_file']['name']; $matches = array(); $arc_kind = false; if (!preg_match('/(\\.tar|\\.tar.gz|\\.tgz)$/', $filename, $matches)) { die_message('Invalid file suffix'); } else { $matches[1] = strtolower($matches[1]); switch ($matches[1]) { case '.tar': $arc_kind = 'tar'; break; case '.tgz': $arc_kind = 'tar'; break; case '.tar.gz': $arc_kind = 'tgz'; break; default: die_message('Invalid file suffix: ' . $matches[1]); } } if ($_FILES['upload_file']['size'] > PLUGIN_DUMP_MAX_FILESIZE * 1024) { die_message('Max file size exceeded: ' . PLUGIN_DUMP_MAX_FILESIZE . 'KB'); } // Create a temporary tar file $uploadfile = tempnam(realpath(CACHE_DIR), 'tarlib_uploaded_'); $tar = new tarlib(); if (!move_uploaded_file($_FILES['upload_file']['tmp_name'], $uploadfile) || !$tar->open($uploadfile, $arc_kind)) { @unlink($uploadfile); die_message('ファイルがみつかりませんでした。'); } $pattern = "(({$_STORAGE['DATA_DIR']['extract_filter']})|" . "({$_STORAGE['UPLOAD_DIR']['extract_filter']})|" . "({$_STORAGE['BACKUP_DIR']['extract_filter']}))"; $files = $tar->extract($pattern); if (empty($files)) { @unlink($uploadfile); return array('code' => false, 'msg' => '<p>展開できるファイルがありませんでした。</p>'); } $msg = '<p><strong>展開したファイル一覧</strong><ul>'; foreach ($files as $name) { $msg .= "<li>{$name}</li>\n"; } $msg .= '</ul></p>'; $tar->close(); @unlink($uploadfile); return array('code' => true, 'msg' => $msg); }
function plugin_dump_upload() { global $vars, $_STORAGE; if (!PLUGIN_DUMP_ALLOW_RESTORE) { return array('code' => FALSE, 'msg' => T_("Restoring function is not allowed")); } $filename = $_FILES['upload_file']['name']; $matches = array(); $arc_kind = FALSE; if (!preg_match('/(\\.tar|\\.tar.gz|\\.tgz)$/', $filename, $matches)) { die_message('Invalid file suffix'); } else { $matches[1] = strtolower($matches[1]); switch ($matches[1]) { case '.tar': $arc_kind = 'tar'; break; case '.tgz': $arc_kind = 'tar'; break; case '.tar.gz': $arc_kind = 'tgz'; break; default: die_message(T_("Invalid file suffix: ") . $matches[1]); } } if ($_FILES['upload_file']['size'] > PLUGIN_DUMP_MAX_FILESIZE * 1024) { die_message(T_("Max file size exceeded: ") . PLUGIN_DUMP_MAX_FILESIZE . 'KB'); } // Create a temporary tar file $uploadfile = tempnam(realpath(CACHE_DIR), 'tarlib_uploaded_'); $tar = new tarlib(); if (!move_uploaded_file($_FILES['upload_file']['tmp_name'], $uploadfile) || !$tar->open($uploadfile, $arc_kind)) { @unlink($uploadfile); die_message(_("The file was not found.")); } $pattern = "(({$_STORAGE['DATA_DIR']['extract_filter']})|" . "({$_STORAGE['UPLOAD_DIR']['extract_filter']})|" . "({$_STORAGE['BACKUP_DIR']['extract_filter']}))"; $files = $tar->extract($pattern); if (empty($files)) { @unlink($uploadfile); return array('code' => FALSE, 'msg' => '<p>' . T_("There was no file that was able to be expanded.") . '</p>'); } $msg = '<p><strong>' . T_("Progressing file list") . '</strong><ul>'; foreach ($files as $name) { $msg .= "<li>{$name}</li>\n"; } $msg .= '</ul></p>'; $tar->close(); @unlink($uploadfile); return array('code' => TRUE, 'msg' => $msg); }
function plugin_dump2_upload() { global $vars, $_STORAGE; $qm = get_qm(); if (!PLUGIN_DUMP_ALLOW_RESTORE) { return array('code' => FALSE, 'msg' => $qm->m['plg_dump']['err_prohibit_restore']); } $filename = $_FILES['upload_file']['name']; $matches = array(); $arc_kind = FALSE; if (!preg_match('/(\\.tar|\\.tar.gz|\\.tgz)$/', $filename, $matches)) { die_message($qm->m['plg_dump2']['err_invalid_file_suf']); } else { $matches[1] = strtolower($matches[1]); switch ($matches[1]) { case '.tar': $arc_kind = 'tar'; break; case '.tgz': $arc_kind = 'tar'; break; case '.tar.gz': $arc_kind = 'tgz'; break; default: die_message($qm->replace('plg_dump2.err_invalid_file_suf2', $matches[1])); } } if ($_FILES['upload_file']['size'] > PLUGIN_DUMP_MAX_FILESIZE * 1024) { die_message($qm->replace('plg_dump.err_size_over', PLUGIN_DUMP_MAX_FILESIZE)); } // Create a temporary tar file $uploadfile = tempnam(realpath(CACHEQHM_DIR), 'tarlib_uploaded_'); $tar = new tarlib(); if (!move_uploaded_file($_FILES['upload_file']['tmp_name'], $uploadfile) || !$tar->open($uploadfile, $arc_kind)) { @unlink($uploadfile); die_message($qm->m['plg_dump']['err_upload_failed']); } $pattern = "(({$_STORAGE['DATA_DIR']['extract_filter']})|" . "({$_STORAGE['UPLOAD_DIR']['extract_filter']})|" . "({$_STORAGE['BACKUP_DIR']['extract_filter']}))"; $files = $tar->extract($pattern); if (empty($files)) { @unlink($uploadfile); return array('code' => FALSE, 'msg' => $qm->m['plg_dump']['err_upload_empty']); } $msg = '<p><strong>' . $qm->m['plg_dump']['restore_header'] . '</strong><ul>'; foreach ($files as $name) { $msg .= "<li>{$name}</li>\n"; } $msg .= '</ul></p>'; $tar->close(); @unlink($uploadfile); return array('code' => TRUE, 'msg' => $msg); }