go to the user's root directory
// For all other screens ==> return error
if ($result2 == false) {
if ($net2ftp_globals["state"] == "browse") {
$rootdirectory = getRootdirectory();
// User's root directory is different from the current directory, so switch to it
if ($directory != $rootdirectory) {
$warnings .= __("The directory %1\$s does not exist or could not be selected, so the directory %2\$s is shown instead.", $directory, $rootdirectory);
$directory = $rootdirectory;
$result3 = ftp_chdir($conn_id, $directory);
}
// The current directory *is* the user's root directory!
// We cannot display any other directory (like /), so print an error message.
else {
$errormessage = __("Your root directory %1\$s does not exist or could not be selected.", $directory);
setErrorVars(false, $errormessage, debug_backtrace(), __FILE__, __LINE__);
}
}
else {
$errormessage = __("The directory %1\$s could not be selected - you may not have sufficient rights to view this directory, or it may not exist.", $directory);
setErrorVars(false, $errormessage, debug_backtrace(), __FILE__, __LINE__);
}
} // end if result2
} // end if result1
} // end if / or "" or else
// -------------------------------------------------------------------------
// Step 2 - Get list of directories and files
// The -a option is used to show the hidden files as well on some FTP servers
// Some servers do not return anything when using -a, so in that case try again without the -a option
// -------------------------------------------------------------------------
$rawlist = ftp_rawlist($conn_id, "-a");
if (sizeof($rawlist) <= 1) { $rawlist = ftp_rawlist($conn_id, ""); }
// -------------------------------------------------------------------------
// Step 3 - Parse the raw list
// -------------------------------------------------------------------------
// ----------------------------------------------
// Initialize variables
// ----------------------------------------------
$list["directories"] = array();
$list["files"] = array();
$list["symlinks"] = array();
$list["unrecognized"] = array();
$directory_index = 1;
$file_index = 1;
$symlink_index = 1;
$unrecognized_index = 1;
$list["stats"]["directories"]["total_number"] = 0;
$list["stats"]["directories"]["total_size"] = 0;
$list["stats"]["directories"]["total_skipped"] = 0;
$list["stats"]["files"]["total_number"] = 0;
$list["stats"]["files"]["total_size"] = 0;
$list["stats"]["files"]["total_skipped"] = 0;
$list["stats"]["symlinks"]["total_number"] = 0;
$list["stats"]["symlinks"]["total_size"] = 0;
$list["stats"]["symlinks"]["total_skipped"] = 0;
$list["stats"]["unrecognized"]["total_number"] = 0;
$list["stats"]["unrecognized"]["total_size"] = 0;
$list["stats"]["unrecognized"]["total_skipped"] = 0;
// ----------------------------------------------
// Loop over the raw list lines
// ----------------------------------------------
$nr_entries_banned_keyword = 0;
$nr_entries_too_big = 0;
for($i=0; $i $net2ftp_settings["max_filesize"]) { $listline["selectable"] = "too_big"; $nr_entries_too_big++; }
}
// Form the new directory filename and encode it too
if ($listline["dirorfile"] == "d") {
$listline["newdir"] = glueDirectories($directory, $listline["dirfilename"]);
$listline["newdir_html"] = htmlEncode2($listline["newdir"]);
$listline["newdir_url"] = urlEncode2($listline["newdir"]);
$listline["newdir_js"] = javascriptEncode2($listline["newdir"]);
}
// ----------------------------------------------
// Depending on if the line contained a directory/file/symlink/unrecognized
// row, store the result in different variables
// ----------------------------------------------
if ($listline["dirorfile"] == "d") {
$list["directories"][$directory_index] = $listline;
$directory_index++;
if (isset($listline["size"]) && is_numeric($listline["size"])) {
$list["stats"]["directories"]["total_size"] = $list["stats"]["directories"]["total_size"] + $listline["size"];
}
else {
$list["stats"]["directories"]["total_skipped"] = $list["stats"]["directories"]["total_skipped"] + 1;
}
} // end if
elseif ($listline["dirorfile"] == "-") {
$list["files"][$file_index] = $listline;
$file_index++;
if (isset($listline["size"]) && is_numeric($listline["size"])) {
$list["stats"]["files"]["total_size"] = $list["stats"]["files"]["total_size"] + $listline["size"];
}
else {
$list["stats"]["files"]["total_skipped"] = $list["stats"]["files"]["total_skipped"] + 1;
}
} // end elseif
elseif ($listline["dirorfile"] == "l") {
$list["symlinks"][$symlink_index] = $listline;
$symlink_index++;
} // end elseif
elseif ($listline["dirorfile"] == "u") {
$list["unrecognized"][$unrecognized_index] = $listline;
$unrecognized_index++;
} // end elseif
} // end for
// Print a warning message if some directories, files or symlinks contain a banned keyword or if a file is
// too big to be downloaded
if ($nr_entries_banned_keyword > 0) {
$warnings .= __("Entries which contain banned keywords can't be managed using net2ftp. This is to avoid Paypal or Ebay scams from being uploaded through net2ftp.");
$warnings .= "
\n";
}
if ($nr_entries_too_big > 0) {
$warnings .= __("Files which are too big can't be downloaded, uploaded, copied, moved, searched, zipped, unzipped, viewed or edited; they can only be renamed, chmodded or deleted.");
$warnings .= "
\n";
}
// Store the warnings and new directory in $list["stats"]
if (isset($warnings) == true) { $list["stats"]["warnings"] = $warnings; }
else { $list["stats"]["warnings"] = ""; }
$list["stats"]["newdirectory"] = $directory;
// Store the statistics
$list["stats"]["directories"]["total_size_formated"] = formatFilesize($list["stats"]["directories"]["total_size"]);
$list["stats"]["files"]["total_size_formated"] = formatFilesize($list["stats"]["files"]["total_size"]);
$list["stats"]["directories"]["total_number"] = $directory_index - 1;
$list["stats"]["files"]["total_number"] = $file_index - 1;
$list["stats"]["symlinks"]["total_number"] = $symlink_index - 1;
$list["stats"]["unrecognized"]["total_number"] = $unrecognized_index - 1;
// Put everything together in $list["all"]
$list["all"] = $list["directories"] + $list["files"] + $list["symlinks"] + $list["unrecognized"];
// -------------------------------------------------------------------------
// Step 4 - Return the result
// -------------------------------------------------------------------------
return $list;
// -------------------------------------------------------------------------
// Some documentation:
// 1 - Some FTP servers return a total on the first line
// 2 - Some FTP servers return . and .. in their list of directories
// ftp_scanline does not return those entries.
// -------------------------------------------------------------------------
// 1 - After doing some tests on different public FTP servers, it appears that
// they reply differently to the ftp_rawlist request:
// - some FTP servers, like ftp.belnet.be, start with a line summarizing how
// many subdirectories and files there are in the current directory. The
// real list of subdirectories and files starts on the second line.
// [0] => total 15
// [1] => drwxr-xr-x 11 BELNET Archive 512 Feb 6 2000 BELNET
// [2] => drwxr-xr-x 2 BELNET Archive 512 Oct 29 2001 FVD-SFI
// - some other FTP servers, like ftp.redhat.com/pub, start directly with the
// list of subdirectories and files.
// [0] => drwxr-xr-x 9 ftp ftp 4096 Jan 11 06:34 contrib
// [1] => drwxr-xr-x 13 ftp ftp 4096 Jan 29 21:59 redhat
// [2] => drwxrwsr-x 6 ftp ftp 4096 Jun 05 2002 up2date
// 2 - Some FTP servers return "." and ".." as directories. These fake entries
// have to be eliminated!
// They would cause infinite loops in the copy/move/delete functions.
// [0] => drwxr-xr-x 5 80 www 512 Apr 10 09:39 .
// [1] => drwxr-xr-x 16 80 www 512 Apr 9 08:51 ..
// [2] => -rw-r--r-- 1 80 www 5647 Apr 9 08:12 _CHANGES_v0.5
// [3] => -rw-r--r-- 1 80 www 1239 Apr 9 08:12 _CREDITS_v0.5
} // End function ftp_getlist
// ** **
// ** **
// **************************************************************************************
// **************************************************************************************
// **************************************************************************************
// **************************************************************************************
// ** **
// ** **
function ftp_scanline($directory, $rawlistline) {
// --------------
// This function scans an ftp_rawlist line string and returns its parts (directory/file, name, size,...) using preg_match()
//
// !!! Documentation about preg_match and FTP server's outputs are now at the end of the function !!!
// --------------
// -------------------------------------------------------------------------
// Global variables
// -------------------------------------------------------------------------
global $net2ftp_settings, $net2ftp_messages;
// -------------------------------------------------------------------------
// Scanning:
// 1. first scan with strict rules
// 2. if that does not match, scan with less strict rules
// 3. if that does not match, scan with rules for specific FTP servers (AS400)
// 4. and if that does not match, return the raw line
// -------------------------------------------------------------------------
// ----------------------------------------------
// 1. Strict rules
// ----------------------------------------------
if (preg_match("/([-dl])([rwxsStT-]{9})[ ]+([0-9]+)[ ]+([^ ]+)[ ]+(.+)[ ]+([0-9]+)[ ]+([a-zA-Z]+[ ]+[0-9]+)[ ]+([0-9:]+)[ ]+(.*)/", $rawlistline, $regs) == true) {
// permissions number owner group size month day year/hour filename
$listline["scanrule"] = "rule-1";
$listline["dirorfile"] = "$regs[1]"; // Directory ==> d, File ==> -
$listline["dirfilename"] = "$regs[9]"; // Filename
$listline["size"] = "$regs[6]"; // Size
$listline["owner"] = "$regs[4]"; // Owner
$listline["group"] = trim($regs[5]); // Group
$listline["permissions"] = "$regs[2]"; // Permissions
$listline["mtime"] = "$regs[7] $regs[8]"; // Mtime -- format depends on what FTP server returns (year, month, day, hour, minutes... see above)
}
// ----------------------------------------------
// 2. Less strict rules
// ----------------------------------------------
elseif (preg_match("/([-dl])([rwxsStT-]{9})[ ]+(.*)[ ]+([a-zA-Z0-9 ]+)[ ]+([0-9:]+)[ ]+(.*)/", $rawlistline, $regs) == true) {
// permissions number/owner/group/size
// month-day year/hour filename
$listline["scanrule"] = "rule-2";
$listline["dirorfile"] = "$regs[1]"; // Directory ==> d, File ==> -
$listline["dirfilename"] = "$regs[6]"; // Filename
$listline["size"] = "$regs[3]"; // Number/Owner/Group/Size
$listline["permissions"] = "$regs[2]"; // Permissions
$listline["mtime"] = "$regs[4] $regs[5]"; // Mtime -- format depends on what FTP server returns (year, month, day, hour, minutes... see above)
}
// ----------------------------------------------
// 3. Specific FTP server rules
// ----------------------------------------------
// ---------------
// 3.1 Windows
// ---------------
elseif (preg_match("/([0-9\\/-]+)[ ]+([0-9:AMP]+)[ ]+([0-9]*|)[ ]+(.*)/", $rawlistline, $regs) == true) {
// date time size filename
$listline["scanrule"] = "rule-3.1";
if ($regs[3] == "") { $listline["size"] = ""; }
else { $listline["size"] = "$regs[3]"; } // Size
$listline["dirfilename"] = "$regs[4]"; // Filename
$listline["owner"] = ""; // Owner
$listline["group"] = ""; // Group
$listline["permissions"] = ""; // Permissions
$listline["mtime"] = "$regs[1] $regs[2]"; // Mtime -- format depends on what FTP server returns (year, month, day, hour, minutes... see above)
if ($listline["size"] != "") { $listline["dirorfile"] = "-"; }
else { $listline["dirorfile"] = "d"; }
}
// ---------------
// 3.2 Netware
// Thanks to Danny!
// ---------------
elseif (preg_match("/([-]|[d])[ ]+(.{10})[ ]+([^ ]+)[ ]+([0-9]*)[ ]+([a-zA-Z]*[ ]+[0-9]*)[ ]+([0-9:]*)[ ]+(.*)/", $rawlistline, $regs) == true) {
// dir/file perms owner size month day hour filename
$listline["scanrule"] = "rule-3.2";
$listline["dirorfile"] = "$regs[1]"; // Directory ==> d, File ==> -
$listline["dirfilename"] = "$regs[7]"; // Filename
$listline["size"] = "$regs[4]"; // Size
$listline["owner"] = "$regs[3]"; // Owner
$listline["group"] = ""; // Group
$listline["permissions"] = "$regs[2]"; // Permissions
$listline["mtime"] = "$regs[5] $regs6"; // Mtime -- format depends on what FTP server returns (year, month, day, hour, minutes... see above)
}
// ---------------
// 3.3 AS400
// ---------------
elseif (preg_match("/([a-zA-Z0-9_-]+)[ ]+([0-9]+)[ ]+([0-9\\/-]+)[ ]+([0-9:]+)[ ]+([a-zA-Z0-9_ -\*]+)[ \\/]+([^\\/]+)/", $rawlistline, $regs) == true) {
// owner size date time type filename
if ($regs[5] != "*STMF") { $directory_or_file = "d"; }
elseif ($regs[5] == "*STMF") { $directory_or_file = "-"; }
$listline["scanrule"] = "rule-3.3";
$listline["dirorfile"] = "$directory_or_file";// Directory ==> d, File ==> -
$listline["dirfilename"] = "$regs[6]"; // Filename
$listline["size"] = "$regs[2]"; // Size
$listline["owner"] = "$regs[1]"; // Owner
$listline["group"] = ""; // Group
$listline["permissions"] = ""; // Permissions
$listline["mtime"] = "$regs[3] $regs[4]"; // Mtime -- format depends on what FTP server returns (year, month, day, hour, minutes... see above)
}
// ---------------
// 3.4 Titan
// Owner, group are modified compared to rule 1
// TO DO: integrate this rule in rule 1 itself
// ---------------
elseif (preg_match("/([-dl])([rwxsStT-]{9})[ ]+([0-9]+)[ ]+([a-zA-Z0-9]+)[ ]+([a-zA-Z0-9]+)[ ]+([0-9]+)[ ]+([a-zA-Z]+[ ]+[0-9]+)[ ]+([0-9:]+)[ ](.*)/", $rawlistline, $regs) == true) {
// dir/file permissions number owner group size month date time file
$listline["scanrule"] = "rule-3.4";
$listline["dirorfile"] = "$regs[1]"; // Directory ==> d, File ==> -
$listline["dirfilename"] = "$regs[9]"; // Filename
$listline["size"] = "$regs[6]"; // Size
$listline["owner"] = "$regs[4]"; // Owner
$listline["group"] = "$regs[5]"; // Group
$listline["permissions"] = "$regs[2]"; // Permissions
$listline["mtime"] = "$regs[7] $regs[8]"; // Mtime -- format depends on what FTP server returns (year, month, day, hour, minutes... see above)
}
// ----------------------------------------------
// 4. If nothing matchs, return the raw line
// ----------------------------------------------
else {
$listline["scanrule"] = "rule-4";
$listline["dirorfile"] = "u";
$listline["dirfilename"] = $rawlistline;
}
// -------------------------------------------------------------------------
// Remove the . and .. entries
// Remove the total line that some servers return
// -------------------------------------------------------------------------
if ($listline["dirfilename"] == "." || $listline["dirfilename"] == "..") { return ""; }
elseif (substr($rawlistline,0,5) == "total") { return ""; }
// -------------------------------------------------------------------------
// And finally... return the nice list!
// -------------------------------------------------------------------------
return $listline;
// -------------------------------------------------------------------------
// Documentation
// -------------------------------------------------------------------------
/*
mholdgate@wakefield.co.uk
11-Jan-2002 11:51
^ Start of String
$ End of string
n* Zero or more of 'n'
n+ One or more of 'n'
n? A possible 'n'
n{2} Exactly two of 'n'
n{2,} At least 2 or more of 'n'
n{2,4} From 2 to 4 of 'n'
() Parenthesis to group expressions
(n|a) Either 'n' or 'a'
. Any single character
[1-6] A number between 1 and 6
[c-h] A lower case character between c and h
[D-M] An upper case character between D and M
[^a-z] Absence of lower case a to z
[_a-zA-Z] An underscore or any letter of the alphabet
^.{2}[a-z]{1,2}_?[0-9]*([1-6]|[a-f])[^1-9]{2}a+$
A string beginning with any two characters
Followed by either 1 or 2 lower case alphabet letters
Followed by an optional underscore
Followed by zero or more digits
Followed by either a number between 1 and 6 or a character between a and f (Lowercase)
Followed by a two characters which are not digits between 1 and 9
Followed by one or more n characters at the end of a string
// $regs can contain a maximum of 10 elements !! (regs[0] to regs[9])
// To specify what you really want back from ereg, use (). Only what is within () will be returned. See below.
*/
// ----------------------------------------------
// Sample FTP server's output
// ----------------------------------------------
// ---------------
// 1. "Standard" FTP servers output
// ---------------
// ftp.redhat.com
//drwxr-xr-x 6 0 0 4096 Aug 21 2001 pub (one or more spaces between entries)
//
// ftp.suse.com
//drwxr-xr-x 2 root root 4096 Jan 9 2001 bin
//-rw-r--r-- 1 suse susewww 664 May 23 16:24 README.txt
//
// ftp.belnet.be
//-rw-r--r-- 1 BELNET Mirror 162 Aug 6 2000 HEADER.html
//drwxr-xr-x 53 BELNET Archive 2048 Nov 13 12:03 mirror
//
// ftp.microsoft.com
//-r-xr-xr-x 1 owner group 0 Nov 27 2000 dirmap.htm
//
// ftp.sourceforge.net
//-rw-r--r-- 1 root staff 29136068 Apr 21 22:07 ls-lR.gz
//
// ftp.nec.com
//dr-xr-xr-x 12 other 512 Apr 3 2002 pub
//
// ftp.intel.com
//drwxr-sr-x 11 root ftp 4096 Sep 23 16:36 pub
// ---------------
// 3.1 Windows
// ---------------
//06-10-04 07:56PM 8175 garantie.html
//04-09-04 04:27PM images
//05-25-04 09:18AM 9505 index.html
// ---------------
// 3.2 Netware
// ---------------
// total 0
// - [RWCEAFMS] USER 12 Mar 08 10:48 check.txt
// d [RWCEAFMS] USER 512 Mar 18 17:55 latest
// ---------------
// 3.3 AS400
// ---------------
// RGOVINDAN 932 03/29/01 14:59:53 *STMF /cert.txt
// QSYS 77824 12/17/01 15:33:14 *DIR /QOpenSys/
// QDOC 24576 12/31/69 20:00:00 *FLR /QDLS/
// QSYS 12832768 04/14/03 16:47:25 *LIB /QSYS.LIB/
// QDFTOWN 2147483647 12/31/69 20:00:00 *DDIR /QOPT/
// QSYS 2144 04/12/03 12:49:00 *DDIR /QFileSvr.400/
// QDFTOWN 1136 04/12/03 12:49:01 *DDIR /QNTC/
// ---------------
// 3.4 Titan FTP server
// ---------------
// total 6
// drwxrwx--- 1 owner group 512 Apr 19 11:44 .
// drwxrwx--- 1 owner group 512 Apr 19 11:44 ..
// -rw-rw---- 1 owner group 13171 Apr 15 13:50 default.asp
// drwxrwx--- 1 owner group 512 Apr 19 11:44 forum
// drwxrwx--- 1 owner group 512 Apr 15 13:32 images
// -rw-rw---- 1 owner group 764 Apr 15 11:07 styles.css
} // End function ftp_scanline
// ** **
// ** **
// **************************************************************************************
// **************************************************************************************
// **************************************************************************************
// **************************************************************************************
// ** **
// ** **
function ftp2http($directory, $list_files, $htmltags) {
// --------------
// This function calculates the HTTP URL based on the FTP URL
//
// Given the FTP server (ftp.name.com),
// the directory and file (/directory/file.php)
// It has to return
// http://www.name.com/directory/file.php
//
// $htmltags indicates whether the url should be returned enclosed in HTML tags or not
//
// For efficiency reasons, this function processes a list of files
// --------------
// -------------------------------------------------------------------------
// Global variables
// -------------------------------------------------------------------------
global $net2ftp_globals;
// -------------------------------------------------------------------------
// If no list is supplied, return ""
// -------------------------------------------------------------------------
if (sizeof($list_files) == 0) { return ""; }
// -------------------------------------------------------------------------
// Prepare the variables
// -------------------------------------------------------------------------
// Directory
if ($directory == "/") { $directory = ""; }
// Convert single quotes from ' to '
if ($htmltags == "no") { $directory = javascriptEncode2($directory); }
else { $directory = urlEncode2($directory); }
// Filenames
if ($htmltags == "no") { $encoding = "dirfilename_js"; }
else { $encoding = "dirfilename_url"; }
// Username
if ($htmltags == "no") { $username = javascriptEncode2($net2ftp_globals["username"]); }
else { $username = htmlEncode2($net2ftp_globals["username"]); }
// -------------------------------------------------------------------------
// "ftp.t35.com" -----> "http://username" (username = username.t35.com)
// "ftp.t35.net" -----> "http://username" (username = username.t35.net)
// -------------------------------------------------------------------------
if (strpos($net2ftp_globals["ftpserver"], "ftp.t35") !== false) {
for ($i=1; $i<=sizeof($list_files); $i++) {
$URL = "http://" . $username . $directory . "/" . $list_files[$i][$encoding];
if ($htmltags == "no") { $list_links[$i] = $URL; }
else { $list_links[$i] = "" . $list_files[$i][$encoding] . ""; }
} // end for
}
// -------------------------------------------------------------------------
// "ftp-www.earthlink.net/webdocs/directory" -----> "http://home.earthlink.net/~username/directory"
// -------------------------------------------------------------------------
elseif (strpos($net2ftp_globals["ftpserver"], "ftp-www.earthlink.net") !== false) {
if (strlen($directory) < 8) {
for ($i=1; $i<=sizeof($list_files); $i++) {
if ($htmltags == "no") { $list_links[$i] = "javascript:alert('" . __("This file is not accessible from the web") . "');"; }
else { $list_links[$i] = "" . $list_files[$i][$encoding] . ""; }
} // end for
}
else {
// Transform directory from /webdocs/dir to /dir --> remove the first 4 characters
$directory = substr($directory, 8);
for ($i=1; $i<=sizeof($list_files); $i++) {
$URL = "http://home.earthlink.net/~" . $username . $directory . "/" . $list_files[$i][$encoding];
if ($htmltags == "no") { $list_links[$i] = $URL; }
else { $list_links[$i] = "" . $list_files[$i][$encoding] . ""; }
} // end for
} // end if else strlen
}
// -------------------------------------------------------------------------
// "ftpperso.free.fr" -----> "http://username.free.fr"
// -------------------------------------------------------------------------
elseif (strpos($net2ftp_globals["ftpserver"], "ftpperso.free.fr") !== false) {
for ($i=1; $i<=sizeof($list_files); $i++) {
$URL = "http://" . $username . ".free.fr" . $directory . "/" . $list_files[$i][$encoding];
if ($htmltags == "no") { $list_links[$i] = $URL; }
else { $list_links[$i] = "" . $list_files[$i][$encoding] . ""; }
} // end for
}
// -------------------------------------------------------------------------
// "ftp.membres.lycos.fr" -----> "http://membres.lycos.fr/username"
// -------------------------------------------------------------------------
elseif (strpos($net2ftp_globals["ftpserver"],"ftp.membres.lycos.fr") !== false) {
for ($i=1; $i<=sizeof($list_files); $i++) {
$URL = "http://membres.lycos.fr/" . $username . $directory . "/" . $list_files[$i][$encoding];
if ($htmltags == "no") { $list_links[$i] = $URL; }
else { $list_links[$i] = "" . $list_files[$i][$encoding] . ""; }
} // end for
}
// -------------------------------------------------------------------------
// "home.planetinternet.be" -----> "http://home.planetinternet.be/~username"
// -------------------------------------------------------------------------
elseif (strpos($net2ftp_globals["ftpserver"], "home.planetinternet.be") !== false) {
for ($i=1; $i<=sizeof($list_files); $i++) {
$URL = "http://home.planetinternet.be/~" . $username . $directory . "/" . $list_files[$i][$encoding];
if ($htmltags == "no") { $list_links[$i] = $URL; }
else { $list_links[$i] = "" . $list_files[$i][$encoding] . ""; }
} // end for
}
// -------------------------------------------------------------------------
// "home.planet.nl" -----> "http://home.planet.nl/~username"
// -------------------------------------------------------------------------
elseif (strpos($net2ftp_globals["ftpserver"], "home.planet.nl") !== false) {
for ($i=1; $i<=sizeof($list_files); $i++) {
$URL = "http://home.planet.nl/~" . $username . $directory . "/" . $list_files[$i][$encoding];
if ($htmltags == "no") { $list_links[$i] = $URL; }
else { $list_links[$i] = "" . $list_files[$i][$encoding] . ""; }
} // end for
}
// -------------------------------------------------------------------------
// "users.skynet.be" -----> "http://users.skynet.be/username"
// -------------------------------------------------------------------------
elseif (strpos($net2ftp_globals["ftpserver"], "users.skynet.be") !== false) {
for ($i=1; $i<=sizeof($list_files); $i++) {
$URL = "http://users.skynet.be/" . $username . $directory . "/" . $list_files[$i][$encoding];
if ($htmltags == "no") { $list_links[$i] = $URL; }
else { $list_links[$i] = "" . $list_files[$i][$encoding] . ""; }
} // end for
}
// -------------------------------------------------------------------------
// "ftp.tripod.com" -----> "http://username.tripod.com"
// -------------------------------------------------------------------------
elseif (strpos($net2ftp_globals["ftpserver"], "ftp.tripod.com") !== false) {
for ($i=1; $i<=sizeof($list_files); $i++) {
$URL = "http://" . $username . ".tripod.com" . $directory . "/" . $list_files[$i][$encoding];
if ($htmltags == "no") { $list_links[$i] = $URL; }
else { $list_links[$i] = "" . $list_files[$i][$encoding] . ""; }
} // end for
}
// -------------------------------------------------------------------------
// "ftp.wanadoo.es" -----> "http://perso.wanadoo.es/username"
// -------------------------------------------------------------------------
elseif (strpos($net2ftp_globals["ftpserver"], "ftp.wanadoo.es") !== false) {
for ($i=1; $i<=sizeof($list_files); $i++) {
$URL = "http://perso.wanadoo.es/" . $username . $directory . "/" . $list_files[$i][$encoding];
if ($htmltags == "no") { $list_links[$i] = $URL; }
else { $list_links[$i] = "" . $list_files[$i][$encoding] . ""; }
} // end for
}
// -------------------------------------------------------------------------
// "perso-ftp.wanadoo.fr" -----> "http://perso.wanadoo.fr/username"
// -------------------------------------------------------------------------
elseif (strpos($net2ftp_globals["ftpserver"], "perso-ftp.wanadoo.fr") !== false) {
for ($i=1; $i<=sizeof($list_files); $i++) {
$URL = "http://perso.wanadoo.fr/" . $username . $directory . "/" . $list_files[$i][$encoding];
if ($htmltags == "no") { $list_links[$i] = $URL; }
else { $list_links[$i] = "" . $list_files[$i][$encoding] . ""; }
} // end for
}
// -------------------------------------------------------------------------
// "home.wanadoo.nl" -----> "http://home.wanadoo.nl/username"
// -------------------------------------------------------------------------
elseif (strpos($net2ftp_globals["ftpserver"], "home.wanadoo.nl") !== false) {
for ($i=1; $i<=sizeof($list_files); $i++) {
$URL = "http://home.wanadoo.nl/" . $username . $directory . "/" . $list_files[$i][$encoding];
if ($htmltags == "no") { $list_links[$i] = $URL; }
else { $list_links[$i] = "" . $list_files[$i][$encoding] . ""; }
} // end for
}
// -------------------------------------------------------------------------
// wanadoo uk
// "uploads.webspace.freeserve.net" -----> "http://www.username.freeserve.co.uk"
// -------------------------------------------------------------------------
elseif (strpos($net2ftp_globals["ftpserver"], "uploads.webspace.freeserve.net") !== false) {
for ($i=1; $i<=sizeof($list_files); $i++) {
$URL = "http://www." . $username . ".freeserve.co.uk" . $directory . "/" . $list_files[$i][$encoding];
if ($htmltags == "no") { $list_links[$i] = $URL; }
else { $list_links[$i] = "" . $list_files[$i][$encoding] . ""; }
} // end for
}
// -------------------------------------------------------------------------
// "ftp.xs4all.nl/WWW/directory" -----> "http://www.xs4all.nl/~username/directory"
// -------------------------------------------------------------------------
elseif (strpos($net2ftp_globals["ftpserver"], "ftp.xs4all.nl") !== false) {
if (strlen($directory) < 4) {
for ($i=1; $i<=sizeof($list_files); $i++) {
if ($htmltags == "no") { $list_links[$i] = "javascript:alert('" . __("This file is not accessible from the web") . "');"; }
else { $list_links[$i] = "" . $list_files[$i][$encoding] . ""; }
} // end for
}
else {
// Transform directory from /WWW/dir to /dir --> remove the first 4 characters
$directory = substr($directory, 4);
for ($i=1; $i<=sizeof($list_files); $i++) {
$URL = "http://www.xs4all.nl/~" . $username . $directory . "/" . $list_files[$i][$encoding];
if ($htmltags == "no") { $list_links[$i] = $URL; }
else { $list_links[$i] = "" . $list_files[$i][$encoding] . ""; }
} // end for
}
}
// -------------------------------------------------------------------------
// "ftp.server.com/directory/file" -----> "http://www.server.com/directory/file"
// -------------------------------------------------------------------------
elseif (preg_match("/ftp.(.+)(.{2,4})/", $net2ftp_globals["ftpserver"], $regs)) {
// Check if the FTP directory contains "htdocs", "httpdocs" or "public_html"
// If it does, the HTTP directory root starts from there on
// Example: /srv/www/htdocs/directory1 ==> /directory1
$specialdirectories[1] = "htdocs";
$specialdirectories[2] = "httpdocs";
$specialdirectories[3] = "public_html";
for ($i=1; $i<=sizeof($specialdirectories); $i++) {
$pos = strpos($directory, $specialdirectories[$i]);
if ($pos !== false) {
$directory = substr($directory, $pos + strlen($specialdirectories[$i]));
break;
}
}
// Calculate all the URLs on the Browse screen
for ($i=1; $i<=sizeof($list_files); $i++) {
$URL = "http://www." . $regs[1] . $regs[2] . $directory . "/" . $list_files[$i][$encoding];
if ($htmltags == "no") { $list_links[$i] = $URL; }
else { $list_links[$i] = "" . $list_files[$i][$encoding] . ""; }
} // end for
}
// -------------------------------------------------------------------------
// "http://192.168.0.1/directory/file" can be determined using "192.168.0.1/directory/file":
// -------------------------------------------------------------------------
else {
// Check if the FTP directory contains "htdocs", "httpdocs" or "public_html"
// If it does, the HTTP directory root starts from there on
// Example: /srv/www/htdocs/directory1 ==> /directory1
$specialdirectories[1] = "htdocs";
$specialdirectories[2] = "httpdocs";
$specialdirectories[3] = "public_html";
for ($i=1; $i<=sizeof($specialdirectories); $i++) {
$pos = strpos($directory, $specialdirectories[$i]);
if ($pos !== false) {
$directory = substr($directory, $pos + strlen($specialdirectories[$i]));
break;
}
}
// Calculate all the URLs on the Browse screen
for ($i=1; $i<=sizeof($list_files); $i++) {
$URL = "http://" . $net2ftp_globals["ftpserver"]. $directory . "/" . @(string)$list_files[$i][$encoding];
if ($htmltags == "no") { $list_links[$i] = $URL; }
else { $list_links[$i] = "" . $list_files[$i][$encoding] . ""; }
} // end for
}
return $list_links;
} // end function ftp2http
// ** **
// ** **
// **************************************************************************************
// **************************************************************************************
?>