![]() Server : Apache/2.4.62 (Unix) OpenSSL/1.0.2k-fips System : Linux server1.richineiserver.com 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : fdshops ( 1003) PHP Version : 8.2.21 Disable Function : NONE Directory : /usr/local/apache/htdocs/webftp_simple/ |
<?php error_reporting(0); $version = "1.4.5"; // Enter the host address/port/mode if it should always be a fixed host address. // Leave this blank if you want the user to input their host address. $ftpHost = "127.0.0.1"; $ftpPort = "21"; // 21 is the default $ftpMode = "1"; // 1 for passive, 0 for not passive (passive is default) $ftpSSL = "0"; // 1 for SSL, 0 for not SSL - your (server must support ftp_ssl_connect() to use this) $ftpDir = ""; // Enter an FTP server path for the default login (or leave blank for home folder) // This is a folder on the client server for uploading files to // By default it's /tmp, which is the server's folder for temporary // files, however you can set any folder, provided it has 777 chmod // permissions, so it can be written to from the web. $serverTmp = "/tmp"; // Include a list of file types that can be edited in the text editor $editableExts = "conf,cnf,asp,ashx,asmx,aspx,asx,axd,cfm,cgi,css,html,htm,jhtml,js,php,phtml,pl,txt,xhtml"; // USA date format - 1 for mm/dd/yy, 0 for dd/mm/yy $dateFormatUsa = 0; // The number of minutes to lockout invalid logins $lockOutTime = 5; ############################################### # SANITZE VARS (DEPRECATED) ############################################### //sanitizeVars(); ############################################### # SAVE DETAILS TO COOKIE ############################################### saveFtpDetailsCookie(); ############################################### # START SESSION ############################################### startSession(); ############################################### # INCLUDE LANGUAGE FILE ############################################### if ($_SESSION["lang"] == "" || isset($_POST["lang"])) setLangFile(); $langFileArray = getFileArray("languages"); if (in_array($_SESSION["lang"],$langFileArray)) include("languages/".$_SESSION["lang"].".php"); else include("languages/en_us.php"); ############################################### # SET VARS ############################################### // Check for file download if (isset($_GET["dl"])) $ftpAction = "download"; // Check for iFrame upload if ($_GET["ftpAction"] == "iframe_upload") $ftpAction = "iframe_upload"; // Check for iFrame edit if ($_GET["ftpAction"] == "editProcess") $ftpAction = "editProcess"; // Check for AJAX post if ($_POST["ftpAction"] != "" || $_GET["ftpAction"] != "") $ajaxRequest=1; else $ajaxRequest=0; // Check resetting upload erreor array if ($_POST["resetErrorArray"] == 1 || $ajaxRequest == 0 ) { $_SESSION["errors"] = array(); } // Set file upload limit setUploadLimit(); ############################################### # LOAD CONTENT ############################################### // These check vars are set in the "SET VARS" section if ($ftpAction == "download" || $ftpAction == "iframe_upload" || $ftpAction == "editProcess") { // Login attemptLogin(); // Check referer if (checkReferer() == 1) { // Display content when logged in if ($_SESSION["loggedin"] == 1) { if ($ftpAction == "download") { downloadFile(); parentOpenFolder(); } if ($ftpAction == "iframe_upload") { iframeUpload(); parentOpenFolder(); } if ($ftpAction == "editProcess") { editProcess(); } } } } else { if ($ajaxRequest == 0) { // Check if logout link has been clicked checkLogOut(); // Include the header displayHeader(); } // Attempt to login with session or post vars attemptLogin(); // Check referer if (checkReferer() == 1) { // Process any FTP actions processActions(); // Display content when logged in if ($_SESSION["loggedin"] == 1) { if ($ajaxRequest == 0) { displayFormStart(); displayFtpActions(); displayAjaxDivOpen(); } // Display FTP folder history displayFtpHistory(); // Display folder/file listing displayFiles(); // Load error window displayErrors(); if ($ajaxRequest == 0) { displayAjaxDivClose(); displayAjaxIframe(); displayUploadProgress(); displayAjaxFooter(); loadJsLangVars(); loadAjax(); writeHiddenDivs(); displayFormEnd(); //displayAjaxIframe(); loadEditableExts(); } } if ($ajaxRequest == 0) { // Include the footer displayFooter(); } } } // Close FTP connection @ftp_close($conn_id); ############################################### # START SESSION ############################################### function startSession() { @session_start(); $sessionAr[] = "user_ip"; $sessionAr[] = "loggedin"; $sessionAr[] = "skin"; $sessionAr[] = "lang"; $sessionAr[] = "win_lin"; $sessionAr[] = "ip_check"; $sessionAr[] = "login_error"; $sessionAr[] = "login_fails"; $sessionAr[] = "login_lockout"; $sessionAr[] = "ftp_ssl"; $sessionAr[] = "ftp_host"; $sessionAr[] = "ftp_user"; $sessionAr[] = "ftp_pass"; $sessionAr[] = "ftp_port"; $sessionAr[] = "ftp_pasv"; $sessionAr[] = "interface"; $sessionAr[] = "dir_current"; $sessionAr[] = "dir_history"; $sessionAr[] = "clipboard_chmod"; $sessionAr[] = "clipboard_files"; $sessionAr[] = "clipboard_folders"; $sessionAr[] = "clipboard_rename"; $sessionAr[] = "copy"; $sessionAr[] = "errors"; $sessionAr[] = "upload_limit"; $sessionAr[] = "domain"; // Register each variable in the array $n = sizeof($sessionAr); for ($i=0;$i<$n;$i++) { if (!isset($sessionAr[$i])) session_register($sessionAr[$i]); } } ############################################### # SET COOKIE BEFORE HEADER ############################################### 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("skin", $_POST["skin"], 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("skin", "", time()-3600); setcookie("lang", "", time()-3600); setcookie("ip_check", "", time()-3600); } } } ############################################### # CHECK IF LOGGED IN ############################################### 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 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"] = $_POST["ftp_pasv"]; $_SESSION["ftp_ssl"] = $_POST["ftp_ssl"]; } 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"] = $_POST["interface"]; $_SESSION["skin"] = $_POST["skin"]; $_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); } } } ############################################### # DISPLAY HEADER ############################################### function displayHeader() { global $version; // The order of these determines the proper display if ($_COOKIE["skin"] != "") $skin = $_COOKIE["skin"]; if ($_SESSION["skin"] != "") $skin = $_SESSION["skin"]; if (isset($_POST["skin"])) $skin = $_POST["skin"]; if ($skin == "") $skin = "monsta"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>FTP v<?php echo $version; ?></title> <link href="style.css" rel="stylesheet" type="text/css"> <link href="skins/<?php echo sanitizeStr($skin); ?>.css" rel="stylesheet" type="text/css"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="X-Frame-Options" content="sameorigin"> </head> <body <?php if ($_POST["login"] == 1) { ?>onresize="setFileWindowSize('ajaxContentWindow',0,0);"<?php }?>> <?php } ############################################### # DISPLAY FOOTER ############################################### function displayFooter() { ?> </body> </html> <?php } ############################################### # DISPLAY LOGIN FORM ############################################### function displayLoginForm($posted) { global $version; 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; // 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"]; $skin = $_POST["skin"]; $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"]; $skin = $_COOKIE["skin"]; $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">WebFTP (CWP)</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 $_GET["openFolder"]; ?>"> <?php if ($ftpHost == "") { ?> <?php echo $lang_ftp_host; ?>: <br><input type="text" name="ftp_host" value="<?php echo sanitizeStr($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 sanitizeStr($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 sanitizeStr($ftp_user); ?>" class="<?php if ($posted==1 && $ftp_user=="") echo "bgFormError"; ?>"> <p><?php echo $lang_password; ?>: <br><input type="password" name="ftp_pass" value="<?php echo sanitizeStr($ftp_pass); ?>" class="<?php if ($posted==1 && $ftp_pass=="") echo "bgFormError"; ?>" autocomplete="off"> <div class="floatLeft"> <input type="submit" value="<?php echo $lang_btn_login; ?>" id="btnLogin"> </div> <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; ?> <p><input type="checkbox" name="ftp_ssl" value="1" <?php if ($ftp_ssl == 1) echo "checked"; ?> tabindex="-1"> <?php echo $lang_ftp_ssl; ?> <?php }?> <p><input type="checkbox" name="ip_check" value="1" <?php if ($ip_check == 1) echo "checked"; ?> tabindex="-1"> <?php echo $lang_ip_check; ?> <p><input type="checkbox" name="interface" value="adv" <?php if ($interface == "adv" || $interface == "") echo "checked"; ?> tabindex="-1"> <?php echo $lang_adv_interface; ?> <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"]); ?> <?php echo displaySkinSelect($skin); ?> </div> </div> </div> </form> <?php // Reset error $_SESSION["login_error"] = ""; } } ############################################### # CHECK LOGIN ERRORS ############################################### 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; } } ############################################### # CONNECT TO FTP ############################################### 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; } } ############################################### # WRITE HIDDEN DIVS ############################################### function writeHiddenDivs() { ?> <div id="contextMenu" style="visibility: hidden; display: none;"></div> <div id="indicatorDiv" style="z-index: 1; visibility: hidden; display: none"><img src="images/indicator.gif" width="32" height="32" border="0"></div> <?php } ############################################### # START FORM ############################################### function displayFormStart() { ?> <form method="post" action="?" enctype="multipart/form-data" name="ftpActionForm" id="ftpActionForm"> <?php } ############################################### # END FORM ############################################### function displayFormEnd() { ?> </form> <?php } ############################################### # DISPLAY IFRAME ############################################### function displayAjaxIframe() { ?> <iframe name="ajaxIframe" id="ajaxIframe" width="0" height="0" frameborder="0" style="visibility: hidden; display: none;"></iframe> <?php } ############################################### # LOAD AJAX ############################################### function loadAjax() { ?> <script type="text/javascript" src="ajax.js"></script> <?php } ############################################### # GET FTP RAWLIST ############################################### // Because ftp_rawlist() doesn't support folders with spaces in // their names, it is neccessary to first change into the directory. function getFtpRawList($folder_path) { 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",$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, "."); } ############################################### # DISPLAY FILES & FOLDERS ############################################### function displayFiles() { 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"]); #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # FOLDER/FILES 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\"></td>"; if ($_SESSION["interface"] == "adv") echo "<td colspan=\"7\">"; else echo "<td colspan=\"4\">"; // Get the parent directory $parent = getParentDir(); 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") { echo createFileFolderArrayLin($ftp_rawlist,"folders"); echo createFileFolderArrayLin($ftp_rawlist,"links"); echo createFileFolderArrayLin($ftp_rawlist,"files"); } // Windows if ($_SESSION["win_lin"] == "win") { echo createFileFolderArrayWin($ftp_rawlist,"folders"); echo createFileFolderArrayWin($ftp_rawlist,"files"); } } #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # CLOSE TABLE #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ echo "</table>"; } ############################################### # GET PLATFORM ############################################### function getPlatform() { global $conn_id; global $platformTestCount; if ($_SESSION["win_lin"] == "") { $ftp_rawlist = ftp_rawlist($conn_id, "."); // Check for content in array if (sizeof($ftp_rawlist) == 0) { $platformTestCount++; // Create a test folder if (@ftp_mkdir($conn_id, "test")) { if ($platformTestCount < 2) { getPlatform(); @ftp_rmdir($conn_id, "test"); } } } else { // Get first item in array $ff = $ftp_rawlist[0]; // Split up array into values $ff = preg_split("/[\s]+/",$ff,9); // First item in Linux rawlist is permissions. In Windows it's date. // If length of first item in array line is 8 chars, without a-z, it's a date. if (strlen($ff[0]) == 8 && !preg_match("/[a-z]/i", $ff[0], $matches)) $win_lin = "win"; if (strlen($ff[0]) == 10 && !preg_match("/[0-9]/i", $ff[0], $matches)) $win_lin = "lin"; $_SESSION["win_lin"] = $win_lin; } } } ############################################### # CREATE FILE/FOLDER ARRAY FOR LINUX ############################################### function createFileFolderArrayLin($ftp_rawlist,$type) { // 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); $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 (preg_match("/^\.+/",$file) && $_SESSION["interface"] == "bas") $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; } } } ############################################### # CREATE FILE/FOLDER ARRAY FOR WINDOWS ############################################### 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,2); $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; } } } ############################################### # GET FTP COLUMN SPAN ############################################### 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)."')\">".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\">".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)."','')\">".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") { $html .= "<td>".$user."</td>"; $html .= "<td>".$group."</td>"; $html .= "<td>".$perms."</td>"; } $html .= "</tr>"; $i++; } return $html; } ############################################### # GET PATH FROM LINK ############################################### 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++) { $path_parts = pathinfo($dir_current); $dir_current = $path_parts['dirname']; } // 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; } ############################################### # FORMAT FTP DATE ############################################### function formatFtpDate($day,$month,$year) { if (strlen($day) == 1) $day = "0".$day; if ($year == "") $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; } 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"; $date = $year.$month.$day; return $date; } ############################################### # FORMAT WINDOWS FTP TIME ############################################### 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; } ############################################### # CHANGE FTP DIRECTORY (OPEN FOLDER) ############################################### function openFolder() { global $conn_id; global $lang_folder_doesnt_exist; $isError=0; if ($_SESSION["loggedin"] == 1) { // Set the folder to open if ($_SESSION["dir_current"] != "") $dir = $_SESSION["dir_current"]; if ($_POST["openFolder"] != "") $dir = quotesUnescape($_POST["openFolder"]); // Check dir is set if ($dir == "") { // No folder set (must be first login), so set home dir if ($_SESSION["win_lin"] == "lin") $dir = "~"; if ($_SESSION["win_lin"] == "win") $dir = "/"; } // Attempt to change directory if (!@ftp_chdir($conn_id, $dir)) { if (checkFirstCharTilde($dir) == 1) { if (!@ftp_chdir($conn_id, replaceTilde($dir))) { recordFileError("folder",$dir,$lang_folder_doesnt_exist); $isError=1; } } else { recordFileError("folder",$dir,$lang_folder_doesnt_exist); $isError=1; } } if ($isError == 0) { // Set new directory $_SESSION["dir_current"] = $dir; // Record new directory to history if (!is_array($_SESSION["dir_history"])) // array check $_SESSION["dir_history"] = array(); if (!in_array($dir,$_SESSION["dir_history"])) { $_SESSION["dir_history"][] = $dir; asort($_SESSION["dir_history"]); // sort array } return 1; } else { // Delete item from history deleteFtpHistory($dir); // Change to previous directory (if folder to open is currently open) if ($_POST["openFolder"] == $_SESSION["dir_current"] || $_POST["openFolder"] == "") $_SESSION["dir_current"] = getParentDir(); return 0; } } } ############################################### # CHECK LOG OUT ############################################### function checkLogOut() { if ($_GET["logout"] == 1) logOut(); } ############################################### # LOG OUT ############################################### 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(); } ############################################### # FORMAT FILE SIZES ############################################### 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; } ############################################### # GET FTP COLUMN SPAN ############################################### function getFtpColumnSpan($sort,$name) { // Check current column if ($_POST["sort"] == $sort && $_POST["ord"] == "desc") { $ord = "asc"; } else { $ord = "desc"; } return "<span onclick=\"processForm('&ftpAction=openFolder&openFolder=".rawurlencode($_SESSION["dir_current"])."&sort=".$sort."&ord=".$ord."')\" class=\"cursorPointer\">".$name."</span>"; } ############################################### # DISPLAY FTP BUTTONS ############################################### function displayFtpActions() { global $lang_btn_refresh; global $lang_btn_cut; global $lang_btn_copy; global $lang_btn_paste; global $lang_btn_rename; global $lang_btn_delete; global $lang_btn_chmod; global $lang_btn_logout; ?> <div id="ftpActionButtonsDiv"> <input type="button" value="<?php echo $lang_btn_refresh; ?>" onClick="refreshListing()" class="<?php echo adjustButtonWidth($lang_btn_refresh); ?>"> <input type="button" id="actionButtonCut" value="<?php echo $lang_btn_cut; ?>" onClick="actionFunctionCut('','');" disabled class="<?php echo adjustButtonWidth($lang_btn_cut); ?>"> <input type="button" id="actionButtonCopy" value="<?php echo $lang_btn_copy; ?>" onClick="actionFunctionCopy('','');" disabled class="<?php echo adjustButtonWidth($lang_btn_copy); ?>"> <input type="button" id="actionButtonPaste" value="<?php echo $lang_btn_paste; ?>" onClick="actionFunctionPaste('');" disabled class="<?php echo adjustButtonWidth($lang_btn_paste); ?>"> <input type="button" id="actionButtonRename" value="<?php echo $lang_btn_rename; ?>" onClick="actionFunctionRename('','');" disabled class="<?php echo adjustButtonWidth($lang_btn_rename); ?>"> <input type="button" id="actionButtonDelete" value="<?php echo $lang_btn_delete; ?>" onClick="actionFunctionDelete('','');" disabled class="<?php echo adjustButtonWidth($lang_btn_delete); ?>"> <?php if ($_SESSION["interface"] == "adv" && $_SESSION["win_lin"] == "lin") { ?> <input type="button" id="actionButtonChmod" value="<?php echo $lang_btn_chmod; ?>" onClick="actionFunctionChmod('','');" disabled class="<?php echo adjustButtonWidth($lang_btn_chmod); ?>"> <?php } ?> <div class="floatRight"> <input type="button" value="<?php echo $lang_btn_logout; ?>" onClick="actionFunctionLogout();" class="<?php echo adjustButtonWidth($lang_btn_logout); ?>"> </div> </div> <?php } ############################################### # DISPLAY UPLOAD PROGRESS ############################################### function displayUploadProgress() { global $lang_xfer_file; global $lang_xfer_size; global $lang_xfer_progress; global $lang_xfer_elapsed; global $lang_xfer_uploaded; global $lang_xfer_rate; global $lang_xfer_remain; ?> <div id="uploadProgressDiv" style="visibility:hidden; display:none"> <table width="100%" cellpadding="7" cellspacing="0" id="uploadProgressTable"> <tr> <td class="ftpTableHeadingNf" width="1%"></td> <td class="ftpTableHeading" size="35%"><?php echo $lang_xfer_file; ?></td> <td class="ftpTableHeading" width="7%"><?php echo $lang_xfer_size; ?></td> <td class="ftpTableHeading" width="21%"><?php echo $lang_xfer_progress; ?></td> <td class="ftpTableHeading" width="9%"><?php echo $lang_xfer_elapsed; ?></td> <td class="ftpTableHeading" width="7%"><?php echo $lang_xfer_uploaded; ?></td> <td class="ftpTableHeading" width="9%"><?php echo $lang_xfer_rate; ?></td> <td class="ftpTableHeading" width="10%"><?php echo $lang_xfer_remain; ?></td> <td class="ftpTableHeading" width="1%"></td> </tr> </table> </div> <?php } ############################################### # WINDOW FOOTER ############################################### function displayAjaxFooter() { global $lang_btn_new_folder; global $lang_btn_new_file; global $lang_info_host; global $lang_info_user; global $lang_info_upload_limit; global $lang_info_drag_drop; ?> <div id="footerDiv"> <div id="hostInfoDiv"> <span><?php echo $lang_info_host; ?>:</span> <?php echo $_SESSION["ftp_host"]; ?> <span><?php echo $lang_info_user; ?>:</span> <?php echo $_SESSION["ftp_user"]; ?> <span><?php echo $lang_info_upload_limit; ?>:</span> <?php echo formatFileSize($_SESSION["upload_limit"]); ?> <!-- <span><?php echo $lang_info_drag_drop; ?>:</span> <div id="dropFilesCheckDiv"></div> --> <!-- Drag & Drop check commented out as considered redundant --> </div> <div class="floatLeft10"> <input type="button" value="<?php echo $lang_btn_new_folder; ?>" onClick="processForm('&ftpAction=newFolder')" class="<?php echo adjustButtonWidth($lang_btn_new_folder); ?>"> </div> <div class="floatLeft10"> <input type="button" value="<?php echo $lang_btn_new_file; ?>" onClick="processForm('&ftpAction=newFile')" class="<?php echo adjustButtonWidth($lang_btn_new_file); ?>"> </div> <div id="uploadButtonsDiv"><div> </div> <?php } ############################################### # DISPLAY FTP HISTORY ############################################### function displayFtpHistory() { ?> <select onChange="openThisFolder(this.options[this.selectedIndex].value,1)" id="ftpHistorySelect"> <?php if (is_array($_SESSION["dir_history"])) { foreach ($_SESSION["dir_history"] AS $dir) { $dir_display = $dir; $dir_display = sanitizeStr($dir_display); $dir_display = replaceTilde($dir_display); echo "<option value=\"".rawurlencode($dir)."\""; // Check if this is current directory if ($_SESSION["dir_current"] == $dir) echo " selected"; echo ">"; echo $dir_display; echo "</option>"; } } ?> </select> <?php } ############################################### # PROCESS ACTIONS ############################################### function processActions() { $ftpAction = $_POST["ftpAction"]; if ($ftpAction == "") $ftpAction = $_GET["ftpAction"]; // Open folder (always called) if (openFolder() == 1) { // New file if ($ftpAction == "newFile") newFile(); // New folder if ($ftpAction == "newFolder") newFolder(); // Upload file if ($ftpAction == "upload") uploadFile(); // Cut if ($ftpAction == "cut") cutFilesPre(); // Copy if ($ftpAction == "copy") copyFilesPre(); // Paste if ($ftpAction == "paste") pasteFiles(); // Delete if ($ftpAction == "delete") deleteFiles(); // Rename if ($ftpAction == "rename") renameFiles(); // Chmod if ($ftpAction == "chmod") chmodFiles(); // Drag & Drop if ($ftpAction == "dragDrop") dragDropFiles(); // Edit if ($ftpAction == "edit") editFile(); } } ############################################### # CLIPBOARD FILES ############################################### function clipboard_files () { // Recreate arrays $folderArray = recreateFileFolderArrays("folder"); $fileArray = recreateFileFolderArrays("file"); // Reset cut session var $_SESSION["clipboard_folders"] = array(); $_SESSION["clipboard_files"] = array(); // Folders foreach($folderArray AS $folder) { $_SESSION["clipboard_folders"][] = quotesUnescape($folder); } // Files foreach($fileArray AS $file) { $_SESSION["clipboard_files"][] = quotesUnescape($file); } } ############################################### # CUT FILES & FOLDERS ############################################### function cutFilesPre() { $_SESSION["copy"] = 0; clipboard_files(); } ############################################### # COPY FILES & FOLDERS ############################################### function copyFilesPre() { $_SESSION["copy"] = 1; clipboard_files(); } ############################################### # PASTE FILES ############################################### function pasteFiles() { if ($_SESSION["copy"] == 1) copyFiles(); else moveFiles(); } ############################################### # MOVE FILES (CUT) ############################################### function moveFiles() { global $conn_id; global $lang_move_conflict; global $lang_folder_exists; global $lang_folder_cant_move; global $lang_file_exists; global $lang_file_cant_move; // Check for a right-clicked folder (else it's current) if (isset($_POST["rightClickFolder"])) $folderMoveTo = quotesUnescape($_POST["rightClickFolder"]); else $folderMoveTo = $_SESSION["dir_current"]; // Check if destination folder is a sub-folder if (sizeof($_SESSION["clipboard_folders"]) > 0) { $sourceFolder = str_replace("/","\/",$_SESSION["clipboard_folders"][0]); if (preg_match("/".$sourceFolder."/", $folderMoveTo)) { $_SESSION["errors"][] = $lang_move_conflict; $moveError=1; } } if ($moveError != 1) { // Folders foreach ($_SESSION["clipboard_folders"] as $folder_to_move) { $isError=0; // Create the new filename and path $file_destination = getFileFromPath($folder_to_move); $folder = getFileFromPath($folder_to_move); // Check if folder exists if (checkFileExists("d",$folder,$folderMoveTo) == 1) { recordFileError("folder",tidyFolderPath($folderMoveTo,$folder),$lang_folder_exists); } else { if (!@ftp_rename($conn_id, $folder_to_move, $file_destination)) { if (checkFirstCharTilde($folder_to_move) == 1) { if (!@ftp_rename($conn_id, replaceTilde($folder_to_move), replaceTilde($file_destination))) { recordFileError("folder",tidyFolderPath($file_destination,$folder_to_move),$lang_folder_cant_move); $isError=1; } } else { recordFileError("folder",tidyFolderPath($file_destination,$folder_to_move),$lang_folder_cant_move); $isError=1; } } if ($isError == 0) deleteFtpHistory($folder_to_move); } } // Files foreach ($_SESSION["clipboard_files"] as $file_to_move) { $isError=0; // Create the new filename and path $file_destination = $folderMoveTo."/".getFileFromPath($file_to_move); $file = getFileFromPath($file_to_move); // Check if file exists if (checkFileExists("f",$file,$folderMoveTo) == 1) { recordFileError("file",$file,$lang_file_exists); } else { if (!@ftp_rename($conn_id, $file_to_move, $file_destination)) { if (checkFirstCharTilde($file_to_move) == 1) { if (!@ftp_rename($conn_id, replaceTilde($file_to_move), replaceTilde($file_destination))) { recordFileError("file",$file_to_move,$lang_file_cant_move); } } else { recordFileError("file",$file_to_move,$lang_file_cant_move); } } } } } $_SESSION["clipboard_folders"] = array(); $_SESSION["clipboard_files"] = array(); } ############################################### # DRAG & DROP FILES ############################################### function dragDropFiles() { global $conn_id; global $lang_file_exists; global $lang_folder_exists; global $lang_file_cant_move; $fileExists=0; $dragFile = quotesUnescape($_POST["dragFile"]); $dropFolder = quotesUnescape($_POST["dropFolder"]); $file_name = getFileFromPath($dragFile); // Check if file exists if (checkFileExists("f",$file_name,$dropFolder) == 1) { recordFileError("file",tidyFolderPath($dropFolder,$file_name),$lang_file_exists); $fileExists=1; } // Check if folder exists if (checkFileExists("d",$file_name,$dropFolder) == 1) { recordFileError("folder",tidyFolderPath($dropFolder,$file_name),$lang_folder_exists); $fileExists=1; } if ($fileExists == 0) { $isError=0; if (!@ftp_rename($conn_id, $dragFile, $dropFolder."/".$file_name)) { if (checkFirstCharTilde($dragFile) == 1) { if (!@ftp_rename($conn_id, replaceTilde($dragFile), replaceTilde($dropFolder)."/".$file_name)) { recordFileError("file",getFileFromPath($dragFile),$lang_file_cant_move); $isError=1; } } else { recordFileError("file",getFileFromPath($dragFile),$lang_file_cant_move); $isError=1; } } if ($isError == 0) { // Delete item from history deleteFtpHistory($dragFile); } } } ############################################### # COPY FILES ############################################### function copyFiles() { // As there is no PHP function to copy files by FTP on a remote server, the files // need to be downloaded to the client server and then uploaded to the copy location. global $conn_id; global $serverTmp; global $lang_folder_exists; global $lang_file_exists; global $lang_server_error_down; global $lang_server_error_up; // Check for a right-clicked folder (else it's current) if (isset($_POST["rightClickFolder"])) $folderMoveTo = quotesUnescape($_POST["rightClickFolder"]); else $folderMoveTo = $_SESSION["dir_current"]; // Folders foreach ($_SESSION["clipboard_folders"] as $folder) { $folder_name = getFileFromPath($folder); $path_parts = pathinfo($folder); $dir_source = $path_parts['dirname']; // Check if folder exists if (checkFileExists("f",$folder_name,$folderMoveTo) == 1) { recordFileError("folder",tidyFolderPath($folderMoveTo,$folder_name),$lang_folder_exists); } else { copyFolder($folder_name,$folderMoveTo,$dir_source); } } // Files foreach ($_SESSION["clipboard_files"] as $file) { $isError=0; $file_name = getFileFromPath($file); $fp1 = $serverTmp."/".$file_name; $fp2 = $file; $fp3 = $folderMoveTo."/".$file_name; // Check if file exists if (checkFileExists("f",$file_name,$folderMoveTo) == 1) { recordFileError("file",tidyFolderPath($folderMoveTo,$file_name),$lang_file_exists); } else { // Download file to client server if (!@ftp_get($conn_id, $fp1, $fp2, FTP_BINARY)) { if (checkFirstCharTilde($fp2) == 1) { if (!@ftp_get($conn_id, $fp1, replaceTilde($fp2), FTP_BINARY)) { recordFileError("file",$file_name,$lang_server_error_down); $isError=1; } } else { recordFileError("file",$file_name,$lang_server_error_down); $isError=1; } } if ($isError == 0) { // Upload file to remote server if (!@ftp_put($conn_id, $fp3, $fp1, FTP_BINARY)) { if (checkFirstCharTilde($fp3) == 1) { if (!@ftp_put($conn_id, replaceTilde($fp3), $fp1, FTP_BINARY)) recordFileError("file",$file_name,$lang_server_error_up); } else { recordFileError("file",$file_name,$lang_server_error_up); } } } } // Delete tmp file unlink($fp1); } } ############################################### # GET PERMISSIONS OF FILE/FOLDER ############################################### function getPerms($folder,$file_name) { global $conn_id; $ftp_rawlist = getFtpRawList($folder); if (is_array($ftp_rawlist)) { foreach($ftp_rawlist AS $ff) { // Split up array into values $ff = preg_split("/[\s]+/",$ff,9); $perms = $ff[0]; $file = $ff[8]; if ($file == $file_name) { $perms = getChmodNumber($perms); $perms = formatChmodNumber($perms); return $perms; } } } } ############################################### # COPY FOLDERS ############################################### function copyFolder($folder,$dir_destin,$dir_source) { global $conn_id; global $serverTmp; global $lang_folder_cant_access; global $lang_folder_exists; global $lang_folder_cant_chmod; global $lang_folder_cant_make; global $lang_server_error_down; global $lang_file_cant_chmod; global $lang_chmod_no_support; $isError=0; // Check if ftp_chmod() exists if (!function_exists('ftp_chmod')) { $_SESSION["errors"][] = $lang_chmod_no_support; } // Check source folder exists if (!@ftp_chdir($conn_id, $dir_source."/".$folder)) { if (checkFirstCharTilde($dir_source) == 1) { if (!@ftp_chdir($conn_id, replaceTilde($dir_source)."/".$folder)) { recordFileError("folder",tidyFolderPath($dir_destin,$folder),$lang_folder_cant_access); $isError=1; } } else { recordFileError("folder",tidyFolderPath($dir_destin,$folder),$lang_folder_cant_access); $isError=1; } } if ($isError == 0) { // Check if destination folder exists if (checkFileExists("d",$folder,$dir_destin) == 1) { recordFileError("folder",tidyFolderPath($dir_destin,$folder),$lang_folder_exists); } else { // Create the new folder if (!@ftp_mkdir($conn_id, $dir_destin."/".$folder)) { if (checkFirstCharTilde($dir_destin) == 1) { if (!@ftp_mkdir($conn_id, replaceTilde($dir_destin)."/".$folder)) { recordFileError("folder",tidyFolderPath($dir_destin,$folder),$lang_folder_cant_make); $isError=1; } } else { recordFileError("folder",tidyFolderPath($dir_destin,$folder),$lang_folder_cant_make); $isError=1; } } } } if ($isError == 0) { // Copy permissions (Lin) if ($_SESSION["win_lin"] == "lin") { $mode = getPerms($dir_source,$folder); $lang_folder_cant_chmod = str_replace("[perms]",$mode,$lang_folder_cant_chmod); if (function_exists('ftp_chmod')) { if (!ftp_chmod($conn_id, $mode, $dir_destin."/".$folder)) { if (checkFirstCharTilde($dir_destin) == 1) { if (!@ftp_chmod($conn_id, $mode, replaceTilde($dir_destin)."/".$folder)) { recordFileError("folder",$folder,$lang_folder_cant_chmod); } } else { recordFileError("folder",$folder,$lang_folder_cant_chmod); } } } } // Go through array of files/folders $ftp_rawlist = getFtpRawList($dir_source."/".$folder); if (is_array($ftp_rawlist)) { foreach($ftp_rawlist AS $ff) { $isDir=0; $isError=0; // Split up array into values (Lin) if ($_SESSION["win_lin"] == "lin") { $ff = preg_split("/[\s]+/",$ff,9); $perms = $ff[0]; $file = $ff[8]; if (getFileType($perms) == "d") $isDir=1; } // Split up array into values (Win) if ($_SESSION["win_lin"] == "win") { $ff = preg_split("/[\s]+/",$ff,4); $size = $ff[2]; $file = $ff[3]; if ($size == "<DIR>") $isDir=1; } if ($file != "." && $file != "..") { // Check for sub folders and then perform this function if (getFileType($perms) == "d") { copyFolder($file,$dir_destin."/".$folder,$dir_source."/".$folder); } else { $fp1 = $serverTmp."/".$file; $fp2 = $dir_source."/".$folder."/".$file; $fp3 = $dir_destin."/".$folder."/".$file; // Download if (!@ftp_get($conn_id, $fp1, $fp2, FTP_BINARY)) { if (checkFirstCharTilde($fp2) == 1) { if (!@ftp_get($conn_id, $fp1, replaceTilde($fp2), FTP_BINARY)) { recordFileError("file",$file,$lang_server_error_down); $isError=1; } } else { recordFileError("file",$file,$lang_server_error_down); $isError=1; } } // Upload if ($isError == 0) { if (!@ftp_put($conn_id, $fp3, $fp1, FTP_BINARY)) { if (checkFirstCharTilde($fp3) == 1) { if (!@ftp_put($conn_id, replaceTilde($fp3), $fp1, FTP_BINARY)) { recordFileError("file",$file,$lang_server_error_down); $isError=1; } } else { recordFileError("file",$file,$lang_server_error_down); $isError=1; } } } if ($isError == 0) { // Chmod files (Lin) if ($_SESSION["win_lin"] == "lin") { $perms = getChmodNumber($perms); $mode = formatChmodNumber($perms); $lang_file_cant_chmod = str_replace("[perms]",$perms,$lang_file_cant_chmod); if (function_exists('ftp_chmod')) { if (!@ftp_chmod($conn_id, $mode, $fp3)) { if (checkFirstCharTilde($fp3) == 1) { if (!@ftp_chmod($conn_id, $mode, replaceTilde($fp3))) { recordFileError("file",$file,$lang_server_error_down); } } else { recordFileError("file",$file,$lang_server_error_down); } } } } } // Delete tmp file unlink($fp1); } } } } } } ############################################### # RECREATE FOLDER & FILE ARRAYS ############################################### function recreateFileFolderArrays($type) { $arrayNew = array(); if ($_POST["fileSingle"] != "" || $_POST["folderSingle"] != "") { // Single file/folder if ($type == "file" && $_POST["fileSingle"] != "") { $file = quotesUnescape($_POST["fileSingle"]); $arrayNew[] = $file; } if ($type == "folder" && $_POST["folderSingle"] != "") $arrayNew[] = quotesUnescape($_POST["folderSingle"]); } else { // Array file/folder if ($type == "file") $array = $_POST["fileAction"]; if ($type == "folder") $array = $_POST["folderAction"]; if (is_array($array)) { foreach($array AS $file) { $file = quotesUnescape($file); if ($file != "") $arrayNew[] = $file; } } } return $arrayNew; } ############################################### # RENAME FILES ############################################### function renameFiles() { global $conn_id; global $lang_file_exists; global $lang_folder_exists; global $lang_cant_rename; global $lang_title_rename; // Check for processing of form if ($_POST["processAction"] == 1) { $i=0; // Go through array of saved names foreach ($_SESSION["clipboard_rename"] AS $file) { $isError=0; $file_name = trim($_POST["file".$i]); $file_name = quotesUnescape($file_name); $file = quotesUnescape($file); $fileExists=0; // Check for a different name if ($file_name != $file) { if ($_SESSION["dir_current"] == "/") $file_to_move = "/".$file; if ($_SESSION["dir_current"] == "~") $file_to_move = "~/".$file; if ($_SESSION["dir_current"] != "/" && $_SESSION["dir_current"] != "~") $file_to_move = $_SESSION["dir_current"]."/".$file; $file_destination = $_SESSION["dir_current"]."/".$file_name; // Check if file exists if (checkFileExists("f",$file_name,$_SESSION["dir_current"]) == 1) { recordFileError("file",sanitizeStr($file_name),$lang_file_exists); $fileExists=1; } // Check if folder exists if (checkFileExists("d",$file_name,$_SESSION["dir_current"]) == 1) { recordFileError("folder",sanitizeStr($file_name),$lang_folder_exists); $fileExists=1; } if ($fileExists == 0) { if (!@ftp_rename($conn_id, $file_to_move, $file_destination)) { if (checkFirstCharTilde($file_to_move) == 1) { if (!@ftp_rename($conn_id, replaceTilde($file_to_move), replaceTilde($file_destination))) { recordFileError("file",sanitizeStr($file),$lang_cant_rename); $isError=1; } } else { recordFileError("file",sanitizeStr($file),$lang_cant_rename); $isError=1; } } if ($isError == 0) { // Delete item from history deleteFtpHistory($file_to_move); } } } $i++; } // Reset var $_SESSION["clipboard_rename"] = array(); } else { // Recreate arrays $fileArray = recreateFileFolderArrays("file"); $folderArray = recreateFileFolderArrays("folder"); $_SESSION["clipboard_rename"] = array(); $n = sizeof($fileArray) + sizeof($folderArray); $height = $n * 35; $width = 565; $title = $lang_title_rename; // Display pop-up displayPopupOpen(1,$width,$height,0,$title); $i=0; // Set vars $vars = "&ftpAction=rename&processAction=1"; $onKeyPress = "onkeypress=\"if (event.keyCode==13){ processForm('".$vars."'); activateActionButtons(0,0); return false; }\""; // Display folders foreach($folderArray AS $folder) { $folder = getFileFromPath($folder); echo "<img src=\"images/icon_16_folder.gif\" width=\"16\" height=\"16\"> "; echo "<input type=\"text\" name=\"file".$i."\" class=\"inputRename\" value=\"".quotesReplace($folder,"d")."\" ".$onKeyPress."><br>"; $_SESSION["clipboard_rename"][] = $folder; $i++; } // Display files foreach($fileArray AS $file) { $file = getFileFromPath($file); echo "<img src=\"images/icon_16_file.gif\" width=\"16\" height=\"16\"> "; echo "<input type=\"text\" name=\"file".$i."\" class=\"inputRename\" value=\"".quotesReplace($file,"d")."\" ".$onKeyPress."><br>"; $_SESSION["clipboard_rename"][] = $file; $i++; } displayPopupClose(0,$vars,1); } } ############################################### # CHMOD FILES ############################################### function chmodFiles() { global $conn_id; global $lang_chmod_max_777; global $lang_file_cant_chmod; global $lang_chmod_owner; global $lang_chmod_group; global $lang_chmod_public; global $lang_chmod_manual; global $lang_title_chmod; global $lang_chmod_no_support; if (!function_exists('ftp_chmod')) { $_SESSION["errors"][] = $lang_chmod_no_support; } else { // Check for a posted form if ($_POST["processForm"] == 1) { if (trim($_POST["chmodNum"]) > 777) { $_SESSION["errors"][] = $lang_chmod_max_777; } else { $mode = formatChmodNumber($_POST["chmodNum"]); $lang_file_cant_chmod = str_replace("[perms]",$mode,$lang_file_cant_chmod); foreach($_SESSION["clipboard_chmod"] AS $file) { if (!@ftp_chmod($conn_id, $mode, $file)) { if (checkFirstCharTilde($file) == 1) { if (!@ftp_chmod($conn_id, $mode, replaceTilde($file))) { recordFileError("file",$file,$lang_file_cant_chmod); } } else { recordFileError("file",$file,$lang_file_cant_chmod); } } } } // Reset var $_SESSION["clipboard_chmod"] = array(); } else { // Recreate arrays $fileArray = recreateFileFolderArrays("file"); $folderArray = recreateFileFolderArrays("folder"); $_SESSION["clipboard_chmod"] = array(); // Count items checked $n = sizeof($fileArray) + sizeof($folderArray); // Get attributes if 1 item selected if ($n == 1) { if ($theFile == "") $theFile = $fileArray[0]; if ($theFile == "") $theFile = $folderArray[0]; $theFile = getFileFromPath($theFile); $ftp_rawlist = getFtpRawList($_SESSION["dir_current"]); // Go through array of files/folders foreach($ftp_rawlist AS $ff) { // Split up array into values $ff = preg_split("/[\s]+/",$ff,9); $perms = $ff[0]; $file = $ff[8]; // Check for a match if ($file == $theFile) { $chmod = getChmodNumber($perms); $o_wrx = substr($perms,1,3); $g_wrx = substr($perms,4,3); $p_wrx = substr($perms,7,3); } } } // Save folders foreach($folderArray AS $folder) { $_SESSION["clipboard_chmod"][] = $folder; } // Save files foreach($fileArray AS $file) { $_SESSION["clipboard_chmod"][] = $file; } $height = 335; $width = 420; $title = $lang_title_chmod; // Display pop-up displayPopupOpen(1,$width,$height,0,$title); $vars = "&ftpAction=chmod&processForm=1"; displayChmodFieldset($lang_chmod_owner,"owner",$o_wrx,$vars); displayChmodFieldset($lang_chmod_group,"group",$g_wrx,$vars); displayChmodFieldset($lang_chmod_public,"public",$p_wrx,$vars); displayChmodFieldset($lang_chmod_manual,"manual",$chmod,$vars); displayPopupClose(0,$vars,1); } } } ############################################### # FORMAT CHMOD NUMBER ############################################### function formatChmodNumber($str) { $str = trim($str); $str = octdec ( str_pad ( $str, 4, '0', STR_PAD_LEFT ) ); $str = (int) $str; return $str; } ############################################### # GET CHMOD NUMBER ############################################### function getChmodNumber($str) { $j=0; $strlen = strlen($str); for ($i=0;$i<$strlen;$i++) { if ($i>=1&&$i<=3) $m=100; if ($i>=4&&$i<=6) $m=10; if ($i>=7&&$i<=9) $m=1; $l = substr($str,$i,1); if ($l != "d" && $l != "-") { if ($l=="r") $n=4; if ($l=="w") $n=2; if ($l=="x") $n=1; $j = $j+($n*$m); } } return $j; } ############################################### # CHMOD FIELDSET ############################################### function displayChmodFieldset($title,$type,$chmod,$vars) { global $lang_chmod_read; global $lang_chmod_write; global $lang_chmod_exe; ?> <fieldset class="fieldsetChmod"> <legend><?php echo $title; ?></legend> <?php if ($type == "manual") { ?> <input type="text" size="4" name="chmodNum" id="chmodNum" value="<?php echo $chmod; ?>" onkeypress="if (event.keyCode==13){ processForm('<?php echo $vars; ?>'); activateActionButtons(0,0); return false;}"> <?php }else{ ?> <?php if ($type == "owner") $n = 100; if ($type == "group") $n = 10; if ($type == "public") $n = 1; $n_r = $n * 4; $n_w = $n * 2; $n_e = $n * 1; ?> <div class="checkboxChmod"><input type="checkbox" id="<?php echo $type; ?>_r" value="1" <?php if (substr($chmod,0,1) == "r") echo "checked"; ?> onclick="updateChmodNum(this.id,<?php echo $n_r; ?>)"> <?php echo $lang_chmod_read; ?></div> <div class="checkboxChmod"><input type="checkbox" id="<?php echo $type; ?>_w" value="1" <?php if (substr($chmod,1,1) == "w") echo "checked"; ?> onclick="updateChmodNum(this.id,<?php echo $n_w; ?>)"> <?php echo $lang_chmod_write; ?></div> <div class="checkboxChmod"><input type="checkbox" id="<?php echo $type; ?>_e" value="1" <?php if (substr($chmod,2,1) == "x") echo "checked"; ?> onclick="updateChmodNum(this.id,<?php echo $n_e; ?>)"> <?php echo $lang_chmod_exe; ?></div> <?php } ?> </fieldset> <?php } ############################################### # EDIT FILE ############################################### function editFile() { global $conn_id; global $serverTmp; global $lang_server_error_down; $isError=0; $file = quotesUnescape($_POST["file"]); $file_name = getFileFromPath($file); $fp1 = $serverTmp."/".$file_name; $fp2 = $file; // Download the file if (!@ftp_get($conn_id, $fp1, $fp2, FTP_BINARY)) { if (checkFirstCharTilde($fp2) == 1) { if (!@ftp_get($conn_id, $fp1, replaceTilde($fp2), FTP_BINARY)) { recordFileError("file",quotesEscape($file,"s"),$lang_server_error_down); $isError=1; } } else { recordFileError("file",quotesEscape($file,"s"),$lang_server_error_down); $isError=1; } } if ($isError == 0) { // Check file has contents if (filesize($fp1) > 0) { $fd = @fopen($fp1,"r"); $content = @fread($fd, filesize($fp1)); @fclose($fd); } displayEditFileForm($file,$content); } // Delete tmp file unlink($fp1); } ############################################### # EDIT FILE PROCESS (EDIT FILE) ############################################### function displayEditFileForm($file,$content) { global $lang_title_edit_file; global $lang_btn_save; global $lang_btn_close; $width = $_POST["windowWidth"] - 250; $height = $_POST["windowHeight"] - 220; $editorHeight = $height - 85; $file_display = $file; $file_display = sanitizeStr($file_display); $file_display = replaceTilde($file_display); $title = $lang_title_edit_file.": ".$file_display; // Display pop-up displayPopupOpen(0,$width,$height,0,$title); echo "<input type=\"hidden\" name=\"file\" value=\"".sanitizeStr($file)."\">"; echo "<textarea name=\"editContent\" id=\"editContent\" style=\"height: ".$editorHeight."px;\">".sanitizeStr($content)."</textarea>"; // Save button echo "<input type=\"button\" value=\"".$lang_btn_save."\" class=\"popUpBtn\" onClick=\"submitToIframe('&ftpAction=editProcess');\"> "; // Close button echo "<input type=\"button\" value=\"".$lang_btn_close."\" class=\"popUpBtn\" onClick=\"processForm('&ftpAction=openFolder')\"> "; displayPopupClose(0,"",0); } ############################################### # EDIT FILE PROCESS (SAVE FILE) ############################################### // Saving the file to the iframe preserves the cursor position in the edit div. function editProcess() { global $conn_id; global $serverTmp; global $lang_server_error_up; $isError=0; // Get file contents $file = quotesUnescape($_POST["file"]); $file_name = getFileFromPath($file); $fp1 = $serverTmp."/".$file_name; $fp2 = $file; $editContent = $_POST["editContent"]; // Write content to a file $tmpFile = @fopen($fp1,"w+"); @fputs($tmpFile,$editContent); @fclose($tmpFile); if (!@ftp_put($conn_id, $fp2, $fp1, FTP_BINARY)) { if (checkFirstCharTilde($fp2) == 1) { if (!@ftp_put($conn_id, replaceTilde($fp2), $fp1, FTP_BINARY)) { recordFileError("file",$file_name,$lang_server_error_up); } } else { recordFileError("file",$file_name,$lang_server_error_up); } } // Delete tmp file unlink($fp1); } ############################################### # DOWNLOAD FILE ############################################### function downloadFile() { global $conn_id; global $serverTmp; global $lang_server_error_down; $isError=0; $file = quotesUnescape($_GET["dl"]); $file_name = getFileFromPath($file); $fp1 = $serverTmp."/".$file_name; $fp2 = $file; // Download the file if (!@ftp_get($conn_id, $fp1, $fp2, FTP_BINARY)) { if (checkFirstCharTilde($fp2) == 1) { if (!@ftp_get($conn_id, $fp1, replaceTilde($fp2), FTP_BINARY)) { recordFileError("file",quotesEscape($file,"s"),$lang_server_error_down); $isError=1; } } else { recordFileError("file",quotesEscape($file,"s"),$lang_server_error_down); $isError=1; } } if ($isError == 0) { header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"".quotesEscape($file_name,"d")."\""); // quotes required for spacing in filename header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header("Content-Description: File Transfer"); header("Content-Length: ".filesize($fp1)); flush(); $fp = @fopen($fp1, "r"); while (!feof($fp)) { echo @fread($fp, 65536); @flush(); } @fclose($fp); } // Delete tmp file unlink($fp1); } ############################################### # UNESCAPE QUOTES ############################################### function quotesUnescape($str) { $str = str_replace("\'","'",$str); $str = str_replace('\"','"',$str); return $str; } ############################################### # ESCAPE QUOTES ############################################### function quotesEscape($str,$type) { if ($type == "s" || $type == "") $str = str_replace("'","\'",$str); if ($type == "d" || $type == "") $str = str_replace('"','\"',$str); return $str; } ############################################### # REPLACE QUOTES ############################################### function quotesReplace($str,$type) { $str = quotesUnescape($str); if ($type == "s") $str = str_replace("'","´",$str); if ($type == "d") $str = str_replace('"','"',$str); return $str; } ############################################### # SANITIZE VARS (DEPRECATED) ############################################### /* function sanitizeVars() { foreach($_POST AS $key => $value) { if ($key != "editContent") { $value = str_replace("<","<",$value); $value = str_replace(">",">",$value); $_POST[$key] = $value; } } foreach($_GET AS $key => $value) { if ($key != "editContent") { $value = str_replace("<","<",$value); $value = str_replace(">",">",$value); $_POST[$key] = $value; } } } */ ############################################### # DELETE FILES & FOLDERS ############################################### function deleteFiles () { global $conn_id; global $lang_file_doesnt_exist; global $lang_cant_delete; $folderArray = recreateFileFolderArrays("folder"); $fileArray = recreateFileFolderArrays("file"); // folders foreach($folderArray AS $folder) { $folder = getFileFromPath($folder); deleteFolder($folder,$_SESSION["dir_current"]); } // files foreach($fileArray AS $file) { $isError=0; $file_decoded = urldecode($file); if ($file != "") { // Check if file exists if (checkFileExists("f",$file,$_SESSION["dir_current"]) == 1) { recordFileError("file",$file,$lang_file_doesnt_exist); } else { if (!@ftp_delete($conn_id, $file_decoded)) { if (checkFirstCharTilde($file_decoded) == 1) { if (!@ftp_delete($conn_id, replaceTilde($file_decoded))) { $isError=1; } } else { $isError=1; } } // If deleting decoded file fails, try original file name if ($isError == 1) { if (!@ftp_delete($conn_id, "".$file."")) { if (checkFirstCharTilde($file) == 1) { if (!@ftp_delete($conn_id, "".replaceTilde($file)."")) { recordFileError("file",getFileFromPath($file),$lang_cant_delete); } } else { recordFileError("file",getFileFromPath($file),$lang_cant_delete); } } } } } } } ############################################### # DELETE FOLDER ############################################### function deleteFolder($folder,$path) { global $conn_id; global $lang_cant_delete; global $lang_folder_doesnt_exist; global $lang_folder_cant_delete; $isError=0; // List contents of folder if ($path != "/" && $path != "~") { $folder_path = $path."/".$folder; } else { if ($_SESSION["win_lin"] == "lin") if ($_SESSION["dir_current"] == "/") $folder_path = "/".$folder; if ($_SESSION["dir_current"] == "~") $folder_path = "~/".$folder; if ($_SESSION["win_lin"] == "win") $folder_path = "/".$folder; } $ftp_rawlist = getFtpRawList($folder_path); // Go through array of files/folders if (sizeof($ftp_rawlist) > 0) { foreach($ftp_rawlist AS $ff) { // Split up array into values (Lin) if ($_SESSION["win_lin"] == "lin") { $ff = preg_split("/[\s]+/",$ff,9); $perms = $ff[0]; $file = $ff[8]; if (getFileType($perms) == "d") $isFolder=1; else $isFolder=0; } // Split up array into values (Win) if ($_SESSION["win_lin"] == "win") { $ff = preg_split("/[\s]+/",$ff,4); $size = $ff[2]; $file = $ff[3]; if ($size == "<DIR>") $isFolder=1; else $isFolder=0; } if ($file != "." && $file != "..") { // Check for sub folders and then perform this function if ($isFolder == 1) { deleteFolder($file,$folder_path); } else { // otherwise delete file $file_path = $folder_path."/".$file; if (!@ftp_delete($conn_id, "".$file_path."")) { if (checkFirstCharTilde($file_path) == 1) { if (!@ftp_delete($conn_id, "".replaceTilde($file_path)."")) { recordFileError("file",$file_path,$lang_cant_delete); } } else { recordFileError("file",$file_path,$lang_cant_delete); } } } } } } // Check if file exists if (checkFileExists("d",$folder,$folder_path) == 1) { $_SESSION["errors"][] = str_replace("[file]","<strong>".tidyFolderPath($folder_path,$folder)."</strong>",$lang_folder_doesnt_exist); } else { // Chage dir up before deleting ftp_cdup($conn_id); // Delete the empty folder if (!@ftp_rmdir($conn_id, "".$folder_path."")) { if (checkFirstCharTilde($folder_path) == 1) { if (!@ftp_rmdir($conn_id, "".replaceTilde($folder_path)."")) { recordFileError("folder",$folder_path,$lang_folder_cant_delete); $isError=1; } } else { recordFileError("folder",$folder_path,$lang_folder_cant_delete); $isError=1; } } // Remove directory from history if ($isError == 0) deleteFtpHistory($folder_path); } } ############################################### # NEW FILE ############################################### function newFile() { global $conn_id; global $serverTmp; global $lang_title_new_file; global $lang_new_file_name; global $lang_template; global $lang_no_template; global $lang_file_exists; global $lang_file_cant_make; $isError=0; // Set vars $vars = "&ftpAction=newFile"; // Display templates $templates_dir = "templates"; $file_name = trim(quotesUnescape($_POST["newFile"])); if ($file_name == "") { $title = $lang_title_new_file; $width = 400; $height = 95; // Display pop-up displayPopupOpen(0,$width,$height,0,$title); echo "<input type=\"text\" name=\"newFile\" id=\"newFile\" placeholder=\"".$lang_new_file_name."\" onkeypress=\"if (event.keyCode==13){ processForm('".$vars."'); return false;}\">"; if (is_dir($templates_dir)) { if ($dh = opendir($templates_dir)) { $i=0; while (($file = readdir($dh)) !== false) { if ($file != "" && $file != "." && $file != ".." && $file != "index.html") { $file_name = $file; $template_found=1; $langs .= "<option value=\"".$file_name."\">".$file_name."</option>"; } } closedir($dh); } } echo "<p>".$lang_template.": "; echo "<select name=\"template\">"; echo "<option value=\"\">".$lang_no_template."</option>"; echo $langs; echo "</select>"; displayPopupClose(0,$vars,1); } else { $fp1 = $serverTmp."/".$file_name; if ($_SESSION["dir_current"] == "/") $fp2 = "/".$file_name; else $fp2 = $_SESSION["dir_current"]."/".$file_name; // Check if file already exists if (checkFileExists("f",$file_name,$_SESSION["dir_current"]) == 1) { recordFileError("file",$file_name,$lang_file_exists); } else { // Get template if ($_POST["template"] != $lang_no_template) { $file_name = $templates_dir."/".$_POST["template"]; $fd = @fopen($file_name,"r"); $content = @fread($fd,filesize($file_name)); @fclose($fd); } // Write file to server $tmpFile = @fopen($fp1,"w+"); @fputs($tmpFile,$content); @fclose($tmpFile); // Upload the file if (!@ftp_put($conn_id, $fp2, $fp1, FTP_BINARY)) { if (checkFirstCharTilde($fp2) == 1) { if (!@ftp_put($conn_id, replaceTilde($fp2), $fp1, FTP_BINARY)) { recordFileError("file",$file_name,$lang_file_cant_make); $isError=1; } } else { recordFileError("file",$file_name,$lang_file_cant_make); $isError=1; } } if ($isError == 0) { // Open editor $file = $fp2; displayEditFileForm($file,$content); } } // Delete tmp file unlink($fp1); } } ############################################### # CHECK IF FILE EXISTS ############################################### function checkFileExists($type,$file_name,$folder_path) { $ftp_rawlist = getFtpRawList($folder_path); if (is_array($ftp_rawlist)) { $fileNameAr = array(); // Go through array of files/folders foreach($ftp_rawlist AS $ff) { // Lin if ($_SESSION["win_lin"] == "lin") { // Split up array into values $ff = preg_split("/[\s]+/",$ff,9); $perms = $ff[0]; $file = $ff[8]; if ($file != "." && $file != "..") { if ($type == "f" && getFileType($perms) == "f") $fileNameAr[] = $file; if ($type == "d" && getFileType($perms) == "d") $fileNameAr[] = $file; } } // Win if ($_SESSION["win_lin"] == "win") { // Split up array into values $ff = preg_split("/[\s]+/",$ff,4); $size = $ff[2]; $file = $ff[3]; if ($size == "<DIR>") $size = "d"; if ($type == "d" && $size == "d") $fileNameAr[] = $file; if ($type == "f" && $size != "d") $fileNameAr[] = $file; } } // Check if file is in array if (in_array($file_name,$fileNameAr)) return 1; } else { return 0; } } ############################################### # NEW FOLDER ############################################### function newFolder() { global $conn_id; global $lang_title_new_folder; global $lang_new_folder_name; global $lang_folder_exists; global $lang_folder_cant_make; // Set vars $vars = "&ftpAction=newFolder"; $folder = trim(quotesUnescape($_POST["newFolder"])); if ($folder == "") { $title = $lang_title_new_folder; $width = 400; $height = 40; // Display pop-up displayPopupOpen(0,$width,$height,0,$title); echo "<input type=\"text\" name=\"newFolder\" id=\"newFolder\" placeholder=\"".$lang_new_folder_name."\" onkeypress=\"if (event.keyCode==13){ processForm('".$vars."'); return false;}\">"; displayPopupClose(0,$vars,1); } else { // Check if folder exists if (checkFileExists("d",$folder,$_SESSION["dir_current"]) == 1 || $folder == "..") { recordFileError("folder",$folder,$lang_folder_exists); } else { if (!@ftp_mkdir($conn_id, $folder)) recordFileError("folder",$folder,$lang_folder_cant_make); } } } ############################################### # UPLOAD FILE ############################################### function uploadFile() { global $conn_id; global $serverTmp; global $lang_server_error_up; global $lang_browser_error_up; $file_name = $_SERVER['HTTP_X_FILENAME']; $path = $_GET["filePath"]; if ($file_name) { $fp1 = $serverTmp."/".$file_name; // Check if a folder is being uploaded if ($path != "") { // Check to see folder path exists (and create) createFolderHeirarchy($path); $fp2 = $_SESSION["dir_current"]."/".$path.$file_name; } else { if ($_SESSION["dir_current"] == "/") $fp2 = "/".$file_name; else $fp2 = $_SESSION["dir_current"]."/".$file_name; } // Check if file reached server if (file_put_contents($fp1,file_get_contents('php://input'))) { if (!@ftp_put($conn_id, $fp2, $fp1, FTP_BINARY)) { if (checkFirstCharTilde($fp2) == 1) { if (!@ftp_put($conn_id, replaceTilde($fp2), $fp1, FTP_BINARY)) { recordFileError("file",$file_name,$lang_server_error_up); } } else { recordFileError("file",$file_name,$lang_server_error_up); } } } else { recordFileError("file",$file_name,$lang_browser_error_up); } // Delete tmp file unlink($fp1); } } ############################################### # CREATE FOLDER HEIRARCHY ############################################### function createFolderHeirarchy($path) { global $conn_id; global $lang_folder_cant_make; $folderAr = explode("/",$path); $n = sizeof($folderAr); for ($i=0;$i<$n;$i++) { if ($folder == "") $folder = $folderAr[$i]; else $folder = $folder."/".$folderAr[$i]; if (!@ftp_mkdir($conn_id, $folder)) { if (checkFirstCharTilde($folder) == 1) @ftp_mkdir($conn_id, replaceTilde($folder)); } } } ############################################### # UPLOAD FILE (IFRAME) ############################################### function iframeUpload() { global $conn_id; global $lang_server_error_up; global $lang_browser_error_up; $fp1 = $_FILES["uploadFile"]["tmp_name"]; $fp2 = $_SESSION["dir_current"]."/".$_FILES["uploadFile"]["name"]; if ($fp1 != "") { if (!@ftp_put($conn_id, $fp2, $fp1, FTP_BINARY)) { if (checkFirstCharTilde($fp2) == 1) { if (!@ftp_put($conn_id, replaceTilde($fp2), $fp1, FTP_BINARY)) { recordFileError("file",$file_name,$lang_server_error_up); } } else { recordFileError("file",$file_name,$lang_server_error_up); } } } else { recordFileError("file",$file_name,$lang_browser_error_up); } } ############################################### # DELETE FTP HISTORY ############################################### function deleteFtpHistory($dirDelete) { $dirDelete = str_replace("/","\/",$dirDelete); // Check each item in the history if (is_array($_SESSION["dir_history"])) { foreach($_SESSION["dir_history"] AS $dir) { if (!@preg_match("/^".$dirDelete."/", $dir)) $dir_history[] = $dir; } // Set new array $_SESSION["dir_history"] = $dir_history; // Sort array if (is_array($_SESSION["dir_history"])) asort($_SESSION["dir_history"]); } } ############################################### # SINGLE QUOTE ESCAPE ############################################### function singleQuoteEscape($str) { return str_replace("'","\'",$str); } ############################################### # GET FILE TYPE ############################################### function getFileType($perms) { if (substr($perms,0,1) == "d") return "d"; // directory if (substr($perms,0,1) == "l") return "l"; // link if (substr($perms,0,1) == "-") return "f"; // file } ############################################### # DISPLAY AJAX DIV OPEN ############################################### function displayAjaxDivOpen() { ?> <div id="ajaxContentWindow" onContextMenu="displayContextMenu(event,'','',<?php echo assignWinLinNum(); ?>)" onClick="unselectFiles()"> <?php } ############################################### # DISPLAY AJAX DIV CLOSE ############################################### function displayAjaxDivClose() { ?> </div> <?php } ############################################### # DISPLAY ERRORS ############################################### function displayErrors() { global $lang_title_errors; $sizeAr = sizeof($_SESSION["errors"]); if ($sizeAr > 0) { $width = (getMaxStrLen($_SESSION["errors"]) * 10) + 30; $height = sizeof($_SESSION["errors"]) * 25; $title = $lang_title_errors; // Display pop-up displayPopupOpen(1,$width,$height,1,$title); $errors = array_reverse($_SESSION["errors"]); foreach($errors AS $error) { echo $error."<br>"; } $vars = "&ftpAction=openFolder&resetErrorArray=1"; displayPopupClose(1,$vars,0); } } //############################################## // DISPLAY POP-UP FRAME OPEN //############################################## 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;\">"; } //############################################## // DISPLAY POP-UP FRAME CLOSE //############################################## 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=\"processForm('&ftpAction=openFolder');\"> "; echo "</div>"; echo "</div>"; echo "</div>"; } //############################################## // GET MAX STR LENGTH FROM ARRAY //############################################## function getMaxStrLen($array) { foreach ($array AS $str) { $thisLen = strlen($str); if ($thisLen > $maxLen) $maxLen = $thisLen; } return $maxLen; } //############################################## // GET FILE/FOLDER NAME //############################################## function getFileFromPath($str) { $str = preg_replace("/^(.)+\//","",$str); $str = preg_replace("/^~/","",$str); return $str; } //############################################## // PARENT OPEN FOLDER //############################################## function parentOpenFolder() { ?> <html> <body> <script type="text/javascript"> parent.processForm('&ftpAction=openFolder'); </script> </body> </html> <?php } //############################################## // LOAD EDITABLE EXTENSIONS //############################################## function loadEditableExts() { global $editableExts; if ($editableExts != "") { ?> <script type="text/javascript"> <?php echo "var editableExts = new Array();"."\n"; $extAr = explode(",",$editableExts); $n = sizeof($extAr); for ($i=0;$i<$n;$i++) { echo "editableExts[".$i."] = '".$extAr[$i]."';\n"; } } ?> </script> <?php } //############################################## // REPLACE TILDE FROM PATH //############################################## function replaceTilde($str) { $str = str_replace("~","/",$str); $str = str_replace("//","/",$str); return $str; } //############################################## // ASSIGN NUMBER TO WIN/LIN VAR //############################################## function assignWinLinNum() { if ($_SESSION["win_lin"] == "lin") return 1; if ($_SESSION["win_lin"] == "win") return 0; } //############################################## // GET PARENT DIRECTORY //############################################## function getParentDir() { if ($_SESSION["dir_current"] == "/") { $parent = "/"; } else { $path_parts = pathinfo($_SESSION["dir_current"]); $parent = $path_parts['dirname']; } return $parent; } //############################################## // DISPLAY SKIN SELECT //############################################## function displaySkinSelect($skin) { global $lang_skin; global $lang_skins_empty; global $lang_skins_locked; global $lang_skins_missing; $dir = "skins"; $skin_found=0; if ($skin == "") $skin = "monsta.css"; if (is_dir($dir)) { if ($dh = opendir($dir)) { $i=0; while (($file = readdir($dh)) !== false) { if ($file != "" && $file != "." && $file != ".." && $file != "index.html") { $i++; $file_name = $file; $skin_found=1; // Strip extension $file_name = preg_replace("/\..*$/","",$file_name); $skins = "<option value=\"".$file_name."\""; if ($file_name == $skin) $skins .= " selected"; $skins .= ">"; $skins .= preg_replace("/\..*$/","",$file_name); $skins .= "</option>"; $skinsAr[] = $skins; } } closedir($dh); if ($skin_found == 0) { echo "<p>".$lang_skin.": "; echo str_replace("[skins]","<strong>skins</strong>", $lang_skins_empty); } else { if ($i > 1) { sort($skinsAr); echo "<p>".$lang_skin.": "; echo "<select name=\"skin\" tabindex=\"-1\">"; foreach ($skinsAr AS $skin) { echo $skin; } echo "</select>"; } else { echo "<input type=\"hidden\" name=\"skin\" value=\"".$file_name."\">"; } } } else { echo "<p>".$lang_skin.": "; echo str_replace("[skins]","<strong>skins</strong>", $lang_skins_locked); } } else { echo "<p>".$lang_skin.": "; echo str_replace("[skins]","<strong>skins</strong>", $lang_skins_missing); } } //############################################## // DISPLAY LANGUAGE SELECT //############################################## function displayLangSelect($lang) { global $lang_language; $dir = "languages"; $lang_found=0; if (is_dir($dir)) { if ($dh = opendir($dir)) { $i=0; while (($file = readdir($dh)) !== false) { if ($file != "" && $file != "." && $file != ".." && $file != "index.html") { $i++; $file_name = $file; // Open file to get language name include($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($dir."/".$lang.".php"); } } 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!"; } } //############################################## // TIDY FOLDER PATH //############################################## function tidyFolderPath($str1,$str2) { $str1 = replaceTilde($str1); if ($str1 == "/") return "/".$str2; else return $str1."/".$str2; } //############################################## // LOAD JAVASCRIPT LANGUAGE VARS //############################################## function loadJsLangVars() { // Include language file again to save listing globals $langFileArray = getFileArray("languages"); if (in_array($_SESSION["lang"],$langFileArray)) include("languages/".$_SESSION["lang"].".php"); else include("languages/en_us.php"); ?> <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 } //############################################## // LOAD JAVASCRIPT LANGUAGE VARS //############################################## function setLangFile() { // 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 == "") { $dir = "languages"; if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if ($file != "." && $file != "..") { include("languages/".$file); if ($file_lang_default == 1) $lang = str_replace(".php","",$file); } } closedir($dh); } } } $_SESSION["lang"] = $lang; } //############################################## // SESSION ENDED //############################################## function sessionExpired($message) { global $lang_title_ended; global $lang_btn_login; $title = $lang_title_ended; // Display pop-up displayPopupOpen(1,200,90,1,$title); echo $message; echo "<p><input type=\"button\" id=\"btnLogin\" value=\"".$lang_btn_login."\" onClick=\"document.location.href='?openFolder=".$_POST["openFolder"]."'\">"; displayPopupClose(1,"",0); } //############################################## // SET UPLOAD LIMIT //############################################## function setUploadLimit() { global $lang_size_kb; global $lang_size_mb; global $lang_size_gb; global $lang_size_tb; if ($_SESSION["upload_limit"] == "") { // Get the server's memory limit //if (preg_match('/msie [1-8]/i',$_SERVER['HTTP_USER_AGENT'])) // $upload_limit = ini_get('upload_max_filesize'); //else $upload_limit = ini_get('memory_limit'); $ll = substr($upload_limit,strlen($upload_limit)-1,1); if ($ll == "B") { $upload_limit = str_replace("B","",$upload_limit); $upload_limit = $upload_limit * 1; } if ($ll == "K") { $upload_limit = str_replace("K","",$upload_limit); $upload_limit = $upload_limit * 1024; } if ($ll == "M") { $upload_limit = str_replace("M","",$upload_limit); $upload_limit = $upload_limit * 1024 * 1024; } if ($ll == "G") { $upload_limit = str_replace("G","",$upload_limit); $upload_limit = $upload_limit * 1024 * 1024 * 1024; } if ($ll == "T") { $upload_limit = str_replace("T","",$upload_limit); $upload_limit = $upload_limit * 1024 * 1024 * 1024 * 1024; } $_SESSION["upload_limit"] = $upload_limit; } } //############################################## // ADJUST BUTTON WIDTH (FOR LANGUAGES) //############################################## function adjustButtonWidth($str) { if (strlen(utf8_decode($str)) > 12) return "inputButtonNf"; else return "inputButton"; } //############################################## // CHECK REFERER MATCHES DOMAIN //############################################## 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; } } //############################################## // CHECK FIRST CHAR IS TILDE //############################################## function checkFirstCharTilde($str) { if (substr($str,0,1) == "~") return 1; else return 0; } //############################################## // RECORD FILE/FOLDER ERROR //############################################## function recordFileError($str,$file_name,$error) { $_SESSION["errors"][] = str_replace("[".$str."]","<strong>".sanitizeStr($file_name)."</strong>",$error); } //############################################## // RECORD FILE/FOLDER ERROR //############################################## function getFileArray($dir) { $langFileArray = array(); if (is_dir($dir)) { if ($dh = opendir($dir)) { $i=0; while (($file = readdir($dh)) !== false) { if ($file != "" && $file != "." && $file != ".." && $file != "index.html") { $file = str_replace(".php","",$file); $langFileArray[] = $file; } } closedir($dh); } } return $langFileArray; } ############################################### # SANITIZE VARS ############################################### function sanitizeStr($str) { $str = trim($str); $str = str_replace("&","&",$str); $str = str_replace('"','"',$str); $str = str_replace("<","<",$str); $str = str_replace(">",">",$str); return $str; } ?>