module Spectre::FTP

Public Class Methods

ftp(name, config={}) click to toggle source
# File lib/spectre/ftp.rb, line 130
def ftp name, config={}, &block
  raise "FTP connection '#{name}' not configured" unless @@cfg.key?(name) or config.count > 0
  cfg = @@cfg[name] || {}

  host = config[:host] || cfg['host'] || name
  username = config[:username] || cfg['username']
  password = config[:password] || cfg['password']

  opts = {}
  opts[:ssl] = config[:ssl]
  opts[:port] = config[:port] || cfg['port'] || 21

  @@logger.info "Connecting to #{host} with user #{username}"

  ftp_conn = FTPConnection.new(host, username, password, opts, @@logger)

  begin
    ftp_conn.instance_eval &block
  ensure
    ftp_conn.close
  end
end
sftp(name, config={}) click to toggle source
# File lib/spectre/ftp.rb, line 153
def sftp name, config={}, &block
  raise "FTP connection '#{name}' not configured" unless @@cfg.key?(name) or config.count > 0

  cfg = @@cfg[name] || {}

  host = config[:host] || cfg['host'] || name
  username = config[:username] || cfg['username']
  password = config[:password] || cfg['password']

  opts = {}
  opts[:password] = password
  opts[:port] = config[:port] || cfg['port'] || 22
  opts[:keys] = [cfg['key']] if cfg.key? 'key'
  opts[:passphrase] = cfg['passphrase'] if cfg.key? 'passphrase'

  opts[:auth_methods] = []
  opts[:auth_methods].push 'publickey' if opts[:keys]
  opts[:auth_methods].push 'password' if opts[:password]

  sftp_con = SFTPConnection.new(host, username, opts, @@logger)

  begin
    sftp_con.instance_eval &block
  ensure
    sftp_con.close
  end
end