connector.cgi
上传用户:wlfwy2004
上传日期:2016-12-12
资源大小:33978k
文件大小:3k
源码类别:

Jsp/Servlet

开发平台:

Java

  1. #!/usr/bin/env perl 
  2. #####
  3. #  FCKeditor - The text editor for internet
  4. #  Copyright (C) 2003-2005 Frederico Caldeira Knabben
  5. #  
  6. #  Licensed under the terms of the GNU Lesser General Public License:
  7. #   http://www.opensource.org/licenses/lgpl-license.php
  8. #  
  9. #  For further information visit:
  10. #   http://www.fckeditor.net/
  11. #  
  12. #  File Name: connector.cgi
  13. #   This is the File Manager Connector for Perl.
  14. #  
  15. #  File Authors:
  16. #   Takashi Yamaguchi (jack@omakase.net)
  17. #   Frederico Caldeira Knabben (fredck@fckeditor.net)
  18. #####
  19. ##
  20. # ATTENTION: To enable this connector, look for the "SECURITY" comment in this file.
  21. ##
  22. ## START: Hack for Windows (Not important to understand the editor code... Perl specific).
  23. if(Windows_check()) {
  24. chdir(GetScriptPath($0));
  25. }
  26. sub Windows_check
  27. {
  28. # IIS,PWS(NT/95)
  29. $www_server_os = $^O;
  30. # Win98 & NT(SP4)
  31. if($www_server_os eq "") { $www_server_os= $ENV{'OS'}; }
  32. # AnHTTPd/Omni/IIS
  33. if($ENV{'SERVER_SOFTWARE'} =~ /AnWeb|Omni|IIS//i) { $www_server_os= 'win'; }
  34. # Win Apache
  35. if($ENV{'WINDIR'} ne "") { $www_server_os= 'win'; }
  36. if($www_server_os=~ /win/i) { return(1); }
  37. return(0);
  38. }
  39. sub GetScriptPath {
  40. local($path) = @_;
  41. if($path =~ /[:/\]/) { $path =~ s/(.*?)[/\][^/\]+$/$1/; } else { $path = '.'; }
  42. $path;
  43. }
  44. ## END: Hack for IIS
  45. require 'util.pl';
  46. require 'io.pl';
  47. require 'basexml.pl';
  48. require 'commands.pl';
  49. require 'upload_fck.pl';
  50. ##
  51. # SECURITY: REMOVE/COMMENT THE FOLLOWING LINE TO ENABLE THIS CONNECTOR.
  52. ##
  53. &SendError( 1, 'This connector is disabled. Please check the "editor/filemanager/browser/default/connectors/perl/connector.cgi" file' ) ;
  54. &read_input();
  55. if($FORM{'ServerPath'} ne "") {
  56. $GLOBALS{'UserFilesPath'} = $FORM{'ServerPath'};
  57. if(!($GLOBALS{'UserFilesPath'} =~ //$/)) {
  58. $GLOBALS{'UserFilesPath'} .= '/' ;
  59. }
  60. } else {
  61. $GLOBALS{'UserFilesPath'} = '/UserFiles/';
  62. }
  63. # Map the "UserFiles" path to a local directory.
  64. $rootpath = &GetRootPath();
  65. $GLOBALS{'UserFilesDirectory'} = $rootpath . $GLOBALS{'UserFilesPath'};
  66. &DoResponse();
  67. sub DoResponse
  68. {
  69. if($FORM{'Command'} eq "" || $FORM{'Type'} eq "" || $FORM{'CurrentFolder'} eq "") {
  70. return ;
  71. }
  72. # Get the main request informaiton.
  73. $sCommand = $FORM{'Command'};
  74. $sResourceType = $FORM{'Type'};
  75. $sCurrentFolder = $FORM{'CurrentFolder'};
  76. # Check the current folder syntax (must begin and start with a slash).
  77. if(!($sCurrentFolder =~ //$/)) {
  78. $sCurrentFolder .= '/';
  79. }
  80. if(!($sCurrentFolder =~ /^//)) {
  81. $sCurrentFolder = '/' . $sCurrentFolder;
  82. }
  83. # Check for invalid folder paths (..)
  84. if ( $sCurrentFolder =~ /../ ) {
  85. SendError( 102, "" ) ;
  86. }
  87. # File Upload doesn't have to Return XML, so it must be intercepted before anything.
  88. if($sCommand eq 'FileUpload') {
  89. FileUpload($sResourceType,$sCurrentFolder);
  90. return ;
  91. }
  92. print << "_HTML_HEAD_";
  93. Content-Type:text/xml; charset=utf-8
  94. Pragma: no-cache
  95. Cache-Control: no-cache
  96. Expires: Thu, 01 Dec 1994 16:00:00 GMT
  97. _HTML_HEAD_
  98. &CreateXmlHeader($sCommand,$sResourceType,$sCurrentFolder);
  99. # Execute the required command.
  100. if($sCommand eq 'GetFolders') {
  101. &GetFolders($sResourceType,$sCurrentFolder);
  102. } elsif($sCommand eq 'GetFoldersAndFiles') {
  103. &GetFoldersAndFiles($sResourceType,$sCurrentFolder);
  104. } elsif($sCommand eq 'CreateFolder') {
  105. &CreateFolder($sResourceType,$sCurrentFolder);
  106. }
  107. &CreateXmlFooter();
  108. exit ;
  109. }