Class: Roebe::TestOpenssl

Inherits:
Base show all
Defined in:
lib/roebe/classes/test_openssl.rb

Overview

Roebe::TestOpenssl

Constant Summary collapse

OPENSSL_DIR =
#

OPENSSL_DIR

This constant will typically, at the least on a Linux system, point to a directory such as “/etc/ssl”.

#
OpenSSL::X509::DEFAULT_CERT_AREA
SUCCESS_IMAGE =
#

SUCCESS_IMAGE

#
''
FAILURE_IMAGE =
#

FAILURE_IMAGE

#
''
URI_TO_RUBYGEMS =
#

URI_TO_RUBYGEMS

#
URI('https://rubygems.or')

Constants inherited from Base

Base::COLOURS, Base::HOME_DIRECTORY_OF_USER_X, Base::N, Base::NAMESPACE

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#actions, #append_this_onto_that_file, #append_what_into, #be_silent, #be_verbose?, #beautiful_url, #burlywood, #call_next, #chdir, #cheerful_guy, #cliner, #complex_esystem, #convert_global_env, #copy_directory, #copy_file, #cornflowerblue, #create_directory, #crimson, #current_month?, #current_time?, #current_year?, #cyan, #darkcyan, #darkgreen, #darkkhaki, #darkslateblue, #deeppink, #delete_symlink, #do_not_use_the_base_colours, #do_use_the_base_colours, #e, #ecomment, #editor_to_use?, #efancy, #eimp, #emphasis, #ensure_main_encoding, #ensure_utf_encoding, #eparse, #erev, #esteelblue, #etomato, #ewarn, #exit_program, #firebrick, #get_current_day, #get_current_month, #get_files_and_directories, #get_files_from, #get_german_name_for_this_weekday, #gold, #green, #grey, #hh_mm_ss, #hh_mm_ss_day_month_year, #home_dir?, #home_directory_of_user_x?, #infer_the_namespace, #internal_hash?, #is_a_directory?, #is_a_file?, #is_a_jpg_file?, #is_an_image_file?, #is_archive?, #is_audio_file?, #is_in_studium_dir?, #is_multimedia_file?, #is_on_roebe?, #is_on_windows?, #is_studium_available?, #is_symlink?, #is_this_a_ruby_file?, #is_video_file?, #iso_encoding?, #le, #left_colour, #lightblue, #lightgreen, #lightseagreen, #lightsteelblue, #lime, #limegreen, #localhost_to_data, #log_directory?, #main_encoding?, #mediumorchid, #mediumpurple, #mediumseagreen, #mediumslateblue, #mediumspringgreen, #mediumturquoise, #mkdir_p, #mv, #n_days_in_this_month, #n_pages_in_this_pdf_file?, #namespace?, #no_file_exists_at, #ogrey, #olive, #olivedrab, #open_in_browser, #opne, #opnesystem, #opnn, #orange, #orchid, #orev, #palegoldenrod, #palevioletred, #pink, #powderblue, #programs_dir?, #project_base_dir?, #random_html_colour, #rds, #read_file_in_iso_encoding, #read_file_via_the_default_encoding, #read_lines_via_iso_encoding, #readlines_with_main_encoding, #red, #register_sigint, #remove, #remove_directory, #remove_file, #rename_kde_konsole_tab, #replace_localhost_with_data, #report_pwd, #require_rescue, #reset_the_internal_hash, #return_all_directories_from_this_directory, #return_all_files_from_this_directory, #return_current_directory, #return_dd_mm_yyyy, #return_file_or_directory_of, #return_files_from_pwd, #return_last_part_of_the_current_directory, #return_utc, #rev, #right_arrow?, #right_colour, #roebe_log_directory?, #rosybrown, #royalblue, #ruby_base_directory?, #run_in_background, #run_rcfiles_then_run_ata_via_qdbus, #sandybrown, #sdir, #seagreen, #set_be_verbose, #set_xorg_buffer, #sfancy, #sfile, #show_help, #silent_redirection?, #simp, #simple_esystem, #skyblue, #slateblue, #slategray, #springgreen, #steelblue, #string_italic, #swarn, #symlink, #teal, #temp_dir?, #to_camelcase, #to_counted_hash, #tomato, #touch, #try_to_require_the_beautiful_url_gem, #try_to_require_the_html_template, #try_to_require_the_open_gem, #try_to_require_the_program_information_gem, #try_to_require_the_xorg_buffer, #use_colours?, #verbose_truth, #weekday?, #word_wrap, #write_what_into, #yellow

Methods included from Base::CommandlineArguments

#append_onto_the_commandline_arguments, #clear_commandline_arguments, #commandline_arguments?, #commandline_arguments_as_string?, #commandline_arguments_without_leading_hyphens?, #first_argument?, #first_argument_without_leading_hyphens?, #has_an_argument_been_passed?, #remove_hyphened_arguments_from_the_commandline_arguments, #return_commandline_arguments_with_leading_hyphens, #second_argument?, #set_commandline_arguments

Constructor Details

#initialize(commandline_arguments = ARGV, run_already = true) ⇒ TestOpenssl

#

initialize

#


64
65
66
67
68
69
70
71
72
73
# File 'lib/roebe/classes/test_openssl.rb', line 64

def initialize(
    commandline_arguments = ARGV,
    run_already           = true
  )
  reset
  set_commandline_arguments(
    commandline_arguments
  )
  run if run_already
end

Class Method Details

.[](i = '') ⇒ Object

#

Roebe::TestOpenssl[]

#


177
178
179
# File 'lib/roebe/classes/test_openssl.rb', line 177

def self.[](i = '')
  new(i)
end

Instance Method Details

#check_whether_bundler_can_connect_to_rubygems_orgObject

#

check_whether_bundler_can_connect_to_rubygems_org

#


156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# File 'lib/roebe/classes/test_openssl.rb', line 156

def check_whether_bundler_can_connect_to_rubygems_org
  host = 'rubygems.org'
  begin
    _ = Bundler::URI(URI_TO_RUBYGEMS.to_s)
    Bundler::Fetcher.new(Bundler::Source::Rubygems::Remote.new(
      _
    )).send(:connection).request(_)
    bundler_status = "success ✅"
  rescue => error
    bundler_status = "#{swarn('failed')}\n  "\
                     "#{mediumpurple('  Reason was: ')}"\
                     "#{swarn(error_reason(error))})"
  end
  e "  #{mediumpurple('Bundler connection to')} #{sfancy(host)}: "\
    "#{bundler_status}"
  e
end

#error_reason(i) ⇒ Object

#

error_reason

#


140
141
142
143
144
145
146
147
148
149
150
151
# File 'lib/roebe/classes/test_openssl.rb', line 140

def error_reason(i)
  case i.message
  when /certificate verify failed/
    'certificate verification'
  when /read server hello A/
    'SSL/TLS protocol version mismatch'
  when /tlsv1 alert protocol version/
    'requested TLS version is too old'
  else
    i.message
  end
end

#resetObject

#

reset (reset tag)

#


78
79
80
# File 'lib/roebe/classes/test_openssl.rb', line 78

def reset
  super()
end

#runObject

#

run (run tag)

#


104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/roebe/classes/test_openssl.rb', line 104

def run
  e rev+mediumpurple('This class will try to "')+
    lightgreen('test')+
    mediumpurple('" openssl on the given computer system next.')
  try_to_require_openssl
  ruby_version = RUBY_VERSION.dup
  ruby_version << "p#{RUBY_PATCHLEVEL}" if defined?(RUBY_PATCHLEVEL)
  ruby_version << " (#{RUBY_RELEASE_DATE} revision #{RUBY_REVISION})"
  ruby_version << " [#{RUBY_PLATFORM}]"
  e
  e mediumpurple("The Ruby and OpenSSL environment on "\
    "the current computer system is:")
  e
  e "  #{left_colour('Ruby:')}           #{right_colour(ruby_version)}" 
  if defined?(Gem::VERSION)
    e "  #{left_colour('RubyGems:')}       #{right_colour(Gem::VERSION)}"
  end
  if defined?(Bundler::VERSION)
    e "  #{left_colour('Bundler:')}        #{right_colour(Bundler::VERSION)}"
  end
  e "  #{left_colour('Compiled with:')}  #{right_colour(OpenSSL::OPENSSL_VERSION)}"
  e "  #{left_colour('Loaded version:')} #{right_colour(OpenSSL::OPENSSL_LIBRARY_VERSION)}"
  e "  #{left_colour('SSL_CERT_FILE:')}  #{right_colour(OpenSSL::X509::DEFAULT_CERT_FILE)}"
  e "  #{left_colour('SSL_CERT_DIR:')}   #{right_colour(OpenSSL::X509::DEFAULT_CERT_DIR)}"
  e
  check_whether_bundler_can_connect_to_rubygems_org
  e 'Next we will show the output of: openssl version -a'
  ewarn('This has not yet been fully integrated into this class, though.')
  e
  esystem 'openssl version -a'
  e
end

#try_to_require_opensslObject

#

try_to_require_openssl

#


85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/roebe/classes/test_openssl.rb', line 85

def try_to_require_openssl
  begin
    require 'openssl'
  rescue LoadError => exception
    pp exception
    msg = slateblue(
            "Your version of ruby does not have proper support for OpenSSL.\n"+
            "Thus, connecting to hosts requiring openssl-support will "\
            "not work.\n"+
            "You may have to recompile or reinstall ruby with OpenSSL "\
            "support, then try again.\n"
          )
    abort msg
  end
end