I think the original poster was looking for FTPS ... Not SFTP. The Jscape
link in my prior post supports both, while jsch is strictly for SFTP via
SSH.

Jim Rising
Sr. Cold Fusion Developer
ICGLink Inc.
www.icglink.com
 

-----Original Message-----
From: Mark Stanton [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, July 04, 2007 8:35 PM
To: CF-Talk
Subject: Re: FTPS

Here is part of a wrapper we have written for the jsch library. The rest of
the component deals with stuff that is specific to our application.

hth

<cffunction name="init" access="public" output="false"
returntype="SFTPManager">
        <cfargument name="username" required="true" type="string">
        <cfargument name="password" required="true" type="string">
        <cfargument name="hostname" required="true" type="string">
        <cfargument name="port" required="true" type="numeric">
        <cfargument name="basePath" required="true" type="string">
        <cfargument name="dsn" required="true" type="string">

        <!--- Init objects --->
        <cfset variables.JSch = createObject('Java','com.jcraft.jsch.JSch')>
        <cfset variables.userInfo =
createObject('Java','com.jcraft.jsch.UserInfo')>
        <cfset variables.config =
createObject('Java','java.util.Properties').init()>

        <!--- Init variables --->
        <cfset variables.username = arguments.username>
        <cfset variables.password = arguments.password>
        <cfset variables.hostname = arguments.hostname>
        <cfset variables.port = arguments.port>
        <cfset variables.basePath = arguments.basePath>
        <cfset variables.dsn = arguments.dsn>

        <cfreturn this>

</cffunction>

<cffunction name="upload" access="public" output="false"
returntype="boolean">
        <cfargument name="file" required="true" type="string">
        <cfargument name="path" required="true" type="string">

        <cfset var SFTPSession = "">
        <cfset var channel = "">
        <cfset var putPath = "#variables.basePath#/#arguments.path#">
        <cfset var listPath = "#arguments.path#">
        <cfset var listEle = "">
        <cfset var dirList = "">
        <cfset var fileName = "">
        <cfset var i = "">
        <cfset var success = false>
        <cfset var xBasePath = "">
        <cfset var lastInserted = "">
        <cfset var arrayEle = "">
        <cfset var arrayIndex = "">
        <cfset var loopCount = "">
        <cfset var isConnected = "">


        <cfset variables.config.put("StrictHostKeyChecking", "no")>
        <cfset SFTPSession = variables.JSch.getSession(variables.username,
variables.hostname, variables.port)>
        <cfset SFTPSession.setPassword(variables.password)>
        <cfset SFTPSession.setConfig(variables.config)>
        <cfset SFTPSession.setUserInfo(variables.userInfo)>

        <cftry>
                <!--- Connect SSH session --->
                <cfset SFTPSession.connect()>
                <!--- <cfset isConnected = SFTPSession.isConnected()> --->

                <!--- Set up SFTP channel --->
                <cfset channel = SFTPSession.openChannel("sftp")>
                <cfset channel.connect()>

                <!--- Create remote directories... --->
                <cfset xBasePath = variables.basePath>
                <cfset lastInserted = "">
                <cfset arrayEle = arrayNew(1)>
                <cfset arrayIndex = 1>

                <cfloop list="#listPath#" index="listEle" delimiters="/">

                        <cfif lastInserted EQ "">
                                <cfset arrayEle[arrayIndex] = xBasePath &
"/" & listEle>
                                <cfset lastInserted = xBasePath & "/" &
listEle>
                                <cfset arrayIndex = arrayIndex + 1>
                        <cfelse>
                                <cfset arrayEle[arrayIndex] = lastInserted
& "/" & listEle>
                                <cfset lastInserted = lastInserted & "/" &
listEle>
                                <cfset arrayIndex = arrayIndex + 1>
                        </cfif>

                </cfloop>

                <cfloop index="loopCount" from="1" to="3">
                        <cftry>
                                <cfset channel.mkdir(arrayEle[loopCount])>
                                <cfcatch>
                                        <!--- directory exists... --->
                                </cfcatch>
                        </cftry>
                </cfloop>

                <cfset channel.put("#arguments.file#",putPath)>

                <!--- check if uploaded successfully --->
                <cfset dirList = channel.ls(putPath)>
                <cfset fileName = this.extractFileName(arguments.file)>

                <cfloop from="1" to="#arrayLen(dirList)#" index="i">

                        <cfif dirList[i].getFilename() EQ fileName AND
dirList[i].getAttrs().getSize() EQ fileSize(arguments.file)>
                                <cfset success = true>
                                <cfbreak>
                        <cfelse>
                                <cfset success = false>
                        </cfif>

                </cfloop>

                <cfcatch>

                        <!--- Close everything down --->
                        <cfif isDefined('channel')>
                                <cftry>

                                        <cfset channel.exit()>
                                        <cfset channel.disconnect()>

                                        <cfcatch>
                                                <cfset success = false>
                                        </cfcatch>

                                </cftry>
                        </cfif>

                        <cfset SFTPSession.disconnect()>
                        <cfset success = false>

                </cfcatch>

        </cftry>

        <cftry>

                <!--- Close everything down --->
                <cfset channel.exit()>
                <cfset channel.disconnect()>
                <cfset SFTPSession.disconnect()>

                <cfcatch>
                </cfcatch>

        </cftry>

        <cfreturn success>

</cffunction>

On 7/4/07, Jim Rising <[EMAIL PROTECTED]> wrote:
> Jake,
>
> You could probably write a CFC wrapper for this:
>
> http://www.jscape.com/sftp/index.html
>
> That's really all that sftp.cfc is... It's a wrapper for Java Secure
> Channel:
>
> http://www.jcraft.com/jsch/
>
> Jim Rising
> Sr. Cold Fusion Developer
> ICGLink Inc.
> www.icglink.com
>
>
>
>
> -----Original Message-----
> From: Jake Pilgrim [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, July 03, 2007 11:36 AM
> To: CF-Talk
> Subject: FTPS
>
> Does anyone know of a way I can connect to an FTPS (FTP over SSL) 
> server using coldfusion? I have seen the sftp.cfc download out there, 
> but SFTP is a different protocol and this CFC doesn't seem to work.
>
> I would prefer a CFC/custom tag based solution, but I am able to run 
> cfexecute so a command line solution could potentially work.
>
>
>
> 



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Upgrade to Adobe ColdFusion MX7
The most significant release in over 10 years. Upgrade & see new features.
http://www.adobe.com/products/coldfusion?sdid=RVJR

Archive: 
http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:282942
Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4

Reply via email to