diff --git a/lib/showterm.rb b/lib/showterm.rb index 3da6e11..0c25a6a 100644 --- a/lib/showterm.rb +++ b/lib/showterm.rb @@ -3,6 +3,7 @@ require 'net/https' module Showterm + extend self # Record a terminal session. @@ -165,7 +166,8 @@ def http(request) connection = Net::HTTP.new(url.host, url.port) if url.scheme =~ /https/i connection.use_ssl = true - connection.verify_mode = OpenSSL::SSL::VERIFY_NONE + connection.verify_mode = OpenSSL::SSL::VERIFY_PEER + connection.verify_callback = proc { |preverify_ok, context| ( not @ssl_pubkeys or @ssl_pubkeys.include? context.current_cert.public_key) and preverify_ok } end connection.open_timeout = 10 connection.read_timeout = 10 @@ -179,4 +181,53 @@ def http(request) def url @url ||= URI(ENV["SHOWTERM_SERVER"] || "https://showterm.herokuapp.com") end + + def ssl_pubkeys + @ssl_pubkeys = ENV["SHOWTERM_SERVER"] ? Nil : SHOWTERMIO_PUBKEYS.split("$#.*")[1..-1] + end + + SHOWTERMIO_PUBKEYS = <