Sha256: 907c2477002c39d546ab79fe56a358c6109ec0fb193f21770cc6103993850b9b

Contents?: true

Size: 1.7 KB

Versions: 5

Compression:

Stored size: 1.7 KB

Contents

# frozen_string_literal: true

# Case->DSL#
# * send
# * tempfile
# * tempdir
# * remote_tempdir
# * remote_tempfile
module DSL
  def send(args = {})
    return if skip?

    return unless args[:copy_to]

    host = args[:copy_to].to_s
    return unless @conn_status[host].nil?

    ip = get((host + "_ip").to_sym)
    username = get((host + "_username").to_sym).to_s
    password = get((host + "_password").to_sym).to_s
    port = get((host + "_port").to_sym).to_i
    port = 22 if port.zero?

    filename = "#{@report.filename}.#{@report.format}"
    filename = "#{@report.filename}.txt" if @report.format == :colored_text
    localfilepath = File.join(@report.output_dir, filename)
    filename = args[:prefix].to_s + filename if args[:prefix]

    remotefilepath = if args[:remote_dir]
      File.join(args[:remote_dir], filename)
    else
      File.join(".", filename)
    end

    # Upload a file or directory to the remote host
    begin
      Net::SFTP.start(ip, username, password: password, port: port) do |sftp|
        sftp.upload!(localfilepath, remotefilepath)
      end
      verboseln("=> [ OK  ] #{(get(:tt_members)[0, 15]).ljust(16)} : #{remotefilepath}")
    rescue
      verboseln("=> [ERROR] #{(get(:tt_members)[0, 15]).ljust(16)} : scp #{localfilepath} => #{remotefilepath}")
    end
  end

  def tempfile(input = nil)
    return @action[:tempfile] if input.nil?

    name = input
    name = "teuton.tmp" if input == :default

    @action[:tempfile] = File.join(@tmpdir, name)
    @action[:remote_tempfile] = File.join(@remote_tmpdir, name)

    @action[:tempfile]
  end

  def tempdir
    @tmpdir
  end

  def remote_tempfile
    @action[:remote_tempfile]
  end

  def remote_tempdir
    @remote_tmpdir
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
teuton-2.3.11 lib/teuton/case_manager/case/dsl/send.rb
teuton-2.3.10 lib/teuton/case_manager/case/dsl/send.rb
teuton-2.3.9 lib/teuton/case_manager/case/dsl/send.rb
teuton-2.3.8 lib/teuton/case_manager/case/dsl/send.rb
teuton-2.3.7 lib/teuton/case_manager/case/dsl/send.rb