*Again*: One of the *invaluable +advices+ from +Rony Flatscher+ * .... Thanks a lot, Rony, also here in Vienna, Austria :-) :-) :-)
Kind regards to all ooRexx, BSF4ooRexx, as well as *classic Rexx* and *NetRexx* Lovers. Thomas Schneider, Vienna, Austria. ============================================================================0 Am 23.09.2016 um 13:17 schrieb oorexx-users-requ...@lists.sourceforge.net: > Send Oorexx-users mailing list submissions to > oorexx-users@lists.sourceforge.net > > To subscribe or unsubscribe via the World Wide Web, visit > https://lists.sourceforge.net/lists/listinfo/oorexx-users > or, via email, send a message with subject or body 'help' to > oorexx-users-requ...@lists.sourceforge.net > > You can reach the person managing the list at > oorexx-users-ow...@lists.sourceforge.net > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of Oorexx-users digest..." > > > Today's Topics: > > 1. RxFtp Class Library (pr gramly) > 2. Re: RxFtp Class Library (Rony G. Flatscher) > 3. Re: RxFtp Class Library (Rony G. Flatscher) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Thu, 22 Sep 2016 17:00:00 -0500 > From: pr gramly <prgra...@gmail.com> > Subject: [Oorexx-users] RxFtp Class Library > To: Oorexx-users@lists.sourceforge.net > Message-ID: <1474581600.3698.29.ca...@gmail.com> > Content-Type: text/plain; charset="UTF-8" > > Is there something like RxFtp for sftp protocol? > I guess, more broadly, it would be a ooRexx class to use with ssh. > > Regards,? > > Phillip > > > > ------------------------------ > > Message: 2 > Date: Fri, 23 Sep 2016 12:23:02 +0200 > From: "Rony G. Flatscher" <rony.flatsc...@wu.ac.at> > Subject: Re: [Oorexx-users] RxFtp Class Library > To: oorexx-users@lists.sourceforge.net > Message-ID: <d799fd33-cc4d-3f01-6a74-00a9d9281...@wu.ac.at> > Content-Type: text/plain; charset=utf-8 > > Hi Phillip, > > On 23.09.2016 00:00, pr gramly wrote: >> Is there something like RxFtp for sftp protocol? >> I guess, more broadly, it would be a ooRexx class to use with ssh. > AFAIK there is no such ooRexx class in existence or in the works. Whoever > implements such a > functionality for ooRexx needs to implement a security infrastructure (and > keep it up-to-date) to be > used for sftp. > > However, if you use the ooRexx package "BSF4ooRexx", then you can use Java > classes as ooRexx classes > and take advantage of any Java class (which will exploit the Java runtime > deployed Java security > infrastructure on any operating system). > > To get an idea how you can take advantage of BSF4ooRexx take a look at e.g. > the following slides: > <http://wi.wu.ac.at/rgf/wu/lehre/autojava/material/foils/AutoJava-BSF4ooRexx-03-Sockets.pdf>. > These > slides introduce newbies into socket programming using Java classes instead > of the ooRexx classes. > Then, starting with slide 23, an example is given for using ssl (which does > not exist for ooRexx) > via ooRexx (using Java classes as if they were ooRexx classes). > > BSF4ooRexx is actually quite easy and straight forward camouflaging Java > classes as ooRexx classes > and Java objects as ooRexx objects to which you merely send ooRexx messages! > The latest version is > the (stable) beta at: > <https://sourceforge.net/projects/bsf4oorexx/files/beta/20160815/>, read the > "readme" file! > > The introduction to BSF4ooRexx explaining the basic concepts can be found in > the slides > <http://wi.wu.ac.at/rgf/wu/lehre/autojava/material/foils/AutoJava-BSF4ooRexx-01.pdf>. > > There is no need to learn programming in Java in order to use Java classes as > ooRexx classes, you > merely need to be able to read the (online) documentation of the Java APIs, > which is a set of > interconnected HTML-pages. > > If you have questions about BSF4ooRexx then just use the BSF4ooRexx mailing > lists like > <bsf4oorexx-de...@lists.sourceforge.net> or > <bsf4oorexx-supp...@lists.sourceforge.net>. > > ---rony > > P.S.: The latest BSF4ooRexx beta includes .Net support on the Windows > platform, cf. the presentation > of this year's International Rexx symposium organized by > <http://www.rexxla.org>. > > > > > > > > > > ------------------------------ > > Message: 3 > Date: Fri, 23 Sep 2016 13:16:59 +0200 > From: "Rony G. Flatscher" <rony.flatsc...@wu.ac.at> > Subject: Re: [Oorexx-users] RxFtp Class Library > To: oorexx-users@lists.sourceforge.net > Message-ID: <19ec32a7-75bc-cc54-ed90-cc0023a18...@wu.ac.at> > Content-Type: text/plain; charset="windows-1252" > > Hi Phillip, > > oops, forgot to point out that there are quite a few Java solutions that > allow you to use sftp. > Using BSF4ooRexx allows you to use them with pure ooRexx, no need to code in > Java yourself. > > E.g. one solution uses <http://commons.apache.org/proper/commons-vfs/> (can > be used from Java 1.5 > on), so you would have to download that jar-file (jar="Java archive", a zip > container of Java > classes and sometimes with resources) and put its path into the environment > variable named > "CLASSPATH". Once on the CLASSPATH BSF4ooRexx can find all Java classes in > that jar file and use > them as if they were ooRexx classes. [The documentation for the Apache > commons-vfs can be found > here: <http://commons.apache.org/proper/commons-vfs/apidocs/index.html>.] > > The mentioned solution (uploading, downloading, deleting files using sftp) > can be found here: > <http://www.mysamplecode.com/2013/06/sftp-apache-commons-file-download.html>, > so just read that page. > > Here is a transcription from the shown Java code to ooRexx (untested). > > Java-code for uploading a file via sftp: > > // Upload file to remote server using SFTP package com.as400samplecode; > import java.io.File; > import java.io.FileInputStream; import java.util.Properties; import > org.apache.commons.vfs2.FileObject; import > org.apache.commons.vfs2.FileSystemOptions; import > org.apache.commons.vfs2.Selectors; import > org.apache.commons.vfs2.impl.StandardFileSystemManager; import > org.apache.commons.vfs2.provider.sftp.SftpFileSystemConfigBuilder; > public class SendMyFiles { > static Properties props; public static void main(String[] args) { > SendMyFiles sendMyFiles = new > SendMyFiles(); if (args.length < 1) { System.err.println("Usage: java " + > sendMyFiles.getClass().getName()+ " Properties_file File_To_FTP "); > System.exit(1); } String > propertiesFile = args[0].trim(); String fileToFTP = args[1].trim(); > sendMyFiles.startFTP(propertiesFile, fileToFTP); } public boolean > startFTP(String > propertiesFilename, String fileToFTP){ props = new Properties(); > StandardFileSystemManager > manager = new StandardFileSystemManager(); try { props.load(new > FileInputStream("properties/" + > propertiesFilename)); String serverAddress = > props.getProperty("serverAddress").trim(); String > userId = props.getProperty("userId").trim(); String password = > props.getProperty("password").trim(); String remoteDirectory = > props.getProperty("remoteDirectory").trim(); String localDirectory = > props.getProperty("localDirectory").trim(); //check if the file exists > String filepath = > localDirectory + fileToFTP; File file = new File(filepath); if > (!file.exists()) throw new > RuntimeException("Error. Local file not found"); //Initializes the file > manager manager.init(); > //Setup our SFTP configuration FileSystemOptions opts = new > FileSystemOptions(); > SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking( > opts, "no"); > SftpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(opts, true); > SftpFileSystemConfigBuilder.getInstance().setTimeout(opts, 10000); > //Create the SFTP URI using > the host name, userid, password, remote path and file name String > sftpUri = "sftp://" + userId + > ":" + password + "@" + serverAddress + "/" + remoteDirectory + > fileToFTP; // Create local file > object FileObject localFile = > manager.resolveFile(file.getAbsolutePath()); // Create remote file > object FileObject remoteFile = manager.resolveFile(sftpUri, opts); // > Copy local file to sftp > server remoteFile.copyFrom(localFile, Selectors.SELECT_SELF); > System.out.println("File upload > successful"); } catch (Exception ex) { ex.printStackTrace(); return > false; } finally { > manager.close(); } return true; } } > > The ooRexx transcription (untested) could look like this: > > -- Upload file to remote server using SFTP -- "main" method in a Java > class can be used as the > (prolog) Rexx code parse arg propertiesFile fileToFtp > res=startFtp(propertiesFile, > fileToFtp~strip) say "startFtp() returned:" res "(0=.false, > 1=.true=success)" ::routine startFTP > use arg propertiesFilename, fileToFTP props = > .BSF~new("java.util.Properties") manager = > .BSF~new("org.apache.commons.vfs2.impl.StandardFileSystemManager") -- no > need to try and catch, > if there is an error, the Rexx interpreter will abort -- and give the > respective Java exception > information props~load(.bsf~new("java.io.FileInputStream", > "properties/"propertiesFilename)) > serverAddress = props~getProperty("serverAddress" )~strip userID = > props~getProperty("userId" > )~strip password = props~getProperty("password" )~strip remoteDirectory = > props~getProperty("remoteDirectory")~strip localDirectory = > props~getProperty("localDirectory" > )~strip -- check if the file exists filepath = localDirectory || > fileToFTP file = > .bsf~new("java.io.File", filepath) if \file~exists then raise syntax > 90.900 array ("Error. Local > file" pp(filepath) "not found") signal on syntax -- from now on let us > intercept any condition > to close manager and return .false -- Initializes the file manager > manager~init -- Setup our > SFTP configuration opts = > .bsf~new("org.apache.commons.vfs2.FileSystemOptions") > > SftpFileSystemConfigBuilder=bsf.import("org.apache.commons.vfs2.provider.sftp.SftpFileSystemConfigBuilder") > instance=SftpFileSystemConfigBuilder~getInstance > instance~setStrictHostKeyChecking(opt,"no") > instance~setUserDirIsRoot(opts, .true) instance~setTimeout(opts, 10000) > -- Create the SFTP URI > using the host name, userid, password, remote path and file name -- > String sftpUri = "sftp://" + > userId + ":" + password + "@" + serverAddress + "/" + sftpUri = > "sftp://"userId":"password"@"serverAddress"/"remoteDirectory || > fileToFTP -- Create local file > object localFile = manager~resolveFile(file~getAbsolutePath) -- Create > remote file object > remoteFile = manager~resolveFile(sftpUri, opts) -- Copy local file to > sftp server > Selectors=bsf.import("org.apache.commons.vfs2.Selectors") > remoteFile~copyFrom(localFile, > Selectors~SELECT_SELF) say "File upload successful" manager~close return > .true syntax: > manager~close return .false ::requires BSF.CLS -- load Java support > > One can transcribe the other two Java programs to pure ooRexx as well. > > HTH, > > ---rony > > > > On 23.09.2016 12:23, Rony G. Flatscher wrote: >> Hi Phillip, >> >> On 23.09.2016 00:00, pr gramly wrote: >>> Is there something like RxFtp for sftp protocol? >>> I guess, more broadly, it would be a ooRexx class to use with ssh. >> AFAIK there is no such ooRexx class in existence or in the works. Whoever >> implements such a >> functionality for ooRexx needs to implement a security infrastructure (and >> keep it up-to-date) to be >> used for sftp. >> >> However, if you use the ooRexx package "BSF4ooRexx", then you can use Java >> classes as ooRexx classes >> and take advantage of any Java class (which will exploit the Java runtime >> deployed Java security >> infrastructure on any operating system). >> >> To get an idea how you can take advantage of BSF4ooRexx take a look at e.g. >> the following slides: >> <http://wi.wu.ac.at/rgf/wu/lehre/autojava/material/foils/AutoJava-BSF4ooRexx-03-Sockets.pdf>. >> These >> slides introduce newbies into socket programming using Java classes instead >> of the ooRexx classes. >> Then, starting with slide 23, an example is given for using ssl (which does >> not exist for ooRexx) >> via ooRexx (using Java classes as if they were ooRexx classes). >> >> BSF4ooRexx is actually quite easy and straight forward camouflaging Java >> classes as ooRexx classes >> and Java objects as ooRexx objects to which you merely send ooRexx messages! >> The latest version is >> the (stable) beta at: >> <https://sourceforge.net/projects/bsf4oorexx/files/beta/20160815/>, read the >> "readme" file! >> >> The introduction to BSF4ooRexx explaining the basic concepts can be found in >> the slides >> <http://wi.wu.ac.at/rgf/wu/lehre/autojava/material/foils/AutoJava-BSF4ooRexx-01.pdf>. >> >> There is no need to learn programming in Java in order to use Java classes >> as ooRexx classes, you >> merely need to be able to read the (online) documentation of the Java APIs, >> which is a set of >> interconnected HTML-pages. >> >> If you have questions about BSF4ooRexx then just use the BSF4ooRexx mailing >> lists like >> <bsf4oorexx-de...@lists.sourceforge.net> or >> <bsf4oorexx-supp...@lists.sourceforge.net>. >> >> ---rony >> >> P.S.: The latest BSF4ooRexx beta includes .Net support on the Windows >> platform, cf. the presentation >> of this year's International Rexx symposium organized by >> <http://www.rexxla.org>. >> > -------------- next part -------------- > An HTML attachment was scrubbed... > > ------------------------------ > > ------------------------------------------------------------------------------ > > > ------------------------------ > > _______________________________________________ > Oorexx-users mailing list > Oorexx-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/oorexx-users > > > End of Oorexx-users Digest, Vol 68, Issue 7 > ******************************************* ------------------------------------------------------------------------------ _______________________________________________ Oorexx-users mailing list Oorexx-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/oorexx-users