From ec35c3c644def767793fb647e23d8286ed98bb71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E9=AA=9E?= Date: Thu, 1 Apr 2021 20:20:43 +0800 Subject: [PATCH] feat: add forceHttps config --- common.php | 14 ++++++++++++++ conststr.php | 6 ++++++ 2 files changed, 20 insertions(+) diff --git a/common.php b/common.php index e2eb120..c672c24 100644 --- a/common.php +++ b/common.php @@ -27,6 +27,7 @@ $EnvConfigs = [ 'disableShowThumb' => 0b010, //'disableChangeTheme'=> 0b010, 'disktag' => 0b000, + 'forceHttps' => 0b010, 'hideFunctionalityFile'=> 0b010, 'timezone' => 0b010, 'passfile' => 0b011, @@ -152,6 +153,19 @@ function main($path) if ($_SERVER['timezone']=='') $_SERVER['timezone'] = 0; $_SERVER['PHP_SELF'] = path_format($_SERVER['base_path'] . $path); + if (getConfig('forceHttps')=='1'&&$_SERVER['REQUEST_SCHEME']=='http') { + $url = $_SERVER['PHP_SELF']; + if ($_GET) { + $tmp = ''; + foreach ($_GET as $k => $v) { + if ($v===true) $tmp .= '&' . $k; + else $tmp .= '&' . $k . '=' . $v; + } + $tmp = substr($tmp, 1); + if ($tmp!='') $url .= '?' . $tmp; + } + return output(getConfig('forceHttps'), 302, [ 'Location' => str_replace('http://', 'https://', $_SERVER['host'] . $url) ]); + } if (getConfig('admin')=='') return install(); if (getConfig('adminloginpage')=='') { diff --git a/conststr.php b/conststr.php index ac22949..da675f8 100644 --- a/conststr.php +++ b/conststr.php @@ -107,6 +107,7 @@ $constStr = [ 'theme' => 'Select theme.', 'timezone' => 'Set default timezone.', 'guestup_path' => 'Set guest upload dir, before set this, the files in this dir will show as normal.', + 'forceHttps' => 'if 1, force to redirect to https when using http.', 'hideFunctionalityFile' => '0 or 1. if 1, some file will not show in list to guest, like readme.md', 'passfile' => 'The password of folder(& its childrens) will save in this file.', 'domainforproxy' => 'Will replace the https://xxxxx-my.sharepoint.com with this value.Add &Origindomain=xxxxx-my.sharepoint.com at last', @@ -135,6 +136,7 @@ $constStr = [ 'theme' => '选择一个主题。', 'timezone' => '设置默认时区。', 'guestup_path' => '设置游客上传路径(图床路径),不设置这个值时该目录内容会正常列文件出来,设置后只有上传界面,不显示其中文件(登录后显示)。', + 'forceHttps' => '如果填1,当使用HTTP访问时,会强制跳转HTTPS。', 'hideFunctionalityFile' => '0 或 1。如果 1, 某些文件不列表给游客看,但它的功能正常,比如readme.md', 'passfile' => '自定义密码文件的名字,可以是\'pppppp\',也可以是\'aaaa.txt\'等等;列目录时不会显示,只有知道密码才能查看或下载此文件。密码是这个文件的内容,可以空格、可以中文;', 'domainforproxy' => '会将https://xxxxx-my.sharepoint.com替换成这个值,在目标需要自己设置反代。会加上&Origindomain=原域名', @@ -161,6 +163,7 @@ $constStr = [ 'theme' => '選擇一個主題。', 'timezone' => '設定預設時區。', 'guestup_path' => '設定遊客上傳路徑(圖床路徑),不設定這個值時該目錄內容會正常列文件出來,設定後只有上傳介面,不顯示其中文件(登入後顯示)。', + 'forceHttps' => '如果填1,當使用HTTP訪問時,會強制跳轉HTTPS。', 'hideFunctionalityFile' => '0 或 1。如果 1, 某些文件不列表給遊客看,但它的功能正常,比如readme.md', 'passfile' => '自訂密碼文件的名字,可以是\'pppppp\',也可以是\'aaaa.txt\'等等;列目錄時不會顯示,只有知道密碼才能查看或下載此文件。密碼是這個文件的內容,可以空格、可以中文;', 'domainforproxy' => '會將https://xxxxx-my.sharepoint.com取代成這個值,在目標需要自己設定反代。會加上&Origindomain=原域名', @@ -187,6 +190,7 @@ $constStr = [ 'theme' => 'テーマを選択します。', 'timezone' => 'プリセットタイムゾーンを設定します。', 'guestup_path' => 'マップベッドのパスを設定します。この値が設定されていない場合、ディレクトリの内容は通常ファイルにリストされ、設定後はアップロードインターフェイスのみが表示されます。', + 'forceHttps' => '1を記入すると、HTTPアクセスを使用すると、HTTPSが強制的にリダイレクトされます。', 'hideFunctionalityFile' => '0または1です。もし1ならば、いくつかの書類はリストで観光客に見せませんが、その機能は正常です。readme.md', 'passfile' => 'カスタムパスワードファイルの名前は、\'pppppp \'、\'aaaa.txt \'などの場合があります。ディレクトリをリストするときには表示されません。パスワードを知っている場合にのみ、このファイルを表示またはダウンロードできます。 パスワードはこのファイルの内容であり、スペースまたは漢字を使用できます。', 'domainforproxy' => '会将https://xxxy-my.sharepoint.comこの値に代えて、目標には自分で反世代を設定する必要があります。に加えて&Originndomain=元のドメイン名', @@ -213,6 +217,7 @@ $constStr = [ 'theme' => '주제를 선택하십시오.', 'timezone' => '기본 시간대를 설정합니다.', 'guestup_path' => '게스트 업로드 경로 (사진 침대 경로)를 설정합니다.이 값을 설정하지 않으면 디렉토리의 내용이 파일로 나열됩니다. 설정 후 업로드 인터페이스 만 표시되지 않습니다 (로그인 후 표시됨).', + 'forceHttps' => '1을 입력하면 HTTP 액세스를 사용할 때 HTTPS가 강제로 리디렉션됩니다.', 'hideFunctionalityFile' => '0 또는 1 1 인 경우 일부 파일이 관광객 용으로 나열되지 않지만 readme.md와 같은 기능은 정상입니다.', 'passfile' => '사용자 지정 암호 파일의 이름은 \ “pppppp \”또는 \ “aaaa.txt \”등이 될 수 있습니다. 디렉터리가 나열 될 때 표시되지 않으며 암호를 알고있는 경우에만 파일을 보거나 다운로드 할 수 있습니다. 암호는이 파일의 내용이며 공백이거나 중국어 일 수 있습니다.', 'domainforproxy' => 'https://xxxxx-my.sharepoint.com을이 값으로 바꾸고 대상에서 안티 생성을 설정해야합니다. & Origindomain = Original domain name 을 추가합니다.', @@ -254,6 +259,7 @@ $constStr = [ 'theme' => 'اختر موضوع واحد', 'timezone' => 'تعيين المنطقة الزمنية الافتراضية', 'guestup_path' => 'إذا كنت لا تضع هذه القيمة ، محتويات الدليل سوف تظهر بشكل صحيح ، فقط واجهة تحميل بعد الإعداد ، لا تظهر الملفات بعد تسجيل الدخول.', + 'forceHttps' => 'إذا قمت بملء 1 ، عند استخدام وصول HTTP ، فسيتم إعادة توجيه HTTPS قسرًا.', 'hideFunctionalityFile' => 'أو واحد إذا كان واحد ، بعض الملفات لا تظهر في قائمة الزوار ، ولكن وظيفتها هي طبيعية ، مثل قراءة', 'passfile' => 'يمكنك تحديد اسم ملف كلمة السر الخاصة بك ؟ النص انتظر ، لا تظهر في الكتالوج إلا إذا كنت تعرف كلمة السر ، يمكنك عرض أو تحميل هذا الملف كلمة السر هي محتوى هذه الوثيقة ، يمكنك الفضاء ، يمكنك الصينية ؛', 'domainforproxy' => 'سوف لا شيء استبدال هذه القيمة ، تحتاج إلى تعيين جيل معاكس في الهدف الخاص بك إضافة اسم النطاق الأصلي',