-
-
Save paulsena/10120453 to your computer and use it in GitHub Desktop.
| var Sftp = Class.create(); | |
| Sftp.prototype = { | |
| initialize: function() { | |
| gs.print("Setting up SSH client."); | |
| this.dataSourceID = ''; | |
| this.hostname = ''; | |
| this.port = 22; | |
| this.username = ''; | |
| this.password = ''; | |
| this.path = ''; | |
| this.filename = ''; | |
| this.contentType = 'text/csv'; | |
| }, | |
| getFile: function() { | |
| //setup SSH client | |
| var ssh = Packages.com.sshtools.j2ssh.SshClient(); | |
| var ignore = Packages.com.sshtools.j2ssh.transport.IgnoreHostKeyVerification(); //ignore the known_hosts file | |
| //auth info | |
| gs.print("Setting up auth."); | |
| var pwd = Packages.com.sshtools.j2ssh.authentication.PasswordAuthenticationClient(); | |
| pwd.setUsername(this.username); | |
| pwd.setPassword(this.password); | |
| //ssh properties | |
| var properties = Packages.com.sshtools.j2ssh.configuration.SshConnectionProperties(); | |
| properties.setHost(this.hostname); | |
| properties.setPort(this.port); | |
| //set up output stream | |
| gs.print("Setting up output stream."); | |
| var output = Packages.java.io.ByteArrayOutputStream(); | |
| //set up the attachment | |
| gs.print("Setting up attachment."); | |
| var attachment = Packages.com.glide.ui.SysAttachment(); | |
| attachment.setTableName('sys_data_source'); //table name of the record this is being attached to | |
| attachment.setTableSysID(this.dataSourceID); //sys_id of the data source record this is being attached to | |
| attachment.setFileName(this.filename); //the name of the file as it should appear after it's uploaded | |
| attachment.setContentType(this.contentType); | |
| //connect out to the SSH server | |
| gs.print("Connecting to SSH server."); | |
| ssh.connect(properties, ignore); | |
| var result = ssh.authenticate(pwd); | |
| gs.print("Connect code? " + result); | |
| // Evaluate the result | |
| if (result == 4) { //The connection is open and authenticated | |
| //get the file via SCP | |
| gs.print("Opening SftpClient."); | |
| var sftp = ssh.openSftpClient(); | |
| gs.print("Changing directory."); | |
| sftp.cd(this.path); | |
| gs.print("Current directory: " + sftp.pwd()); | |
| gs.print("Current contents of this directory:"); | |
| var files = sftp.ls(); | |
| for(var i=0; i<files.size(); i++) { | |
| file = files.get(i); | |
| gs.print(file.getFilename()); | |
| } | |
| gs.print("Trying to download file."); | |
| try { | |
| sftp.get(this.filename, output); | |
| //delete the existing attachments | |
| gs.print("Deleting existing attachments."); | |
| var gr = new GlideRecord('sys_data_source'); | |
| gr.addQuery('sys_id', this.dataSourceID); | |
| gr.query(); | |
| if (gr.next()) { | |
| attachment.deleteAll(gr); | |
| } | |
| //set up input stream | |
| gs.print("Setting up input stream."); | |
| var input = Packages.java.io.ByteArrayInputStream(output.toByteArray()); | |
| //save the new attachment | |
| gs.print("Saving new attachment."); | |
| attachment.setInputStream(input); | |
| attachment.write(); | |
| } catch (e) { | |
| gs.print("File download failed. Disconnecting."); | |
| ssh.disconnect(); | |
| return false; | |
| } | |
| // gs.print("File downloaded."); | |
| // return; //returning here- if we can't even make it to this line, the attachment stuff is irrelevant | |
| //close the connection | |
| gs.print("Disconnecting."); | |
| ssh.disconnect(); | |
| } else { | |
| gs.print("Could not connect to SSH server."); | |
| return false; | |
| } | |
| return true; | |
| } | |
| }; |
How can we send files to FTP server instead? Without using midservers or plugins. Is there a posibility to integrate an external library in Snow to achieve this? Thanks
How can we send files to FTP server instead? Without using midservers or plugins. Is there a posibility to integrate an external library in Snow to achieve this? Thanks
Have you tried the sftp.put() command? I assume this should work when you provide a file name and a attachment content stream
How can we send files to FTP server instead? Without using midservers or plugins. Is there a posibility to integrate an external library in Snow to achieve this? Thanks
Have you tried the sftp.put() command? I assume this should work when you provide a file name and a attachment content stream
It shows the following error:
*** Script: Setting up SSH client.
*** Script: undefined
Can we retrieve the CSV data from SFTP via MID Server??
Pls let me know if that's possible!..