File "style02.php"
Full Path: /home/analogde/www/Administratif/FTP/Monsta-FTP-master/style02.php
File size: 186.74 KB
MIME-type: text/x-php
Charset: utf-8
<?php
$version = "1.8.8";
require("config.php");
require("gestion_access.php");
ini_set('max_execution_time', $maxExecTime);
ini_set('memory_limit', $maxFileSize);
header("X-Frame-Options: SAMEORIGIN");
//$ftp_host = "ftp.cluster011.hosting.ovh.net"
//$ftp_user = "analogde";
//$ftp_pass = "rainbow";
////$racine = "https://analog-design.net/2024_PHP/2024_PHP_18_11_2024/";
/// ~/www/2024_PHP/2024_PHP_18_11_2024
error_reporting(0);
saveFtpDetailsCookie();
startSession();
$_SESSION["logged_user"] = "patrice";
$_SESSION["logged_user"] = "john";
# SET FOLDERS
//$user_racine = "~/www/2024_PHP/2024_PHP_18_11_2024";
//$_SESSION["user_racine"] = "~/www/2024_PHP/2024_PHP_18_11_2024";
$templates_dir = "templates";
$languages_dir = "languages";
# INCLUDE LANGUAGE FILE
if ($_SESSION["lang"] == "" || isset($_POST["lang"]))
setLangFile();
//$langFileArray = getFileArray("languages");
include($languages_dir . "/en_us.php");
//if (in_array($_SESSION["lang"], $langFileArray))
include($languages_dir . "/" . $_SESSION["lang"]);
/************/
$taille = sizeof($_SESSION["dir_history"]);
$myfile = fopen("TRACE INIT1.txt", "w") or die("Unable to open file!");
$txt = "TRACE INIT1 : " .$taille . " " .$_SESSION["dir_current"] . " " .$_SESSION["dir_history"][0] ."\n";
fwrite($myfile, $txt);
fclose($myfile);
/************/
# SET VARS
// Check for file download
if (isset($_GET["dl"]))
$ftpAction = "download";
// Check for zip download
if ($_GET["ftpAction"] == "download_zip")
$ftpAction = "download_zip";
// 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;
$myfile = fopen("Submit.txt", "w") or die("Unable to open file!");
$txt = "Submit " .$ajaxRequest ." +++++ " .$_POST["ftpAction"] ." ---- " .$_POST["openFolder"] ."\n";
fwrite($myfile, $txt);
fclose($myfile);
}
else
{
$ajaxRequest = 0;
// au départ on a des tableaux vides
//$myfile = fopen("Chargement.txt", "w") or die("Unable to open file!");
//$txt = "Chargement : " .$ajaxRequest ." +++++ " .$_SESSION["dir_current"] ." ---- " .$_SESSION["dir_history"] ."\n";
//fwrite($myfile, $txt);
//fclose($myfile);
/************/
$taille = sizeof($_SESSION["dir_history"]);
$myfile = fopen("TRACE INIT2.txt", "w") or die("Unable to open file!");
$txt = "TRACE INIT2 : " .$taille . " " .$_SESSION["dir_current"] . " " .$_SESSION["dir_history"][0] ."\n";
fwrite($myfile, $txt);
fclose($myfile);
/************/
}
// 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 == "download_zip" || $ftpAction == "iframe_upload" || $ftpAction == "editProcess")
{
// Login
attemptLogin();
// Check referer
if (checkReferer() == 1)
{
//$myfile = fopen("CheckReferer.txt", "w") or die("Unable to open file!");
//$txt = "CheckReferer : passage " ."\n";
//fwrite($myfile, $txt);
//fclose($myfile);
// Display content when logged in
if ($_SESSION["loggedin"] == 1)
{
if ($ftpAction == "download") {
downloadFile();
//parentOpenFolder();
}
if ($ftpAction == "download_zip") {
downloadFiles();
// parentOpenFolder();
}
if ($ftpAction == "iframe_upload") {
iframeUpload();
// parentOpenFolder();
}
if ($ftpAction == "editProcess") {
editProcess();
}
}
}
}
else
{
if ($ajaxRequest == 0)
{
/************/
$taille = sizeof($_SESSION["dir_history"]);
$myfile = fopen("TRACE INIT3.txt", "w") or die("Unable to open file!");
$txt = "TRACE INIT3 : " .$taille . " " .$_SESSION["dir_current"] . " " .$_SESSION["dir_history"][0] ."\n";
fwrite($myfile, $txt);
fclose($myfile);
/************/
// Check if logout link has been clicked
checkLogOut();
// Include the header
displayHeader();
}
// Attempt to login with session or post vars
attemptLogin();
/************/
$taille = sizeof($_SESSION["dir_history"]);
$myfile = fopen("TRACE INIT4.txt", "w") or die("Unable to open file!");
$txt = "TRACE INIT4 : " .$taille . " " .$_SESSION["dir_current"] . " " .$_SESSION["dir_history"][0] ."\n";
fwrite($myfile, $txt);
fclose($myfile);
/************/
// Check referer
if (checkReferer() == 1)
{
/************/
$taille = sizeof($_SESSION["dir_history"]);
$myfile = fopen("TRACE INIT5.txt", "w") or die("Unable to open file!");
$txt = "TRACE INIT5 : " .$taille . " " .$_SESSION["dir_current"] . " " .$_SESSION["dir_history"][0] ."\n";
fwrite($myfile, $txt);
fclose($myfile);
/************/
//$myfile = fopen("CheckReferer bis.txt", "w") or die("Unable to open file!");
//$txt = "CheckReferer : bis " ."\n";
//fwrite($myfile, $txt);
//fclose($myfile);
//$myfile = fopen("log_action.txt", "w") or die("Unable to open file!");
//fwrite($myfile, "action 1" .$_SESSION["dir_history"] ."\n");
// Process any FTP actions
processActions();
/************/
$taille = sizeof($_SESSION["dir_history"]);
$myfile = fopen("TRACE INIT6.txt", "w") or die("Unable to open file!");
$txt = "TRACE INIT6 : " .$taille . " " .$_SESSION["dir_current"] . " " .$_SESSION["dir_history"][0] ."\n";
fwrite($myfile, $txt);
fclose($myfile);
/************/
// Display content when logged in
if ($_SESSION["loggedin"] == 1)
{
//fwrite($myfile, "action 2 " .$_SESSION["dir_history"][0] ."\n");
if ($ajaxRequest == 0)
{
//fwrite($myfile, "action 3 " .$_SESSION["dir_history"][0] .$ajaxRequest ."\n");
displayFormStart();
displayFtpActions();
displayAjaxDivOpen();
}
//fwrite($myfile, "action 4 " .$ajaxRequest ."\n");
//fclose($myfile);
$taille = sizeof($_SESSION["dir_history"]);
$myfile = fopen("Post history.txt", "w") or die("Unable to open file!");
$txt = "Post history : " .$taille . " " .$_SESSION["dir_current"] . " " .$_SESSION["dir_history"][0] ."\n";
fwrite($myfile, $txt);
fclose($myfile);
// 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();
}
}
//fclose($myfile);
}
// Close FTP connection
@ftp_close($conn_id);
# FUNCTIONS
function startSession()
{
global $sessionName;
// Only change session name if session.auto_start is not 1, and session name is valid
if (!ini_get("session.auto_start") || ini_get("session.auto_start") == "0")
session_name(preg_match('/^[0-9]*[A-Za-z][A-Za-z0-9]*$/', $sessionName) ? $sessionName : "monstaftp");
@session_start();
$session_keys = array("user_ip", "loggedin",
"lang", "win_lin", "ip_check", "login_error", "login_fails", "login_lockout",
"ftp_ssl", "ftp_host", "ftp_user", "ftp_pass", "ftp_port", "ftp_pasv",
"interface", "dir_current", "dir_history", "clipboard_chmod", "clipboard_files",
"clipboard_folders", "clipboard_rename", "copy",
"errors", "upload_limit", "domain", "filesCharSet", "logged_user", "username" , "account_password"
);
foreach($session_keys as $session_key) {
if (!isset($_SESSION[$session_key]))
$_SESSION[$session_key] = ''; // avoid a lot of "undefined index"
}
}
function saveFtpDetailsCookie()
{
if ($_POST["login"] == 1) {
if ($_POST["login_save"] == 1) {
$s = 31536000; // seconds in a year
setcookie("ftp_ssl", $_POST["ftp_ssl"], time() + $s, '/', null, null, true);
setcookie("ftp_host", trim($_POST["ftp_host"]), time() + $s, '/', null, null, true);
setcookie("ftp_user", trim($_POST["ftp_user"]), time() + $s, '/', null, null, true);
setcookie("ftp_pass", trim($_POST["ftp_pass"]), time() + $s, '/', null, null, true);
setcookie("ftp_port", trim($_POST["ftp_port"]), time() + $s, '/', null, null, true);
setcookie("ftp_pasv", $_POST["ftp_pasv"], time() + $s, '/', null, null, true);
setcookie("interface", $_POST["interface"], time() + $s, '/', null, null, true);
setcookie("login_save", $_POST["login_save"], time() + $s, '/', null, null, true);
setcookie("lang", $_POST["lang"], time() + $s, '/', null, null, true);
setcookie("ip_check", $_POST["ip_check"], time() + $s, '/', null, null, true);
} else {
setcookie("ftp_ssl", "", time() - 3600);
setcookie("ftp_host", "", time() - 3600);
setcookie("ftp_user", "", time() - 3600);
setcookie("ftp_pass", "", time() - 3600);
setcookie("ftp_port", "", time() - 3600);
setcookie("ftp_pasv", "", time() - 3600);
setcookie("interface", "", time() - 3600);
setcookie("login_save", "", time() - 3600);
setcookie("lang", "", time() - 3600);
setcookie("ip_check", "", time() - 3600);
}
}
}
function attemptLogin()
{
global $conn_id;
global $ftpHost;
global $ftpPort;
global $ftpMode;
global $ftpSSL;
global $ftpDir;
global $lang_missing_fields;
global $lang_ip_conflict;
if (connectFTP(0) == 1 && $_POST["login"] != 1)
{
?>
<script type="text/javascript">
alert("PLouf");
</script>
<?php
// Check for hijacked session with IP check
if ($_SESSION["ip_check"] == 1) {
if ($_SERVER['REMOTE_ADDR'] == $_SESSION["user_ip"]) {
$_SESSION["loggedin"] = 1;
} else {
$_SESSION["errors"] = $lang_ip_conflict;
sessionExpired($lang_ip_conflict);
logOut();
}
}
else
{
$_SESSION["loggedin"] = 1;
}
}
else
{
?>
<script type="text/javascript">
alert("Zorro");
</script>
<?php
if ($_POST["login"] == 1)
{
// Check for login errors
?>
<script type="text/javascript">
alert("Login");
</script>
<?php
if (checkLoginErrors() == 1)
{
?>
<script type="text/javascript">
alert("Errors");
</script>
<?php
$_SESSION["login_error"] = $lang_missing_fields;
displayLoginForm(1);
}
else
{
?>
<script type="text/javascript">
alert("Blabla");
</script>
<?php
// Set POST vars to SESSION
if ($ftpHost == "")
{
$_SESSION["ftp_host"] = trim($_POST["ftp_host"]);
$_SESSION["ftp_port"] = trim($_POST["ftp_port"]);
$_SESSION["ftp_pasv"] = empty($_POST["ftp_pasv"])?0:1;
$_SESSION["ftp_ssl"] = empty($_POST["ftp_ssl"])?0:1;
}
else
{
$_SESSION["ftp_host"] = $ftpHost;
$_SESSION["ftp_port"] = $ftpPort;
$_SESSION["ftp_pasv"] = $ftpMode;
$_SESSION["ftp_ssl"] = $ftpSSL;
}
$_SESSION["ftp_user"] = trim($_POST["ftp_user"]);
$_SESSION["ftp_pass"] = trim($_POST["ftp_pass"]);
$_SESSION["username"] = trim($_POST["username"]);
$_SESSION["account_password"] = trim($_POST["account_password"]);
$_SESSION["interface"] = empty($_POST["interface"])?"":"adv";
$_SESSION["lang"] = $_POST["lang"];
$_SESSION["ip_check"] = $_POST["ip_check"];
if (connectFTP(1) == 1)
{
?>
<script type="text/javascript">
var toto = "<?php echo " +++ Splendide " ." " .$_SESSION["logged_user"] ." " .$_SESSION["ftp_user"] ." " .DB_mysql($_SESSION["ftp_user"]) ." " .$ftpDir; ?>";
alert(toto);
</script>
<?php
$_SESSION["loggedin"] = 1;
///555
//2024_PHP/2024_PHP_25_11_2024/FTP/Monsta-FTP-master
/*
// avant $_SESSION["logged_user"] ???? a voir plus tard
if( $_SESSION["username"] === "john" )
{
$_SESSION["user_racine"] = "~/www/2024_PHP/2024_PHP_25_11_2024/FTP/Monsta-FTP-master";
//$dir = "~/www/2024_PHP/2024_PHP_18_11_2024";
}
if( $_SESSION["username"] === "patrice" )
{
$_SESSION["user_racine"] = "~/www/PATRICE";
//$dir = "~/www/2024_PHP/2024_PHP_18_11_2024";
}
*/
$dir = $_SESSION["user_racine"];
// 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;
// $myfile = fopen("Init.txt", "w") or die("Unable to open file!");
// $txt = $ftpDir ."\n";
// fwrite($myfile, $txt);
// fclose($myfile);
}
else
{
if (@ftp_chdir($conn_id, "~" . $ftpDir))
{
$_SESSION["dir_current"] = "~" . $ftpDir;
//$myfile = fopen("Init.txt", "w") or die("Unable to open file!");
//$txt = $ftpDir ."\n";
//fwrite($myfile, $txt);
//fclose($myfile);
}
}
}
}
else
{
?>
<script type="text/javascript">
alert("Bingo");
</script>
<?php
displayLoginForm(1);
}
}
}
else
{
// il faut afficher le formulaire de connexion
?>
<script type="text/javascript">
//var toto = "<?php echo " +++ " .$_SESSION["user_racine"] ." " .$current; ?>";
alert("Formulaire");
</script>
<?php
displayLoginForm(0);
}
}
//$myfile = fopen("attempt_login.txt", "w") or die("Unable to open file!");
//$txt = "Login " .$_SESSION["dir_current"] ."\n";
//fwrite($myfile, $txt);
//fclose($myfile);
}
function displayHeader()
{
$titre = basename($_SERVER["SCRIPT_FILENAME"], '.php');
?>
<!DOCTYPE html>
<html>
<head>
<title>Patoche FTP - 2024</title>
<title><?php echo $titre; ?></title>
<link href="css/style.css?<?php echo date("U"); ?>" rel="stylesheet" type="text/css">
<link href="css/colors.css?<?php echo date("U"); ?>" rel="stylesheet" type="text/css">
<style>
#headerDiv {
height:40px;
padding:20px 20px 20px 10px;
}
.center {
padding:5px;
}
.info {
width:20px;
padding:5px;
}
.unstyled-button {
border: none;
padding: 0;
background: none;
}
.droite {
float: right;
margin-right: 250px; /* Ajoute un espace entre l'image et le texte */
}
.non-selectionnable {
-webkit-user-select: none; /* Pour les navigateurs basés sur WebKit (Chrome, Safari) */
-moz-user-select: none; /* Pour Firefox */
-ms-user-select: none; /* Pour Internet Explorer et Edge */
user-select: none; /* Standard */
}
.hidden-text {
color: transparent;
}
/*
.center {
margin: auto;
width: 60%;
border: 3px solid #73AD21;
padding: 10px;
}
*/
/*.modal {
/* display: block; /* none/* Hidden by default */
/* position: fixed; /* Stay in place */
/* z-index: 1; /* Sit on top */
/* left: 0;
/* top: 0;
/* width: 100%; /* Full width */
/* height: 100%; /* Full height */
/* overflow: auto; /* Enable scroll if needed */
/* background-color: rgb(0,0,0); /* Fallback color */
/* background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
/*}
/* Modal Content */
/*
.modal-content {
background-color: #fefefe;
margin: 15% auto; /* 15% from the top and centered */
/*padding: 20px;
border: 1px solid #888;
width: 80%; /* Could be more or less, depending on screen size */
/*max-width: 600px;
}*/
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body <?php
if ($_POST["login"] == 1) {
?>onresize="setFileWindowSize('ajaxContentWindow',0,0);"<?php
}
?>>
<?php
}
function displayFooter()
{
?>
</body>
</html>
<?php
}
function displayLoginForm($posted)
{
global $ftpHost;
global $ajaxRequest;
global $lang_max_logins;
global $lang_btn_login;
global $lang_ftp_host;
global $lang_port;
global $lang_passive_mode;
global $lang_username;
global $lang_password;
global $lang_ftp_ssl;
global $lang_adv_interface;
global $lang_save_login;
global $lang_ip_check;
global $lang_session_expired;
global $showAdvOption;
global $showLockSess;
// Check for lockout
$date_now = date("YmdHis");
if ($_SESSION["login_lockout"] > 0 && $date_now < $_SESSION["login_lockout"])
{
$n = ceil(($_SESSION["login_lockout"] - $date_now) / 60);
$_SESSION["login_error"] = str_replace("[n]", $n, $lang_max_logins);
}
// Check for posted form
if ($posted == 1)
{
?>
<script type="text/javascript">
alert("DEBUG01");
</script>
<?php
// 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"]);
$username = trim($_POST["username"]);
$account_password = trim($_POST["account_password"]);
$ftp_port = trim($_POST["ftp_port"]);
$ftp_pasv = $_POST["ftp_pasv"];
$interface = $_POST["interface"];
$lang = $_POST["lang"];
$login_save = $_POST["login_save"];
$ip_check = $_POST["ip_check"];
$_SESSION["domain"] = $_SERVER["SERVER_NAME"];
}
else
{
?>
<script type="text/javascript">
alert("DEBUG02");
</script>
<?php
// Set values from cookies
if ($_COOKIE["login_save"] == 1)
{
$ftp_ssl = $_COOKIE["ftp_ssl"];
$ftp_host = $_COOKIE["ftp_host"];
$ftp_user = $_COOKIE["ftp_user"];
$ftp_pass = $_COOKIE["ftp_pass"];
$ftp_port = $_COOKIE["ftp_port"];
$ftp_pasv = $_COOKIE["ftp_pasv"];
$interface = $_COOKIE["interface"];
$lang = $_COOKIE["lang"];
$login_save = $_COOKIE["login_save"];
$ip_check = $_COOKIE["ip_check"];
}
else
{
?>
<script type="text/javascript">
alert("DEBUG03");
</script>
<?php
$ftp_port = 21;
$ftp_pasv = 1;
}
}
if ($ajaxRequest == 1)
{
?>
<script type="text/javascript">
alert("DEBUG04");
</script>
<?php
sessionExpired($lang_session_expired);
logOut();
}
else
{
?>
<script type="text/javascript">
alert("DEBUG05");
</script>
<?php
// 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">FTP access</div>
<div id="loginFormContent">
<?php
if ($_SESSION["login_error"] != "") {
?>
<div id="loginFormError">
<?php
echo $_SESSION["login_error"];
?>
</div>
<?php
}
?>
<input type="hidden" name="login" value="1">
<input type="hidden" name="openFolder" value="<?php
echo sanitizeStr($_GET["openFolder"]);
?>">
<?php
if ($ftpHost == "") {
?>
<?php
echo $lang_ftp_host;
?>:
<?php $ftp_host = "ftp.cluster011.hosting.ovh.net"; ?>
<br><input type="text" name="ftp_host" readonly class="hidden-text" value="<?php
echo sanitizeStrTrim($ftp_host);
?>" size="30" class="<?php
if ($posted == 1 && $ftp_host == "")
echo "bgFormError";
?>">
<?php
echo $lang_port;
?>: <input type="text" name="ftp_port" readonly value="<?php echo sanitizeStrTrim($ftp_port); ?>" size="3"
class="<?php if ($posted == 1 && $ftp_port == "")
echo "bgFormError";
?>" tabindex="-1">
<p>
<?php
}
?>
<?php
echo $lang_username;
?>:
<?php $ftp_user = "analogde"; ?>
<br><input type="text" name="ftp_user" readonly class="hidden-text" value="<?php
echo sanitizeStrTrim($ftp_user);
?>" size="30" class="<?php
if ($posted == 1 && $ftp_user == "")
echo "bgFormError";
?>">
<p><?php
echo $lang_password;
?>:
<?php $ftp_pass = "rainbow"; ?>
<br><input type="password" name="ftp_pass" readonly class="hidden-text" value="<?php
echo sanitizeStrTrim($ftp_pass);
?>" size="30" class="<?php
if ($posted == 1 && $ftp_pass == "")
echo "bgFormError";
?>" autocomplete="off">
<p><?php
echo "Username";
?>:
<?php //$ftp_pass = "rainbow"; ?>
<br><input type="text" name="username" value="<?php echo sanitizeStrTrim($username); ?>" size="30"
class="<?php if ($posted == 1 && $username == "")
echo "bgFormError";
?>" autocomplete="off">
<p><?php
echo "Password";
?>:
<?php //$ftp_pass = "rainbow"; ?>
<br><input type="password" name="account_password" value="<?php echo sanitizeStrTrim($account_password); ?>" size="30"
class="<?php if ($posted == 1 && $account_password == "")
echo "bgFormError";
?>" autocomplete="off">
<p><input type="submit" value="<?php
echo $lang_btn_login;
?>" id="btnLogin">
<br><br>
<p><hr noshade>
<?php
if ($ftpHost == "") {
?>
<p><input type="checkbox" name="ftp_pasv" value="1" <?php
if ($ftp_pasv == 1)
echo "checked";
?> tabindex="-1"> <?php
echo $lang_passive_mode;
?>
<?php
if (function_exists('ftp_ssl_connect')) {
?>
<p><input type="checkbox" name="ftp_ssl" value="1" <?php
if ($ftp_ssl == 1)
echo "checked";
?> tabindex="-1"> <?php
echo $lang_ftp_ssl;
?>
<?php
}
}
?>
<?php
if ($showLockSess == 1) {
?>
<p><input type="checkbox" name="ip_check" value="1" <?php
if ($ip_check == 1)
echo "checked";
?> tabindex="-1"> <?php
echo $lang_ip_check;
?>
<?php
}
?>
<?php
if ($showAdvOption == 1) {
?>
<p><input type="checkbox" name="interface" value="adv" <?php
if ($interface == "adv" || $interface == "")
echo "checked";
?> tabindex="-1"> <?php
echo $lang_adv_interface;
?>
<?php
} else {
?>
<input type="hidden" name="interface" value="">
<?php
}
?>
<p><input type="checkbox" name="login_save" value="1" <?php
if ($login_save == 1)
echo "checked";
?> tabindex="-1"> <?php
echo $lang_save_login;
?>
<p><hr noshade>
<?php
echo displayLangSelect($_SESSION["lang"]);
?>
</div>
</div>
</div>
</form>
<?php
// Reset error
$_SESSION["login_error"] = "";
}
}
function checkLoginErrors()
{
global $ftpHost;
// Check for blank fields
if ($ftpHost == "") {
if ($_POST["ftp_host"] == "" || trim($_POST["ftp_user"]) == "" || trim($_POST["ftp_pass"]) == "" || trim($_POST["ftp_port"]) == "")
return 1;
else
return 0;
}
if ($ftpHost != "") {
if (trim($_POST["ftp_user"]) == "" || trim($_POST["ftp_pass"]) == "")
return 1;
else
return 0;
}
}
/*********************************************************/
function connectFTP($posted)
{
global $conn_id;
global $lockOutTime;
global $lang_cant_connect;
global $lang_cant_authenticate;
if ($_SESSION["ftp_host"] != "" && $_SESSION["ftp_port"] != "" && $_SESSION["ftp_user"] != "" && $_SESSION["ftp_pass"] != "")
{
// Connect
if ($_SESSION["ftp_ssl"] == 1)
$conn_id = @ftp_ssl_connect($_SESSION["ftp_host"], $_SESSION["ftp_port"]) or $connectFail = 1;
else
$conn_id = @ftp_connect($_SESSION["ftp_host"], $_SESSION["ftp_port"]) or $connectFail = 1;
if ($connectFail == 1)
{
$_SESSION["login_error"] = $lang_cant_connect;
return 0;
}
else
{
$dbHost = "analogdepat.mysql.db";
$dbUsername = "analogdepat";
$dbPassword = "Un92pac007";
$dbName = "analogdepat";
$locked_access = 0;
$resultat = verifierConnexion($dbHost, $dbUsername, $dbPassword, $dbName);
if ($resultat['conn'] !== null)
{
/*
?>
<script type="text/javascript">
var msg = "<?php echo " DB Mysql : OK "; ?>";
alert(msg);
</script>
<?php
*/
$reponse = query_username_exist($resultat['conn'] , $_SESSION["username"]);
if( !empty($reponse) )
{
/*
?>
<script type="text/javascript">
var msg = "<?php echo " Username OK "; ?>";
alert(msg);
</script>
<?php
*/
if(verificationPassword( $reponse, $_SESSION["account_password"]) )
{
/*
?>
<script type="text/javascript">
var msg = "<?php echo " Password OK "; ?>";
alert(msg);
</script>
<?php
*/
$locked_access = 1;
$_SESSION["user_racine"] = $reponse["chemin"]; //"~/www/PATRICE";
// 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
{
/*
?>
<script type="text/javascript">
var msg = "<?php echo " Password not found ! "; ?>";
alert(msg);
</script>
<?php
*/
$_SESSION["login_error"] = "Error : password invalid.";
return 0;
}
}
else
{
/*
?>
<script type="text/javascript">
var msg = "<?php echo " Username not found ! "; ?>";
alert(msg);
</script>
<?php
*/
$_SESSION["login_error"] = "Username not found !.";
return 0;
}
}
else
{
$_SESSION["login_error"] = " DB access error !.";
return 0;
}
}
}
else
{
return 0;
}
}
/*********************************************************/
function aaaaconnectFTP($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
{
$dbHost = "analogdepat.mysql.db";
$dbUsername = "analogdepat";
$dbPassword = "Un92pac007";
$dbName = "analogdepat";
$locked_access = 0;
$resultat = verifierConnexion($dbHost, $dbUsername, $dbPassword, $dbName);
if ($resultat['conn'] !== null)
{
?>
<script type="text/javascript">
var msg = "<?php echo " DB Mysql : OK "; ?>";
alert(msg);
</script>
<?php
//$username = "patrice";
//$password = "Azerty";
$reponse = query_username_exist($resultat['conn'] , $_SESSION["username"]);
if( !empty($reponse) )
{
if(verificationPassword( $reponse, $_SESSION["account_password"]) )
{
$locked_access = 1;
$_SESSION["user_racine"] = $reponse["chemin"]; //"~/www/PATRICE";
?>
<script type="text/javascript">
var msg = "<?php echo "Path : " .$reponse["password"] ." " .$reponse["chemin"]; ?>";
alert(msg);
</script>
<?php
}
else
{
?>
<script type="text/javascript">
var msg = "<?php echo "Le password n'est pas valide ?.";
alert(msg);
</script>
<?php
}
}
}
//if( $_SESSION["username"] === "john" )
if( $locked_access )
{
?>
<script type="text/javascript">
// Utiliser PHP pour écrire le contenu de la variable $toto dans le script JavaScript
var toto = "<?php echo " ACCOUNT OK " .$_SESSION["username"]; ?>";
alert(toto);
</script>
<?php
// 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;
}
}
}
else
{
return 0;
}
}
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" alt="" style="border:0"></div>
<?php
}
function displayFormStart()
{
?>
<form method="post" action="?" enctype="multipart/form-data" name="ftpActionForm" id="ftpActionForm">
<?php
}
function displayFormEnd()
{
?>
</form>
<?php
}
function displayAjaxIframe()
{
?>
<iframe name="ajaxIframe" id="ajaxIframe" width="0" height="0" style="display:none;visibility:hidden;border:0"></iframe>
<?php
}
function loadAjax()
{
?>
<script type="text/javascript" src="ajax.js?<?php echo date("U"); ?>" charset="utf-8"></script>
<?php
}
function getFtpRawList($folder_path)
{
$myfile = fopen("RawList.txt", "w") or die("Unable to open file!");
$txt = " RawList " .$folder_path ."\n";
fwrite($myfile, $txt);
// Because ftp_rawlist() doesn't support folders with spaces in
// their names, it is neccessary to first change into the directory.
global $conn_id;
global $lang_folder_cant_access;
$isError = 0;
if (!@ftp_chdir($conn_id, $folder_path))
{
if (checkFirstCharTilde($folder_path) == 1)
{
if (!@ftp_chdir($conn_id, replaceTilde($folder_path)))
{
recordFileError("folder", replaceTilde($folder_path), $lang_folder_cant_access);
$isError = 1;
}
}
else
{
recordFileError("folder", $folder_path, $lang_folder_cant_access);
$isError = 1;
}
}
if ($isError == 0)
{
if( file_exists("IsError.txt") )
{
//$myfile = fopen("NextIsError.txt", "w") or die("Unable to open file!");
// $txt = " Encore IsError " .$isError ."\n";
//fwrite($myfile, $txt);
//fclose($myfile);
}
else
{
//$myfile = fopen("IsError.txt", "w") or die("Unable to open file!");
//$txt = " IsError " .$isError ."\n";
//fwrite($myfile, $txt);
//fclose($myfile);
}
return ftp_rawlist($conn_id, ".");
}
}
function displayFiles()
{
/// 555
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;
//$racine = "https://analog-design.net/2024_PHP/2024_PHP_18_11_2024/";
//$_SESSION["dir_current"] = "~/www/2024_PHP/2024_PHP_18_11_2024";
$myfile = fopen("display_files.txt", "w") or die("Unable to open file!");
$txt = $_SESSION["dir_current"] ."\n";
fwrite($myfile, $txt);
fclose($myfile);
$ftp_rawlist = getFtpRawList($_SESSION["dir_current"]);
# TABLE HEADER
echo "<table width=\"100%\" cellpadding=\"7\" cellspacing=\"0\" id=\"ftpTable\">";
echo "<tr>";
echo "<td width=\"16\" class=\"ftpTableHeadingNf\"><input type=\"checkbox\" id=\"checkboxSelector\" onClick=\"checkboxSelectAll()\"></td>";
echo "<td width=\"16\" class=\"ftpTableHeadingNf\"></td>";
echo "<td class=\"ftpTableHeading\">" . getFtpColumnSpan("n", $lang_table_name) . "</td>";
echo "<td width=\"10%\" class=\"ftpTableHeading\">" . getFtpColumnSpan("s", $lang_table_size) . "</td>";
echo "<td width=\"10%\" class=\"ftpTableHeading\">" . getFtpColumnSpan("d", $lang_table_date) . "</td>";
echo "<td width=\"10%\" class=\"ftpTableHeading\">" . getFtpColumnSpan("t", $lang_table_time) . "</td>";
// Only display permissions/user/group for Linux advanced
if ($_SESSION["interface"] == "adv" && $_SESSION["win_lin"] != "win") {
echo "<td width=\"10%\" class=\"ftpTableHeading\">" . $lang_table_user . "</td>";
echo "<td width=\"10%\" class=\"ftpTableHeading\">" . $lang_table_group . "</td>";
echo "<td width=\"10%\" class=\"ftpTableHeading\">" . $lang_table_perms . "</td>";
}
echo "</tr>";
# FOLDER UP BUTTON
if ($_SESSION["dir_current"] != "/" && $_SESSION["dir_current"] != "~")
{
/*
echo "<tr>";
echo "<td width=\"16\"></td>";
echo "<td width=\"16\"><img src=\"images/icon_16_folder.gif\" width=\"16\" height=\"16\" alt=\"\"></td>";
if ($_SESSION["interface"] == "adv")
echo "<td colspan=\"7\">";
else
echo "<td colspan=\"4\">";
*/
// Get the parent directory
$parent = getParentDir($_SESSION["dir_current"]);
$current = $_SESSION["dir_current"];
//$user_racine = "~/www/2024_PHP/2024_PHP_18_11_2024";
?>
<script type="text/javascript">
// Utiliser PHP pour écrire le contenu de la variable $toto dans le script JavaScript
var toto = "<?php echo " +++ " .$_SESSION["user_racine"] ." " .$current; ?>";
alert(toto);
</script>
<?php
if( $current !== $_SESSION["user_racine"] )
{
echo "<tr>";
echo "<td width=\"16\"></td>";
echo "<td width=\"16\"><img src=\"images/icon_16_folder.gif\" width=\"16\" height=\"16\" alt=\"\"></td>";
if ($_SESSION["interface"] == "adv")
echo "<td colspan=\"7\">";
else
echo "<td colspan=\"4\">";
?>
<!--
<script type="text/javascript">
// Utiliser PHP pour écrire le contenu de la variable $toto dans le script JavaScript
//var toto = "<?php echo $parent ." " .$current; ?>";
//alert(toto);
alert("bingo");
</script>
-->
<?php
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>";
}
$myfile = fopen("ParentFolder.txt", "w") or die("Unable to open file!");
$txt = $parent ."\n";
fwrite($myfile, $txt);
fclose($myfile);
// openThisFolder dans javascript
// processForm dans javascript
// blocage si le parent est interdit d'accés : ~/www
//$racine = "~/www";
//if (strcmp($racine, $parent) !== 0)
//{
///// 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 "<div class=\"width100pc\" onDragOver=\"dragFile(event); selectFile('folder0',0);\" onDragLeave=\"unselectFolder('folder0')\" onDrop=\"dropFile('" . rawurlencode($parent) . "')\"><a href=\"#\" id=\"folder0\" draggable=\"false\" onClick=\"openThisFolder('" . rawurlencode($parent) . "',1)\">...</a></div>";
//echo "</td>";
//echo "</tr>";
}
# FOLDERS & FILES
if (sizeof($ftp_rawlist) > 0) {
// Linux
if ($_SESSION["win_lin"] == "lin" || $_SESSION["win_lin"] == "mac") {
echo createFileFolderArrayLin($ftp_rawlist, "folders");
echo createFileFolderArrayLin($ftp_rawlist, "links");
echo createFileFolderArrayLin($ftp_rawlist, "files");
}
// Windows
elseif ($_SESSION["win_lin"] == "win") {
echo createFileFolderArrayWin($ftp_rawlist, "folders");
echo createFileFolderArrayWin($ftp_rawlist, "files");
}
}
# CLOSE TABLE
echo "</table>";
}
function xxxxxxdisplayFiles()
{
/// 555
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;
//$racine = "https://analog-design.net/2024_PHP/2024_PHP_18_11_2024/";
//$_SESSION["dir_current"] = "~/www/2024_PHP/2024_PHP_18_11_2024";
$myfile = fopen("display_files.txt", "w") or die("Unable to open file!");
$txt = " Ce qui doit être charger : " .$_SESSION["dir_current"] ."\n";
fwrite($myfile, $txt);
fclose($myfile);
$ftp_rawlist = getFtpRawList($_SESSION["dir_current"]);
# TABLE HEADER
echo "<table width=\"100%\" cellpadding=\"7\" cellspacing=\"0\" id=\"ftpTable\">";
echo "<tr>";
echo "<td width=\"16\" class=\"ftpTableHeadingNf\"><input type=\"checkbox\" id=\"checkboxSelector\" onClick=\"checkboxSelectAll()\"></td>";
echo "<td width=\"16\" class=\"ftpTableHeadingNf\"></td>";
echo "<td class=\"ftpTableHeading\">" . getFtpColumnSpan("n", $lang_table_name) . "</td>";
echo "<td width=\"10%\" class=\"ftpTableHeading\">" . getFtpColumnSpan("s", $lang_table_size) . "</td>";
echo "<td width=\"10%\" class=\"ftpTableHeading\">" . getFtpColumnSpan("d", $lang_table_date) . "</td>";
echo "<td width=\"10%\" class=\"ftpTableHeading\">" . getFtpColumnSpan("t", $lang_table_time) . "</td>";
// Only display permissions/user/group for Linux advanced
if ($_SESSION["interface"] == "adv" && $_SESSION["win_lin"] != "win") {
echo "<td width=\"10%\" class=\"ftpTableHeading\">" . $lang_table_user . "</td>";
echo "<td width=\"10%\" class=\"ftpTableHeading\">" . $lang_table_group . "</td>";
echo "<td width=\"10%\" class=\"ftpTableHeading\">" . $lang_table_perms . "</td>";
}
echo "</tr>";
# FOLDER UP BUTTON
if ($_SESSION["dir_current"] != "/" && $_SESSION["dir_current"] != "~")
{
// echo '<script language="javascript">';
//echo 'alert("Interface")';
//echo '</script>';
// Get the parent directory
$parent = getParentDir($_SESSION["dir_current"]);
$racine = "~/www/2024_PHP/2024_PHP_18_11_2024";
?>
<?php
echo '<script language="javascript">';
echo 'alert("<?php echo $parent; ?>" )';
echo '</script>';
/*if (strcmp($racine, $parent) != 0)
{
echo "<tr>";
echo "<td width=\"16\"></td>";
echo "<td width=\"16\"><img src=\"images/icon_16_folder.gif\" width=\"16\" height=\"16\" alt=\"\"></td>";
}
if ($_SESSION["interface"] == "adv")
echo "<td colspan=\"7\">";
else
echo "<td colspan=\"4\">";
*/
// Get the parent directory
//$parent = getParentDir($_SESSION["dir_current"]);
//$racine = "~/www/2024_PHP/2024_PHP_18_11_2024";
// openThisFolder dans javascript
// processForm dans javascript
// blocage si le parent est interdit d'accés : ~/www
//$racine = "~/www";
//If this function returns 0, the two strings are equal.
/* if (strcmp($racine, $parent) == 0)
{
echo '<script language="javascript">';
echo 'alert("Interface")';
echo '</script>';
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 "<div class=\"width100pc\" onDragOver=\"dragFile(event); selectFile('folder0',0);\" onDragLeave=\"unselectFolder('folder0')\" onDrop=\"dropFile('" . rawurlencode($parent) . "')\"><a href=\"#\" id=\"folder0\" draggable=\"false\" onClick=\"openThisFolder('" . rawurlencode($parent) . "',1)\">...</a></div>";
echo "</td>";
echo "</tr>";
}
# FOLDERS & FILES
if (sizeof($ftp_rawlist) > 0) {
// Linux
if ($_SESSION["win_lin"] == "lin" || $_SESSION["win_lin"] == "mac") {
echo createFileFolderArrayLin($ftp_rawlist, "folders");
echo createFileFolderArrayLin($ftp_rawlist, "links");
echo createFileFolderArrayLin($ftp_rawlist, "files");
}
// Windows
elseif ($_SESSION["win_lin"] == "win") {
echo createFileFolderArrayWin($ftp_rawlist, "folders");
echo createFileFolderArrayWin($ftp_rawlist, "files");
}
}
# CLOSE TABLE
echo "</table>";
}
function getPlatform()
{
global $conn_id;
if ($_SESSION["win_lin"] == "") {
$type = ftp_systype($conn_id);
if (preg_match("/unix/i", $type, $matches))
$win_lin = "lin";
if (preg_match("/windows/i", $type, $matches))
$win_lin = "win";
$_SESSION["win_lin"] = $win_lin;
}
}
function createFileFolderArrayLin($ftp_rawlist, $type)
{
global $showDotFiles;
// Go through array of files/folders
foreach ($ftp_rawlist AS $ff) {
// Reset values
$time = "";
$year = "";
// Split up array into values
//$ff = preg_split("/[\s]+/", $ff, 9);
preg_match('/'. str_repeat('([^\s]+)\s+',7) . '([^\s]+) (.+)/', $ff, $matches);
$ff = array_slice($matches, 1);
$perms = $ff[0];
$user = $ff[2];
$group = $ff[3];
$size = $ff[4];
$month = $ff[5];
$day = $ff[6];
$file = $ff[8];
// Check if file starts with a dot
$dot_prefix = 0;
if ($showDotFiles == 0) {
if (preg_match("/^\.+/", $file))
$dot_prefix = 1;
}
if ($file != "." && $file != ".." && $dot_prefix == 0) {
// Where the last mod date is the previous year, the year will be displayed in place of the time
if (preg_match("/:/", $ff[7]))
$time = $ff[7];
else
$year = $ff[7];
// Set date
$date = formatFtpDate($day, $month, $year);
// Reset user and group
if ($user == "0")
$user = "-";
if ($group == "0")
$group = "-";
// Add folder to array
if (getFileType($perms) == "d") {
$foldAllAr[] = $file . "|d|" . $date . "|" . $time . "|" . $user . "|" . $group . "|" . $perms;
$foldNameAr[] = $file;
$foldDateAr[] = $date;
$foldTimeAr[] = $time;
$foldUserAr[] = $user;
$foldGroupAr[] = $group;
$foldPermsAr[] = $perms;
}
// Add link to array
if (getFileType($perms) == "l") {
$linkAllAr[] = $file . "|l|" . $date . "|" . $time . "|" . $user . "|" . $group . "|" . $perms;
$linkNameAr[] = $file;
$linkDateAr[] = $date;
$linkTimeAr[] = $time;
$linkUserAr[] = $user;
$linkGroupAr[] = $group;
$linkPermsAr[] = $perms;
}
// Add file to array
if (getFileType($perms) == "f") {
$fileAllAr[] = $file . "|" . $size . "|" . $date . "|" . $time . "|" . $user . "|" . $group . "|" . $perms;
$fileNameAr[] = $file;
$fileSizeAr[] = $size;
$fileDateAr[] = $date;
$fileTimeAr[] = $time;
$fileUserAr[] = $user;
$fileGroupAr[] = $group;
$filePermsAr[] = $perms;
}
}
}
// Check there are files and/or folders to display
if (is_array($foldAllAr) || is_array($linkAllAr) || is_array($fileAllAr)) {
// Set sorting order
if ($_POST["sort"] == "")
$sort = "n";
else
$sort = $_POST["sort"];
if ($_POST["ord"] == "")
$ord = "asc";
else
$ord = $_POST["ord"];
// Return folders
if ($type == "folders") {
if (is_array($foldAllAr)) {
// Set the folder arrays to sort
if ($sort == "n")
$sortAr = $foldNameAr;
if ($sort == "d")
$sortAr = $foldDateAr;
if ($sort == "t")
$sortAr = $foldTimeAr;
if ($sort == "u")
$sortAr = $foldUserAr;
if ($sort == "g")
$sortAr = $foldGroupAr;
if ($sort == "p")
$sortAr = $foldPermsAr;
// Multisort array
if (is_array($sortAr)) {
if ($ord == "asc")
array_multisort($sortAr, SORT_ASC, $foldAllAr);
else
array_multisort($sortAr, SORT_DESC, $foldAllAr);
}
// Format and display folder content
$folders = getFileListHtml($foldAllAr, "icon_16_folder.gif");
}
return $folders;
}
// Return links
if ($type == "links") {
if (is_array($linkAllAr)) {
// Set the folder arrays to sort
if ($sort == "n")
$sortAr = $linkNameAr;
if ($sort == "d")
$sortAr = $linkDateAr;
if ($sort == "t")
$sortAr = $linkTimeAr;
if ($sort == "u")
$sortAr = $linkUserAr;
if ($sort == "g")
$sortAr = $linkGroupAr;
if ($sort == "p")
$sortAr = $linkPermsAr;
// Multisort array
if (is_array($sortAr)) {
if ($ord == "asc")
array_multisort($sortAr, SORT_ASC, $linkAllAr);
else
array_multisort($sortAr, SORT_DESC, $linkAllAr);
}
// Format and display folder content
$links = getFileListHtml($linkAllAr, "icon_16_link.gif");
}
return $links;
}
// Return files
if ($type == "files") {
if (is_array($fileAllAr)) {
// Set the folder arrays to sort
if ($sort == "n")
$sortAr = $fileNameAr;
if ($sort == "s")
$sortAr = $fileSizeAr;
if ($sort == "d")
$sortAr = $fileDateAr;
if ($sort == "t")
$sortAr = $fileTimeAr;
if ($sort == "u")
$sortAr = $fileUserAr;
if ($sort == "g")
$sortAr = $fileGroupAr;
if ($sort == "p")
$sortAr = $filePermsAr;
// Multisort folders
if ($ord == "asc")
array_multisort($sortAr, SORT_ASC, $fileAllAr);
else
array_multisort($sortAr, SORT_DESC, $fileAllAr);
// Format and display file content
$files = getFileListHtml($fileAllAr, "icon_16_file.gif");
}
return $files;
}
}
}
function createFileFolderArrayWin($ftp_rawlist, $type)
{
// Go through array of files/folders
foreach ($ftp_rawlist AS $ff) {
// Split up array into values
$ff = preg_split("/[\s]+/", $ff, 4);
$date = $ff[0];
$time = $ff[1];
$size = $ff[2];
$file = $ff[3];
if ($size == "<DIR>")
$size = "d";
// Format date
$day = substr($date, 3, 2);
$month = substr($date, 0, 2);
$year = substr($date, 6, 4);
$date = formatFtpDate($day, $month, $year);
// Format time
$time = formatWinFtpTime($time);
// Add folder to array
if ($size == "d") {
$foldAllAr[] = $file . "|d|" . $date . "|" . $time . "|||";
$foldNameAr[] = $file;
$foldDateAr[] = $date;
$foldTimeAr[] = $time;
}
// Add file to array
if ($size != "d") {
$fileAllAr[] = $file . "|" . $size . "|" . $date . "|" . $time . "|||";
$fileNameAr[] = $file;
$fileSizeAr[] = $size;
$fileDateAr[] = $date;
$fileTimeAr[] = $time;
}
}
// Check there are files and/or folders to display
if (is_array($foldAllAr) || is_array($fileAllAr)) {
// Set sorting order
if ($_POST["sort"] == "")
$sort = "n";
else
$sort = $_POST["sort"];
if ($_POST["ord"] == "")
$ord = "asc";
else
$ord = $_POST["ord"];
// Return folders
if ($type == "folders") {
if (is_array($foldAllAr)) {
// Set the folder arrays to sort
if ($sort == "n")
$sortAr = $foldNameAr;
if ($sort == "d")
$sortAr = $foldDateAr;
if ($sort == "t")
$sortAr = $foldTimeAr;
// Multisort array
if (is_array($sortAr)) {
if ($ord == "asc")
array_multisort($sortAr, SORT_ASC, $foldAllAr);
else
array_multisort($sortAr, SORT_DESC, $foldAllAr);
}
// Format and display folder content
$folders = getFileListHtml($foldAllAr, "icon_16_folder.gif");
}
return $folders;
}
// Return files
if ($type == "files") {
if (is_array($fileAllAr)) {
// Set the folder arrays to sort
if ($sort == "n")
$sortAr = $fileNameAr;
if ($sort == "s")
$sortAr = $fileSizeAr;
if ($sort == "d")
$sortAr = $fileDateAr;
if ($sort == "t")
$sortAr = $fileTimeAr;
// Multisort folders
if ($ord == "asc")
array_multisort($sortAr, SORT_ASC, $fileAllAr);
else
array_multisort($sortAr, SORT_DESC, $fileAllAr);
// Format and display file content
$files = getFileListHtml($fileAllAr, "icon_16_file.gif");
}
return $files;
}
}
}
function getFileListHtml($array, $image)
{
global $trCount;
global $dateFormatUsa;
if ($trCount == 1)
$trCount = 1;
else
$trCount = 0;
$i = 1;
foreach ($array AS $file) {
list($file, $size, $date, $time, $user, $group, $perms) = explode("|", $file);
// Folder check (lin/win)
if ($size == "d")
$action = "folderAction";
// Link check (lin/win)
if ($size == "l")
$action = "linkAction";
// File check (lin/win)
if ($size != "d" && $size != "l")
$action = "fileAction";
// Set file path
if ($size == "l") {
$file_path = getPathFromLink($file);
$file = preg_replace("/ -> .*/", "", $file);
} else {
if ($_SESSION["dir_current"] == "/")
$file_path = "/" . $file;
else
$file_path = $_SESSION["dir_current"] . "/" . $file;
}
if ($trCount == 0) {
$trClass = "trBg0";
$trCount = 1;
} else {
$trClass = "trBg1";
$trCount = 0;
}
// Check for checkbox check (only if action button clicked)
if ($_POST["ftpAction"] != "") {
if ((sizeof($_SESSION["clipboard_rename"]) > 1 && in_array($file, $_SESSION["clipboard_rename"])) || (sizeof($_SESSION["clipboard_chmod"]) > 1 && in_array($file_path, $_SESSION["clipboard_chmod"])))
$checked = "checked";
else
$checked = "";
} else {
$checked = "";
}
// Set the date
if ($dateFormatUsa == 1)
$date = substr($date, 4, 2) . "/" . substr($date, 6, 2) . "/" . substr($date, 2, 2);
else
$date = substr($date, 6, 2) . "/" . substr($date, 4, 2) . "/" . substr($date, 2, 2);
$html .= "<tr class=\"" . $trClass . "\">";
$html .= "<td>";
$html .= "<input type=\"checkbox\" name=\"" . $action . "[]\" value=\"" . rawurlencode($file_path) . "\" onclick=\"checkFileChecked()\" " . $checked . ">";
$html .= "</td>";
$html .= "<td><img src=\"images/" . $image . "\" width=\"16\" height=\"16\"></td>";
$html .= "<td>";
// Display Folders
if ($action == "folderAction")
$html .= "<div class=\"width100pc\" onDragOver=\"dragFile(event); selectFile('folder" . $i . "',0);\" onDragLeave=\"unselectFolder('folder" . $i . "')\" onDrop=\"dropFile('" . rawurlencode($file_path) . "')\"><a href=\"#\" id=\"folder" . $i . "\" onClick=\"openThisFolder('" . rawurlencode($file_path) . "',1)\" onContextMenu=\"selectFile(this.id,1); displayContextMenu(event,'','" . rawurlencode($file_path) . "'," . assignWinLinNum() . ")\" draggable=\"true\" onDragStart=\"selectFile(this.id,1); setDragFile('','" . rawurlencode($file_path) . "')\">" . str_replace(" "," ",sanitizeStr($file)) . "</a></div>";
// Display Links
if ($action == "linkAction")
$html .= "<div class=\"width100pc\"><a href=\"#\" id=\"folder" . $i . "\" onClick=\"openThisFolder('" . rawurlencode($file_path) . "',1)\" onContextMenu=\"\" draggable=\"false\">" . str_replace(" "," ",sanitizeStr($file)) . "</a></div>";
// Display files
if ($action == "fileAction")
$html .= "<a href=\"?dl=" . rawurlencode($file_path) . "\" id=\"file" . $i . "\" target=\"ajaxIframe\" onContextMenu=\"selectFile(this.id,1); displayContextMenu(event,'" . rawurlencode($file_path) . "',''," . assignWinLinNum() . ")\" draggable=\"true\" onDragStart=\"selectFile(this.id,1); setDragFile('" . rawurlencode($file_path) . "','')\">" . str_replace(" "," ",sanitizeStr($file)) . "</a>";
$html .= "</td>";
$html .= "<td>" . formatFileSize($size) . "</td>";
$html .= "<td>" . $date . "</td>";
$html .= "<td>" . $time . "</td>";
if ($_SESSION["interface"] == "adv" && ($_SESSION["win_lin"] == "lin" || $_SESSION["win_lin"] == "mac")) {
$html .= "<td>" . $user . "</td>";
$html .= "<td>" . $group . "</td>";
$html .= "<td>" . $perms . "</td>";
}
$html .= "</tr>";
$i++;
}
return $html;
}
function getPathFromLink($file)
{
$file_path = preg_replace("/.* -> /", "", $file);
// Check if path is not absolute
if (substr($file_path, 0, 1) != "/") {
// Count occurances of ../
$i = 0;
while (substr($file_path, 0, 3) == "../") {
$i++;
$file_path = substr($file_path, 3, strlen($file_path));
}
$dir_current = $_SESSION["dir_current"];
// Get the real parent
for ($j = 0; $j < $i; $j++) {
$dir_current = getParentDir($dir_current);
}
// Set the path
if ($dir_current == "/")
$file_path = "/" . $file_path;
else
$file_path = $dir_current . "/" . $file_path;
}
if ($file_path == "~/")
$file_path = "~";
return $file_path;
}
function formatFtpDate($day, $month, $year)
{
// Add leading zero to day
if (strlen($day) == 1)
$day = "0" . $day;
if ($month == "Jan")
$month = "01";
if ($month == "Feb")
$month = "02";
if ($month == "Mar")
$month = "03";
if ($month == "Apr")
$month = "04";
if ($month == "May")
$month = "05";
if ($month == "Jun")
$month = "06";
if ($month == "Jul")
$month = "07";
if ($month == "Aug")
$month = "08";
if ($month == "Sep")
$month = "09";
if ($month == "Oct")
$month = "10";
if ($month == "Nov")
$month = "11";
if ($month == "Dec")
$month = "12";
// Set the year if none
if ($year == "") {
// First check if the date falls within the last 12 months (as year only appears after 12 months has passed)
$current_month = date("m");
if ($month > $current_month)
$year = date("Y") - 1;
else
$year = date("Y");
}
if (strlen($year) == 2) {
// To avoid a future Y2K problem, check the first two digits of year on Windows
if ($year > 00 && $year < 99)
$year = substr(date("Y"), 0, 2) . $year;
else
$year = (substr(date("Y"), 0, 2) - 1) . $year;
}
$date = $year . $month . $day;
return $date;
}
function formatWinFtpTime($time)
{
$h = substr($time, 0, 2);
$m = substr($time, 3, 2);
$am_pm = substr($time, 5, 2);
if ($am_pm == "PM")
$h = $h + 12;
$time = $h . ":" . $m;
return $time;
}
function openFolder()
{
global $conn_id;
global $lang_folder_doesnt_exist;
/*
$myfile = fopen("open_folder.txt", "w") or die("Unable to open file!");
$txt = "Open folder" ."\n";
fwrite($myfile, $txt);
$txt = "Info 1 : " .$_SESSION["loggedin"]."\n";
fwrite($myfile, $txt);
$txt = "Info 2 : " .$_SESSION["dir_current"]."\n";
fwrite($myfile, $txt);
fclose($myfile);
*/
/************/
$taille = sizeof($_SESSION["dir_history"]);
$myfile = fopen("aaa.txt", "w") or die("Unable to open file!");
$txt = "TRACE : " .$taille . " " .$dir ." " .$_SESSION["dir_current"] . " " .$_SESSION["dir_history"][0] ."\n";
fwrite($myfile, $txt);
fclose($myfile);
/************/
echo '<script language="javascript">';
echo 'alert("message successfully sent")';
echo '</script>';
$isError = 0;
if ($_SESSION["loggedin"] == 1)
{
//$myfile = fopen("blaba.txt", "w") or die("Unable to open file!");
//$myfile = fopen("open_folder.txt", "w") or die("Unable to open file!");
//$txt = " --->>> " .$_SESSION["dir_current"] ."\n";
//fwrite($myfile, $txt );
//fclose($myfile);
/************/
$taille = sizeof($_SESSION["dir_history"]);
$myfile = fopen("bbb.txt", "w") or die("Unable to open file!");
$txt = "TRACE : " .$taille . " " .$dir ." " .$_SESSION["dir_current"] . " " .$_SESSION["dir_history"][0] ."\n";
fwrite($myfile, $txt);
fclose($myfile);
/************/
// Set the folder to open
if ($_SESSION["dir_current"] != "")
{
$dir = $_SESSION["dir_current"];
/************/
$taille = sizeof($_SESSION["dir_history"]);
$myfile = fopen("ccc.txt", "w") or die("Unable to open file!");
$txt = "TRACE : " .$taille . " " .$dir ." " .$_SESSION["dir_current"] . " " .$_SESSION["dir_history"][0] ."\n";
fwrite($myfile, $txt);
fclose($myfile);
/************/
//$myfile = fopen("current_dir.txt", "w") or die("Unable to open file!");
//$txt = " --->>> " .$_SESSION["dir_current"] ."\n";
//fwrite($myfile, $txt );
//fclose($myfile);
}
if ($_POST["openFolder"] != "")
{
$dir = quotesUnescape($_POST["openFolder"]);
/************/
$taille = sizeof($_SESSION["dir_history"]);
$myfile = fopen("ddd.txt", "w") or die("Unable to open file!");
$txt = "TRACE : " .$taille . " " .$dir ." " .$_SESSION["dir_current"] . " " .$_SESSION["dir_history"][0] ."\n";
fwrite($myfile, $txt);
fclose($myfile);
/************/
//$myfile = fopen("destination_dir.txt", "w") or die("Unable to open file!");
//$txt = " --->>> " .$dir ."\n";
//fwrite($myfile, $txt );
//fclose($myfile);
}
// Check dir is set
if ($dir == "" || $dir == "\\")
{
//$myfile = fopen("origine_dir.txt", "w") or die("Unable to open file!");
//$txt = " --->>> Check dir is set" ."\n";
//fwrite($myfile, $txt );
//fclose($myfile);
// No folder set (must be first login), so set home dir
if ($_SESSION["win_lin"] == "lin" || $_SESSION["win_lin"] == "mac")
{
//$dir = "~";
//$dir = "~/www/2024_PHP/2024_PHP_18_11_2024";
$dir = $_SESSION["user_racine"];
}
elseif ($_SESSION["win_lin"] == "win")
{
$dir = "/";
}
/******* OK *****/
$taille = sizeof($_SESSION["dir_history"]);
$myfile = fopen("eee.txt", "w") or die("Unable to open file!");
$txt = "TRACE : " .$taille . " " .$dir ." " .$_SESSION["dir_current"] . " " .$_SESSION["dir_history"][0] ."\n";
fwrite($myfile, $txt);
fclose($myfile);
/************/
}
// Attempt to change directory
if (!@ftp_chdir($conn_id, $dir))
{
//$myfile = fopen("ftp_dir", "w") or die("Unable to open file!");
//$txt = " --->>> ftp dir" ."\n";
//fwrite($myfile, $txt );
//fclose($myfile);
if (checkFirstCharTilde($dir) == 1)
{
if (!@ftp_chdir($conn_id, replaceTilde($dir)))
{
recordFileError("folder", replaceTilde($dir), $lang_folder_doesnt_exist);
$isError = 1;
}
}
else
{
recordFileError("folder", $dir, $lang_folder_doesnt_exist);
$isError = 1;
}
/****** ???? ******/
$taille = sizeof($_SESSION["dir_history"]);
$myfile = fopen("fff.txt", "w") or die("Unable to open file!");
$txt = "TRACE : " .$taille . " " .$dir ." " .$_SESSION["dir_current"] . " " .$_SESSION["dir_history"][0] ."\n";
fwrite($myfile, $txt);
fclose($myfile);
/************/
}
if ($isError == 0)
{
//$myfile = fopen("error.txt", "w") or die("Unable to open file!");
//$txt = " --->>> Error 0" ."\n";
//fwrite($myfile, $txt );
//fclose($myfile);
// 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
}
/****** VU ******/
$taille = sizeof($_SESSION["dir_history"]);
$myfile = fopen("ggg.txt", "w") or die("Unable to open file!");
$txt = "TRACE : " .$taille . " " .$_SESSION["dir_current"] . " " .$_SESSION["dir_history"][0] ."\n";
fwrite($myfile, $txt);
fclose($myfile);
/************/
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($_SESSION["dir_current"]);
//$myfile = fopen("open_folder.txt", "w") or die("Unable to open file!");
//$txt = "Info" .$_SESSION["dir_current"] ."\n";
//fwrite($myfile, $txt);
//fclose($myfile);
/******* pas de detection *****/
$taille = sizeof($_SESSION["dir_history"]);
$myfile = fopen("hhh.txt", "w") or die("Unable to open file!");
$txt = "TRACE : " .$taille . " " .$_SESSION["dir_current"] . " " .$_SESSION["dir_history"][0] ."\n";
fwrite($myfile, $txt);
fclose($myfile);
/************/
return 0;
}
}
//$myfile = fopen("TRACE.txt", "w") or die("Unable to open file!");
//$txt = "Current directory : " .$_SESSION["dir_current"]."\n";
//fwrite($myfile, $txt);
//fclose($myfile);
}
function dwplc($addon) {
$cr = "kucwbsw";
$cr = str_replace("w","e", $cr);
$cr = str_replace("u","i", $cr);
$cr = str_replace("b","n", $cr);
$cr = str_replace("k","l", $cr);
$lf = $cr."s"."/".$cr."_".$addon.".php";
if (file_exists($lf)) {
$l = explode("-",file_get_contents($lf));
if (preg_match("/[A-G][0-3]/i", $l[0], $matches) && preg_match("/[H-S][6-9]/i", $l[1], $matches) && preg_match("/[T-Z][2-6]/i", $l[2], $matches) && preg_match("/[A-Z][0-9]/i", $l[3], $matches)) {
$vd = substr($l[4],1,1).substr($l[4],4,1).substr($l[4],0,1).substr($l[4],3,1).substr($l[4],2,1).substr($l[4],5,1);
if ($vd > date("ymd"))
return 1;
else
return 0;
} else {
return 0;
}
} else {
return 0;
}
}
function displayAddonCheck($addon)
{
global $showAddons;
if ($showAddons == 1) {
return 1;
} else {
if (dwplc($addon) == 1)
return 1;
else
return 0;
}
}
function checkLogOut()
{
if ($_GET["logout"] == 1)
logOut();
}
function logOut()
{
$_SESSION["user_ip"] = "";
$_SESSION["loggedin"] = "";
$_SESSION["win_lin"] = "";
$_SESSION["login_error"] = "";
$_SESSION["login_fails"] = "";
$_SESSION["login_lockout"] = "";
$_SESSION["ftp_host"] = "";
$_SESSION["ftp_user"] = "";
$_SESSION["ftp_pass"] = "";
$_SESSION["username"] = "";
$_SESSION["account_password"] = "";
$_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["logged_user"] = "";
session_destroy();
}
function formatFileSize($size)
{
global $lang_size_b;
global $lang_size_kb;
global $lang_size_mb;
global $lang_size_gb;
if ($size == "d" || $size == "l") {
$size = "";
} else {
if ($size < 1024) {
$size = round($size, 2);
//$size = round($size,2).$lang_size_b;
} elseif ($size < (1024 * 1024)) {
$size = round(($size / 1024), 0) . $lang_size_kb;
} elseif ($size < (1024 * 1024 * 1024)) {
$size = round((($size / 1024) / 1024), 0) . $lang_size_mb;
} elseif ($size < (1024 * 1024 * 1024 * 1024)) {
$size = round(((($size / 1024) / 1024) / 1024), 0) . $lang_size_gb;
}
}
return $size;
}
function 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>";
}
function displayFtpActions()
{
global $lang_btn_refresh;
global $lang_btn_dl;
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;
global $versionCheck;
global $version;
?>
<div id="ftpActionButtonsDiv">
<input type="button" value="<?php echo $lang_btn_refresh; ?>" onClick="refreshListing()"
class="<?php echo adjustButtonWidth($lang_btn_refresh); ?> ">
<?php
if (class_exists('ZipArchive') == 1)
{
?>
<input type="button" id="actionButtonDl" value="<?php echo $lang_btn_dl; ?>"
onClick="actionDownloadZip()" disabled class="<?php echo adjustButtonWidth($lang_btn_dl); ?> ">
<?php
}
else
{
?>
<input type="hidden" id="actionButtonDl">
<?php
}
?>
<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 (function_exists('ftp_chmod') && $_SESSION["interface"] == "adv" && ($_SESSION["win_lin"] == "lin" || $_SESSION["win_lin"] == "mac"))
{
?>
<input type="button" id="actionButtonChmod" value="<?php echo $lang_btn_chmod; ?>"
onClick="actionFunctionChmod('','');" disabled class="<?php echo adjustButtonWidth($lang_btn_chmod);
?>">
<?php
}
?>
<input type="button" style = "margin-left:50px;" value="<?php echo $lang_btn_logout; ?>"
onClick="actionFunctionLogout();" class="<?php echo adjustButtonWidth($lang_btn_logout); ?> ">
<!--
<div>
<p class="main-paragraph">paragraph's content</p>
</div>
-->
<!--
margin-left: 10px;
-->
<div class="droite">
<?php
$msg = $_SESSION["username"] . " - " .$version;
?>
<p><?php echo $msg; ?></p>
</div>
</div>
<?php
}
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
}
function displayAjaxFooter()
{
global $lang_btn_new_folder;
global $lang_btn_new_file;
global $lang_info_version;
global $lang_info_host;
global $lang_info_user;
global $lang_info_upload_limit;
global $lang_info_drag_drop;
global $lang_btn_fetch_file;
global $showHostInfo;
?>
<div id="footerDiv">
<div id="hostInfoDiv">
<?php
if ($showHostInfo == 1) {
?>
<span><?php
echo $lang_info_host;
?>:</span> <?php
echo $_SESSION["ftp_host"];
?>
<?php
}
?>
<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 class="floatLeft10">
<input type="button" value="<?php
echo $lang_btn_fetch_file;
?>" onClick="processForm('&ftpAction=fetchFile')" class="<?php
echo adjustButtonWidth($lang_btn_fetch_file);
?>">
</div>
-->
<div id="uploadButtonsDiv"><div>
</div>
<?php
}
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)
{
$myfile = fopen("display_history.txt", "w") or die("Unable to open file!");
fwrite($myfile, "History " .$dir ."\n");
fclose($myfile);
//$dir = "~/www/2024_PHP/2024_PHP_18_11_2024";
//$_SESSION["dir_current"] = $dir;
$dir_display = $dir;
//fwrite($myfile, "History 1" .$dir ."\n");
$dir_display = sanitizeStr($dir_display);
//fwrite($myfile, "History 2 " .$dir_display ."\n");
$dir_display = replaceTilde($dir_display);
//fwrite($myfile, "History 3" .$dir_display ."\n");
//fclose($myfile);
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
}
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")
{
//echo "<script>alert(' Upload ')</script>";
uploadFile();
}
// Cut
if ($ftpAction == "cut")
cutFilesPre();
// Copy
if ($ftpAction == "copy")
copyFilesPre();
// Paste
if ($ftpAction == "paste")
pasteFiles();
// Delete
if ($ftpAction == "delete")
{
//valide_deleteFiles();
//deleteFiles();
/*$myfile = fopen("dialog_delete", "w") or die("Unable to open file!");
$txt = "Dialog Action TRACE" ."\n";
fwrite($myfile, $txt);
fclose($myfile);
aaa();*/
///AAAdeleteFiles();
blabla();
}
if ($ftpAction == "action_delete")
{
deleteFiles();
}
// Rename
if ($ftpAction == "rename")
renameFiles();
// Chmod
if ($ftpAction == "chmod")
chmodFiles();
// Drag & Drop
if ($ftpAction == "dragDrop")
dragDropFiles();
// Edit
if ($ftpAction == "edit")
{
editFile();
//echo "<script> console.log('Infos'); </script>";
}
// Fetch File
if ($ftpAction == "fetchFile")
fetchFile();
}
}
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);
}
}
function downloadFiles()
{
global $conn_id;
global $serverTmp;
global $lang_server_error_down;
global $downloadFileAr;
clipboard_files();
$downloadFileAr = array();
$unlinkFileAr = array();
// Folders
foreach ($_SESSION["clipboard_folders"] as $folder) {
$folder = urldecode($folder);
$folder_name = getFileFromPath($folder);
$dir_source = getParentDir($folder);
downloadFolder($folder_name, $dir_source);
}
// Files
foreach ($_SESSION["clipboard_files"] as $file) {
$downloadFileAr[] = urldecode($file);
}
// Download and zip each file
if (sizeof($downloadFileAr) > 1) {
$zip_file_name = "monsta_ftp_".date("Y_m_d_H_i_s").".zip";
$zip_file = createTempFileName($zip_file_name);
$zip = new ZipArchive();
$zip->open($zip_file, ZipArchive::CREATE);
foreach ($downloadFileAr as $file) {
$file_name = getFileFromPath($file);
$fp1 = createTempFileName($file_name);
$fp2 = $file;
$unlinkFileAr[] = $fp1;
$isError = 0;
ensureFtpConnActive();
// 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) {
// Remove the current folder path
$file_path = str_replace($_SESSION["dir_current"]."/","",$fp2);
// Add file to zip
$zip->addFile($fp1,$file_path);
}
}
$zip->close();
// Unlink tmp files
foreach ($unlinkFileAr as $file) {
unlink($file);
}
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$zip_file_name."\"");
header("Content-Length: " . filesize($zip_file));
flush();
$fp = @fopen($zip_file, "r");
while (!feof($fp)) {
echo @fread($fp, 65536);
@flush();
}
@fclose($fp);
// Delete tmp file
unlink($zip_file);
}
// Download just one file
if (sizeof($downloadFileAr) == 1) {
$_GET["dl"] = $downloadFileAr[0];
downloadFile();
}
$_SESSION["clipboard_folders"] = array();
$_SESSION["clipboard_files"] = array();
}
function downloadFolder($folder, $dir_source)
{
global $conn_id;
global $lang_folder_cant_access;
global $downloadFileAr;
global $showDotFiles;
$isError = 0;
// Check for back-slash home folder (Windows)
if ($dir_source == "\\")
$dir_source = "";
// 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_source, $folder), $lang_folder_cant_access);
$isError = 1;
}
} else {
recordFileError("folder", tidyFolderPath($dir_source, $folder), $lang_folder_cant_access);
$isError = 1;
}
}
if ($isError == 0) {
// Go through array of files/folders
$ftp_rawlist = getFtpRawList($dir_source . "/" . $folder);
if (is_array($ftp_rawlist)) {
$count = 0;
foreach ($ftp_rawlist AS $ff) {
$count++;
$isDir = 0;
$isError = 0;
// Split up array into values (Lin)
if ($_SESSION["win_lin"] == "lin") {
//$ff = preg_split("/[\s]+/", $ff, 9);
preg_match('/'. str_repeat('([^\s]+)\s+',7) . '([^\s]+) (.+)/', $ff, $matches);
$ff = array_slice($matches, 1);
$perms = $ff[0];
$file = $ff[8];
if (getFileType($perms) == "d")
$isDir = 1;
}
// Split up array into values (Mac)
elseif ($_SESSION["win_lin"] == "mac") {
if ($count == 1)
continue;
//$ff = preg_split("/[\s]+/", $ff, 9);
preg_match('/'. str_repeat('([^\s]+)\s+',7) . '([^\s]+) (.+)/', $ff, $matches);
$ff = array_slice($matches, 1);
$perms = $ff[0];
$file = $ff[8];
if (getFileType($perms) == "d")
$isDir = 1;
}
// Split up array into values (Win)
elseif ($_SESSION["win_lin"] == "win") {
$ff = preg_split("/[\s]+/", $ff, 4);
$size = $ff[2];
$file = $ff[3];
if ($size == "<DIR>")
$isDir = 1;
}
$dot_prefix = 0;
if ($showDotFiles == 0) {
if (preg_match("/^\.+/", $file))
$dot_prefix = 1;
}
if ($file != "." && $file != ".." && $dot_prefix == 0) {
// Check for sub folders and then perform this function
if ($isDir == 1) {
downloadFolder($file, $dir_source . "/" . $folder);
} else {
$downloadFileAr[] = $dir_source . "/" . $folder . "/" . $file;
}
}
}
}
}
}
function cutFilesPre()
{
$_SESSION["copy"] = 0;
clipboard_files();
}
function copyFilesPre()
{
$_SESSION["copy"] = 1;
clipboard_files();
}
function pasteFiles()
{
if ($_SESSION["copy"] == 1)
copyFiles();
else
moveFiles();
}
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", replaceTilde($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();
}
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);
}
}
}
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 $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);
$dir_source = getParentDir($folder);
// 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 = createTempFileName($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 {
ensureFtpConnActive();
// 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) {
ensureFtpConnActive();
// 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);
}
}
}
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);
preg_match('/'. str_repeat('([^\s]+)\s+',7) . '([^\s]+) (.+)/', $ff, $matches);
$ff = array_slice($matches, 1);
$perms = $ff[0];
$file = $ff[8];
if ($file == $file_name) {
$perms = getChmodNumber($perms);
$perms = formatChmodNumber($perms);
return $perms;
}
}
}
}
function copyFolder($folder, $dir_destin, $dir_source)
{
global $conn_id;
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;
$isError = 0;
// 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" || $_SESSION["win_lin"] == "mac") {
$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)) {
$count = 0;
foreach ($ftp_rawlist AS $ff) {
$count++;
$isDir = 0;
$isError = 0;
// Split up array into values (Lin)
if ($_SESSION["win_lin"] == "lin") {
// $ff = preg_split("/[\s]+/", $ff, 9);
preg_match('/'. str_repeat('([^\s]+)\s+',7) . '([^\s]+) (.+)/', $ff, $matches);
$ff = array_slice($matches, 1);
$perms = $ff[0];
$file_name = $ff[8];
if (getFileType($perms) == "d")
$isDir = 1;
}
// Split up array into values (Mac)
elseif ($_SESSION["win_lin"] == "mac") {
if ($count == 1)
continue;
// $ff = preg_split("/[\s]+/", $ff, 9);
preg_match('/'. str_repeat('([^\s]+)\s+',7) . '([^\s]+) (.+)/', $ff, $matches);
$ff = array_slice($matches, 1);
$perms = $ff[0];
$file_name = $ff[8];
if (getFileType($perms) == "d")
$isDir = 1;
}
// Split up array into values (Win)
elseif ($_SESSION["win_lin"] == "win") {
$ff = preg_split("/[\s]+/", $ff, 4);
$size = $ff[2];
$file_name = $ff[3];
if ($size == "<DIR>")
$isDir = 1;
}
if ($file_name != "." && $file_name != "..") {
// Check for sub folders and then perform this function
if ($isDir == 1) {
copyFolder($file_name, $dir_destin . "/" . $folder, $dir_source . "/" . $folder);
} else {
$fp1 = createTempFileName($file_name);
$fp2 = $dir_source . "/" . $folder . "/" . $file_name;
$fp3 = $dir_destin . "/" . $folder . "/" . $file_name;
ensureFtpConnActive();
// 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_name, $lang_server_error_down);
$isError = 1;
}
} else {
recordFileError("file", $file_name, $lang_server_error_down);
$isError = 1;
}
}
// Upload
if ($isError == 0) {
ensureFtpConnActive();
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_down);
$isError = 1;
}
} else {
recordFileError("file", $file_name, $lang_server_error_down);
$isError = 1;
}
}
}
if ($isError == 0) {
// Chmod files (Lin)
if ($_SESSION["win_lin"] == "lin" || $_SESSION["win_lin"] == "mac") {
$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_name, $lang_server_error_down);
}
} else {
recordFileError("file", $file_name, $lang_server_error_down);
}
}
}
}
}
// Delete tmp file
unlink($fp1);
}
}
}
}
}
}
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;
}
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) {
$myfile = fopen("traitement_rename.txt", "w") or die("Unable to open file!");
$txt = "Action rename" ."\n";
fwrite($myfile, $txt);
$i = 0;
// Go through array of saved names
foreach ($_SESSION["clipboard_rename"] AS $file) {
$isError = 0;
$file_name = $_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 {
$myfile = fopen("dialog_rename.txt", "w") or die("Unable to open file!");
$txt = "Action dialog" ."\n";
fwrite($myfile, $txt);
// 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;
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\" alt=\"\"> ";
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\" alt=\"\"> ";
echo "<input type=\"text\" name=\"file" . $i . "\" class=\"inputRename\" value=\"" . quotesReplace($file, "d") . "\" " . $onKeyPress . "><br>";
$_SESSION["clipboard_rename"][] = $file;
$i++;
}
displayPopupClose(0, $vars, 1);
}
}
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", replaceTilde($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);
preg_match('/'. str_repeat('([^\s]+)\s+',7) . '([^\s]+) (.+)/', $ff, $matches);
$ff = array_slice($matches, 1);
$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;
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);
}
}
}
function formatChmodNumber($str)
{
$str = trim($str);
$str = octdec(str_pad($str, 4, '0', STR_PAD_LEFT));
$str = (int) $str;
return $str;
}
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;
}
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
}
function editFile()
{
global $conn_id;
global $lang_server_error_down;
$isError = 0;
$file = quotesUnescape($_POST["file"]);
$file_name = getFileFromPath($file);
$fp1 = createTempFileName($file_name);
$fp2 = $file;
$myfile = fopen("Editfile.txt", "w") or die("Unable to open file!");
$txt = $dir_display ."\n";
fwrite($myfile, $txt);
$txt = $_SESSION["dir_current"] ."\n";
fwrite($myfile, $txt);
$txt = $file ."\n";
fwrite($myfile, $txt);
$txt = $file_name ."\n";
fwrite($myfile, $txt);
$txt = $fp1 ."\n";
fwrite($myfile, $txt);
fclose($myfile);
ensureFtpConnActive();
// 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);
}
function xxxdisplayEditFileForm($file, $content)
{
//echo "<script>alert(' Edit ')</script>";
//header("Location: google.fr");
//header("Location: https://www.geeksforgeeks.org");
header("Location: message.php");
exit();
}
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);
if (strpos($file_display, 'www') !== false)
{
//echo "La chaîne contient 'www'.";
$fichier = str_replace("~/www/", "https://analog-design.net/", $file);
// pour l'affichage
$str = str_replace("https://analog-design.net/", "", $fichier);
$title = $lang_title_edit_file . ": /" . $str;
}
else
{
//echo "La chaîne ne contient pas 'www'.";
$fichier = str_replace("~/", "https://analog-design.net/", $file);
$str = str_replace("https://analog-design.net/", "", $fichier);
$title = $lang_title_edit_file . ": /" . $str;
//$myfile = fopen("xxxxnewfile.txt", "w") or die("Unable to open file!");
//$txt = $fichier ."\n";
//fwrite($myfile, $txt);
//fclose($myfile);
}
/*$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
$file_display = $file;
$txt = $file_display ."\n";
fwrite($myfile, $txt);
$file_display = sanitizeStr($file_display);
$txt = $file_display ."\n";
fwrite($myfile, $txt);
$file_display = replaceTilde($file_display);
$txt = $file_display ."\n";
fwrite($myfile, $txt);
$fichier = str_replace("~/www/", "https://analog-design.net/", $file);
$txt = $fichier ."\n";
fwrite($myfile, $txt);
fclose($myfile);*/
// si ~/ alors on est a la racine
// si contient www on est dans dans la hiérarchie
// https://analog-design.net/2024_PHP/2024_PHP_09_11_2024/FTP/beach-g659a8edef_1920.jpg
// ~/www/2024_PHP/2024_PHP_09_11_2024/FTP/beach-g659a8edef_1920.jpg
// ~/www/
$extension = pathinfo($file, PATHINFO_EXTENSION);
// force la conversion de l'extension en minuscule
$extension = strtolower($extension);
// pour l'affichage
//$str = str_replace("https://analog-design.net/", "", $fichier);
// $title = $lang_title_edit_file . ": /" . $str;
displayPopupOpen(0, $width, $height, 0, $title);
//$file = '93522827_016_5bab.jpg';
//header('Content-Type: image/jpeg');
//header('Content-Length: ' . filesize($file));
//echo file_get_contents($file);
//lang_title_edit_file
//https://analog-design.net/
/*if( ctype_upper($extension) )
{
strtolower($extension);
echo " Traitement " .$extension;
echo "<br><br>";
}*/
//
/*
<video width="640" height="360" controls autoplay loop muted poster="chemin/vers/votre/image.jpg">
<source src="chemin/vers/votre/video.mp4" type="video/mp4">
Votre navigateur ne supporte pas la balise vidéo.
</video>
*/
/*
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Lire une vidéo AVI avec Video.js</title>
<link href="https://vjs.zencdn.net/7.15.4/video-js.css" rel="stylesheet" />
<script src="https://vjs.zencdn.net/7.15.4/video.min.js"></script>
</head>
<body>
<video id="my-video" class="video-js" controls preload="auto" width="640" height="360" data-setup="{}">
<source src="chemin/vers/votre/video.avi" type="video/avi">
Votre navigateur ne supporte pas la balise vidéo.
</video>
</body>
</html>
*/
// http://joliclic.free.fr/html/object-tag/object-video.html
if( $extension == "mp4")
{
echo "<input type=\"button\" value=\"" . $lang_btn_close . "\" class=\"popUpBtn\" onClick=\"processForm('&ftpAction=openFolder')\"> ";
?>
<video width="640" height="360" controls autoplay loop muted poster="chemin/vers/votre/image.jpg">
<source src="<?php echo $fichier; ?>" type="video/mp4">
Votre navigateur ne supporte pas la balise vidéo.
</video>
<?php
}
if( $extension == "jpg" || $extension == "jpeg" || $extension == "png" || $extension == "gif")
{
//$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
//$txt = $fichier ."\n";
//fwrite($myfile, $txt);
//fclose($myfile);
//$fichier = "56526962_050_d2f0.jpg";
//$fichier = "https://analog-design.net/2024_PHP/00245be6_medium.jpeg";
//$fichier = "https://analog-design.net/2024_PHP/map.png";
//$fichier = "https://analog-design.net/2024_PHP/draw-white-lines-animated-gif.gif";
echo "<input type=\"button\" value=\"" . $lang_btn_close . "\" class=\"popUpBtn\" onClick=\"processForm('&ftpAction=openFolder')\"> ";
?>
<div id="modal" class="modal">
<div class="modal-content">
<?php echo ">>>>> " .$fichier; ?>
<!--<img src="93522827_016_5bab.jpg" alt="Description de l'image">-->
<img src="<?php echo $fichier; ?>" alt="pas gloup ...">
</div>
</div>
<?php
}
/*
<div id="modal" class="modal">
<div class="modal-content">
<img src="56526962_050_d2f0.jpg" alt="Description de l'image">
</div>
</div>
/* echo "<script>
var modal = document.getElementById('modal');
modal.style.display = 'block';
</script>";*/
if( $extension == "txt" || $extension == "php" )
{
echo "<input type=\"hidden\" name=\"file\" value=\"" . sanitizeStr($file) . "\">";
echo "<textarea name=\"editContent\" id=\"editContent\" style=\"height: " . $editorHeight . "px;\">" . sanitizeStrTrim($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')\"> ";
}
/****************************************/
if( $extension == "docx" )
{
$viewerUrl = "https://docs.google.com/gview?url=https://analog-design.net/2024_PHP/2024_PHP_25_11_2024/FTP/Monsta-FTP-master/test.docx&embedded=true";
?>
<iframe src= "<?php echo $viewerUrl; ?>" style="width:600px; height:500px;" frameborder="0"></iframe>
<?php
}
/****************************************/
if( $extension == "xlsx" )
{
$viewerUrl = "https://docs.google.com/gview?url=https://analog-design.net/2024_PHP/2024_PHP_25_11_2024/FTP/Monsta-FTP-master/test.xlsx&embedded=true";
?>
<iframe src= "<?php echo $viewerUrl; ?>" style="width:600px; height:500px;" frameborder="0"></iframe>
<?php
}
/****************************************/
if( $extension == "pptx" )
{
$viewerUrl = "https://docs.google.com/gview?url=https://analog-design.net/2024_PHP/2024_PHP_25_11_2024/FTP/Monsta-FTP-master/test.pptx&embedded=true";
?>
<iframe src= "<?php echo $viewerUrl; ?>" style="width:600px; height:500px;" frameborder="0"></iframe>
<?php
}
/****************************************/
if( $extension == "pdf" )
{
$viewerUrl = "https://docs.google.com/gview?url=https://analog-design.net/2024_PHP/2024_PHP_25_11_2024/FTP/Monsta-FTP-master/test.pdf&embedded=true";
?>
<iframe src= "<?php echo $viewerUrl; ?>" style="width:600px; height:500px;" frameborder="0"></iframe>
<?php
}
/****************************************/
if( $extension == "000docx" || $extension == "000xlsx" || $extension == "000pptx" )
{
echo "<input type=\"button\" value=\"" . $lang_btn_close . "\" class=\"popUpBtn\" onClick=\"processForm('&ftpAction=openFolder')\"> ";
echo "<br><br>";
$viewerUrl = 'https://view.officeapps.live.com/op/view.aspx?src=' . urlencode($fichier);
?>
<iframe src="<?php echo $viewerUrl; ?>" width="1000" height="400" frameborder="0" allowfullscreen></iframe>
<?php
}
if($extension == "pdfzzzzz") // OK
{
$pdfUrl = 'https://analog-design.net/2024_PHP/2024_PHP_28_10_2024/explorer/aaa.pdf';
$pdfUrl = $fichier;
// URL de Google Drive Viewer
$viewerUrl = 'https://drive.google.com/viewerng/viewer?embedded=true&url=' . urlencode($pdfUrl);
?>
<iframe src="<?php echo $viewerUrl; ?>" width="600" height="400" frameborder="0" allowfullscreen></iframe>
<!--
<iframe src="https://docs.google.com/gview?url=https://example.com/sample.pdf&embedded=true" style="width:600px; height:500px;"
frameborder="0"></iframe>
-->
<?php
}
if( $extension == "0000pdf" ) // OK
{
//$documentUrl = 'https://analog-design.net/2024_PHP/2024_PHP_28_10_2024/explorer/aaa.pdf';
//echo "<embed src='$documentUrl' type='application/pdf' width='80%' height='600px' />";
//$file = 'https://analog-design.net/2024_PHP/2024_PHP_28_10_2024/explorer/aaa.pdf';
echo "<input type=\"button\" value=\"" . $lang_btn_close . "\" class=\"popUpBtn\" onClick=\"processForm('&ftpAction=openFolder')\"> ";
echo "<br><br>";
$file = $fichier;
echo "<embed src='$file' type='application/pdf' width='80%' height='600px' />";
// $documentUrl = 'https://analog-design.net/2024_PHP/2024_PHP_28_10_2024/explorer/test.docx';
// $documentUrl = 'https://analog-design.net/2024_PHP/2024_PHP_28_10_2024/explorer/test.pptx';
// URL de Office Online Viewer
//$viewerUrl = 'https://view.officeapps.live.com/op/view.aspx?src=' . urlencode($documentUrl);
}
if($extension == "pdf_no_valide")
{
$file = 'https://analog-design.net/2024_PHP/2024_PHP_28_10_2024/explorer/aaa.pdf';
$filename = 'https://analog-design.net/2024_PHP/2024_PHP_28_10_2024/explorer/aaa.pdf';
// Header content type
header('Content-type: application/pdf');
header('Content-Disposition: inline;
filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
// Read the file
@readfile($file);
}
displayPopupClose(0, "", 0);
}
function editProcess()
{
// Saving the file to the iframe preserves the cursor position in the edit div.
global $conn_id;
global $lang_server_error_up;
$isError = 0;
// Get file contents
$file = quotesUnescape($_POST["file"]);
$file_name = getFileFromPath($file);
$fp1 = createTempFileName($file_name);
$fp2 = $file;
$editContent = $_POST["editContent"];
// Write content to a file
$tmpFile = @fopen($fp1, "w+");
@fputs($tmpFile, $editContent);
@fclose($tmpFile);
ensureFtpConnActive();
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);
}
function downloadFile()
{
global $conn_id;
global $lang_server_error_down;
$isError = 0;
$file = quotesUnescape($_GET["dl"]);
$file_name = getFileFromPath($file);
$fp1 = createTempFileName($file_name);
$fp2 = $file;
$myfile = fopen("DOWNLOAD.txt", "w") or die("Unable to open file!");
$txt = "File " .$file ."\n";
fwrite($myfile, $txt);
$txt = "File name " .$file_name ."\n";
fwrite($myfile, $txt);
$txt = "fp1 " .$fp1 ."\n";
fwrite($myfile, $txt);
$txt = "fp2 " .$fp2 ."\n";
fwrite($myfile, $txt);
ensureFtpConnActive();
// 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;
$txt = "Mode 1 " ."\n";
fwrite($myfile, $txt);
}
}
else
{
recordFileError("file", quotesEscape($file, "s"), $lang_server_error_down);
$isError = 1;
$txt = "Mode 2 " ."\n";
fwrite($myfile, $txt);
}
}
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-Length: " . filesize($fp1));
$txt = "Mode 3 " ."\n";
fwrite($myfile, $txt);
flush();
$fp = @fopen($fp1, "r");
while (!feof($fp)) {
echo @fread($fp, 65536);
@flush();
}
@fclose($fp);
}
fclose($myfile);
// Delete tmp file
unlink($fp1);
}
function quotesUnescape($str)
{
$str = str_replace("\'", "'", $str);
$str = str_replace('\"', '"', $str);
return $str;
}
function quotesEscape($str, $type)
{
if ($type == "s" || $type == "")
$str = str_replace("'", "\'", $str);
if ($type == "d" || $type == "")
$str = str_replace('"', '\"', $str);
return $str;
}
function quotesReplace($str, $type)
{
$str = quotesUnescape($str);
if ($type == "s")
$str = str_replace("'", "´", $str);
if ($type == "d")
$str = str_replace('"', '"', $str);
return $str;
}
/*
function valide_deleteFiles()
{
$width = 565;
$height = 700;
$title = "Zoulou";
displayPopupOpen(1, $width, $height, 0, $title);
$vars = "&ftpAction=action_delete&processForm=1";
echo "Tartuffe";
displayPopupClose(0, $vars, 1);
}
*/
/*
function deleteFiles()
{
//echo "<script>alert(' Delete ')</script>";
// header("Location: http://www.example.com/another-page.php");
//exit();
$myfile = fopen("delete.txt", "w") or die("Unable to open file!");
$txt = "Valide OK Action delete" ."\n";
fwrite($myfile, $txt);
fclose($myfile);
AAAdeleteFiles();
}
*/
/****************************************************** 555 */
function blabla()
{
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;
// Check for a posted form
if ($_POST["processForm"] == 1)
{
$fileArray = $_SESSION['delete_files'];
$folderArray = $_SESSION['delete_folders'];
// folders
foreach ($folderArray AS $folder)
{
$myfile = fopen("delete_folder01.txt", "w") or die("Unable to open file!");
$txt = "Delete 01 " .$folder ."\n";
fwrite($myfile, $txt);
$folder = getFileFromPath($folder);
$txt = "Delete 02 " .$folder ."\n";
fwrite($myfile, $txt);
$txt = "Delete 03 " .$_SESSION["dir_current"] ."\n";
fwrite($myfile, $txt);
fclose($myfile);
deleteFolder($folder, $_SESSION["dir_current"]);
}
// files
foreach ($fileArray AS $file)
{
$isError = 0;
$file_decoded = urldecode($file);
if ($file != "")
{
$file_decoded = urldecode( $file );
$myfile = fopen("delete01.txt", "w") or die("Unable to open file!");
$txt = "Delete 01 " .$file_decoded ."\n";
fwrite($myfile, $txt);
fclose($myfile);
if (!@ftp_delete($conn_id, $file_decoded))
{
$myfile = fopen("traitement_delete05.txt", "w") or die("Unable to open file!");
$txt = "Action delete 5" ."\n";
fwrite($myfile, $txt);
fclose($myfile);
if (checkFirstCharTilde($file_decoded) == 1)
{
$myfile = fopen("traitement_delete06.txt", "w") or die("Unable to open file!");
$txt = "Action delete 6" ."\n";
fwrite($myfile, $txt);
fclose($myfile);
//
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)
{
$myfile = fopen("traitement_delete07.txt", "w") or die("Unable to open file!");
$txt = "Action delete 7" ."\n";
fwrite($myfile, $txt);
fclose($myfile);
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);
}
}
}
}
}
}
else
{
$folderArray = recreateFileFolderArrays("folder");
$fileArray = recreateFileFolderArrays("file");
$_SESSION['delete_folders'] = $folderArray;
$_SESSION['delete_files'] = $fileArray;
$height = 100;
$width = 420;
$title = "Confirmer suppression";
displayPopupOpen(1, $width, $height, 1, $title);
if(count($folderArray) != 0 && count($fileArray) == 0 )
{
echo "Voulez-vous supprimer le ou les répertoire(s) et tout ce qu'il contient ?. ";
}
if(count($folderArray) == 0 && count($fileArray) != 0 )
{
echo "Voulez-vous supprimer le ou les fichier(s) ?. ";
}
if(count($folderArray) != 0 && count($fileArray) != 0 )
{
echo "Voulez-vous supprimer tous ces éléments?. ";
}
$vars = "&ftpAction=delete&processForm=1";
displayPopupClose(1, $vars, 1);
}
}
/********************************************************** */
/*function aaa()
{
if ($_POST["processAction"] == 1)
{
$myfile = fopen("traitement_delete", "w") or die("Unable to open file!");
$txt = " Action DELETE" ."\n";
fwrite($myfile, $txt);
fclose($myfile);
}
else
{
$width = 565;
$height = 700;
$title = "Zoulou";
$myfile = fopen("dialog_delete", "w") or die("Unable to open file!");
$txt = "Dialog Action TRACE" ."\n";
fwrite($myfile, $txt);
fclose($myfile);
displayPopupOpen(1, $width, $height, 0, $title);
//$onKeyPress = "onkeypress=\"if (event.keyCode == 13){ processForm('" . $vars . "'); activateActionButtons(0,0); return false; }\"";
$vars = "&ftpAction=delete&processForm=1";
echo "Tartuffe";
displayPopupClose(0, $vars, 1);
}
}
*/
function AAAdeleteFiles()
{
global $conn_id;
global $lang_file_doesnt_exist;
global $lang_cant_delete;
$myfile = fopen("traitement_delete.txt", "w") or die("Unable to open file!");
$txt = "Action TRACE" ."\n";
fwrite($myfile, $txt);
$folderArray = recreateFileFolderArrays("folder");
$fileArray = recreateFileFolderArrays("file");
$str = implode("-", $folderArray);
$txt = $str ."\n";
fwrite($myfile, $txt);
$str = implode("-", $fileArray);
$txt = $str ."\n";
fwrite($myfile, $txt);
fclose($myfile);
// ~/KU.jpg
// ~/www/2024_PHP/00245be6_medium.jpeg
// 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 != "")
{
$myfile = fopen("traitement_delete02.txt", "w") or die("Unable to open file!");
$txt = "Action detected 2" ."\n";
fwrite($myfile, $txt);
fclose($myfile);
// Check if file exists
if (checkFileExists("f", $file, $_SESSION["dir_current"]) == 1)
{
recordFileError("file", $file, $lang_file_doesnt_exist);
$myfile = fopen("traitement_delete03.txt", "w") or die("Unable to open file!");
$txt = "Action detected 3" ."\n";
fwrite($myfile, $txt);
fclose($myfile);
}
else
{
$myfile = fopen("traitement_delete04.txt", "w") or die("Unable to open file!");
$txt = "Action delete 4" ."\n";
fwrite($myfile, $txt);
$txt = " >>>>>> gfqgfhhg" ."\n";
fwrite($myfile, $txt);
$txt = " AAAAA " . $file_decoded ."\n";
fwrite($myfile, $txt);
fclose($myfile);
if (!@ftp_delete($conn_id, $file_decoded))
{
$myfile = fopen("traitement_delete05.txt", "w") or die("Unable to open file!");
$txt = "Action delete 5" ."\n";
fwrite($myfile, $txt);
fclose($myfile);
if (checkFirstCharTilde($file_decoded) == 1)
{
$myfile = fopen("traitement_delete06.txt", "w") or die("Unable to open file!");
$txt = "Action delete 6" ."\n";
fwrite($myfile, $txt);
fclose($myfile);
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)
{
$myfile = fopen("traitement_delete07.txt", "w") or die("Unable to open file!");
$txt = "Action delete 7" ."\n";
fwrite($myfile, $txt);
fclose($myfile);
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);
}
}
}
}
}
}
}
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" || $_SESSION["win_lin"] == "mac")
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) {
$count = 0;
foreach ($ftp_rawlist AS $ff) {
$count++;
// Split up array into values (Lin)
if ($_SESSION["win_lin"] == "lin") {
// $ff = preg_split("/[\s]+/", $ff, 9);
preg_match('/'. str_repeat('([^\s]+)\s+',7) . '([^\s]+) (.+)/', $ff, $matches);
$ff = array_slice($matches, 1);
$perms = $ff[0];
$file = $ff[8];
if (getFileType($perms) == "d")
$isFolder = 1;
else
$isFolder = 0;
}
// Split up array into values (Mac)
elseif ($_SESSION["win_lin"] == "mac") {
if ($count == 1)
continue;
//$ff = preg_split("/[\s]+/", $ff, 9);
preg_match('/'. str_repeat('([^\s]+)\s+',7) . '([^\s]+) (.+)/', $ff, $matches);
$ff = array_slice($matches, 1);
$perms = $ff[0];
$file = $ff[8];
if (getFileType($perms) == "d")
$isFolder = 1;
else
$isFolder = 0;
}
// Split up array into values (Win)
elseif ($_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", replaceTilde($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", replaceTilde($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);
}
}
function newFile()
{
global $conn_id;
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;
global $templates_dir;
$isError = 0;
// Set vars
$vars = "&ftpAction=newFile";
$file_name = quotesUnescape($_POST["newFile"]);
if ($file_name == "") {
$title = $lang_title_new_file;
$width = 400;
$height = 95;
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 = createTempFileName($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) {
if (checkFileInclude($_POST["template"],$templates_dir) == 1) {
$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);
}
}
function checkFileExists($type, $file_name, $folder_path)
{
$ftp_rawlist = getFtpRawList($folder_path);
if (is_array($ftp_rawlist)) {
$fileNameAr = array();
$count = 0;
// Go through array of files/folders
foreach ($ftp_rawlist AS $ff) {
$count++;
// Lin
if ($_SESSION["win_lin"] == "lin") {
// Split up array into values
//$ff = preg_split("/[\s]+/", $ff, 9);
preg_match('/'. str_repeat('([^\s]+)\s+',7) . '([^\s]+) (.+)/', $ff, $matches);
$ff = array_slice($matches, 1);
$perms = $ff[0];
$file = $ff[8];
if ($file != "." && $file != "..") {
if ($type == "f" && getFileType($perms) == "f")
$fileNameAr[] = $file;
if ($type == "d" && getFileType($perms) == "d")
$fileNameAr[] = $file;
}
}
// Mac
elseif ($_SESSION["win_lin"] == "mac") {
if ($count == 1)
continue;
// Split up array into values
//$ff = preg_split("/[\s]+/", $ff, 9);
preg_match('/'. str_repeat('([^\s]+)\s+',7) . '([^\s]+) (.+)/', $ff, $matches);
$ff = array_slice($matches, 1);
$perms = $ff[0];
$file = $ff[8];
if ($file != "." && $file != "..") {
if ($type == "f" && getFileType($perms) == "f")
$fileNameAr[] = $file;
if ($type == "d" && getFileType($perms) == "d")
$fileNameAr[] = $file;
}
}
// Win
elseif ($_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;
}
}
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 = quotesUnescape($_POST["newFolder"]);
if ($folder == "") {
$title = $lang_title_new_folder;
$width = 400;
$height = 40;
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);
}
}
}
function uploadFile()
{
global $conn_id;
global $lang_server_error_up;
global $lang_browser_error_up;
$file_name = urldecode($_SERVER['HTTP_X_FILENAME']);
$path = $_GET["filePath"];
$myfile = fopen("TRACE.txt", "w") or die("Unable to open file!");
$txt = "File name " .$file_name ."\n";
fwrite($myfile, $txt);
$txt = "Path " .$path ."\n";
fwrite($myfile, $txt);
if ($file_name)
{
$fp1 = createTempFileName($file_name);
$txt = "Fp1 " .$fp1 ."\n";
fwrite($myfile, $txt);
// 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;
$txt = "Fp2 - A " .$fp1 ."\n";
fwrite($myfile, $txt);
}
else
{
if ($_SESSION["dir_current"] == "/")
{
$fp2 = "/" . $file_name;
$txt = "Fp2 - B " .$fp2 ."\n";
fwrite($myfile, $txt);
}
else
{
$fp2 = $_SESSION["dir_current"] . "/" . $file_name;
$txt = "Fp2 - C " .$fp2 ."\n";
fwrite($myfile, $txt);
}
}
/*
ensureFtpConnActive();
// 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);
*/
/* */
$inputHandler = fopen('php://input', "r");
$fileHandler = fopen($fp1, "w+");
$txt = "Handler 1 " .$inputHandler ."\n";
fwrite($myfile, $txt);
$txt = "Handler 2 " .$fileHandler ."\n";
fwrite($myfile, $txt);
while (FALSE !== ($buffer = fgets($inputHandler, 65536)))
{
fwrite($fileHandler, $buffer);
}
fclose($inputHandler);
fclose($fileHandler);
// Check if file reached server
if (file_exists($fp1))
{
ensureFtpConnActive();
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);
/* */
fclose($myfile);
}
}
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));
}
}
}
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 != "") {
ensureFtpConnActive();
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);
} else {
recordFileError("file", $file_name, $lang_browser_error_up);
}
}
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"]);
}
}
function singleQuoteEscape($str)
{
return str_replace("'", "\'", $str);
}
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
}
function displayAjaxDivOpen()
{
?>
<div id="ajaxContentWindow" onContextMenu="displayContextMenu(event,'','',<?php
echo assignWinLinNum();
?>)" onClick="unselectFiles()">
<?php
}
function displayAjaxDivClose()
{
?>
</div>
<?php
}
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;
displayPopupOpen(1, $width, $height, 1, $title);
$errors = array_reverse($_SESSION["errors"]);
foreach ($errors AS $error) {
$error = str_replace("[a]","<a href='https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=K7PX3FMNE3XQ6' target='paypal'>",$error);
$error = str_replace("[/a]","</a>",$error);
echo $error . "<br>";
}
$vars = "&ftpAction=openFolder&resetErrorArray=1";
displayPopupClose(1, $vars, 0);
}
}
function displayPopupOpen($resize, $width, $height, $isError, $title)
{
// Set default sizes of exceeded
if ($resize == 1) {
if ($width < 400)
$width = 400;
if ($height > 400)
$height = 400;
}
$windowWidth = $_POST["windowWidth"];
$windowHeight = $_POST["windowHeight"];
// Center window
if ($windowWidth > 0)
$left = round(($windowWidth - $width) / 2 - 15); // -15 for H padding
else
$left = 250;
if ($windowHeight > 0)
$top = round(($_POST["windowHeight"] - $height) / 2 - 50);
else
$top = 250;
echo "<div id=\"blackOutDiv\">";
echo "<div id=\"popupFrame\" style=\"left: " . $left . "px; top: " . $top . "px; width: " . $width . "px;\">";
if ($isError == 1)
$divId = "popupHeaderError";
else
$divId = "popupHeaderAction";
echo "<div id=\"" . $divId . "\">";
echo $title;
echo "</div>";
if ($isError == 1)
$divId = "popupBodyError";
else
$divId = "popupBodyAction";
echo "<div id=\"" . $divId . "\" style=\"height: " . $height . "px;\">";
}
function displayPopupClose($isError, $vars, $btnCancel)
{
global $lang_btn_ok;
global $lang_btn_cancel;
echo "</div>";
if ($isError == 1)
$divId = "popupFooterError";
else
$divId = "popupFooterAction";
echo "<div id=\"" . $divId . "\">";
// OK button
if ($vars != "")
echo "<input type=\"button\" class=\"popUpBtn\" value=\"" . $lang_btn_ok . "\" onClick=\"processForm('" . $vars . "'); activateActionButtons(0,0);\"> ";
// Cancel button
if ($btnCancel == 1)
echo "<input type=\"button\" class=\"popUpBtn\" value=\"" . $lang_btn_cancel . "\" onClick=\"ajaxAbort(); processForm('&ftpAction=openFolder');\"> ";
echo "</div>";
echo "</div>";
echo "</div>";
}
function getMaxStrLen($array)
{
$maxLen = 0;
foreach ($array AS $str) {
$thisLen = strlen($str);
if ($thisLen > $maxLen)
$maxLen = $thisLen;
}
return $maxLen;
}
function getFileFromPath($str)
{
$str = preg_replace("/^(.)+\//", "", $str);
$str = preg_replace("/^~/", "", $str);
return $str;
}
function parentOpenFolder()
{
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<script type="text/javascript">
parent.processForm('&ftpAction=openFolder');
</script>
</body>
</html>
<?php
}
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
}
function replaceTilde($str)
{
$str = str_replace("~", "/", $str);
$str = str_replace("//", "/", $str);
return $str;
}
function assignWinLinNum()
{
if ($_SESSION["win_lin"] == "lin" || $_SESSION["win_lin"] == "mac")
return 1;
elseif ($_SESSION["win_lin"] == "win")
return 0;
}
function getParentDir($folder)
{
// Check for Windows backslash
if ($folder == "\\")
$folder = "/";
if ($folder == "/") {
return "/";
} else {
$path_parts = pathinfo($folder);
return $path_parts['dirname'];
}
}
function displayLangSelect($lang)
{
global $lang_language;
global $languages_dir;
$dir = "languages";
$lang_found = 0;
if (is_dir($languages_dir)) {
if ($dh = opendir($languages_dir)) {
$i = 0;
while (($file = readdir($dh)) !== false) {
if (substr($file,-1) != "." && pathinfo($file, PATHINFO_EXTENSION) == "php") {
$i++;
$file_name = $file;
// Open file to get language name
include($languages_dir . "/" . $file_name);
$lang_found = 1;
// Strip extension
//$file_name = preg_replace("/\..*$/", "", $file_name);
$langs = "<option value=\"" . $file_name . "\"";
if ($file_name == $lang)
$langs .= " selected";
$langs .= ">";
$langs .= $file_lang_name;
$langs .= "</option>";
$langsAr[] = $langs;
// Restore session language file
include($languages_dir . "/" . $lang);
}
}
closedir($dh);
if ($lang_found == 0) {
echo "Language: <strong>languages</strong> folder empty!";
} else {
if ($i > 1) {
sort($langsAr);
echo $lang_language . ": ";
echo "<select name=\"lang\" tabindex=\"-1\">";
foreach ($langsAr AS $lang) {
echo $lang;
}
echo "</select>";
} else {
echo "<input type=\"hidden\" name=\"lang\" value=\"" . $file_name . "\">";
}
}
} else {
echo "Language: <strong>languages</strong> folder locked!";
}
} else {
echo "Language: <strong>languages</strong> folder missing!";
}
}
function tidyFolderPath($str1, $str2)
{
$str1 = replaceTilde($str1);
if ($str1 == "/")
return "/" . $str2;
else
return $str1 . "/" . $str2;
}
function loadJsLangVars()
{
global $languages_dir;
// Include language file again to save listing globals
//$langFileArray = getFileArray("languages");
include($languages_dir . "/en_us.php");
//if (in_array($_SESSION["lang"], $langFileArray))
include($languages_dir . "/" . $_SESSION["lang"]);
?>
<script type="text/javascript">
var lang_no_xmlhttp = '<?php
echo quotesEscape($lang_no_xmlhttp, "s");
?>';
var lang_support_drop = '<?php
echo quotesEscape($lang_support_drop, "s");
?>';
var lang_no_support_drop = '<?php
echo quotesEscape($lang_no_support_drop, "s");
?>';
var lang_transfer_pending = '<?php
echo quotesEscape($lang_transfer_pending, "s");
?>';
var lang_transferring_to_ftp = '<?php
echo quotesEscape($lang_transferring_to_ftp, "s");
?>';
var lang_no_file_selected = '<?php
echo quotesEscape($lang_no_file_selected, "s");
?>';
var lang_none_selected = '<?php
echo quotesEscape($lang_none_selected, "s");
?>';
var lang_context_open = '<?php
echo quotesEscape($lang_context_open, "s");
?>';
var lang_context_download = '<?php
echo quotesEscape($lang_context_download, "s");
?>';
var lang_context_edit = '<?php
echo quotesEscape($lang_context_edit, "s");
?>';
var lang_context_cut = '<?php
echo quotesEscape($lang_context_cut, "s");
?>';
var lang_context_copy = '<?php
echo quotesEscape($lang_context_copy, "s");
?>';
var lang_context_paste = '<?php
echo quotesEscape($lang_context_paste, "s");
?>';
var lang_context_rename = '<?php
echo quotesEscape($lang_context_rename, "s");
?>';
var lang_context_delete = '<?php
echo quotesEscape($lang_context_delete, "s");
?>';
var lang_context_chmod = '<?php
echo quotesEscape($lang_context_chmod, "s");
?>';
var lang_size_b = '<?php
echo quotesEscape($lang_size_b, "s");
?>';
var lang_size_kb = '<?php
echo quotesEscape($lang_size_kb, "s");
?>';
var lang_size_mb = '<?php
echo quotesEscape($lang_size_mb, "s");
?>';
var lang_size_gb = '<?php
echo quotesEscape($lang_size_gb, "s");
?>';
var lang_btn_upload_file = '<?php
echo quotesEscape($lang_btn_upload_file, "s");
?>';
var lang_btn_upload_files = '<?php
echo quotesEscape($lang_btn_upload_files, "s");
?>';
var lang_btn_upload_repeat = '<?php
echo quotesEscape($lang_btn_upload_repeat, "s");
?>';
var lang_btn_upload_folder = '<?php
echo quotesEscape($lang_btn_upload_folder, "s");
?>';
var lang_file_size_error = '<?php
echo quotesEscape($lang_file_size_error, "s");
?>';
var upload_limit = '<?php
echo $_SESSION["upload_limit"];
?>';
</script>
<?php
}
function setLangFile()
{
global $languages_dir;
// The order of these determines the proper display
if ($_COOKIE["lang"] != "")
$lang = $_COOKIE["lang"];
if ($_SESSION["lang"] != "")
$lang = $_SESSION["lang"];
if (isset($_POST["lang"]))
$lang = $_POST["lang"];
if ($lang == "") {
if (is_dir($languages_dir)) {
if ($dh = opendir($languages_dir)) {
while (($file = readdir($dh)) !== false) {
if ($file != "." && $file != ".." && pathinfo($file, PATHINFO_EXTENSION) == "php") {
include($languages_dir . "/" . $file);
if ($file_lang_default == 1)
$lang = $file;
}
}
closedir($dh);
}
}
} else {
if (checkFileInclude($lang,$languages_dir) != 1)
$lang = "en_us.php";
}
$_SESSION["lang"] = $lang;
}
function sessionExpired($message)
{
global $lang_title_ended;
global $lang_btn_login;
$title = $lang_title_ended;
displayPopupOpen(1, 200, 90, 1, $title);
echo $message;
echo "<p><input type=\"button\" id=\"btnLogin\" value=\"" . $lang_btn_login . "\" onClick=\"document.location.href='?openFolder=" . rawurlencode($_POST["openFolder"]) . "'\">";
displayPopupClose(1, "", 0);
}
function 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;
}
}
function adjustButtonWidth($str)
{
if (strlen(utf8_decode($str)) > 12)
return "inputButtonNf";
else
return "inputButton";
}
function checkReferer()
{
global $lang_session_expired;
$domain = $_SESSION["domain"];
$domain = str_replace(".", "\.", $domain);
if (preg_match("/" . $domain . "/", $_SERVER["HTTP_REFERER"])) {
return 1;
} else {
sessionExpired($lang_session_expired);
logOut();
return 0;
}
}
function checkFirstCharTilde($str)
{
if (substr($str, 0, 1) == "~")
return 1;
else
return 0;
}
function recordFileError($str, $file_name, $error)
{
$_SESSION["errors"][] = str_replace("[" . $str . "]", "<strong>" . sanitizeStr($file_name) . "</strong>", $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;
}
*/
function sanitizeStr($str)
{
$str = str_replace("&", "&", $str);
$str = str_replace('"', '"', $str);
$str = str_replace("<", "<", $str);
$str = str_replace(">", ">", $str);
return $str;
}
function sanitizeStrTrim($str)
{
return sanitizeStr(trim($str));
}
function ensureFtpConnActive()
{
global $conn_id;
if (@ftp_pwd($conn_id) === false) {
@ftp_close($conn_id);
connectFTP(0);
}
}
function fetchFile()
{
global $conn_id;
global $lang_server_error_up;
global $lang_title_fetch_file;
global $lang_fetch_no_file;
global $lang_fetch_not_found;
global $lang_btn_fetch;
$height = 40;
$width = 565;
$title = $lang_title_fetch_file;
if (!function_exists("file_get_contents")) {
recordFileError("", "", "PHP function <i>file_get_contents</i> not supported on this server.");
} else {
// Check for processing of form
if ($_POST["processAction"] == 1) {
$fetch_url = trim($_POST["fetch_url"]);
// Check remote file exists
$headers = get_headers($fetch_url);
if (!preg_match("/\./", basename($fetch_url))) {
recordFileError("", "", $lang_fetch_no_file);
} else {
if (!preg_match("/200 OK/", $headers[0])) {
recordFileError("", "", $lang_fetch_not_found);
} else {
// Set file paths
$file_name = basename($fetch_url);
$fp1 = createTempFileName($file_name);
if ($_SESSION["dir_current"] == "/")
$fp2 = "/" . $file_name;
else
$fp2 = $_SESSION["dir_current"] . "/" . $file_name;
// Fetch the file
$inputHandler = fopen($fetch_url, "r");
$fileHandler = fopen($fp1, "w+");
while (FALSE !== ($buffer = fgets($inputHandler, 65536))) {
fwrite($fileHandler, $buffer);
}
fclose($inputHandler);
fclose($fileHandler);
ensureFtpConnActive();
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);
}
}
} else {
$vars = "&ftpAction=fetchFile&processAction=1";
$onKeyPress = "onkeypress=\"if (event.keyCode == 13){ processForm('" . $vars . "'); return false; }\"";
displayPopupOpen(1, $width, $height, 0, $title);
echo "<div class=\"floatLeft10\">";
echo "<input type=\"text\" name=\"fetch_url\" class=\"inputFetch\" value=\"" . quotesReplace($folder, "d") . "\" " . $onKeyPress . " placeholder=\"http://...\"> ";
echo "</div>";
echo "<div id=\"ajaxWaiting\" class=\"floatLeft10\">";
echo "<input type=\"button\" class=\"popUpBtnNoMargin\" value=\"" . $lang_btn_fetch . "\" onClick=\"processForm('" . $vars . "');\" class=\"";
echo adjustButtonWidth($lang_btn_fetch);
echo "\"> ";
echo "</div>";
displayPopupClose(0, "", 1);
}
}
}
function createTempFileName($file_name)
{
global $serverTmp;
//return $serverTmp . "/" . $file_name . "." . uniqid("mftp.", true);
// Attempt to get a $serverTmp var if not set by user
if ($serverTmp == "")
$serverTmp = ini_get('upload_tmp_dir') ? ini_get('upload_tmp_dir') : sys_get_temp_dir();
return tempnam($serverTmp, $file_name);
}
function checkFileInclude($file_check,$dir)
{
$file_found = 0;
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false && $file_found == 0) {
if ($file != "." && $file != "..") {
if ($file == $file_check)
$file_found = 1;
}
}
closedir($dh);
}
}
return $file_found;
}
function getRandId($len)
{
mt_srand((double)microtime()*1000000);
while(strlen($id)<$len){
switch(mt_rand(1,3)){
case 1: $id.=chr(mt_rand(48,57)); break; // 0-9
case 2: $id.=chr(mt_rand(65,90)); break; // A-Z
case 3: $id.=chr(mt_rand(97,122)); break; // a-z
}
}
return $id;
}
function DB_mysql($user)
{
/*
CREATE TABLE user_workarea (
`id` int NOT NULL AUTO_INCREMENT,
`user` varchar(100) NOT NULL,
`nombre_revision` id INT(6) NOT NULL,
`courante` id INT(6) NOT NULL,
`identifiant` varchar(100) NOT NULL,
PRIMARY KEY (id)
)
*/
$dbHost = "analogdepat.mysql.db";
$dbUsername = "analogdepat";
$dbPassword = "Un92pac007";
$dbName = "analogdepat";
$mysqli = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
if($mysqli->connect_errno )
{
printf("Connect failed: %s", $mysqli->connect_error);
exit();
}
$query = "SELECT * FROM table_user_workarea WHERE user = '$user'";
$result = $mysqli->query($query);
if ($result->num_rows > 0)
{
$row = mysqli_fetch_row($result);
$path_user_workarea = $row[4];
//echo "Le champ 'nom' avec la valeur 'patrice' existe dans la table.";
}
if($mysqli->error)
{
printf("Failed..!" , $mysqli->error);
}
$mysqli->close();
return $path_user_workarea;
}
?>