4 # FCKeditor - The text editor for Internet - http://www.fckeditor.net
\r
5 # Copyright (C) 2003-2010 Frederico Caldeira Knabben
\r
7 # == BEGIN LICENSE ==
\r
9 # Licensed under the terms of any of the following licenses at your
\r
12 # - GNU General Public License Version 2 or later (the "GPL")
\r
13 # http://www.gnu.org/licenses/gpl.html
\r
15 # - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
\r
16 # http://www.gnu.org/licenses/lgpl.html
\r
18 # - Mozilla Public License Version 1.1 or later (the "MPL")
\r
19 # http://www.mozilla.org/MPL/MPL-1.1.html
\r
23 # This is the File Manager Connector for Perl.
\r
27 # ATTENTION: To enable this connector, look for the "SECURITY" comment in config.pl.
\r
30 ## START: Hack for Windows (Not important to understand the editor code... Perl specific).
\r
31 if(Windows_check()) {
\r
32 chdir(GetScriptPath($0));
\r
38 $www_server_os = $^O;
\r
40 if($www_server_os eq "") { $www_server_os= $ENV{'OS'}; }
\r
42 if($ENV{'SERVER_SOFTWARE'} =~ /AnWeb|Omni|IIS\//i) { $www_server_os= 'win'; }
\r
44 if($ENV{'WINDIR'} ne "") { $www_server_os= 'win'; }
\r
45 if($www_server_os=~ /win/i) { return(1); }
\r
51 if($path =~ /[\:\/\\]/) { $path =~ s/(.*?)[\/\\][^\/\\]+$/$1/; } else { $path = '.'; }
\r
54 ## END: Hack for IIS
\r
58 require 'basexml.pl';
\r
59 require 'commands.pl';
\r
60 require 'upload_fck.pl';
\r
61 require 'config.pl';
\r
69 if($FORM{'Command'} eq "" || $FORM{'Type'} eq "" || $FORM{'CurrentFolder'} eq "") {
\r
72 # Get the main request informaiton.
\r
73 $sCommand = &specialchar_cnv($FORM{'Command'});
\r
74 $sResourceType = &specialchar_cnv($FORM{'Type'});
\r
75 $sCurrentFolder = $FORM{'CurrentFolder'};
\r
77 if ( !($sCommand =~ /^(FileUpload|GetFolders|GetFoldersAndFiles|CreateFolder)$/) ) {
\r
78 SendError( 1, "Command not allowed" ) ;
\r
81 if ( !($sResourceType =~ /^(File|Image|Flash|Media)$/) ) {
\r
82 SendError( 1, "Invalid type specified" ) ;
\r
85 # Check the current folder syntax (must begin and start with a slash).
\r
86 if(!($sCurrentFolder =~ /\/$/)) {
\r
87 $sCurrentFolder .= '/';
\r
89 if(!($sCurrentFolder =~ /^\//)) {
\r
90 $sCurrentFolder = '/' . $sCurrentFolder;
\r
93 # Check for invalid folder paths (..)
\r
94 if ( $sCurrentFolder =~ /(?:\.\.|\\)/ ) {
\r
95 SendError( 102, "" ) ;
\r
97 if ( $sCurrentFolder =~ /(\/\.)|[[:cntrl:]]|(\/\/)|(\\\\)|([\:\*\?\"\<\>\|])/ ) {
\r
98 SendError( 102, "" ) ;
\r
101 # File Upload doesn't have to Return XML, so it must be intercepted before anything.
\r
102 if($sCommand eq 'FileUpload') {
\r
103 FileUpload($sResourceType,$sCurrentFolder);
\r
107 print << "_HTML_HEAD_";
\r
108 Content-Type:text/xml; charset=utf-8
\r
110 Cache-Control: no-cache
\r
111 Expires: Thu, 01 Dec 1994 16:00:00 GMT
\r
115 &CreateXmlHeader($sCommand,$sResourceType,$sCurrentFolder);
\r
117 # Execute the required command.
\r
118 if($sCommand eq 'GetFolders') {
\r
119 &GetFolders($sResourceType,$sCurrentFolder);
\r
120 } elsif($sCommand eq 'GetFoldersAndFiles') {
\r
121 &GetFoldersAndFiles($sResourceType,$sCurrentFolder);
\r
122 } elsif($sCommand eq 'CreateFolder') {
\r
123 &CreateFolder($sResourceType,$sCurrentFolder);
\r
126 &CreateXmlFooter();
\r