~ubuntu-branches/ubuntu/natty/moin/natty-updates

« back to all changes in this revision

Viewing changes to MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/cfm/cf_io.cfm

  • Committer: Bazaar Package Importer
  • Author(s): Jonas Smedegaard
  • Date: 2008-06-22 21:17:13 UTC
  • mto: This revision was merged to the branch mainline in revision 18.
  • Revision ID: james.westby@ubuntu.com-20080622211713-inlv5k4eifxckelr
ImportĀ upstreamĀ versionĀ 1.7.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<cfsetting enablecfoutputonly="Yes">
2
 
<!---
3
 
 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
4
 
 * Copyright (C) 2003-2010 Frederico Caldeira Knabben
5
 
 *
6
 
 * == BEGIN LICENSE ==
7
 
 *
8
 
 * Licensed under the terms of any of the following licenses at your
9
 
 * choice:
10
 
 *
11
 
 *  - GNU General Public License Version 2 or later (the "GPL")
12
 
 *    http://www.gnu.org/licenses/gpl.html
13
 
 *
14
 
 *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
15
 
 *    http://www.gnu.org/licenses/lgpl.html
16
 
 *
17
 
 *  - Mozilla Public License Version 1.1 or later (the "MPL")
18
 
 *    http://www.mozilla.org/MPL/MPL-1.1.html
19
 
 *
20
 
 * == END LICENSE ==
21
 
 *
22
 
 * This file include IO specific functions used by the ColdFusion Connector (MX 6.0 and above).
23
 
 *
24
 
--->
25
 
 
26
 
<cffunction name="CombinePaths" returntype="String" output="true">
27
 
        <cfargument name="sBasePath" required="true">
28
 
        <cfargument name="sFolder" required="true">
29
 
        <cfset sBasePath = RemoveFromEnd( sBasePath, "/" )>
30
 
        <cfset sBasePath = RemoveFromEnd( sBasePath, "\" )>
31
 
        <cfreturn sBasePath & "/" & RemoveFromStart( ARGUMENTS.sFolder, '/' )>
32
 
</cffunction>
33
 
 
34
 
<cffunction name="GetResourceTypePath" returntype="String" output="false">
35
 
        <cfargument name="resourceType" required="true">
36
 
        <cfargument name="sCommand" required="true">
37
 
 
38
 
        <cfif ARGUMENTS.sCommand eq "QuickUpload">
39
 
                <cfreturn REQUEST.Config['QuickUploadPath'][ARGUMENTS.resourceType]>
40
 
        <cfelse>
41
 
                <cfreturn REQUEST.Config['FileTypesPath'][ARGUMENTS.resourceType]>
42
 
        </cfif>
43
 
</cffunction>
44
 
 
45
 
<cffunction name="GetResourceTypeDirectory" returntype="String" output="false">
46
 
        <cfargument name="resourceType" required="true">
47
 
        <cfargument name="sCommand" required="true">
48
 
 
49
 
        <cfif ARGUMENTS.sCommand eq "QuickUpload">
50
 
                <cfif isDefined( "REQUEST.Config.QuickUploadAbsolutePath" )
51
 
                        and structkeyexists( REQUEST.Config.QuickUploadAbsolutePath, ARGUMENTS.resourceType )
52
 
                        and Len( REQUEST.Config.QuickUploadAbsolutePath[ARGUMENTS.resourceType] )>
53
 
                                <cfreturn REQUEST.Config.QuickUploadAbsolutePath[ARGUMENTS.resourceType]>
54
 
                </cfif>
55
 
 
56
 
                <cfreturn expandpath( REQUEST.Config.QuickUploadPath[ARGUMENTS.resourceType] )>
57
 
        <cfelse>
58
 
                <cfif isDefined( "REQUEST.Config.FileTypesAbsolutePath" )
59
 
                        and structkeyexists( REQUEST.Config.FileTypesAbsolutePath, ARGUMENTS.resourceType )
60
 
                        and Len( REQUEST.Config.FileTypesAbsolutePath[ARGUMENTS.resourceType] )>
61
 
                                <cfreturn REQUEST.Config.FileTypesAbsolutePath[ARGUMENTS.resourceType]>
62
 
                </cfif>
63
 
 
64
 
                <cfreturn expandpath( REQUEST.Config.FileTypesPath[ARGUMENTS.resourceType] )>
65
 
        </cfif>
66
 
</cffunction>
67
 
 
68
 
<cffunction name="GetUrlFromPath" returntype="String" output="false">
69
 
        <cfargument name="resourceType" required="true">
70
 
        <cfargument name="folderPath" required="true">
71
 
        <cfargument name="sCommand" required="true">
72
 
 
73
 
        <cfreturn CombinePaths( GetResourceTypePath( ARGUMENTS.resourceType, ARGUMENTS.sCommand ), ARGUMENTS.folderPath )>
74
 
</cffunction>
75
 
 
76
 
<cffunction name="RemoveExtension" output="false" returntype="String">
77
 
        <cfargument name="fileName" required="true">
78
 
        <cfset var pos = find( ".", reverse ( ARGUMENTS.fileName ) )>
79
 
 
80
 
        <cfreturn mid( ARGUMENTS.fileName, 1, Len( ARGUMENTS.fileName ) - pos ) >
81
 
</cffunction>
82
 
 
83
 
<cffunction name="GetExtension" output="false" returntype="String">
84
 
        <cfargument name="fileName" required="true">
85
 
        <cfset var pos = find( ".", reverse ( ARGUMENTS.fileName ) )>
86
 
 
87
 
        <cfif not pos>
88
 
                <cfreturn "">
89
 
        </cfif>
90
 
 
91
 
        <cfreturn mid( ARGUMENTS.fileName, pos, Len( ARGUMENTS.fileName ) - pos ) >
92
 
</cffunction>
93
 
 
94
 
<cffunction name="ServerMapFolder" returntype="String" output="false">
95
 
        <cfargument name="resourceType" required="true">
96
 
        <cfargument name="folderPath" required="true">
97
 
        <cfargument name="sCommand" required="true">
98
 
 
99
 
        <!--- Get the resource type directory. --->
100
 
        <cfset var sResourceTypePath = GetResourceTypeDirectory( ARGUMENTS.resourceType, ARGUMENTS.sCommand ) >
101
 
        <!--- Ensure that the directory exists. --->
102
 
        <cfset var sErrorMsg = CreateServerFolder( sResourceTypePath ) >
103
 
 
104
 
        <cfif sErrorMsg neq ''>
105
 
                <cfset SendError( 1, 'Error creating folder "' & sResourceTypePath & '" (' & sErrorMsg & ')' )>
106
 
        </cfif>
107
 
 
108
 
        <!--- Return the resource type directory combined with the required path. --->
109
 
        <cfreturn CombinePaths( sResourceTypePath , ARGUMENTS.folderPath )>
110
 
</cffunction>
111
 
 
112
 
<cffunction name="GetParentFolder" returntype="string" output="false">
113
 
        <cfargument name="folderPath" required="true">
114
 
 
115
 
        <cfreturn rereplace(ARGUMENTS.folderPath, "[/\\\\][^/\\\\]+[/\\\\]?$", "")>
116
 
</cffunction>
117
 
 
118
 
<cffunction name="CreateServerFolder" returntype="String" output="false">
119
 
        <cfargument name="folderPath">
120
 
 
121
 
        <!--- Ensure the folder path has no double-slashes, or mkdir may fail on certain platforms --->
122
 
        <cfset folderPath = rereplace(ARGUMENTS.folderPath, "//+", "/", "all")>
123
 
 
124
 
        <cfif directoryexists(ARGUMENTS.folderPath) or fileexists(ARGUMENTS.folderPath)>
125
 
                <cfreturn "">
126
 
        <cfelse>
127
 
                <cftry>
128
 
                        <cfdirectory action="create" mode="0755" directory="#ARGUMENTS.folderPath#">
129
 
                <cfcatch type="any">
130
 
                        <cfreturn CFCATCH.Message>
131
 
                </cfcatch>
132
 
                </cftry>
133
 
        </cfif>
134
 
 
135
 
        <cfreturn "">
136
 
</cffunction>
137
 
 
138
 
<cffunction name="IsAllowedExt" returntype="boolean" output="false">
139
 
        <cfargument name="sExtension" required="true">
140
 
        <cfargument name="resourceType" required="true">
141
 
 
142
 
        <cfif isDefined( "REQUEST.Config.AllowedExtensions." & ARGUMENTS.resourceType )
143
 
                        and listLen( REQUEST.Config.AllowedExtensions[ARGUMENTS.resourceType] )
144
 
                        and not listFindNoCase( REQUEST.Config.AllowedExtensions[ARGUMENTS.resourceType], ARGUMENTS.sExtension )>
145
 
                        <cfreturn false>
146
 
        </cfif>
147
 
 
148
 
        <cfif isDefined( "REQUEST.Config.DeniedExtensions." & ARGUMENTS.resourceType )
149
 
                        and listLen( REQUEST.Config.DeniedExtensions[ARGUMENTS.resourceType] )
150
 
                        and listFindNoCase( REQUEST.Config.DeniedExtensions[ARGUMENTS.resourceType], ARGUMENTS.sExtension )>
151
 
                        <cfreturn false>
152
 
        </cfif>
153
 
 
154
 
        <cfreturn true>
155
 
</cffunction>
156
 
 
157
 
<cffunction name="IsAllowedType" returntype="boolean" output="false">
158
 
        <cfargument name="resourceType">
159
 
 
160
 
        <cfif not listFindNoCase( REQUEST.Config.ConfigAllowedTypes, ARGUMENTS.resourceType )>
161
 
                <cfreturn false>
162
 
        </cfif>
163
 
 
164
 
        <cfreturn true>
165
 
</cffunction>
166
 
 
167
 
<cffunction name="IsAllowedCommand" returntype="boolean" output="true">
168
 
        <cfargument name="sCommand" required="true" type="String">
169
 
 
170
 
        <cfif not listFindNoCase( REQUEST.Config.ConfigAllowedCommands, ARGUMENTS.sCommand )>
171
 
                <cfreturn false>
172
 
        </cfif>
173
 
 
174
 
        <cfreturn true>
175
 
</cffunction>
176
 
 
177
 
<cffunction name="GetCurrentFolder" returntype="String" output="true">
178
 
        <cfset var sCurrentFolder = "/">
179
 
 
180
 
        <cfif isDefined( "URL.CurrentFolder" )>
181
 
                <cfset sCurrentFolder = URL.CurrentFolder>
182
 
        </cfif>
183
 
 
184
 
        <!--- Check the current folder syntax (must begin and start with a slash). --->
185
 
        <cfif not refind( "/$", sCurrentFolder)>
186
 
                <cfset sCurrentFolder = sCurrentFolder & "/">
187
 
        </cfif>
188
 
 
189
 
        <cfif not refind( "^/", sCurrentFolder )>
190
 
                <cfset sCurrentFolder = "/" & sCurrentFolder>
191
 
        </cfif>
192
 
 
193
 
        <!--- Ensure the folder path has no double-slashes, or mkdir may fail on certain platforms --->
194
 
        <cfset sCurrentFolder = rereplace( sCurrentFolder, "//+", "/", "all" )>
195
 
 
196
 
        <cfif find( "..", sCurrentFolder) or find( "\", sCurrentFolder) or REFind('(/\.)|(//)|[[:cntrl:]]|([\\:\*\?\"<>])', sCurrentFolder)>
197
 
                <cfif URL.Command eq "FileUpload" or URL.Command eq "QuickUpload">
198
 
                        <cfset SendUploadResults( 102, "", "", "") >
199
 
                <cfelse>
200
 
                        <cfset SendError( 102, "" )>
201
 
                </cfif>
202
 
        </cfif>
203
 
 
204
 
        <cfreturn sCurrentFolder>
205
 
</cffunction>
206
 
 
207
 
<cffunction name="SanitizeFolderName" returntype="String" output="false">
208
 
        <cfargument name="sNewFolderName" required="true">
209
 
 
210
 
        <!--- Do a cleanup of the folder name to avoid possible problems --->
211
 
        <!--- Remove . \ / | : ? * " < > and control characters --->
212
 
        <cfset sNewFolderName = rereplace( sNewFolderName, '\.+|\\+|\/+|\|+|\:+|\?+|\*+|"+|<+|>+|[[:cntrl:]]+', "_", "all" )>
213
 
 
214
 
        <cfreturn sNewFolderName>
215
 
</cffunction>
216
 
 
217
 
<cffunction name="BinaryFileRead" returntype="String" output="true">
218
 
        <cfargument name="fileName" required="true" type="string">
219
 
        <cfargument name="bytes" required="true" type="Numeric">
220
 
 
221
 
        <cfscript>
222
 
        var chunk = "";
223
 
        var fileReaderClass = "";
224
 
        var fileReader = "";
225
 
        var file = "";
226
 
        var done = false;
227
 
        var counter = 0;
228
 
        var byteArray = "";
229
 
 
230
 
        if( not fileExists( ARGUMENTS.fileName ) )
231
 
        {
232
 
                return "" ;
233
 
        }
234
 
 
235
 
        if (REQUEST.CFVersion gte 8)
236
 
        {
237
 
                 file  = FileOpen( ARGUMENTS.fileName, "readbinary" ) ;
238
 
                 byteArray = FileRead( file, 1024 ) ;
239
 
                 chunk = toString( toBinary( toBase64( byteArray ) ) ) ;
240
 
                 FileClose( file ) ;
241
 
        }
242
 
        else
243
 
        {
244
 
                fileReaderClass = createObject("java", "java.io.FileInputStream");
245
 
                fileReader = fileReaderClass.init(fileName);
246
 
 
247
 
                while(not done)
248
 
                {
249
 
                        char = fileReader.read();
250
 
                        counter = counter + 1;
251
 
                        if ( char eq -1 or counter eq ARGUMENTS.bytes)
252
 
                        {
253
 
                                done = true;
254
 
                        }
255
 
                        else
256
 
                        {
257
 
                                chunk = chunk & chr(char) ;
258
 
                        }
259
 
                }
260
 
        }
261
 
        </cfscript>
262
 
 
263
 
        <cfreturn chunk>
264
 
</cffunction>
265
 
 
266
 
<cffunction name="SendUploadResults" returntype="String" output="true">
267
 
        <cfargument name="errorNumber" required="true" type="Numeric">
268
 
        <cfargument name="fileUrl" required="false" type="String" default="">
269
 
        <cfargument name="fileName" required="false" type="String" default="">
270
 
        <cfargument name="customMsg" required="false" type="String" default="">
271
 
 
272
 
        <cfif errorNumber and errorNumber neq 201>
273
 
                <cfset fileUrl = "">
274
 
                <cfset fileName = "">
275
 
        </cfif>
276
 
        <!--- Minified version of the document.domain automatic fix script (#1919).
277
 
        The original script can be found at _dev/domain_fix_template.js --->
278
 
        <cfoutput>
279
 
<script type="text/javascript">
280
 
(function(){var d=document.domain;while (true){try{var A=window.parent.document.domain;break;}catch(e) {};d=d.replace(/.*?(?:\.|$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})();
281
 
window.parent.OnUploadCompleted( #errorNumber#, "#JSStringFormat(fileUrl)#", "#JSStringFormat(fileName)#", "#JSStringFormat(customMsg)#" );
282
 
</script>
283
 
        </cfoutput>
284
 
        <cfabort>
285
 
</cffunction>
286
 
 
287
 
<cffunction name="SanitizeFileName" returntype="String" output="false">
288
 
        <cfargument name="sNewFileName" required="true">
289
 
 
290
 
        <cfif isDefined("REQUEST.Config.ForceSingleExtension") and REQUEST.Config.ForceSingleExtension>
291
 
                <cfset sNewFileName = rereplace( sNewFileName, '\.(?![^.]*$)', "_", "all" )>
292
 
        </cfif>
293
 
 
294
 
        <!--- Do a cleanup of the file name to avoid possible problems --->
295
 
        <!--- Remove \ / | : ? * " < > and control characters --->
296
 
        <cfset sNewFileName = rereplace( sNewFileName, '\\[.]+|\\+|\/+|\|+|\:+|\?+|\*+|"+|<+|>+|[[:cntrl:]]+', "_", "all" )>
297
 
 
298
 
        <cfreturn sNewFileName>
299
 
</cffunction>