Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
FTP
/
Monsta-FTP-master
:
connexion.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php $version = "1.8.8"; require("config.php"); ini_set('max_execution_time', $maxExecTime); ini_set('memory_limit', $maxFileSize); header("X-Frame-Options: SAMEORIGIN"); error_reporting(0); saveFtpDetailsCookie(); startSession(); # SET FOLDERS $templates_dir = "templates"; $languages_dir = "languages"; # INCLUDE LANGUAGE FILE if ($_SESSION["lang"] == "" || isset($_POST["lang"])) setLangFile(); include($languages_dir . "/en_us.php"); include($languages_dir . "/" . $_SESSION["lang"]); # SET VARS // Check for AJAX post if ($_POST["ftpAction"] != "" || $_GET["ftpAction"] != "") $ajaxRequest = 1; else $ajaxRequest = 0; # LOAD CONTENT // These check vars are set in the "SET VARS" section if ($ftpAction == "download" || $ftpAction == "download_zip" || $ftpAction == "iframe_upload" || $ftpAction == "editProcess") { echo "<script>alert(' INIT1 ')</script>"; } else { if ($ajaxRequest == 0) { echo "<script>alert(' INIT2 ')</script>"; checkLogOut(); displayHeader(); } // Attempt to login with session or post vars attemptLogin(); // Check referer if (checkReferer() == 1) { // Display content when logged in if ($_SESSION["loggedin"] == 1) { echo "<script>alert(' INIT3 ')</script>"; if ($ajaxRequest == 0) { echo "<script>alert(' INIT3 - AJAX 1 ')</script>"; displayFormStart(); } // Display folder/file listing displayFiles(); if ($ajaxRequest == 0) { echo "<script>alert(' INIT3 - AJAX 2 ')</script>"; loadJsLangVars(); displayFormEnd(); } } if ($ajaxRequest == 0) { echo "<script>alert(' INIT3 - AJAX 3 ')</script>"; // Include the footer displayFooter(); } } } // Close FTP connection @ftp_close($conn_id); /*************************************************************/ # FUNCTIONS function startSession() { global $sessionName; // Only change session name if session.auto_start is not 1, and session name is valid if (!ini_get("session.auto_start") || ini_get("session.auto_start") == "0") session_name(preg_match('/^[0-9]*[A-Za-z][A-Za-z0-9]*$/', $sessionName) ? $sessionName : "monstaftp"); @session_start(); $session_keys = array("user_ip", "loggedin", "lang", "win_lin", "ip_check", "login_error", "login_fails", "login_lockout", "ftp_ssl", "ftp_host", "ftp_user", "ftp_pass", "ftp_port", "ftp_pasv", "interface", "dir_current", "dir_history", "clipboard_chmod", "clipboard_files", "clipboard_folders", "clipboard_rename", "copy", "errors", "upload_limit", "domain", "filesCharSet", ); foreach($session_keys as $session_key) { if (!isset($_SESSION[$session_key])) $_SESSION[$session_key] = ''; // avoid a lot of "undefined index" } } function saveFtpDetailsCookie() { if ($_POST["login"] == 1) { if ($_POST["login_save"] == 1) { $s = 31536000; // seconds in a year setcookie("ftp_ssl", $_POST["ftp_ssl"], time() + $s, '/', null, null, true); setcookie("ftp_host", trim($_POST["ftp_host"]), time() + $s, '/', null, null, true); setcookie("ftp_user", trim($_POST["ftp_user"]), time() + $s, '/', null, null, true); setcookie("ftp_pass", trim($_POST["ftp_pass"]), time() + $s, '/', null, null, true); setcookie("ftp_port", trim($_POST["ftp_port"]), time() + $s, '/', null, null, true); setcookie("ftp_pasv", $_POST["ftp_pasv"], time() + $s, '/', null, null, true); setcookie("interface", $_POST["interface"], time() + $s, '/', null, null, true); setcookie("login_save", $_POST["login_save"], time() + $s, '/', null, null, true); setcookie("lang", $_POST["lang"], time() + $s, '/', null, null, true); setcookie("ip_check", $_POST["ip_check"], time() + $s, '/', null, null, true); } else { setcookie("ftp_ssl", "", time() - 3600); setcookie("ftp_host", "", time() - 3600); setcookie("ftp_user", "", time() - 3600); setcookie("ftp_pass", "", time() - 3600); setcookie("ftp_port", "", time() - 3600); setcookie("ftp_pasv", "", time() - 3600); setcookie("interface", "", time() - 3600); setcookie("login_save", "", time() - 3600); setcookie("lang", "", time() - 3600); setcookie("ip_check", "", time() - 3600); } } } function attemptLogin() { global $conn_id; global $ftpHost; global $ftpPort; global $ftpMode; global $ftpSSL; global $ftpDir; global $lang_missing_fields; global $lang_ip_conflict; if (connectFTP(0) == 1 && $_POST["login"] != 1) { // Check for hijacked session with IP check if ($_SESSION["ip_check"] == 1) { if ($_SERVER['REMOTE_ADDR'] == $_SESSION["user_ip"]) { $_SESSION["loggedin"] = 1; } else { $_SESSION["errors"] = $lang_ip_conflict; sessionExpired($lang_ip_conflict); logOut(); } } else { $_SESSION["loggedin"] = 1; } } else { if ($_POST["login"] == 1) { // Check for login errors if (checkLoginErrors() == 1) { $_SESSION["login_error"] = $lang_missing_fields; displayLoginForm(1); } else { // Set POST vars to SESSION if ($ftpHost == "") { $_SESSION["ftp_host"] = trim($_POST["ftp_host"]); $_SESSION["ftp_port"] = trim($_POST["ftp_port"]); $_SESSION["ftp_pasv"] = empty($_POST["ftp_pasv"])?0:1; $_SESSION["ftp_ssl"] = empty($_POST["ftp_ssl"])?0:1; } else { $_SESSION["ftp_host"] = $ftpHost; $_SESSION["ftp_port"] = $ftpPort; $_SESSION["ftp_pasv"] = $ftpMode; $_SESSION["ftp_ssl"] = $ftpSSL; } $_SESSION["ftp_user"] = trim($_POST["ftp_user"]); $_SESSION["ftp_pass"] = trim($_POST["ftp_pass"]); $_SESSION["interface"] = empty($_POST["interface"])?"":"adv"; $_SESSION["lang"] = $_POST["lang"]; $_SESSION["ip_check"] = $_POST["ip_check"]; if (connectFTP(1) == 1) { $_SESSION["loggedin"] = 1; // Save user's IP address $_SESSION["user_ip"] = $_SERVER['REMOTE_ADDR']; // Set platform getPlatform(); // Change dir if one set if ($ftpDir != "") { if (@ftp_chdir($conn_id, $ftpDir)) { $_SESSION["dir_current"] = $ftpDir; } else { if (@ftp_chdir($conn_id, "~" . $ftpDir)) $_SESSION["dir_current"] = "~" . $ftpDir; } } } else { displayLoginForm(1); } } } else { displayLoginForm(0); } } } function displayHeader() { ?> <!DOCTYPE html> <html> <head> <title>Monsta FTP</title> <link href="css/style.css?<?php echo date("U"); ?>" rel="stylesheet" type="text/css"> <link href="css/colors.css?<?php echo date("U"); ?>" rel="stylesheet" type="text/css"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body <?php if ($_POST["login"] == 1) { ?> onresize="setFileWindowSize('ajaxContentWindow',0,0);" <?php } ?>> <?php } function displayFooter() { ?> </body> </html> <?php } function displayLoginForm($posted) { global $ftpHost; global $ajaxRequest; global $lang_max_logins; global $lang_btn_login; global $lang_ftp_host; global $lang_port; global $lang_passive_mode; global $lang_username; global $lang_password; global $lang_ftp_ssl; global $lang_adv_interface; global $lang_save_login; global $lang_ip_check; global $lang_session_expired; global $showAdvOption; global $showLockSess; // Check for lockout $date_now = date("YmdHis"); if ($_SESSION["login_lockout"] > 0 && $date_now < $_SESSION["login_lockout"]) { $n = ceil(($_SESSION["login_lockout"] - $date_now) / 60); $_SESSION["login_error"] = str_replace("[n]", $n, $lang_max_logins); } // Check for posted form if ($posted == 1) { // Set vars $ftp_ssl = $_POST["ftp_ssl"]; $ftp_host = trim($_POST["ftp_host"]); $ftp_user = trim($_POST["ftp_user"]); $ftp_pass = trim($_POST["ftp_pass"]); $ftp_port = trim($_POST["ftp_port"]); $ftp_pasv = $_POST["ftp_pasv"]; $interface = $_POST["interface"]; $lang = $_POST["lang"]; $login_save = $_POST["login_save"]; $ip_check = $_POST["ip_check"]; $_SESSION["domain"] = $_SERVER["SERVER_NAME"]; } else { // Set values from cookies if ($_COOKIE["login_save"] == 1) { $ftp_ssl = $_COOKIE["ftp_ssl"]; $ftp_host = $_COOKIE["ftp_host"]; $ftp_user = $_COOKIE["ftp_user"]; $ftp_pass = $_COOKIE["ftp_pass"]; $ftp_port = $_COOKIE["ftp_port"]; $ftp_pasv = $_COOKIE["ftp_pasv"]; $interface = $_COOKIE["interface"]; $lang = $_COOKIE["lang"]; $login_save = $_COOKIE["login_save"]; $ip_check = $_COOKIE["ip_check"]; } else { $ftp_port = 21; $ftp_pasv = 1; } } if ($ajaxRequest == 1) { sessionExpired($lang_session_expired); logOut(); } else { // Check for errors if ($_SESSION["login_error"] != "") { $height = 522; } else { $height = 458; } ?> <form method="post" action="?"> <div align="center"> <div id="loginForm" align="left"> <div id="loginFormTitle">Monsta FTP</div> <div id="loginFormContent"> <?php if ($_SESSION["login_error"] != "") { ?> <div id="loginFormError"> <?php echo $_SESSION["login_error"]; ?> </div> <?php } ?> <input type="hidden" name="login" value="1"> <input type="hidden" name="openFolder" value="<?php echo sanitizeStr($_GET["openFolder"]); ?>"> <?php if ($ftpHost == "") { ?> <?php echo $lang_ftp_host; ?>: <br><input type="text" name="ftp_host" value="<?php echo sanitizeStrTrim($ftp_host); ?>" size="30" class="<?php if ($posted == 1 && $ftp_host == "") echo "bgFormError"; ?>"> <?php echo $lang_port; ?>: <input type="text" name="ftp_port" value="<?php echo sanitizeStrTrim($ftp_port); ?>" size="3" class="<?php if ($posted == 1 && $ftp_port == "") echo "bgFormError"; ?>" tabindex="-1"> <p> <?php } ?> <?php echo $lang_username; ?>: <br> <input type="text" name="ftp_user" value="<?php echo sanitizeStrTrim($ftp_user); ?>" size="30" class="<?php if ($posted == 1 && $ftp_user == "") echo "bgFormError"; ?>"> <p><?php echo $lang_password; ?>: <br><input type="password" name="ftp_pass" value="<?php echo sanitizeStrTrim($ftp_pass); ?>" size="30" class="<?php if ($posted == 1 && $ftp_pass == "") echo "bgFormError"; ?>" autocomplete="off"> <p><input type="submit" value="<?php echo $lang_btn_login; ?>" id="btnLogin"> <br><br> <p><hr noshade> <?php if ($ftpHost == "") { ?> <p><input type="checkbox" name="ftp_pasv" value="1" <?php if ($ftp_pasv == 1) echo "checked"; ?> tabindex="-1"> <?php echo $lang_passive_mode; ?> <?php if (function_exists('ftp_ssl_connect')) { ?> <p><input type="checkbox" name="ftp_ssl" value="1" <?php if ($ftp_ssl == 1) echo "checked"; ?> tabindex="-1"> <?php echo $lang_ftp_ssl; ?> <?php } } ?> <?php if ($showLockSess == 1) { ?> <p><input type="checkbox" name="ip_check" value="1" <?php if ($ip_check == 1) echo "checked"; ?> tabindex="-1"> <?php echo $lang_ip_check; ?> <?php } ?> <?php if ($showAdvOption == 1) { ?> <p><input type="checkbox" name="interface" value="adv" <?php if ($interface == "adv" || $interface == "") echo "checked"; ?> tabindex="-1"> <?php echo $lang_adv_interface; ?> <?php } else { ?> <input type="hidden" name="interface" value=""> <?php } ?> <p><input type="checkbox" name="login_save" value="1" <?php if ($login_save == 1) echo "checked"; ?> tabindex="-1"> <?php echo $lang_save_login; ?> <p><hr noshade> <?php echo displayLangSelect($_SESSION["lang"]); ?> </div> </div> </div> </form> <?php // Reset error $_SESSION["login_error"] = ""; } } function checkLoginErrors() { global $ftpHost; // Check for blank fields if ($ftpHost == "") { if ($_POST["ftp_host"] == "" || trim($_POST["ftp_user"]) == "" || trim($_POST["ftp_pass"]) == "" || trim($_POST["ftp_port"]) == "") return 1; else return 0; } if ($ftpHost != "") { if (trim($_POST["ftp_user"]) == "" || trim($_POST["ftp_pass"]) == "") return 1; else return 0; } } function connectFTP($posted) { global $conn_id; global $lockOutTime; global $lang_cant_connect; global $lang_cant_authenticate; if ($_SESSION["ftp_host"] != "" && $_SESSION["ftp_port"] != "" && $_SESSION["ftp_user"] != "" && $_SESSION["ftp_pass"] != "") { // Connect if ($_SESSION["ftp_ssl"] == 1) $conn_id = @ftp_ssl_connect($_SESSION["ftp_host"], $_SESSION["ftp_port"]) or $connectFail = 1; else $conn_id = @ftp_connect($_SESSION["ftp_host"], $_SESSION["ftp_port"]) or $connectFail = 1; if ($connectFail == 1) { $_SESSION["login_error"] = $lang_cant_connect; return 0; } else { // Check for lockout $date_now = date("YmdHis"); if ($_SESSION["login_lockout"] == "" || ($_SESSION["login_lockout"] > 0 && $date_now > $_SESSION["login_lockout"])) { // Authenticate if (@ftp_login($conn_id, $_SESSION["ftp_user"], $_SESSION["ftp_pass"])) { if ($_SESSION["ftp_pasv"] == 1) @ftp_pasv($conn_id, true); $_SESSION["loggedin"] = 1; $_SESSION["login_fails"] = 0; return 1; } else { $_SESSION["login_error"] = $lang_cant_authenticate; // Count the failed login attempts (if form posted) if ($posted == 1) { $_SESSION["login_fails"]++; // Lock user for 5 minutes if 3 failed attempts if ($_SESSION["login_fails"] >= 3) $_SESSION["login_lockout"] = date("YmdHis") + ($lockOutTime * 60); } return 0; } } } } else { return 0; } } function displayFormStart() { ?> <form method="post" action="?" enctype="multipart/form-data" name="ftpActionForm" id="ftpActionForm"> <?php } function displayFormEnd() { ?> </form> <?php } function displayFiles() { echo "Zoulou"; ?> <div class="floatRight"> <input type="button" value="<?php echo "Logout"; ?>" onClick="actionFunctionLogout();" class="<?php echo adjustButtonWidth("Exit..."); ?> "> </div> <?php f_display(); } function adjustButtonWidth($str) { if (strlen(utf8_decode($str)) > 12) return "inputButtonNf"; else return "inputButton"; } function getPlatform() { global $conn_id; if ($_SESSION["win_lin"] == "") { $type = ftp_systype($conn_id); if (preg_match("/unix/i", $type, $matches)) $win_lin = "lin"; if (preg_match("/windows/i", $type, $matches)) $win_lin = "win"; $_SESSION["win_lin"] = $win_lin; } } function openFolder() { } function checkLogOut() { if ($_GET["logout"] == 1) logOut(); } function logOut() { $_SESSION["user_ip"] = ""; $_SESSION["loggedin"] = ""; $_SESSION["win_lin"] = ""; $_SESSION["login_error"] = ""; $_SESSION["login_fails"] = ""; $_SESSION["login_lockout"] = ""; $_SESSION["ftp_host"] = ""; $_SESSION["ftp_user"] = ""; $_SESSION["ftp_pass"] = ""; $_SESSION["ftp_port"] = ""; $_SESSION["ftp_pasv"] = ""; $_SESSION["interface"] = ""; $_SESSION["dir_current"] = ""; $_SESSION["dir_history"] = ""; $_SESSION["clipboard_chmod"] = ""; $_SESSION["clipboard_files"] = ""; $_SESSION["clipboard_folders"] = ""; $_SESSION["clipboard_rename"] = ""; $_SESSION["copy"] = ""; $_SESSION["errors"] = ""; $_SESSION["upload_limit"] = ""; session_destroy(); } function downloadFile() { } function quotesEscape($str, $type) { } function displayPopupOpen($resize, $width, $height, $isError, $title) { // Set default sizes of exceeded if ($resize == 1) { if ($width < 400) $width = 400; if ($height > 400) $height = 400; } $windowWidth = $_POST["windowWidth"]; $windowHeight = $_POST["windowHeight"]; // Center window if ($windowWidth > 0) $left = round(($windowWidth - $width) / 2 - 15); // -15 for H padding else $left = 250; if ($windowHeight > 0) $top = round(($_POST["windowHeight"] - $height) / 2 - 50); else $top = 250; echo "<div id=\"blackOutDiv\">"; echo "<div id=\"popupFrame\" style=\"left: " . $left . "px; top: " . $top . "px; width: " . $width . "px;\">"; if ($isError == 1) $divId = "popupHeaderError"; else $divId = "popupHeaderAction"; echo "<div id=\"" . $divId . "\">"; echo $title; echo "</div>"; if ($isError == 1) $divId = "popupBodyError"; else $divId = "popupBodyAction"; echo "<div id=\"" . $divId . "\" style=\"height: " . $height . "px;\">"; } function displayPopupClose($isError, $vars, $btnCancel) { global $lang_btn_ok; global $lang_btn_cancel; echo "</div>"; if ($isError == 1) $divId = "popupFooterError"; else $divId = "popupFooterAction"; echo "<div id=\"" . $divId . "\">"; // OK button if ($vars != "") echo "<input type=\"button\" class=\"popUpBtn\" value=\"" . $lang_btn_ok . "\" onClick=\"processForm('" . $vars . "'); activateActionButtons(0,0);\"> "; // Cancel button if ($btnCancel == 1) echo "<input type=\"button\" class=\"popUpBtn\" value=\"" . $lang_btn_cancel . "\" onClick=\"ajaxAbort(); processForm('&ftpAction=openFolder');\"> "; echo "</div>"; echo "</div>"; echo "</div>"; } function displayLangSelect($lang) { global $lang_language; global $languages_dir; $dir = "languages"; $lang_found = 0; if (is_dir($languages_dir)) { if ($dh = opendir($languages_dir)) { $i = 0; while (($file = readdir($dh)) !== false) { if (substr($file,-1) != "." && pathinfo($file, PATHINFO_EXTENSION) == "php") { $i++; $file_name = $file; // Open file to get language name include($languages_dir . "/" . $file_name); $lang_found = 1; // Strip extension //$file_name = preg_replace("/\..*$/", "", $file_name); $langs = "<option value=\"" . $file_name . "\""; if ($file_name == $lang) $langs .= " selected"; $langs .= ">"; $langs .= $file_lang_name; $langs .= "</option>"; $langsAr[] = $langs; // Restore session language file include($languages_dir . "/" . $lang); } } closedir($dh); if ($lang_found == 0) { echo "Language: <strong>languages</strong> folder empty!"; } else { if ($i > 1) { sort($langsAr); echo $lang_language . ": "; echo "<select name=\"lang\" tabindex=\"-1\">"; foreach ($langsAr AS $lang) { echo $lang; } echo "</select>"; } else { echo "<input type=\"hidden\" name=\"lang\" value=\"" . $file_name . "\">"; } } } else { echo "Language: <strong>languages</strong> folder locked!"; } } else { echo "Language: <strong>languages</strong> folder missing!"; } } function loadJsLangVars() { global $languages_dir; // Include language file again to save listing globals //$langFileArray = getFileArray("languages"); include($languages_dir . "/en_us.php"); //if (in_array($_SESSION["lang"], $langFileArray)) include($languages_dir . "/" . $_SESSION["lang"]); ?> <script type="text/javascript"> var lang_no_xmlhttp = '<?php echo quotesEscape($lang_no_xmlhttp, "s"); ?>'; var lang_support_drop = '<?php echo quotesEscape($lang_support_drop, "s"); ?>'; var lang_no_support_drop = '<?php echo quotesEscape($lang_no_support_drop, "s"); ?>'; var lang_transfer_pending = '<?php echo quotesEscape($lang_transfer_pending, "s"); ?>'; var lang_transferring_to_ftp = '<?php echo quotesEscape($lang_transferring_to_ftp, "s"); ?>'; var lang_no_file_selected = '<?php echo quotesEscape($lang_no_file_selected, "s"); ?>'; var lang_none_selected = '<?php echo quotesEscape($lang_none_selected, "s"); ?>'; var lang_context_open = '<?php echo quotesEscape($lang_context_open, "s"); ?>'; var lang_context_download = '<?php echo quotesEscape($lang_context_download, "s"); ?>'; var lang_context_edit = '<?php echo quotesEscape($lang_context_edit, "s"); ?>'; var lang_context_cut = '<?php echo quotesEscape($lang_context_cut, "s"); ?>'; var lang_context_copy = '<?php echo quotesEscape($lang_context_copy, "s"); ?>'; var lang_context_paste = '<?php echo quotesEscape($lang_context_paste, "s"); ?>'; var lang_context_rename = '<?php echo quotesEscape($lang_context_rename, "s"); ?>'; var lang_context_delete = '<?php echo quotesEscape($lang_context_delete, "s"); ?>'; var lang_context_chmod = '<?php echo quotesEscape($lang_context_chmod, "s"); ?>'; var lang_size_b = '<?php echo quotesEscape($lang_size_b, "s"); ?>'; var lang_size_kb = '<?php echo quotesEscape($lang_size_kb, "s"); ?>'; var lang_size_mb = '<?php echo quotesEscape($lang_size_mb, "s"); ?>'; var lang_size_gb = '<?php echo quotesEscape($lang_size_gb, "s"); ?>'; var lang_btn_upload_file = '<?php echo quotesEscape($lang_btn_upload_file, "s"); ?>'; var lang_btn_upload_files = '<?php echo quotesEscape($lang_btn_upload_files, "s"); ?>'; var lang_btn_upload_repeat = '<?php echo quotesEscape($lang_btn_upload_repeat, "s"); ?>'; var lang_btn_upload_folder = '<?php echo quotesEscape($lang_btn_upload_folder, "s"); ?>'; var lang_file_size_error = '<?php echo quotesEscape($lang_file_size_error, "s"); ?>'; var upload_limit = '<?php echo $_SESSION["upload_limit"]; ?>'; </script> <?php } function setLangFile() { global $languages_dir; // The order of these determines the proper display if ($_COOKIE["lang"] != "") $lang = $_COOKIE["lang"]; if ($_SESSION["lang"] != "") $lang = $_SESSION["lang"]; if (isset($_POST["lang"])) $lang = $_POST["lang"]; if ($lang == "") { if (is_dir($languages_dir)) { if ($dh = opendir($languages_dir)) { while (($file = readdir($dh)) !== false) { if ($file != "." && $file != ".." && pathinfo($file, PATHINFO_EXTENSION) == "php") { include($languages_dir . "/" . $file); if ($file_lang_default == 1) $lang = $file; } } closedir($dh); } } } else { if (checkFileInclude($lang,$languages_dir) != 1) $lang = "en_us.php"; } $_SESSION["lang"] = $lang; } function sessionExpired($message) { global $lang_title_ended; global $lang_btn_login; $title = $lang_title_ended; displayPopupOpen(1, 200, 90, 1, $title); echo $message; echo "<p><input type=\"button\" id=\"btnLogin\" value=\"" . $lang_btn_login . "\" onClick=\"document.location.href='?openFolder=" . rawurlencode($_POST["openFolder"]) . "'\">"; displayPopupClose(1, "", 0); } function checkReferer() { global $lang_session_expired; $domain = $_SESSION["domain"]; $domain = str_replace(".", "\.", $domain); if (preg_match("/" . $domain . "/", $_SERVER["HTTP_REFERER"])) { return 1; } else { sessionExpired($lang_session_expired); logOut(); return 0; } } function sanitizeStr($str) { $str = str_replace("&", "&", $str); $str = str_replace('"', '"', $str); $str = str_replace("<", "<", $str); $str = str_replace(">", ">", $str); return $str; } function sanitizeStrTrim($str) { return sanitizeStr(trim($str)); } function checkFileInclude($file_check,$dir) { $file_found = 0; if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false && $file_found == 0) { if ($file != "." && $file != "..") { if ($file == $file_check) $file_found = 1; } } closedir($dh); } } return $file_found; } /***************************************************************/ function f_display() { global $conn_id; global $lang_table_name; global $lang_table_size; global $lang_table_date; global $lang_table_time; global $lang_table_user; global $lang_table_group; global $lang_table_perms; $ftp_rawlist = getFtpRawList($_SESSION["dir_current"]); # TABLE HEADER echo "<table width=\"100%\" cellpadding=\"7\" cellspacing=\"0\" id=\"ftpTable\">"; echo "<tr>"; echo "<td width=\"16\" class=\"ftpTableHeadingNf\"><input type=\"checkbox\" id=\"checkboxSelector\" onClick=\"checkboxSelectAll()\"></td>"; echo "<td width=\"16\" class=\"ftpTableHeadingNf\"></td>"; echo "<td class=\"ftpTableHeading\">" . getFtpColumnSpan("n", $lang_table_name) . "</td>"; echo "<td width=\"10%\" class=\"ftpTableHeading\">" . getFtpColumnSpan("s", $lang_table_size) . "</td>"; echo "<td width=\"10%\" class=\"ftpTableHeading\">" . getFtpColumnSpan("d", $lang_table_date) . "</td>"; echo "<td width=\"10%\" class=\"ftpTableHeading\">" . getFtpColumnSpan("t", $lang_table_time) . "</td>"; // Only display permissions/user/group for Linux advanced if ($_SESSION["interface"] == "adv" && $_SESSION["win_lin"] != "win") { echo "<td width=\"10%\" class=\"ftpTableHeading\">" . $lang_table_user . "</td>"; echo "<td width=\"10%\" class=\"ftpTableHeading\">" . $lang_table_group . "</td>"; echo "<td width=\"10%\" class=\"ftpTableHeading\">" . $lang_table_perms . "</td>"; } echo "</tr>"; # FOLDER UP BUTTON if ($_SESSION["dir_current"] != "/" && $_SESSION["dir_current"] != "~") { echo "<tr>"; echo "<td width=\"16\"></td>"; echo "<td width=\"16\"><img src=\"images/icon_16_folder.gif\" width=\"16\" height=\"16\" alt=\"\"></td>"; if ($_SESSION["interface"] == "adv") echo "<td colspan=\"7\">"; else echo "<td colspan=\"4\">"; // Get the parent directory $parent = getParentDir($_SESSION["dir_current"]); echo "<div class=\"width100pc\" onDragOver=\"dragFile(event); selectFile('folder0',0);\" onDragLeave=\"unselectFolder('folder0')\" onDrop=\"dropFile('" . rawurlencode($parent) . "')\"><a href=\"#\" id=\"folder0\" draggable=\"false\" onClick=\"openThisFolder('" . rawurlencode($parent) . "',1)\">...</a></div>"; echo "</td>"; echo "</tr>"; } # FOLDERS & FILES if (sizeof($ftp_rawlist) > 0) { // Linux if ($_SESSION["win_lin"] == "lin" || $_SESSION["win_lin"] == "mac") { echo createFileFolderArrayLin($ftp_rawlist, "folders"); echo createFileFolderArrayLin($ftp_rawlist, "links"); echo createFileFolderArrayLin($ftp_rawlist, "files"); } // Windows elseif ($_SESSION["win_lin"] == "win") { echo createFileFolderArrayWin($ftp_rawlist, "folders"); echo createFileFolderArrayWin($ftp_rawlist, "files"); } } # CLOSE TABLE echo "</table>"; } function getFtpRawList($folder_path) { // Because ftp_rawlist() doesn't support folders with spaces in // their names, it is neccessary to first change into the directory. global $conn_id; global $lang_folder_cant_access; $isError = 0; if (!@ftp_chdir($conn_id, $folder_path)) { if (checkFirstCharTilde($folder_path) == 1) { if (!@ftp_chdir($conn_id, replaceTilde($folder_path))) { recordFileError("folder", replaceTilde($folder_path), $lang_folder_cant_access); $isError = 1; } } else { recordFileError("folder", $folder_path, $lang_folder_cant_access); $isError = 1; } } if ($isError == 0) return ftp_rawlist($conn_id, "."); } function checkFirstCharTilde($str) { if (substr($str, 0, 1) == "~") return 1; else return 0; } function replaceTilde($str) { $str = str_replace("~", "/", $str); $str = str_replace("//", "/", $str); return $str; } function recordFileError($str, $file_name, $error) { $_SESSION["errors"][] = str_replace("[" . $str . "]", "<strong>" . sanitizeStr($file_name) . "</strong>", $error); } function getParentDir($folder) { // Check for Windows backslash if ($folder == "\\") $folder = "/"; if ($folder == "/") { return "/"; } else { $path_parts = pathinfo($folder); return $path_parts['dirname']; } } function createFileFolderArrayLin($ftp_rawlist, $type) { global $showDotFiles; // Go through array of files/folders foreach ($ftp_rawlist AS $ff) { // Reset values $time = ""; $year = ""; // Split up array into values //$ff = preg_split("/[\s]+/", $ff, 9); preg_match('/'. str_repeat('([^\s]+)\s+',7) . '([^\s]+) (.+)/', $ff, $matches); $ff = array_slice($matches, 1); $perms = $ff[0]; $user = $ff[2]; $group = $ff[3]; $size = $ff[4]; $month = $ff[5]; $day = $ff[6]; $file = $ff[8]; // Check if file starts with a dot $dot_prefix = 0; if ($showDotFiles == 0) { if (preg_match("/^\.+/", $file)) $dot_prefix = 1; } if ($file != "." && $file != ".." && $dot_prefix == 0) { // Where the last mod date is the previous year, the year will be displayed in place of the time if (preg_match("/:/", $ff[7])) $time = $ff[7]; else $year = $ff[7]; // Set date $date = formatFtpDate($day, $month, $year); // Reset user and group if ($user == "0") $user = "-"; if ($group == "0") $group = "-"; // Add folder to array if (getFileType($perms) == "d") { $foldAllAr[] = $file . "|d|" . $date . "|" . $time . "|" . $user . "|" . $group . "|" . $perms; $foldNameAr[] = $file; $foldDateAr[] = $date; $foldTimeAr[] = $time; $foldUserAr[] = $user; $foldGroupAr[] = $group; $foldPermsAr[] = $perms; } // Add link to array if (getFileType($perms) == "l") { $linkAllAr[] = $file . "|l|" . $date . "|" . $time . "|" . $user . "|" . $group . "|" . $perms; $linkNameAr[] = $file; $linkDateAr[] = $date; $linkTimeAr[] = $time; $linkUserAr[] = $user; $linkGroupAr[] = $group; $linkPermsAr[] = $perms; } // Add file to array if (getFileType($perms) == "f") { $fileAllAr[] = $file . "|" . $size . "|" . $date . "|" . $time . "|" . $user . "|" . $group . "|" . $perms; $fileNameAr[] = $file; $fileSizeAr[] = $size; $fileDateAr[] = $date; $fileTimeAr[] = $time; $fileUserAr[] = $user; $fileGroupAr[] = $group; $filePermsAr[] = $perms; } } } // Check there are files and/or folders to display if (is_array($foldAllAr) || is_array($linkAllAr) || is_array($fileAllAr)) { // Set sorting order if ($_POST["sort"] == "") $sort = "n"; else $sort = $_POST["sort"]; if ($_POST["ord"] == "") $ord = "asc"; else $ord = $_POST["ord"]; // Return folders if ($type == "folders") { if (is_array($foldAllAr)) { // Set the folder arrays to sort if ($sort == "n") $sortAr = $foldNameAr; if ($sort == "d") $sortAr = $foldDateAr; if ($sort == "t") $sortAr = $foldTimeAr; if ($sort == "u") $sortAr = $foldUserAr; if ($sort == "g") $sortAr = $foldGroupAr; if ($sort == "p") $sortAr = $foldPermsAr; // Multisort array if (is_array($sortAr)) { if ($ord == "asc") array_multisort($sortAr, SORT_ASC, $foldAllAr); else array_multisort($sortAr, SORT_DESC, $foldAllAr); } // Format and display folder content $folders = getFileListHtml($foldAllAr, "icon_16_folder.gif"); } return $folders; } // Return links if ($type == "links") { if (is_array($linkAllAr)) { // Set the folder arrays to sort if ($sort == "n") $sortAr = $linkNameAr; if ($sort == "d") $sortAr = $linkDateAr; if ($sort == "t") $sortAr = $linkTimeAr; if ($sort == "u") $sortAr = $linkUserAr; if ($sort == "g") $sortAr = $linkGroupAr; if ($sort == "p") $sortAr = $linkPermsAr; // Multisort array if (is_array($sortAr)) { if ($ord == "asc") array_multisort($sortAr, SORT_ASC, $linkAllAr); else array_multisort($sortAr, SORT_DESC, $linkAllAr); } // Format and display folder content $links = getFileListHtml($linkAllAr, "icon_16_link.gif"); } return $links; } // Return files if ($type == "files") { if (is_array($fileAllAr)) { // Set the folder arrays to sort if ($sort == "n") $sortAr = $fileNameAr; if ($sort == "s") $sortAr = $fileSizeAr; if ($sort == "d") $sortAr = $fileDateAr; if ($sort == "t") $sortAr = $fileTimeAr; if ($sort == "u") $sortAr = $fileUserAr; if ($sort == "g") $sortAr = $fileGroupAr; if ($sort == "p") $sortAr = $filePermsAr; // Multisort folders if ($ord == "asc") array_multisort($sortAr, SORT_ASC, $fileAllAr); else array_multisort($sortAr, SORT_DESC, $fileAllAr); // Format and display file content $files = getFileListHtml($fileAllAr, "icon_16_file.gif"); } return $files; } } } function createFileFolderArrayWin($ftp_rawlist, $type) { // Go through array of files/folders foreach ($ftp_rawlist AS $ff) { // Split up array into values $ff = preg_split("/[\s]+/", $ff, 4); $date = $ff[0]; $time = $ff[1]; $size = $ff[2]; $file = $ff[3]; if ($size == "<DIR>") $size = "d"; // Format date $day = substr($date, 3, 2); $month = substr($date, 0, 2); $year = substr($date, 6, 4); $date = formatFtpDate($day, $month, $year); // Format time $time = formatWinFtpTime($time); // Add folder to array if ($size == "d") { $foldAllAr[] = $file . "|d|" . $date . "|" . $time . "|||"; $foldNameAr[] = $file; $foldDateAr[] = $date; $foldTimeAr[] = $time; } // Add file to array if ($size != "d") { $fileAllAr[] = $file . "|" . $size . "|" . $date . "|" . $time . "|||"; $fileNameAr[] = $file; $fileSizeAr[] = $size; $fileDateAr[] = $date; $fileTimeAr[] = $time; } } // Check there are files and/or folders to display if (is_array($foldAllAr) || is_array($fileAllAr)) { // Set sorting order if ($_POST["sort"] == "") $sort = "n"; else $sort = $_POST["sort"]; if ($_POST["ord"] == "") $ord = "asc"; else $ord = $_POST["ord"]; // Return folders if ($type == "folders") { if (is_array($foldAllAr)) { // Set the folder arrays to sort if ($sort == "n") $sortAr = $foldNameAr; if ($sort == "d") $sortAr = $foldDateAr; if ($sort == "t") $sortAr = $foldTimeAr; // Multisort array if (is_array($sortAr)) { if ($ord == "asc") array_multisort($sortAr, SORT_ASC, $foldAllAr); else array_multisort($sortAr, SORT_DESC, $foldAllAr); } // Format and display folder content $folders = getFileListHtml($foldAllAr, "icon_16_folder.gif"); } return $folders; } // Return files if ($type == "files") { if (is_array($fileAllAr)) { // Set the folder arrays to sort if ($sort == "n") $sortAr = $fileNameAr; if ($sort == "s") $sortAr = $fileSizeAr; if ($sort == "d") $sortAr = $fileDateAr; if ($sort == "t") $sortAr = $fileTimeAr; // Multisort folders if ($ord == "asc") array_multisort($sortAr, SORT_ASC, $fileAllAr); else array_multisort($sortAr, SORT_DESC, $fileAllAr); // Format and display file content $files = getFileListHtml($fileAllAr, "icon_16_file.gif"); } return $files; } } } function formatFtpDate($day, $month, $year) { // Add leading zero to day if (strlen($day) == 1) $day = "0" . $day; if ($month == "Jan") $month = "01"; if ($month == "Feb") $month = "02"; if ($month == "Mar") $month = "03"; if ($month == "Apr") $month = "04"; if ($month == "May") $month = "05"; if ($month == "Jun") $month = "06"; if ($month == "Jul") $month = "07"; if ($month == "Aug") $month = "08"; if ($month == "Sep") $month = "09"; if ($month == "Oct") $month = "10"; if ($month == "Nov") $month = "11"; if ($month == "Dec") $month = "12"; // Set the year if none if ($year == "") { // First check if the date falls within the last 12 months (as year only appears after 12 months has passed) $current_month = date("m"); if ($month > $current_month) $year = date("Y") - 1; else $year = date("Y"); } if (strlen($year) == 2) { // To avoid a future Y2K problem, check the first two digits of year on Windows if ($year > 00 && $year < 99) $year = substr(date("Y"), 0, 2) . $year; else $year = (substr(date("Y"), 0, 2) - 1) . $year; } $date = $year . $month . $day; return $date; } function formatWinFtpTime($time) { $h = substr($time, 0, 2); $m = substr($time, 3, 2); $am_pm = substr($time, 5, 2); if ($am_pm == "PM") $h = $h + 12; $time = $h . ":" . $m; return $time; } function getFileListHtml($array, $image) { global $trCount; global $dateFormatUsa; if ($trCount == 1) $trCount = 1; else $trCount = 0; $i = 1; foreach ($array AS $file) { list($file, $size, $date, $time, $user, $group, $perms) = explode("|", $file); // Folder check (lin/win) if ($size == "d") $action = "folderAction"; // Link check (lin/win) if ($size == "l") $action = "linkAction"; // File check (lin/win) if ($size != "d" && $size != "l") $action = "fileAction"; // Set file path if ($size == "l") { $file_path = getPathFromLink($file); $file = preg_replace("/ -> .*/", "", $file); } else { if ($_SESSION["dir_current"] == "/") $file_path = "/" . $file; else $file_path = $_SESSION["dir_current"] . "/" . $file; } if ($trCount == 0) { $trClass = "trBg0"; $trCount = 1; } else { $trClass = "trBg1"; $trCount = 0; } // Check for checkbox check (only if action button clicked) if ($_POST["ftpAction"] != "") { if ((sizeof($_SESSION["clipboard_rename"]) > 1 && in_array($file, $_SESSION["clipboard_rename"])) || (sizeof($_SESSION["clipboard_chmod"]) > 1 && in_array($file_path, $_SESSION["clipboard_chmod"]))) $checked = "checked"; else $checked = ""; } else { $checked = ""; } // Set the date if ($dateFormatUsa == 1) $date = substr($date, 4, 2) . "/" . substr($date, 6, 2) . "/" . substr($date, 2, 2); else $date = substr($date, 6, 2) . "/" . substr($date, 4, 2) . "/" . substr($date, 2, 2); $html .= "<tr class=\"" . $trClass . "\">"; $html .= "<td>"; $html .= "<input type=\"checkbox\" name=\"" . $action . "[]\" value=\"" . rawurlencode($file_path) . "\" onclick=\"checkFileChecked()\" " . $checked . ">"; $html .= "</td>"; $html .= "<td><img src=\"images/" . $image . "\" width=\"16\" height=\"16\"></td>"; $html .= "<td>"; // Display Folders if ($action == "folderAction") $html .= "<div class=\"width100pc\" onDragOver=\"dragFile(event); selectFile('folder" . $i . "',0);\" onDragLeave=\"unselectFolder('folder" . $i . "')\" onDrop=\"dropFile('" . rawurlencode($file_path) . "')\"><a href=\"#\" id=\"folder" . $i . "\" onClick=\"openThisFolder('" . rawurlencode($file_path) . "',1)\" onContextMenu=\"selectFile(this.id,1); displayContextMenu(event,'','" . rawurlencode($file_path) . "'," . assignWinLinNum() . ")\" draggable=\"true\" onDragStart=\"selectFile(this.id,1); setDragFile('','" . rawurlencode($file_path) . "')\">" . str_replace(" "," ",sanitizeStr($file)) . "</a></div>"; // Display Links if ($action == "linkAction") $html .= "<div class=\"width100pc\"><a href=\"#\" id=\"folder" . $i . "\" onClick=\"openThisFolder('" . rawurlencode($file_path) . "',1)\" onContextMenu=\"\" draggable=\"false\">" . str_replace(" "," ",sanitizeStr($file)) . "</a></div>"; // Display files if ($action == "fileAction") $html .= "<a href=\"?dl=" . rawurlencode($file_path) . "\" id=\"file" . $i . "\" target=\"ajaxIframe\" onContextMenu=\"selectFile(this.id,1); displayContextMenu(event,'" . rawurlencode($file_path) . "',''," . assignWinLinNum() . ")\" draggable=\"true\" onDragStart=\"selectFile(this.id,1); setDragFile('" . rawurlencode($file_path) . "','')\">" . str_replace(" "," ",sanitizeStr($file)) . "</a>"; $html .= "</td>"; $html .= "<td>" . formatFileSize($size) . "</td>"; $html .= "<td>" . $date . "</td>"; $html .= "<td>" . $time . "</td>"; if ($_SESSION["interface"] == "adv" && ($_SESSION["win_lin"] == "lin" || $_SESSION["win_lin"] == "mac")) { $html .= "<td>" . $user . "</td>"; $html .= "<td>" . $group . "</td>"; $html .= "<td>" . $perms . "</td>"; } $html .= "</tr>"; $i++; } return $html; } function formatFileSize($size) { global $lang_size_b; global $lang_size_kb; global $lang_size_mb; global $lang_size_gb; if ($size == "d" || $size == "l") { $size = ""; } else { if ($size < 1024) { $size = round($size, 2); //$size = round($size,2).$lang_size_b; } elseif ($size < (1024 * 1024)) { $size = round(($size / 1024), 0) . $lang_size_kb; } elseif ($size < (1024 * 1024 * 1024)) { $size = round((($size / 1024) / 1024), 0) . $lang_size_mb; } elseif ($size < (1024 * 1024 * 1024 * 1024)) { $size = round(((($size / 1024) / 1024) / 1024), 0) . $lang_size_gb; } } return $size; } function getPathFromLink($file) { $file_path = preg_replace("/.* -> /", "", $file); // Check if path is not absolute if (substr($file_path, 0, 1) != "/") { // Count occurances of ../ $i = 0; while (substr($file_path, 0, 3) == "../") { $i++; $file_path = substr($file_path, 3, strlen($file_path)); } $dir_current = $_SESSION["dir_current"]; // Get the real parent for ($j = 0; $j < $i; $j++) { $dir_current = getParentDir($dir_current); } // Set the path if ($dir_current == "/") $file_path = "/" . $file_path; else $file_path = $dir_current . "/" . $file_path; } if ($file_path == "~/") $file_path = "~"; return $file_path; } function displayAjaxIframe() { ?> <iframe name="ajaxIframe" id="ajaxIframe" width="0" height="0" style="display:none;visibility:hidden;border:0"></iframe> <?php } function loadAjax() { ?> <script type="text/javascript" src="ajax.js?<?php echo date("U"); ?>" charset="utf-8"></script> <?php } ?> <script> function actionFunctionLogout() { document.location.href = '?logout=1' } </script>