PageRenderTime 22ms CodeModel.GetById 17ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 0ms

/source/Plug-in/fck/editor/filemanager/connectors/perl/upload.cgi

http://prosporous.googlecode.com/
Perl | 118 lines | 60 code | 18 blank | 40 comment | 16 complexity | a321c8cd88accb532d845a229d137bd9 MD5 | raw file
  1#!/usr/bin/env perl
  2
  3#####
  4#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
  5#  Copyright (C) 2003-2007 Frederico Caldeira Knabben
  6#
  7#  == BEGIN LICENSE ==
  8#
  9#  Licensed under the terms of any of the following licenses at your
 10#  choice:
 11#
 12#   - GNU General Public License Version 2 or later (the "GPL")
 13#     http://www.gnu.org/licenses/gpl.html
 14#
 15#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 16#     http://www.gnu.org/licenses/lgpl.html
 17#
 18#   - Mozilla Public License Version 1.1 or later (the "MPL")
 19#     http://www.mozilla.org/MPL/MPL-1.1.html
 20#
 21#  == END LICENSE ==
 22#
 23#  This is the File Manager Connector for Perl.
 24#####
 25
 26##
 27# ATTENTION: To enable this connector, look for the "SECURITY" comment in this file.
 28##
 29
 30## START: Hack for Windows (Not important to understand the editor code... Perl specific).
 31if(Windows_check()) {
 32	chdir(GetScriptPath($0));
 33}
 34
 35sub Windows_check
 36{
 37	# IIS,PWS(NT/95)
 38	$www_server_os = $^O;
 39	# Win98 & NT(SP4)
 40	if($www_server_os eq "") { $www_server_os= $ENV{'OS'}; }
 41	# AnHTTPd/Omni/IIS
 42	if($ENV{'SERVER_SOFTWARE'} =~ /AnWeb|Omni|IIS\//i) { $www_server_os= 'win'; }
 43	# Win Apache
 44	if($ENV{'WINDIR'} ne "") { $www_server_os= 'win'; }
 45	if($www_server_os=~ /win/i) { return(1); }
 46	return(0);
 47}
 48
 49sub GetScriptPath {
 50	local($path) = @_;
 51	if($path =~ /[\:\/\\]/) { $path =~ s/(.*?)[\/\\][^\/\\]+$/$1/; } else { $path = '.'; }
 52	$path;
 53}
 54## END: Hack for IIS
 55
 56require 'util.pl';
 57require 'io.pl';
 58require 'basexml.pl';
 59require 'commands.pl';
 60require 'upload_fck.pl';
 61
 62##
 63# SECURITY: REMOVE/COMMENT THE FOLLOWING LINE TO ENABLE THIS CONNECTOR.
 64##
 65	&SendUploadResults(1, '', '', 'This connector is disabled. Please check the "editor/filemanager/connectors/perl/upload.cgi" file' ) ;
 66
 67	&read_input();
 68
 69	if($FORM{'ServerPath'} ne "") {
 70		$GLOBALS{'UserFilesPath'} = $FORM{'ServerPath'};
 71		if(!($GLOBALS{'UserFilesPath'} =~ /\/$/)) {
 72			$GLOBALS{'UserFilesPath'} .= '/' ;
 73		}
 74	} else {
 75		$GLOBALS{'UserFilesPath'} = '/userfiles/';
 76	}
 77
 78	# Map the "UserFiles" path to a local directory.
 79	$rootpath = &GetRootPath();
 80	$GLOBALS{'UserFilesDirectory'} = $rootpath . $GLOBALS{'UserFilesPath'};
 81
 82	&DoResponse();
 83
 84sub DoResponse
 85{
 86	# Get the main request information.
 87	$sCommand		= 'FileUpload'; #$FORM{'Command'};
 88	$sResourceType	= $FORM{'Type'};
 89	$sCurrentFolder	= $FORM{'CurrentFolder'};
 90
 91	if ($sResourceType eq '') {
 92		$sResourceType = 'File' ;
 93	}
 94	if ($sCurrentFolder eq '') {
 95		$sCurrentFolder = '/' ;
 96	}
 97
 98	# Check the current folder syntax (must begin and start with a slash).
 99	if(!($sCurrentFolder =~ /\/$/)) {
100		$sCurrentFolder .= '/';
101	}
102	if(!($sCurrentFolder =~ /^\//)) {
103		$sCurrentFolder = '/' . $sCurrentFolder;
104	}
105
106	# Check for invalid folder paths (..)
107	if ( $sCurrentFolder =~ /\.\./ ) {
108		SendError( 102, "" ) ;
109	}
110
111	# File Upload doesn't have to Return XML, so it must be intercepted before anything.
112	if($sCommand eq 'FileUpload') {
113		FileUpload($sResourceType,$sCurrentFolder);
114		return ;
115	}
116
117}
118