razorrisk-cassini-common 0.26.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/CHANGELOG.md +22 -0
 - data/LICENSE +5 -0
 - data/README.md +2 -0
 - data/Rakefile +102 -0
 - data/lib/razor_risk/cassini/applications/microservice.rb +318 -0
 - data/lib/razor_risk/cassini/applications/rest_framework/route_verb_dispatcher.rb +120 -0
 - data/lib/razor_risk/cassini/applications/rest_framework/verb_handler.rb +117 -0
 - data/lib/razor_risk/cassini/applications/route_verb_adaptors/utilities/collection_get_helper.rb +86 -0
 - data/lib/razor_risk/cassini/applications/securable_microservice.rb +164 -0
 - data/lib/razor_risk/cassini/applications/secured_microservice.rb +63 -0
 - data/lib/razor_risk/cassini/applications/unsecured_microservice.rb +77 -0
 - data/lib/razor_risk/cassini/authorisation/header_helpers.rb +271 -0
 - data/lib/razor_risk/cassini/authorisation/security_model_helpers.rb +93 -0
 - data/lib/razor_risk/cassini/authorisation.rb +27 -0
 - data/lib/razor_risk/cassini/cli.rb +19 -0
 - data/lib/razor_risk/cassini/common/version.rb +44 -0
 - data/lib/razor_risk/cassini/common.rb +32 -0
 - data/lib/razor_risk/cassini/constants.rb +68 -0
 - data/lib/razor_risk/cassini/diagnostics/util_functions.rb +248 -0
 - data/lib/razor_risk/cassini/diagnostics/zeroth_include.rb +35 -0
 - data/lib/razor_risk/cassini/extensions/libclimate/common_options.rb +267 -0
 - data/lib/razor_risk/cassini/extensions/libclimate.rb +26 -0
 - data/lib/razor_risk/cassini/header_functions.rb +59 -0
 - data/lib/razor_risk/cassini/main.rb +238 -0
 - data/lib/razor_risk/cassini/mixin/razor_response_validator.rb +176 -0
 - data/lib/razor_risk/cassini/testing/suppress_pantheios_logging.rb +31 -0
 - data/lib/razor_risk/cassini/util/conversion_util.rb +176 -0
 - data/lib/razor_risk/cassini/util/program_execution_util.rb +379 -0
 - data/lib/razor_risk/cassini/util/secrets_util.rb +229 -0
 - data/lib/razor_risk/cassini/util/version_util.rb +88 -0
 - data/lib/razor_risk/sinatra/helpers/check_auth_helper.rb +209 -0
 - data/lib/razor_risk/sinatra/helpers/validate_accept_helper.rb +69 -0
 - data/lib/razor_risk/sinatra/helpers/validate_content_type_helper.rb +74 -0
 - data/lib/razor_risk/sinatra/helpers/validate_query_parameters_helper.rb +198 -0
 - data/test/scratch/cassini/util/convert_XML.rb +54 -0
 - data/test/unit/applications/route_verb_adaptors/utilities/tc_collection_get_helper.rb +236 -0
 - data/test/unit/applications/tc_verb_handler.rb +130 -0
 - data/test/unit/mixin/tc_razor_response_validator.rb +328 -0
 - data/test/unit/sinatra/helpers/tc_validate_query_parameters_helper.rb +134 -0
 - data/test/unit/tc_authorisation_util.rb +265 -0
 - data/test/unit/tc_load_secrets.rb +95 -0
 - data/test/unit/util/tc_conversion_util.rb +393 -0
 - data/test/unit/util/tc_program_execution_util.rb +462 -0
 - metadata +380 -0
 
| 
         @@ -0,0 +1,93 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # encoding: UTF-8
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # ######################################################################## #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # File:         razor_risk/cassini/authorisation/security_model_helpers.rb
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            # Purpose:      Definition of the
         
     | 
| 
      
 7 
     | 
    
         
            +
            #               RazorRisk::Cassini::Authorisation::SecurityModelHelpers
         
     | 
| 
      
 8 
     | 
    
         
            +
            #               module
         
     | 
| 
      
 9 
     | 
    
         
            +
            #
         
     | 
| 
      
 10 
     | 
    
         
            +
            # Created:      16th February 2018
         
     | 
| 
      
 11 
     | 
    
         
            +
            # Updated:      16th February 2018
         
     | 
| 
      
 12 
     | 
    
         
            +
            #
         
     | 
| 
      
 13 
     | 
    
         
            +
            # Author:       Matthew Wilson
         
     | 
| 
      
 14 
     | 
    
         
            +
            #
         
     | 
| 
      
 15 
     | 
    
         
            +
            # Copyright (c) 2018, Razor Risk Technologies Pty Ltd
         
     | 
| 
      
 16 
     | 
    
         
            +
            # All rights reserved.
         
     | 
| 
      
 17 
     | 
    
         
            +
            #
         
     | 
| 
      
 18 
     | 
    
         
            +
            # ######################################################################## #
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            =begin
         
     | 
| 
      
 22 
     | 
    
         
            +
            =end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            require 'pantheios'
         
     | 
| 
      
 25 
     | 
    
         
            +
            require 'xqsr3/quality/parameter_checking'
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            require 'razor_risk/core/diagnostics/logger'
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            module RazorRisk
         
     | 
| 
      
 30 
     | 
    
         
            +
            module Cassini
         
     | 
| 
      
 31 
     | 
    
         
            +
            module Authorisation
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            module SecurityModelHelpers
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                include ::Pantheios
         
     | 
| 
      
 36 
     | 
    
         
            +
                include ::Xqsr3::Quality::ParameterChecking
         
     | 
| 
      
 37 
     | 
    
         
            +
                include ::RazorRisk::Core::Diagnostics::Logger
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                # Options a RazorRequester-compatible options hash containing
         
     | 
| 
      
 40 
     | 
    
         
            +
                # credentials appropriate to the given +authentication_scheme+
         
     | 
| 
      
 41 
     | 
    
         
            +
                def razor_requester_credentials_options authentication_scheme, credentials, **options
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                    check_parameter authentication_scheme, 'authentication_scheme', type: ::Symbol, values: [ :none, :basic, :authorisation_only, :jwt ]
         
     | 
| 
      
 44 
     | 
    
         
            +
                    check_parameter(credentials, 'credentials', type: ::Array) { |value| value.empty? ? 'no credentials specified' : true }
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                    r = {}
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                    credentials = credentials.dup
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                    case authentication_scheme
         
     | 
| 
      
 52 
     | 
    
         
            +
                    when :none
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                        ;
         
     | 
| 
      
 55 
     | 
    
         
            +
                    when :basic
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                        if options[:auth_test_mode]
         
     | 
| 
      
 58 
     | 
    
         
            +
                            log :warning, "YOU ARE IN AUTHORIZATION TEST MODE! NO AUTHENTICATION WILL BE PERFORMED! THIS MUST NOT BE USED IN PRODUCTION!"
         
     | 
| 
      
 59 
     | 
    
         
            +
                            r[:impersonatee] = credentials.shift unless credentials.empty?
         
     | 
| 
      
 60 
     | 
    
         
            +
                        else
         
     | 
| 
      
 61 
     | 
    
         
            +
                            r[:username] = credentials.shift unless credentials.empty?
         
     | 
| 
      
 62 
     | 
    
         
            +
                            r[:password] = credentials.shift unless credentials.empty?
         
     | 
| 
      
 63 
     | 
    
         
            +
                            r[:domain]   = credentials.shift unless credentials.empty?
         
     | 
| 
      
 64 
     | 
    
         
            +
                        end
         
     | 
| 
      
 65 
     | 
    
         
            +
                    when :jwt
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                        if options[:auth_test_mode]
         
     | 
| 
      
 68 
     | 
    
         
            +
                            log :warning, "YOU ARE IN AUTHORIZATION TEST MODE! NO AUTHENTICATION WILL BE PERFORMED! THIS MUST NOT BE USED IN PRODUCTION!"
         
     | 
| 
      
 69 
     | 
    
         
            +
                        end
         
     | 
| 
      
 70 
     | 
    
         
            +
                        r[:session_id] = credentials.shift unless credentials.empty?
         
     | 
| 
      
 71 
     | 
    
         
            +
                        r[:user_id]    = credentials.shift unless credentials.empty?
         
     | 
| 
      
 72 
     | 
    
         
            +
                        r[:user_name]  = credentials.shift unless credentials.empty?
         
     | 
| 
      
 73 
     | 
    
         
            +
                    when :authorisation_only
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                        r[:impersonatee] = credentials.shift unless credentials.empty?
         
     | 
| 
      
 76 
     | 
    
         
            +
                    else
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
                        log :violation, "unexpected authentication_scheme '#{authentication_scheme}' (#{authentication_scheme.class})"
         
     | 
| 
      
 79 
     | 
    
         
            +
                    end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                    r
         
     | 
| 
      
 82 
     | 
    
         
            +
                end
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
            end # module SecurityModelHelpers
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
            end # module Authorisation
         
     | 
| 
      
 87 
     | 
    
         
            +
            end # module Cassini
         
     | 
| 
      
 88 
     | 
    
         
            +
            end # module RazorRisk
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
            # ############################## end of file ############################# #
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # encoding: UTF-8
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # ######################################################################## #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # File:         razor_risk/cassini/authorisation.rb
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            # Purpose:      Cassini Authorisation common file
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            # Created:      26th November 2017
         
     | 
| 
      
 9 
     | 
    
         
            +
            # Updated:      4th March 2018
         
     | 
| 
      
 10 
     | 
    
         
            +
            #
         
     | 
| 
      
 11 
     | 
    
         
            +
            # Author:       Matthew Wilson
         
     | 
| 
      
 12 
     | 
    
         
            +
            #
         
     | 
| 
      
 13 
     | 
    
         
            +
            # Copyright (c) 2017-2018, Razor Risk Technologies Pty Ltd
         
     | 
| 
      
 14 
     | 
    
         
            +
            # All rights reserved.
         
     | 
| 
      
 15 
     | 
    
         
            +
            #
         
     | 
| 
      
 16 
     | 
    
         
            +
            # ######################################################################## #
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            # ##########################################################################
         
     | 
| 
      
 20 
     | 
    
         
            +
            # requires
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            require 'razor_risk/cassini/authorisation/header_helpers'
         
     | 
| 
      
 23 
     | 
    
         
            +
            require 'razor_risk/cassini/authorisation/security_model_helpers'
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            # ############################## end of file ############################# #
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            module RazorRisk
         
     | 
| 
      
 3 
     | 
    
         
            +
            module Cassini
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            module CLI
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                def self.Copyright(year)
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                    "Copyright Razor Risk Technologies Pty Ltd (c) #{year}"
         
     | 
| 
      
 10 
     | 
    
         
            +
                end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            end # module CLI
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            end # module Cassini
         
     | 
| 
      
 15 
     | 
    
         
            +
            end # module RazorRisk
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            # ############################## end of file ############################# #
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,44 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # encoding: UTF-8
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # ######################################################################## #
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            #  Version for RazorRisk.Cassini.Common library
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            #  Copyright (c) 2017 Razor Risk Technologies Pty Limited. All rights reserved.
         
     | 
| 
      
 8 
     | 
    
         
            +
            #
         
     | 
| 
      
 9 
     | 
    
         
            +
            # ######################################################################## #
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            module RazorRisk
         
     | 
| 
      
 12 
     | 
    
         
            +
            module Cassini
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            module Common
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                # Current version of the RazorRisk.Cassini.Common library
         
     | 
| 
      
 17 
     | 
    
         
            +
                VERSION             =   '0.26.24'
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                private
         
     | 
| 
      
 20 
     | 
    
         
            +
                VERSION_PARTS_      =   VERSION.split(/[.]/).collect { |n| n.to_i } # :nodoc:
         
     | 
| 
      
 21 
     | 
    
         
            +
                public
         
     | 
| 
      
 22 
     | 
    
         
            +
                # Major version of the RazorRisk.Cassini.Common library
         
     | 
| 
      
 23 
     | 
    
         
            +
                VERSION_MAJOR       =   VERSION_PARTS_[0]       # :nodoc:
         
     | 
| 
      
 24 
     | 
    
         
            +
                # Minor version of the RazorRisk.Cassini.Common library
         
     | 
| 
      
 25 
     | 
    
         
            +
                VERSION_MINOR       =   VERSION_PARTS_[1]       # :nodoc:
         
     | 
| 
      
 26 
     | 
    
         
            +
                # Patch version of the RazorRisk.Cassini.Common library
         
     | 
| 
      
 27 
     | 
    
         
            +
                VERSION_Patch       =   VERSION_PARTS_[2]       # :nodoc:
         
     | 
| 
      
 28 
     | 
    
         
            +
                # Commit version of the RazorRisk.Cassini.Common library
         
     | 
| 
      
 29 
     | 
    
         
            +
                VERSION_COMMIT      =   VERSION_PARTS_[3] || 0  # :nodoc:
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                # The description of the framework
         
     | 
| 
      
 33 
     | 
    
         
            +
                DESCRIPTION         =   'Cassini Web Service framework for Razor Risk Razor system'
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                # [DEPRECATED] Instead use +DESCRIPTION+
         
     | 
| 
      
 36 
     | 
    
         
            +
                FRAMEWORK_DESCRIPTION = DESCRIPTION
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            end # module Common
         
     | 
| 
      
 39 
     | 
    
         
            +
            end # module Cassini
         
     | 
| 
      
 40 
     | 
    
         
            +
            end # module RazorRisk
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            # ############################## end of file ############################# #
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,32 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # encoding: UTF-8
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # ######################################################################## #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # File:         razor_risk/cassini/common.rb
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            # Purpose:      Cassini common file
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            # Created:      15th January 2018
         
     | 
| 
      
 9 
     | 
    
         
            +
            # Updated:      4th March 2018
         
     | 
| 
      
 10 
     | 
    
         
            +
            #
         
     | 
| 
      
 11 
     | 
    
         
            +
            # Author:       Matthew Wilson
         
     | 
| 
      
 12 
     | 
    
         
            +
            #
         
     | 
| 
      
 13 
     | 
    
         
            +
            # Copyright (c) 2018, Razor Risk Technologies Pty Ltd
         
     | 
| 
      
 14 
     | 
    
         
            +
            # All rights reserved.
         
     | 
| 
      
 15 
     | 
    
         
            +
            #
         
     | 
| 
      
 16 
     | 
    
         
            +
            # ######################################################################## #
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            # ##########################################################################
         
     | 
| 
      
 20 
     | 
    
         
            +
            # requires
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            =begin
         
     | 
| 
      
 23 
     | 
    
         
            +
            require 'razor_risk/cassini/authorisation'
         
     | 
| 
      
 24 
     | 
    
         
            +
            require 'razor_risk/cassini/constants'
         
     | 
| 
      
 25 
     | 
    
         
            +
            require 'razor_risk/cassini/header_functions'
         
     | 
| 
      
 26 
     | 
    
         
            +
            require 'razor_risk/cassini/management_plane'
         
     | 
| 
      
 27 
     | 
    
         
            +
            require 'razor_risk/cassini/util/secrets_util'
         
     | 
| 
      
 28 
     | 
    
         
            +
            =end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            # ############################## end of file ############################# #
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,68 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # encoding: UTF-8
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # ######################################################################## #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # File:         razor_risk/cassini/constants.rb
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            # Purpose:      Cassini constants
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            # Created:      14th November 2017
         
     | 
| 
      
 9 
     | 
    
         
            +
            # Updated:      4th March 2018
         
     | 
| 
      
 10 
     | 
    
         
            +
            #
         
     | 
| 
      
 11 
     | 
    
         
            +
            # Author:       Matthew Wilson
         
     | 
| 
      
 12 
     | 
    
         
            +
            #
         
     | 
| 
      
 13 
     | 
    
         
            +
            # Copyright (c) 2017-2018, Razor Risk Technologies Pty Ltd
         
     | 
| 
      
 14 
     | 
    
         
            +
            # All rights reserved.
         
     | 
| 
      
 15 
     | 
    
         
            +
            #
         
     | 
| 
      
 16 
     | 
    
         
            +
            # ######################################################################## #
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            # ##########################################################################
         
     | 
| 
      
 20 
     | 
    
         
            +
            # requires
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            =begin
         
     | 
| 
      
 23 
     | 
    
         
            +
            =end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            module RazorRisk
         
     | 
| 
      
 26 
     | 
    
         
            +
            module Cassini
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            module Constants
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                # The WWW-Authenticate header scheme for Razor's Authentication-only
         
     | 
| 
      
 31 
     | 
    
         
            +
                # authentication scheme
         
     | 
| 
      
 32 
     | 
    
         
            +
                SCHEME_AUTH_ONLY                 = 'RazorRisk.Cassini.AuthorisationOnly'
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                REFERRED_ENV_PREFIX              = 'razorrisk.cassini.ims'
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                SUPPORTED_VERB_NAMES             = %w{ COPY DELETE GET HEAD LINK LOCK OPTIONS PATCH PROPFIND POST PURGE PUT VIEW UNLINK UNLOCK }
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                SUPPORTED_VERBS                  = SUPPORTED_VERB_NAMES.map { |name| name.downcase.to_sym }
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                HTTP_AUTHORIZATION               = 'HTTP_AUTHORIZATION'
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                SUPPORTED_AUTHENTICATION_SCHEMES = %w{ [a]uthorisation-only [b]asic [j]wt }
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                # See RFC-2616 Section 13.5.1 @ https://tools.ietf.org/html/rfc2616#section-13.5.1
         
     | 
| 
      
 45 
     | 
    
         
            +
                # and its errata 4522 @ https://www.rfc-editor.org/errata/eid4522
         
     | 
| 
      
 46 
     | 
    
         
            +
                HOP_BY_HOP_HEADERS               = [
         
     | 
| 
      
 47 
     | 
    
         
            +
                    'connection',
         
     | 
| 
      
 48 
     | 
    
         
            +
                    'keep-alive',
         
     | 
| 
      
 49 
     | 
    
         
            +
                    'proxy-authenticate',
         
     | 
| 
      
 50 
     | 
    
         
            +
                    'proxy-authorization',
         
     | 
| 
      
 51 
     | 
    
         
            +
                    'te',
         
     | 
| 
      
 52 
     | 
    
         
            +
                    'trailer',
         
     | 
| 
      
 53 
     | 
    
         
            +
                    'transfer-encoding',
         
     | 
| 
      
 54 
     | 
    
         
            +
                    'upgrade',
         
     | 
| 
      
 55 
     | 
    
         
            +
                ]
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                # Environment setting to allow exceptions to be propagated for
         
     | 
| 
      
 58 
     | 
    
         
            +
                # development and testing purposes.
         
     | 
| 
      
 59 
     | 
    
         
            +
                RZ_EXPOSE_MICROSERVICE_EXCEPTIONS = ENV['RZ_EXPOSE_MICROSERVICE_EXCEPTIONS']
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
            end # module Constants
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
            end # module Cassini
         
     | 
| 
      
 64 
     | 
    
         
            +
            end # module RazorRisk
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            # ############################## end of file ############################# #
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,248 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # encoding: UTF-8
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # ######################################################################## #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # File:         razor_risk/cassini/diagnostics/util_functions.rb
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            # Purpose:      Centralised diagnostics utility functions
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            # Created:      8th February 2018
         
     | 
| 
      
 9 
     | 
    
         
            +
            # Updated:      26th February 2018
         
     | 
| 
      
 10 
     | 
    
         
            +
            #
         
     | 
| 
      
 11 
     | 
    
         
            +
            # Author:       Matthew Wilson
         
     | 
| 
      
 12 
     | 
    
         
            +
            #
         
     | 
| 
      
 13 
     | 
    
         
            +
            # Copyright (c) 2018, Razor Risk Technologies Pty Ltd
         
     | 
| 
      
 14 
     | 
    
         
            +
            # All rights reserved.
         
     | 
| 
      
 15 
     | 
    
         
            +
            #
         
     | 
| 
      
 16 
     | 
    
         
            +
            # ######################################################################## #
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            require 'pantheios/application_layer/stock_severity_levels'
         
     | 
| 
      
 20 
     | 
    
         
            +
            require 'pantheios/services/multiplexing_log_service'
         
     | 
| 
      
 21 
     | 
    
         
            +
            require 'pantheios/services/null_log_service'
         
     | 
| 
      
 22 
     | 
    
         
            +
            require 'pantheios/services/simple_console_log_service'
         
     | 
| 
      
 23 
     | 
    
         
            +
            require 'pantheios/services/simple_file_log_service'
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            require 'xqsr3/quality/parameter_checking'
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            require 'fileutils'
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            require 'razor_risk/core/diagnostics/logger'
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            module RazorRisk
         
     | 
| 
      
 32 
     | 
    
         
            +
            module Cassini
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            module Diagnostics
         
     | 
| 
      
 35 
     | 
    
         
            +
                include ::RazorRisk::Core::Diagnostics::Logger
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                module SetupDiagnosticLogging_Constants
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                    STOCK_SEVERITY_LEVEL_VALUES     =   Pantheios::ApplicationLayer::StockSeverityLevels::STOCK_SEVERITY_LEVEL_VALUES
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                    DEFAULT_LOG_THRESHOLD_MAIN      =   :debug4
         
     | 
| 
      
 42 
     | 
    
         
            +
                    DEFAULT_LOG_THRESHOLD_CONSOLE   =   :informational
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                    BENCHMARK_SEVERITY_VALUE        =   STOCK_SEVERITY_LEVEL_VALUES[:benchmark]
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                    DEFAULT_LOG_SIZE_BENCHMARK      =   1024 * 1024 * 10
         
     | 
| 
      
 47 
     | 
    
         
            +
                    DEFAULT_LOG_SIZE_MAIN           =   1024 * 1024 * 100
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                    DEFAULT_LOG_DEPTH               =   20
         
     | 
| 
      
 50 
     | 
    
         
            +
                end # module SetupDiagnosticLogging_Constants
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                # configure diagnostic logging:
         
     | 
| 
      
 53 
     | 
    
         
            +
                #
         
     | 
| 
      
 54 
     | 
    
         
            +
                # - set program name
         
     | 
| 
      
 55 
     | 
    
         
            +
                # - set services:
         
     | 
| 
      
 56 
     | 
    
         
            +
                #   * benchmark logger : file, only responding to :benchmark, and only if
         
     | 
| 
      
 57 
     | 
    
         
            +
                #     --benchmark is specified
         
     | 
| 
      
 58 
     | 
    
         
            +
                #   * main file logger : file, stores all except :benchmark, according to
         
     | 
| 
      
 59 
     | 
    
         
            +
                #     :log_threshold
         
     | 
| 
      
 60 
     | 
    
         
            +
                #   * main cons logger : stdout/stderr, only :notice and above
         
     | 
| 
      
 61 
     | 
    
         
            +
                #
         
     | 
| 
      
 62 
     | 
    
         
            +
                # === Signature
         
     | 
| 
      
 63 
     | 
    
         
            +
                #
         
     | 
| 
      
 64 
     | 
    
         
            +
                # * *Parameters:*
         
     | 
| 
      
 65 
     | 
    
         
            +
                #   - +program_name+:: (::String) The program name. May not be +nil+
         
     | 
| 
      
 66 
     | 
    
         
            +
                #   - +log_directory+:: (::String) The directory in which log-files
         
     | 
| 
      
 67 
     | 
    
         
            +
                #     will be created. May not be +nil+, unless both +:no_benchmark_log+
         
     | 
| 
      
 68 
     | 
    
         
            +
                #     and +:no_main_log+ are truey
         
     | 
| 
      
 69 
     | 
    
         
            +
                #   - +log_threshold+:: (::String | ::Symbol |[ ::Symbol, ::Symbol ] )
         
     | 
| 
      
 70 
     | 
    
         
            +
                #     Specifies the log-threshold(s). The threshold(s) is specified as a
         
     | 
| 
      
 71 
     | 
    
         
            +
                #     string containing comma-separated values, or as a single symbol,
         
     | 
| 
      
 72 
     | 
    
         
            +
                #     or as an array of symbols, all of which are treated as a sequence
         
     | 
| 
      
 73 
     | 
    
         
            +
                #     of severity thresholds. The severity thresholds apply,
         
     | 
| 
      
 74 
     | 
    
         
            +
                #     respectively, to the modifiable-sequence of Console and Main.
         
     | 
| 
      
 75 
     | 
    
         
            +
                #
         
     | 
| 
      
 76 
     | 
    
         
            +
                # * *Options:*
         
     | 
| 
      
 77 
     | 
    
         
            +
                #   - +:no_benchmark_log+:: (boolean) Unless truey, a benchmark log will
         
     | 
| 
      
 78 
     | 
    
         
            +
                #     be created
         
     | 
| 
      
 79 
     | 
    
         
            +
                #   - +:no_console_log+:: (boolean) Unless truey, a console log will be
         
     | 
| 
      
 80 
     | 
    
         
            +
                #     created
         
     | 
| 
      
 81 
     | 
    
         
            +
                #   - +:no_main_log+:: (boolean) Unless truey, a main log will be
         
     | 
| 
      
 82 
     | 
    
         
            +
                #     created
         
     | 
| 
      
 83 
     | 
    
         
            +
                #
         
     | 
| 
      
 84 
     | 
    
         
            +
                # NOTE: If all of +:no_benchmark_log+, +:no_console_log+, and
         
     | 
| 
      
 85 
     | 
    
         
            +
                # +:no_main_log+ are truey, a null logger will be created, and there will
         
     | 
| 
      
 86 
     | 
    
         
            +
                # be no logging
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
                def setup_diagnostic_logging program_name, log_directory, log_threshold, **options
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                    ::Xqsr3::Quality::ParameterChecking.check_parameter program_name, 'program_name', type: ::String
         
     | 
| 
      
 91 
     | 
    
         
            +
                    ::Xqsr3::Quality::ParameterChecking.check_parameter log_directory, 'log_directory', type: ::String
         
     | 
| 
      
 92 
     | 
    
         
            +
                    ::Xqsr3::Quality::ParameterChecking.check_parameter log_threshold, 'log_threshold', types: [ ::Array, ::Integer, ::Symbol ]
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
                    case log_threshold
         
     | 
| 
      
 95 
     | 
    
         
            +
                    when ::Array
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
                        log_thresholds  =   log_threshold.dup
         
     | 
| 
      
 98 
     | 
    
         
            +
                    when ::Symbol
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
                        log_thresholds  =   [ log_threshold ]
         
     | 
| 
      
 101 
     | 
    
         
            +
                    else
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
                        log_thresholds  =   []
         
     | 
| 
      
 104 
     | 
    
         
            +
                    end
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
                    console_threshold   =   log_thresholds.shift || options[:console_threshold] || SetupDiagnosticLogging_Constants::DEFAULT_LOG_THRESHOLD_CONSOLE
         
     | 
| 
      
 107 
     | 
    
         
            +
                    main_threshold      =   log_thresholds.shift || options[:main_threshold] || SetupDiagnosticLogging_Constants::DEFAULT_LOG_THRESHOLD_MAIN
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
                    console_threshold_v =   ::Integer === console_threshold ? console_threshold : SetupDiagnosticLogging_Constants::STOCK_SEVERITY_LEVEL_VALUES[console_threshold]
         
     | 
| 
      
 110 
     | 
    
         
            +
                    main_threshold_v    =   ::Integer === main_threshold ? main_threshold : SetupDiagnosticLogging_Constants::STOCK_SEVERITY_LEVEL_VALUES[main_threshold]
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                    unless options[:no_benchmark_log] && options[:no_main_log]
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
                        unless File.directory?(log_directory)
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
                            climate.abort "log directory '#{log_directory}' exists and is not a directory" if File.exist?(log_directory)
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
      
 118 
     | 
    
         
            +
                            begin
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
                                FileUtils.mkdir_p log_directory
         
     | 
| 
      
 121 
     | 
    
         
            +
                            rescue => x
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
      
 123 
     | 
    
         
            +
                                log :alert, "exception(#{x.class}): #{x.message}"
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
                                climate.abort x.message
         
     | 
| 
      
 126 
     | 
    
         
            +
                            end
         
     | 
| 
      
 127 
     | 
    
         
            +
                        end
         
     | 
| 
      
 128 
     | 
    
         
            +
                    end
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
                    services = []
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
      
 132 
     | 
    
         
            +
                    unless options[:no_benchmark_log]
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
                        bm_log_file_name    =   program_name + '-benchmark.log'
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
      
 136 
     | 
    
         
            +
                        bm_log_file_path    =   File.join(log_directory, bm_log_file_name)
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
                        bm_logger           =   Pantheios::Services::SimpleFileLogService.new bm_log_file_path, roll_size: SetupDiagnosticLogging_Constants::DEFAULT_LOG_SIZE_BENCHMARK, roll_depth: SetupDiagnosticLogging_Constants::DEFAULT_LOG_DEPTH
         
     | 
| 
      
 139 
     | 
    
         
            +
             
     | 
| 
      
 140 
     | 
    
         
            +
                        def bm_logger.severity_logged? severity
         
     | 
| 
      
 141 
     | 
    
         
            +
             
     | 
| 
      
 142 
     | 
    
         
            +
                            case severity
         
     | 
| 
      
 143 
     | 
    
         
            +
                            when :benchmark, SetupDiagnosticLogging_Constants::BENCHMARK_SEVERITY_VALUE
         
     | 
| 
      
 144 
     | 
    
         
            +
             
     | 
| 
      
 145 
     | 
    
         
            +
                                true
         
     | 
| 
      
 146 
     | 
    
         
            +
                            else
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
                                false
         
     | 
| 
      
 149 
     | 
    
         
            +
                            end
         
     | 
| 
      
 150 
     | 
    
         
            +
                        end
         
     | 
| 
      
 151 
     | 
    
         
            +
             
     | 
| 
      
 152 
     | 
    
         
            +
                        services            <<  bm_logger
         
     | 
| 
      
 153 
     | 
    
         
            +
                    end
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
                    unless options[:no_main_log]
         
     | 
| 
      
 156 
     | 
    
         
            +
             
     | 
| 
      
 157 
     | 
    
         
            +
                        mf_log_file_name    =   program_name + '-main.log'
         
     | 
| 
      
 158 
     | 
    
         
            +
             
     | 
| 
      
 159 
     | 
    
         
            +
                        mf_log_file_path    =   File.join(log_directory, mf_log_file_name)
         
     | 
| 
      
 160 
     | 
    
         
            +
             
     | 
| 
      
 161 
     | 
    
         
            +
                        mf_logger           =   Pantheios::Services::SimpleFileLogService.new mf_log_file_path, roll_size: SetupDiagnosticLogging_Constants::DEFAULT_LOG_SIZE_MAIN, roll_depth: SetupDiagnosticLogging_Constants::DEFAULT_LOG_DEPTH
         
     | 
| 
      
 162 
     | 
    
         
            +
             
     | 
| 
      
 163 
     | 
    
         
            +
                        mf_logger.instance_variable_set :@main_threshold_v_, main_threshold_v
         
     | 
| 
      
 164 
     | 
    
         
            +
             
     | 
| 
      
 165 
     | 
    
         
            +
                        def mf_logger.severity_logged? severity
         
     | 
| 
      
 166 
     | 
    
         
            +
             
     | 
| 
      
 167 
     | 
    
         
            +
                            return true unless @main_threshold_v_
         
     | 
| 
      
 168 
     | 
    
         
            +
             
     | 
| 
      
 169 
     | 
    
         
            +
                            severity = :debug4 if :debug == severity
         
     | 
| 
      
 170 
     | 
    
         
            +
             
     | 
| 
      
 171 
     | 
    
         
            +
                            severity_v = nil
         
     | 
| 
      
 172 
     | 
    
         
            +
             
     | 
| 
      
 173 
     | 
    
         
            +
                            case severity
         
     | 
| 
      
 174 
     | 
    
         
            +
                            when :benchmark, SetupDiagnosticLogging_Constants::BENCHMARK_SEVERITY_VALUE
         
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
      
 176 
     | 
    
         
            +
                                return false
         
     | 
| 
      
 177 
     | 
    
         
            +
                            when ::Symbol
         
     | 
| 
      
 178 
     | 
    
         
            +
             
     | 
| 
      
 179 
     | 
    
         
            +
                                severity_v = SetupDiagnosticLogging_Constants::STOCK_SEVERITY_LEVEL_VALUES[severity]
         
     | 
| 
      
 180 
     | 
    
         
            +
                            when ::Integer
         
     | 
| 
      
 181 
     | 
    
         
            +
             
     | 
| 
      
 182 
     | 
    
         
            +
                                severity_v = severity
         
     | 
| 
      
 183 
     | 
    
         
            +
                            else
         
     | 
| 
      
 184 
     | 
    
         
            +
             
     | 
| 
      
 185 
     | 
    
         
            +
                                ;
         
     | 
| 
      
 186 
     | 
    
         
            +
                            end
         
     | 
| 
      
 187 
     | 
    
         
            +
             
     | 
| 
      
 188 
     | 
    
         
            +
                            return true unless severity_v
         
     | 
| 
      
 189 
     | 
    
         
            +
             
     | 
| 
      
 190 
     | 
    
         
            +
                            severity_v <= @main_threshold_v_
         
     | 
| 
      
 191 
     | 
    
         
            +
                        end
         
     | 
| 
      
 192 
     | 
    
         
            +
             
     | 
| 
      
 193 
     | 
    
         
            +
                        services            <<  mf_logger
         
     | 
| 
      
 194 
     | 
    
         
            +
                    end
         
     | 
| 
      
 195 
     | 
    
         
            +
             
     | 
| 
      
 196 
     | 
    
         
            +
                    unless options[:no_console_log]
         
     | 
| 
      
 197 
     | 
    
         
            +
             
     | 
| 
      
 198 
     | 
    
         
            +
                        mc_logger           =   Pantheios::Services::SimpleConsoleLogService.new
         
     | 
| 
      
 199 
     | 
    
         
            +
             
     | 
| 
      
 200 
     | 
    
         
            +
                        mc_logger.instance_variable_set :@console_threshold_v_, console_threshold_v
         
     | 
| 
      
 201 
     | 
    
         
            +
             
     | 
| 
      
 202 
     | 
    
         
            +
                        def mc_logger.severity_logged? severity
         
     | 
| 
      
 203 
     | 
    
         
            +
             
     | 
| 
      
 204 
     | 
    
         
            +
                            return true unless @console_threshold_v_
         
     | 
| 
      
 205 
     | 
    
         
            +
             
     | 
| 
      
 206 
     | 
    
         
            +
                            severity = :debug4 if :debug == severity
         
     | 
| 
      
 207 
     | 
    
         
            +
             
     | 
| 
      
 208 
     | 
    
         
            +
                            severity_v = nil
         
     | 
| 
      
 209 
     | 
    
         
            +
             
     | 
| 
      
 210 
     | 
    
         
            +
                            case severity
         
     | 
| 
      
 211 
     | 
    
         
            +
                            when :benchmark, SetupDiagnosticLogging_Constants::BENCHMARK_SEVERITY_VALUE
         
     | 
| 
      
 212 
     | 
    
         
            +
             
     | 
| 
      
 213 
     | 
    
         
            +
                                return false
         
     | 
| 
      
 214 
     | 
    
         
            +
                            when ::Symbol
         
     | 
| 
      
 215 
     | 
    
         
            +
             
     | 
| 
      
 216 
     | 
    
         
            +
                                severity_v = SetupDiagnosticLogging_Constants::STOCK_SEVERITY_LEVEL_VALUES[severity]
         
     | 
| 
      
 217 
     | 
    
         
            +
                            when ::Integer
         
     | 
| 
      
 218 
     | 
    
         
            +
             
     | 
| 
      
 219 
     | 
    
         
            +
                                severity_v = severity
         
     | 
| 
      
 220 
     | 
    
         
            +
                            else
         
     | 
| 
      
 221 
     | 
    
         
            +
             
     | 
| 
      
 222 
     | 
    
         
            +
                                ;
         
     | 
| 
      
 223 
     | 
    
         
            +
                            end
         
     | 
| 
      
 224 
     | 
    
         
            +
             
     | 
| 
      
 225 
     | 
    
         
            +
                            return true unless severity_v
         
     | 
| 
      
 226 
     | 
    
         
            +
             
     | 
| 
      
 227 
     | 
    
         
            +
                            severity_v <= @console_threshold_v_
         
     | 
| 
      
 228 
     | 
    
         
            +
                        end
         
     | 
| 
      
 229 
     | 
    
         
            +
             
     | 
| 
      
 230 
     | 
    
         
            +
                        services            << mc_logger
         
     | 
| 
      
 231 
     | 
    
         
            +
                    end
         
     | 
| 
      
 232 
     | 
    
         
            +
             
     | 
| 
      
 233 
     | 
    
         
            +
                    if services.empty?
         
     | 
| 
      
 234 
     | 
    
         
            +
             
     | 
| 
      
 235 
     | 
    
         
            +
                        mx_logger   =   Pantheios::Services::NullLogService.new
         
     | 
| 
      
 236 
     | 
    
         
            +
                    else
         
     | 
| 
      
 237 
     | 
    
         
            +
             
     | 
| 
      
 238 
     | 
    
         
            +
                        mx_logger   =   Pantheios::Services::MultiplexingLogService.new services, level_cache_mode: :thread_fixed
         
     | 
| 
      
 239 
     | 
    
         
            +
                    end
         
     | 
| 
      
 240 
     | 
    
         
            +
             
     | 
| 
      
 241 
     | 
    
         
            +
                    ::Pantheios::Core.set_service mx_logger
         
     | 
| 
      
 242 
     | 
    
         
            +
                end
         
     | 
| 
      
 243 
     | 
    
         
            +
             
     | 
| 
      
 244 
     | 
    
         
            +
            end # module Diagnostics
         
     | 
| 
      
 245 
     | 
    
         
            +
             
     | 
| 
      
 246 
     | 
    
         
            +
            end # module RazorRisk
         
     | 
| 
      
 247 
     | 
    
         
            +
            end # module Cassini
         
     | 
| 
      
 248 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,35 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # encoding: UTF-8
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # ######################################################################## #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # File:         razor_risk/cassini/diagnostics/zeroth_include.rb
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            # Purpose:      When required as the very first file it sets up, for
         
     | 
| 
      
 7 
     | 
    
         
            +
            #               diagnostics, the main thread name and the process name
         
     | 
| 
      
 8 
     | 
    
         
            +
            #
         
     | 
| 
      
 9 
     | 
    
         
            +
            # Created:      5th February 2018
         
     | 
| 
      
 10 
     | 
    
         
            +
            # Updated:      4th March 2018
         
     | 
| 
      
 11 
     | 
    
         
            +
            #
         
     | 
| 
      
 12 
     | 
    
         
            +
            # Author:       Matthew Wilson
         
     | 
| 
      
 13 
     | 
    
         
            +
            #
         
     | 
| 
      
 14 
     | 
    
         
            +
            # Copyright (c) 2018, Razor Risk Technologies Pty Ltd
         
     | 
| 
      
 15 
     | 
    
         
            +
            # All rights reserved.
         
     | 
| 
      
 16 
     | 
    
         
            +
            #
         
     | 
| 
      
 17 
     | 
    
         
            +
            # ######################################################################## #
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            # ##########################################################################
         
     | 
| 
      
 21 
     | 
    
         
            +
            # requires
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            require 'pantheios/globals'
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            # set main thread name
         
     | 
| 
      
 26 
     | 
    
         
            +
            Pantheios::Globals.MAIN_THREAD_NAME = [ Thread.current, 'main' ]
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            # set process name
         
     | 
| 
      
 29 
     | 
    
         
            +
            #
         
     | 
| 
      
 30 
     | 
    
         
            +
            # If the script name is ws.rb, then the directory name is used
         
     | 
| 
      
 31 
     | 
    
         
            +
            Pantheios::Globals.PROCESS_NAME = $0 =~ /[\\\/]ws\.rb$/ ? :script_dirname : :script_stem
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            # ############################## end of file ############################# #
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
             
     |