From 45dc3cee80ddf34f8fa0bf3338fecb4d766041a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=86=E3=82=AF=E3=83=8B=E3=82=AB=E3=83=AB=E8=AB=8F?= =?UTF-8?q?=E8=A8=AA=E5=AD=90?= Date: Thu, 11 Aug 2022 22:48:08 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=91=E3=83=A9=E3=83=A1=E3=83=BC=E3=83=88?= =?UTF-8?q?=E3=83=AB=E3=82=92=E6=8C=81=E3=81=A3=E3=81=A6=E3=81=84=E3=82=8B?= =?UTF-8?q?URL=E3=81=AE=E4=BF=AE=E6=AD=A3=EF=BC=8B=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E3=81=AB=E5=A4=B1=E6=95=97=E3=81=97=E3=81=9F=E5=A0=B4=E5=90=88?= =?UTF-8?q?=E3=81=AE=E3=82=A8=E3=83=A9=E3=83=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- www/index.php | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/www/index.php b/www/index.php index 8e77280..fe7c892 100644 --- a/www/index.php +++ b/www/index.php @@ -9,10 +9,13 @@ $ex = explode('/', parse_url($_POST['hozonsite'])['path']); $ex = $ex[array_key_last($ex)]; + if (null !== parse_url($_POST['hozonsite'])['query']) $ex .= '@'.parse_url($_POST['hozonsite'])['query']; if ($ex == '') $ex = 'index.html'; $basename = isset(parse_url($_POST['hozonsite'])['path']) ? $ex : 'index.html'; unset($ex); $ex = explode('/', $p); + $ex[array_key_last($ex)] = str_replace('?', '@', $ex[array_key_last($ex)]); + $ex[array_key_last($ex)] = parse_url($ex[array_key_last($ex)])['path']; if ($ex[array_key_last($ex)] == $basename) { unset($ex[array_key_last($ex)]); @@ -25,10 +28,13 @@ return $p.'/'.$basename; } - function archiving (string $url): string { - system("cd ".$url." && wget -LpExk --no-check-certificate --max-redirect=3 --default-page=index.html --reject js,json,mp4,mov,mkv,mp3,ogg,ogv ".$_POST['hozonsite']); + function archiving (string $url): array { + system("cd ".$url." && wget -LpExk --no-check-certificate --restrict-file-names=windows --max-redirect=3 --default-page=index.html --reject js,json,mp4,mov,mkv,mp3,ogg,ogv ".$_POST['hozonsite']); + if (count(array_diff(scandir($url), array('..', '.'))) == 0) { + return ['code' => 0, 'err' => '保存に失敗しました。']; + } - return $url.'/'.geturl(); + return ['code' => 1, 'url' => $url.'/'.geturl()]; } function striptags (string $text): string { @@ -69,7 +75,7 @@ $file = striptags($file); // 危険なタグの削除 // ヘッダーの追加 - $file = "
保存サイトでアーカイブしました。Archived with Hozon Site.
トップページへ
".$file.'
'; + $file = "
保存サイトでアーカイブしました。Archived with Hozon Site.
トップページへ
".$file.'
'; // 保存 file_put_contents(urldecode($path), $file); @@ -97,10 +103,16 @@ if (count($exists) == 0 || (count($exists) > 0 && isset($_POST['agree']))) { if (!mkdir('./'.$fullurl, 0755, true)) die('エラー'); // ダイレクトリーを作成出来なければ、死ね $url = archiving('./'.$fullurl); // ウエブページのダウンロード - sanitize_archive($url); // 危険なタグの削除 + if ($url['code'] == 0) { + $err = $url['err']; + } + else { + $url = $url['url']; + sanitize_archive($url); // 危険なタグの削除 - header('Location: '.$url); // 移転 - die(); + header('Location: '.$url); // 移転 + die(); + } } } }