event refactor, landing on HEAD!
[freeside.git] / httemplate / elements / fckeditor / editor / filemanager / browser / default / connectors / perl / connector.cgi
diff --git a/httemplate/elements/fckeditor/editor/filemanager/browser/default/connectors/perl/connector.cgi b/httemplate/elements/fckeditor/editor/filemanager/browser/default/connectors/perl/connector.cgi
new file mode 100644 (file)
index 0000000..a741215
--- /dev/null
@@ -0,0 +1,137 @@
+#!/usr/bin/env perl\r
+\r
+#####\r
+#  FCKeditor - The text editor for Internet - http://www.fckeditor.net\r
+#  Copyright (C) 2003-2007 Frederico Caldeira Knabben\r
+#\r
+#  == BEGIN LICENSE ==\r
+#\r
+#  Licensed under the terms of any of the following licenses at your\r
+#  choice:\r
+#\r
+#   - GNU General Public License Version 2 or later (the "GPL")\r
+#     http://www.gnu.org/licenses/gpl.html\r
+#\r
+#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")\r
+#     http://www.gnu.org/licenses/lgpl.html\r
+#\r
+#   - Mozilla Public License Version 1.1 or later (the "MPL")\r
+#     http://www.mozilla.org/MPL/MPL-1.1.html\r
+#\r
+#  == END LICENSE ==\r
+#\r
+#  This is the File Manager Connector for Perl.\r
+#####\r
+\r
+##\r
+# ATTENTION: To enable this connector, look for the "SECURITY" comment in this file.\r
+##\r
+\r
+## START: Hack for Windows (Not important to understand the editor code... Perl specific).\r
+if(Windows_check()) {\r
+       chdir(GetScriptPath($0));\r
+}\r
+\r
+sub Windows_check\r
+{\r
+       # IIS,PWS(NT/95)\r
+       $www_server_os = $^O;\r
+       # Win98 & NT(SP4)\r
+       if($www_server_os eq "") { $www_server_os= $ENV{'OS'}; }\r
+       # AnHTTPd/Omni/IIS\r
+       if($ENV{'SERVER_SOFTWARE'} =~ /AnWeb|Omni|IIS\//i) { $www_server_os= 'win'; }\r
+       # Win Apache\r
+       if($ENV{'WINDIR'} ne "") { $www_server_os= 'win'; }\r
+       if($www_server_os=~ /win/i) { return(1); }\r
+       return(0);\r
+}\r
+\r
+sub GetScriptPath {\r
+       local($path) = @_;\r
+       if($path =~ /[\:\/\\]/) { $path =~ s/(.*?)[\/\\][^\/\\]+$/$1/; } else { $path = '.'; }\r
+       $path;\r
+}\r
+## END: Hack for IIS\r
+\r
+require 'util.pl';\r
+require 'io.pl';\r
+require 'basexml.pl';\r
+require 'commands.pl';\r
+require 'upload_fck.pl';\r
+\r
+##\r
+# SECURITY: REMOVE/COMMENT THE FOLLOWING LINE TO ENABLE THIS CONNECTOR.\r
+##\r
+&SendError( 1, 'This connector is disabled. Please check the "editor/filemanager/browser/default/connectors/perl/connector.cgi" file' ) ;\r
+\r
+       &read_input();\r
+\r
+       if($FORM{'ServerPath'} ne "") {\r
+               $GLOBALS{'UserFilesPath'} = $FORM{'ServerPath'};\r
+               if(!($GLOBALS{'UserFilesPath'} =~ /\/$/)) {\r
+                       $GLOBALS{'UserFilesPath'} .= '/' ;\r
+               }\r
+       } else {\r
+               $GLOBALS{'UserFilesPath'} = '/userfiles/';\r
+       }\r
+\r
+       # Map the "UserFiles" path to a local directory.\r
+       $rootpath = &GetRootPath();\r
+       $GLOBALS{'UserFilesDirectory'} = $rootpath . $GLOBALS{'UserFilesPath'};\r
+\r
+       &DoResponse();\r
+\r
+sub DoResponse\r
+{\r
+\r
+       if($FORM{'Command'} eq "" || $FORM{'Type'} eq "" || $FORM{'CurrentFolder'} eq "") {\r
+               return ;\r
+       }\r
+       # Get the main request informaiton.\r
+       $sCommand               = $FORM{'Command'};\r
+       $sResourceType  = $FORM{'Type'};\r
+       $sCurrentFolder = $FORM{'CurrentFolder'};\r
+\r
+       # Check the current folder syntax (must begin and start with a slash).\r
+       if(!($sCurrentFolder =~ /\/$/)) {\r
+               $sCurrentFolder .= '/';\r
+       }\r
+       if(!($sCurrentFolder =~ /^\//)) {\r
+               $sCurrentFolder = '/' . $sCurrentFolder;\r
+       }\r
+\r
+       # Check for invalid folder paths (..)\r
+       if ( $sCurrentFolder =~ /\.\./ ) {\r
+               SendError( 102, "" ) ;\r
+       }\r
+\r
+       # File Upload doesn't have to Return XML, so it must be intercepted before anything.\r
+       if($sCommand eq 'FileUpload') {\r
+               FileUpload($sResourceType,$sCurrentFolder);\r
+               return ;\r
+       }\r
+\r
+       print << "_HTML_HEAD_";\r
+Content-Type:text/xml; charset=utf-8\r
+Pragma: no-cache\r
+Cache-Control: no-cache\r
+Expires: Thu, 01 Dec 1994 16:00:00 GMT\r
+\r
+_HTML_HEAD_\r
+\r
+       &CreateXmlHeader($sCommand,$sResourceType,$sCurrentFolder);\r
+\r
+       # Execute the required command.\r
+       if($sCommand eq 'GetFolders') {\r
+               &GetFolders($sResourceType,$sCurrentFolder);\r
+       } elsif($sCommand eq 'GetFoldersAndFiles') {\r
+               &GetFoldersAndFiles($sResourceType,$sCurrentFolder);\r
+       } elsif($sCommand eq 'CreateFolder') {\r
+               &CreateFolder($sResourceType,$sCurrentFolder);\r
+       }\r
+\r
+       &CreateXmlFooter();\r
+\r
+       exit ;\r
+}\r
+\r