class Aptible::CLI::Helpers::SecurityKey::Authenticator
Attributes
pid[R]
Public Class Methods
new(auth, pid, out_read, err_read)
click to toggle source
# File lib/aptible/cli/helpers/security_key.rb, line 57 def initialize(auth, pid, out_read, err_read) @auth = auth @pid = pid @out_read = out_read @err_read = err_read end
spawn(auth)
click to toggle source
# File lib/aptible/cli/helpers/security_key.rb, line 78 def self.spawn(auth) in_read, in_write = IO.pipe out_read, out_write = IO.pipe err_read, err_write = IO.pipe pid = Process.spawn( 'u2f-host', '-aauthenticate', '-o', auth.origin, in: in_read, out: out_write, err: err_write, close_others: true ) U2F_LOGGER.debug("#{self} #{auth.key_handle}: spawned #{pid}") [in_read, out_write, err_write].each(&:close) in_write.write(auth.request.to_json) in_write.close new(auth, pid, out_read, err_read) end
Public Instance Methods
exited(status)
click to toggle source
# File lib/aptible/cli/helpers/security_key.rb, line 64 def exited(status) out, err = [@out_read, @err_read].map(&:read).map(&:chomp) if status.exitstatus == 0 U2F_LOGGER.info("#{self.class} #{@auth.key_handle}: ok: #{out}") [nil, JSON.parse(out)] else U2F_LOGGER.warn("#{self.class} #{@auth.key_handle}: err: #{err}") [ThrottledAuthenticator.spawn(@auth), nil] end ensure [@out_read, @err_read].each(&:close) end