Module: Sqreen

Defined in:
lib/sqreen/js.rb,
lib/sqreen/cb.rb,
lib/sqreen/log.rb,
lib/sqreen/sdk.rb,
lib/sqreen/node.rb,
lib/sqreen/trie.rb,
lib/sqreen/util.rb,
lib/sqreen/agent.rb,
lib/sqreen/event.rb,
lib/sqreen/graft.rb,
lib/sqreen/rules.rb,
lib/sqreen/weave.rb,
lib/sqreen/legacy.rb,
lib/sqreen/logger.rb,
lib/sqreen/prefix.rb,
lib/sqreen/runner.rb,
lib/sqreen/worker.rb,
lib/sqreen/actions.rb,
lib/sqreen/cb_tree.rb,
lib/sqreen/context.rb,
lib/sqreen/session.rb,
lib/sqreen/version.rb,
lib/sqreen/ecosystem.rb,
lib/sqreen/exception.rb,
lib/sqreen/mono_time.rb,
lib/sqreen/safe_json.rb,
lib/sqreen/waf_error.rb,
lib/sqreen/default_cb.rb,
lib/sqreen/deliveries.rb,
lib/sqreen/dependency.rb,
lib/sqreen/frameworks.rb,
lib/sqreen/graft/call.rb,
lib/sqreen/graft/hook.rb,
lib/sqreen/middleware.rb,
lib/sqreen/serializer.rb,
lib/sqreen/web_server.rb,
lib/sqreen/deprecation.rb,
lib/sqreen/metrics/sum.rb,
lib/sqreen/null_logger.rb,
lib/sqreen/rules/attrs.rb,
lib/sqreen/shrink_wrap.rb,
lib/sqreen/actions/base.rb,
lib/sqreen/capped_queue.rb,
lib/sqreen/framework_cb.rb,
lib/sqreen/log/loggable.rb,
lib/sqreen/metrics/base.rb,
lib/sqreen/rules/waf_cb.rb,
lib/sqreen/rules/xss_cb.rb,
lib/sqreen/unauthorized.rb,
lib/sqreen/weave/legacy.rb,
lib/sqreen/agent_message.rb,
lib/sqreen/conditionable.rb,
lib/sqreen/configuration.rb,
lib/sqreen/events/attack.rb,
lib/sqreen/js/js_service.rb,
lib/sqreen/metrics_store.rb,
lib/sqreen/rules/rule_cb.rb,
lib/sqreen/runtime_infos.rb,
lib/sqreen/attack_blocked.rb,
lib/sqreen/call_countable.rb,
lib/sqreen/graft/callback.rb,
lib/sqreen/remote_command.rb,
lib/sqreen/shared_storage.rb,
lib/sqreen/deferred_logger.rb,
lib/sqreen/dependency/rack.rb,
lib/sqreen/js/call_context.rb,
lib/sqreen/js/context_pool.rb,
lib/sqreen/metrics/average.rb,
lib/sqreen/metrics/binning.rb,
lib/sqreen/metrics/collect.rb,
lib/sqreen/payload_creator.rb,
lib/sqreen/rules/execjs_cb.rb,
lib/sqreen/web_server/puma.rb,
lib/sqreen/web_server/thin.rb,
lib/sqreen/actions/block_ip.rb,
lib/sqreen/binding_accessor.rb,
lib/sqreen/deliveries/batch.rb,
lib/sqreen/dependency/rails.rb,
lib/sqreen/endpoint_testing.rb,
lib/sqreen/frameworks/rails.rb,
lib/sqreen/graft/hook_point.rb,
lib/sqreen/js/executable_js.rb,
lib/sqreen/rails_middleware.rb,
lib/sqreen/shared_storage23.rb,
lib/sqreen/aggregated_metric.rb,
lib/sqreen/deliveries/simple.rb,
lib/sqreen/dependency/sentry.rb,
lib/sqreen/frameworks/rails3.rb,
lib/sqreen/graft/hook.ruby_2.rb,
lib/sqreen/graft/hook.ruby_3.rb,
lib/sqreen/js/execjs_adapter.rb,
lib/sqreen/actions/block_user.rb,
lib/sqreen/actions/repository.rb,
lib/sqreen/dependency/sinatra.rb,
lib/sqreen/ecosystem/loggable.rb,
lib/sqreen/formatter_with_tid.rb,
lib/sqreen/frameworks/generic.rb,
lib/sqreen/frameworks/sinatra.rb,
lib/sqreen/rules/matcher_rule.rb,
lib/sqreen/rules/not_found_cb.rb,
lib/sqreen/rules/shell_env_cb.rb,
lib/sqreen/run_when_called_cb.rb,
lib/sqreen/signature_verifier.rb,
lib/sqreen/sinatra_middleware.rb,
lib/sqreen/web_server/generic.rb,
lib/sqreen/web_server/unicorn.rb,
lib/sqreen/web_server/webrick.rb,
lib/sqreen/actions/redirect_ip.rb,
lib/sqreen/actions/users_index.rb,
lib/sqreen/condition_evaluator.rb,
lib/sqreen/dependency/detector.rb,
lib/sqreen/js/exec_js_runnable.rb,
lib/sqreen/not_implemented_yet.rb,
lib/sqreen/rules/auth_track_cb.rb,
lib/sqreen/signals/conversions.rb,
lib/sqreen/web_server/rainbows.rb,
lib/sqreen/dependency/libsqreen.rb,
lib/sqreen/dependency/new_relic.rb,
lib/sqreen/ecosystem/module_api.rb,
lib/sqreen/rules/regexp_rule_cb.rb,
lib/sqreen/rules/url_matches_cb.rb,
lib/sqreen/web_server/passenger.rb,
lib/sqreen/actions/actions_index.rb,
lib/sqreen/actions/redirect_user.rb,
lib/sqreen/ecosystem_integration.rb,
lib/sqreen/events/request_record.rb,
lib/sqreen/js/js_service_adapter.rb,
lib/sqreen/js/mini_racer_adapter.rb,
lib/sqreen/legacy/waf_redactions.rb,
lib/sqreen/rules/custom_error_cb.rb,
lib/sqreen/rules/signup_track_cb.rb,
lib/sqreen/frameworks/sqreen_test.rb,
lib/sqreen/graft/hook_point_error.rb,
lib/sqreen/legacy/instrumentation.rb,
lib/sqreen/rules/blacklist_ips_cb.rb,
lib/sqreen/rules/count_http_codes.rb,
lib/sqreen/rules/run_user_actions.rb,
lib/sqreen/sqreen_signed_verifier.rb,
lib/sqreen/actions/ip_ranges_index.rb,
lib/sqreen/ecosystem/http/net_http.rb,
lib/sqreen/ecosystem/messaging/sqs.rb,
lib/sqreen/events/remote_exception.rb,
lib/sqreen/graft/hook_point.ruby_2.rb,
lib/sqreen/graft/hook_point.ruby_3.rb,
lib/sqreen/rules/headers_insert_cb.rb,
lib/sqreen/sensitive_data_redactor.rb,
lib/sqreen/token_invalid_exception.rb,
lib/sqreen/ecosystem/dispatch_table.rb,
lib/sqreen/ecosystem/tracing_broker.rb,
lib/sqreen/actions/user_action_class.rb,
lib/sqreen/ecosystem/databases/mongo.rb,
lib/sqreen/ecosystem/databases/mysql.rb,
lib/sqreen/ecosystem/databases/redis.rb,
lib/sqreen/ecosystem/messaging/bunny.rb,
lib/sqreen/ecosystem/messaging/kafka.rb,
lib/sqreen/ecosystem/module_registry.rb,
lib/sqreen/ecosystem/tracing/sampler.rb,
lib/sqreen/error_handling_middleware.rb,
lib/sqreen/performance_notifications.rb,
lib/sqreen/rules/rails_parameters_cb.rb,
lib/sqreen/token_not_found_exception.rb,
lib/sqreen/binding_accessor/path_elem.rb,
lib/sqreen/ecosystem/tracing_id_setup.rb,
lib/sqreen/rules/devise_auth_track_cb.rb,
lib/sqreen/actions/unknown_action_type.rb,
lib/sqreen/binding_accessor/transforms.rb,
lib/sqreen/ecosystem/http/rack_request.rb,
lib/sqreen/ecosystem/messaging/kinesis.rb,
lib/sqreen/frameworks/request_recorder.rb,
lib/sqreen/invalid_signature_exception.rb,
lib/sqreen/js/mini_racer_executable_js.rb,
lib/sqreen/rules/run_req_start_actions.rb,
lib/sqreen/rules/user_agent_matches_cb.rb,
lib/sqreen/ecosystem/databases/postgres.rb,
lib/sqreen/ecosystem/module_api/tracing.rb,
lib/sqreen/metrics_store/unknown_metric.rb,
lib/sqreen/rules/devise_signup_track_cb.rb,
lib/sqreen/rules/record_request_context.rb,
lib/sqreen/rules/update_request_context.rb,
lib/sqreen/signals/http_trace_redaction.rb,
lib/sqreen/ecosystem/exception_reporting.rb,
lib/sqreen/ecosystem/transaction_storage.rb,
lib/sqreen/performance_notifications/log.rb,
lib/sqreen/remote_command/failure_output.rb,
lib/sqreen/kit/signals/specialized/attack.rb,
lib/sqreen/payload_creator/header_section.rb,
lib/sqreen/rules/binding_accessor_metrics.rb,
lib/sqreen/ecosystem/tracing/modules/client.rb,
lib/sqreen/ecosystem/tracing/modules/server.rb,
lib/sqreen/js/thread_local_exec_js_runnable.rb,
lib/sqreen/metrics_store/unregistered_metric.rb,
lib/sqreen/performance_notifications/metrics.rb,
lib/sqreen/rules/binding_accessor_matcher_cb.rb,
lib/sqreen/ecosystem/tracing/modules/consumer.rb,
lib/sqreen/ecosystem/tracing/modules/producer.rb,
lib/sqreen/kit/signals/specialized/http_trace.rb,
lib/sqreen/performance_notifications/newrelic.rb,
lib/sqreen/ecosystem/module_api/event_listener.rb,
lib/sqreen/rules/crawler_user_agent_matches_cb.rb,
lib/sqreen/signals/signals_submission_strategy.rb,
lib/sqreen/ecosystem/module_api/instrumentation.rb,
lib/sqreen/ecosystem/module_api/signal_producer.rb,
lib/sqreen/legacy/old_event_submission_strategy.rb,
lib/sqreen/actions/ip_range_indexed_action_class.rb,
lib/sqreen/ecosystem/module_api/message_producer.rb,
lib/sqreen/ecosystem/util/call_writers_from_init.rb,
lib/sqreen/ecosystem/tracing/modules/determine_ip.rb,
lib/sqreen/ecosystem_integration/around_callbacks.rb,
lib/sqreen/kit/signals/specialized/binning_metric.rb,
lib/sqreen/kit/signals/specialized/sdk_track_call.rb,
lib/sqreen/metrics_store/already_registered_metric.rb,
lib/sqreen/ecosystem/module_api/tracing/client_data.rb,
lib/sqreen/ecosystem/module_api/tracing/server_data.rb,
lib/sqreen/ecosystem/module_api/transaction_storage.rb,
lib/sqreen/ecosystem/tracing/sampling_configuration.rb,
lib/sqreen/ecosystem/tracing/signals/tracing_client.rb,
lib/sqreen/ecosystem/tracing/signals/tracing_server.rb,
lib/sqreen/ecosystem_integration/signal_consumption.rb,
lib/sqreen/kit/signals/specialized/sqreen_exception.rb,
lib/sqreen/performance_notifications/binned_metrics.rb,
lib/sqreen/kit/signals/specialized/aggregated_metric.rb,
lib/sqreen/performance_notifications/log_performance.rb,
lib/sqreen/ecosystem/module_api/tracing/consumer_data.rb,
lib/sqreen/ecosystem/module_api/tracing/producer_data.rb,
lib/sqreen/ecosystem/module_api/tracing_id_generation.rb,
lib/sqreen/ecosystem/tracing/signals/tracing_consumer.rb,
lib/sqreen/ecosystem/tracing/signals/tracing_producer.rb,
lib/sqreen/ecosystem/module_api/tracing/messaging_data.rb,
lib/sqreen/rules/crawler_user_agent_matches_metrics_cb.rb,
lib/sqreen/ecosystem/databases/database_connection_data.rb,
lib/sqreen/ecosystem_integration/instrumentation_service.rb,
lib/sqreen/ecosystem_integration/request_lifecycle_tracking.rb

Overview

Defined Under Namespace

Modules: Actions, Agent, CallCountable, Conditionable, Deliveries, Dependency, Deprecation, Ecosystem, Frameworks, Graft, Js, Kit, Legacy, Log, Metric, PerformanceNotifications, RequestRecorder, Rules, RuntimeInfos, Serializer, SharedStorage, Signals, Util, Weave, WebServer, Worker Classes: AgentMessage, AggregatedMetric, Attack, AttackBlocked, BindingAccessor, CB, CBTree, CappedQueue, ConditionEvaluator, Configuration, Context, DefaultCB, DeferredLogger, EcosystemIntegration, EndpointTesting, ErrorHandlingMiddleware, Event, Exception, FormatterWithTid, FrameworkCB, InvalidSignatureException, Logger, MetricsStore, Middleware, Node, NotImplementedYet, NullLogger, PayloadCreator, Prefix, RailsMiddleware, RemoteCommand, RemoteException, RequestRecord, RunWhenCalledCB, Runner, SafeJSON, SensitiveDataRedactor, Session, ShrinkWrap, SignatureVerifier, SinatraMiddleware, SqreenSignedVerifier, TokenInvalidException, TokenNotFoundException, Trie, Unauthorized, WAFError

Constant Summary collapse

SDK_RESERVED_PREFIX =
'sq.'.freeze
TRACK_PAYLOAD_DATA =
['request'.freeze, 'params'.freeze, 'headers'.freeze].freeze
MAX_QUEUE_LENGTH =

Event Queue that enable communication between threads and the reporter

100
MAX_OBS_QUEUE_LENGTH =
1000
METRICS_EVENT =
'metrics'.freeze
PERF_METRICS_PERIOD =

1 min

60
DEFAULT_PERF_LEVEL =

disabled

0
DEFAULT_USE_SIGNALS =
false
VERSION =
'1.25.1'.freeze
CONFIG_FILE_BY_ENV =
'SQREEN_CONFIG_FILE'.freeze
CONFIG_DESCRIPTION =
{ :env => :SQREEN_DISABLE, :name => :disable,
    :default => false, :convert => :to_bool },
  { :env => :SQREEN_LIBSQREEN, :name => :libsqreen,
    :default => true, :convert => :to_bool },
  { :env => :SQREEN_WEAVE, :name => :weave,
    :default => true, :convert => :to_bool },
  { :env => :SQREEN_WEAVE_STRATEGY, :name => :weave_strategy,
    :default => :prepend, :convert => :to_sym },
  { :env => :SQREEN_URL, :name => :url,
    :default => nil },
  { :env => :SQREEN_INGESTION_URL, :name => :ingestion_url,
    :default => nil },
  { :env => :SQREEN_PROXY_URL, :name => :proxy_url,
    :default => nil },
  { :env => :SQREEN_TOKEN,     :name => :token,
    :default => nil },
  { :env => :SQREEN_APP_NAME,  :name => :app_name,
    :default => nil },
  { :env => :SQREEN_RULES,     :name => :local_rules,
    :default => nil },
  { :env => :SQREEN_RULES_SIGNATURE, :name => :rules_verify_signature,
    :default => true },
  { :env => :SQREEN_RULES_DUMP, :name => :rules_dump,
    :default => false },
  { :env => :SQREEN_LOG_LEVEL, :name => :log_level,
    :default => 'INFO', :choice => %w[UNKNOWN FATAL ERROR WARN INFO DEBUG] },
  { :env => :SQREEN_LOG_LOCATION, :name => :log_location,
    :default => 'log/sqreen.log' },
  { :env => :SQREEN_RUN_IN_TEST, :name => :run_in_test,
    :default => false, :convert => :to_bool },
  { :env => :SQREEN_BLOCK_ALL_RULES, :name => :block_all_rules,
    :default => nil },
  { :env => :SQREEN_REPORT_PERF_NR, :name => :report_perf_newrelic,
    :default => 0, :convert => :to_int },
  { :env => :SQREEN_REPORT_PERF, :name => :report_perf,
    :default => false, :convert => :to_bool },
  { :env => :SQREEN_INITIAL_FEATURES, :name => :initial_features,
    :default => nil },
  { :env => :SQREEN_IP_HEADER, :name => :ip_header,
    :default => nil },
  { :env => :SQREEN_STRIP_SENSITIVE_DATA, :name => :strip_sensitive_data,
    :default => true, :convert => :to_bool },
  { :env => :SQREEN_STRIP_SENSITIVE_KEYS, :name => :strip_sensitive_keys,
    :default => nil },
  { :env => :SQREEN_STRIP_SENSITIVE_REGEX, :name => :strip_sensitive_regex,
    :default => nil },
  { :env => :SQREEN_NO_SNIFF_DOMAINS, :name => :no_sniff_domains,
    :default => false },

].freeze
CONFIG_FILE_NAME =
'sqreen.yml'.freeze
@@framework =
nil

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.featuresObject (readonly)

Returns the value of attribute features.



49
50
51
# File 'lib/sqreen/runner.rb', line 49

def features
  @features
end

.instrumentation_readyObject Also known as: instrumentation_ready?

Returns the value of attribute instrumentation_ready.



62
63
64
# File 'lib/sqreen/runner.rb', line 62

def instrumentation_ready
  @instrumentation_ready
end

.logged_inObject Also known as: logged_in?

Returns the value of attribute logged_in.



65
66
67
# File 'lib/sqreen/runner.rb', line 65

def logged_in
  @logged_in
end

.performance_budgetObject (readonly)

Returns the value of attribute performance_budget.



78
79
80
# File 'lib/sqreen/runner.rb', line 78

def performance_budget
  @performance_budget
end

.whitelisted_ipsObject (readonly)

Returns the value of attribute whitelisted_ips.



73
74
75
# File 'lib/sqreen/runner.rb', line 73

def whitelisted_ips
  @whitelisted_ips
end

.whitelisted_pathsObject (readonly)

Returns the value of attribute whitelisted_paths.



68
69
70
# File 'lib/sqreen/runner.rb', line 68

def whitelisted_paths
  @whitelisted_paths
end

Class Method Details

.auth_track(is_logged_in, authentication_keys) ⇒ Object

Authentication tracking method



17
# File 'lib/sqreen/sdk.rb', line 17

def auth_track(is_logged_in, authentication_keys); end

.config_get(name) ⇒ Object



25
26
27
28
# File 'lib/sqreen/configuration.rb', line 25

def self.config_get(name)
  raise 'No configuration defined' if @config.nil?
  @config.get(name)
end

.config_init(framework = nil) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/sqreen/configuration.rb', line 16

def self.config_init(framework = nil)
  @config = Configuration.new(framework)
  @config.load!
  if @config && config_get(:report_perf_newrelic) > 0
    Sqreen::PerformanceNotifications::NewRelic.enable(config_get(:report_perf_newrelic))
  end
  @config
end

.configured?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/sqreen/configuration.rb', line 30

def self.configured?
  !@config.nil?
end

.escape_haml(x) ⇒ Object

Escape HAML when instrumented to do it



292
293
294
# File 'lib/sqreen/rules/xss_cb.rb', line 292

def self.escape_haml(x)
  x
end

.escape_temple(x) ⇒ Object

Escape Temple when instrumented to do it



297
298
299
# File 'lib/sqreen/rules/xss_cb.rb', line 297

def self.escape_temple(x)
  x
end

.frameworkObject



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/sqreen/frameworks.rb', line 20

def self::framework
  return @@framework if @@framework
  klass = case
          when defined?(::Rails) && defined?(::Rails::VERSION)
            case Rails::VERSION::MAJOR.to_i
            when 4, 5, 6
              require 'sqreen/frameworks/rails'
              Sqreen::Frameworks::RailsFramework
            when 3
              require 'sqreen/frameworks/rails3'
              Sqreen::Frameworks::Rails3Framework
            else
              Sqreen.log.warn "Detected unsupported Rails version #{Rails.version}, but continuing"
              require 'sqreen/frameworks/rails'
              Sqreen::Frameworks::RailsFramework
            end
          when defined?(::Sinatra)
            require 'sqreen/frameworks/sinatra'
            Sqreen::Frameworks::SinatraFramework
          when defined?(::SqreenTest)
            require 'sqreen/frameworks/sqreen_test'
            Sqreen::Frameworks::SqreenTestFramework
          else
            Sqreen.log.error "Error: cannot find any framework\n"
            require 'sqreen/frameworks/generic'
            Sqreen::Frameworks::GenericFramework
          end
  fwk = klass.new
  Sqreen.set_framework(fwk)
end

.identify(authentication_keys, traits = {}) ⇒ Object



21
22
23
24
25
26
27
28
# File 'lib/sqreen/sdk.rb', line 21

def identify(authentication_keys, traits = {})
  return unless Sqreen.framework
  Sqreen.framework.observe(
    :sdk,
    [:identify, Time.now, authentication_keys, traits],
    [], false
  )
end

.internal_track(event_name, options = {}) ⇒ Object

For internal usage. Users are to call track() instead.



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/sqreen/sdk.rb', line 47

def internal_track(event_name, options = {})
  properties = options[:properties]
  user_identifiers = options[:user_identifiers]
  timestamp = options[:timestamp] || Time.now.utc
  # Not in SDK v0
  # request = options[:request]

  args = {}
  args[:user_identifiers] = user_identifiers if user_identifiers
  args[:properties] = properties if properties

  Sqreen.framework.observe(
    :sdk,
    [:track, timestamp, event_name, :args => args],
    TRACK_PAYLOAD_DATA, true
  )
  true
end

.logObject



27
28
29
# File 'lib/sqreen/log.rb', line 27

def self::log
  @logger ||= Sqreen::DeferredLogger.new
end

.log_initObject



16
17
18
19
20
21
22
23
24
25
# File 'lib/sqreen/log.rb', line 16

def self.log_init
  deferred_logger = @logger
  @logger = Sqreen::Logger.new(
    Sqreen.config_get(:log_level).to_s.upcase,
    Sqreen.config_get(:log_location)
  )
  deferred_logger.flush_to(@logger.instance_eval { @logger })
rescue => e
  warn "Sqreen logger exception: #{e}"
end

.observations_queueObject



58
59
60
# File 'lib/sqreen/runner.rb', line 58

def observations_queue
  @observations_queue ||= CappedQueue.new(MAX_OBS_QUEUE_LENGTH)
end

.queueObject



54
55
56
# File 'lib/sqreen/runner.rb', line 54

def queue
  @queue ||= CappedQueue.new(MAX_QUEUE_LENGTH)
end

.set_framework(fwk) ⇒ Object



16
17
18
# File 'lib/sqreen/frameworks.rb', line 16

def self::set_framework(fwk)
  @@framework = fwk
end

.signup_track(authentication_keys) ⇒ Object



19
# File 'lib/sqreen/sdk.rb', line 19

def (authentication_keys); end

.thread_cpu_timeObject



40
41
42
# File 'lib/sqreen/mono_time.rb', line 40

def self.thread_cpu_time
  Process.clock_gettime Process::CLOCK_THREAD_CPUTIME_ID
end

.thread_cpu_time?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/sqreen/mono_time.rb', line 24

def thread_cpu_time?
  @has_thread_cpu_time
end

.timeObject



30
31
32
# File 'lib/sqreen/mono_time.rb', line 30

def self.time
  Process.clock_gettime Process::CLOCK_MONOTONIC
end

.to_bool(value) ⇒ Object



90
91
92
# File 'lib/sqreen/configuration.rb', line 90

def self.to_bool(value)
  %w[1 true].include?(value.to_s.downcase.strip)
end

.to_int(value) ⇒ Object



94
95
96
97
98
# File 'lib/sqreen/configuration.rb', line 94

def self.to_int(value)
  str = value.to_s.downcase.strip
  str = 1 if str == 'true'
  str.to_i
end

.to_sym(value) ⇒ Object



100
101
102
# File 'lib/sqreen/configuration.rb', line 100

def self.to_sym(value)
  value.to_sym
end

.track(event_name, options = {}) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/sqreen/sdk.rb', line 30

def track(event_name, options = {})
  unless Sqreen.framework
    Sqreen.log.warn("Ignored track call (event #{event_name}) due to framework absence")
    return
  end

  Sqreen.log.debug { "Sqreen.track() call (event #{event_name}, options #{options})" }

  if event_name.start_with? SDK_RESERVED_PREFIX
    Sqreen.log.warn("Event names starting with '#{SDK_RESERVED_PREFIX}' " \
                    'are reserved. Event ignored.')
    return false
  end
  internal_track(event_name, options)
end

.update_features(features) ⇒ Object



50
51
52
# File 'lib/sqreen/runner.rb', line 50

def update_features(features)
  @features = features
end

.update_performance_budget(value) ⇒ Object



79
80
81
82
# File 'lib/sqreen/runner.rb', line 79

def update_performance_budget(value)
  return @performance_budget = nil if value.nil?
  @performance_budget = value.to_f / 1000
end

.update_whitelisted_ips(paths) ⇒ Object



74
75
76
# File 'lib/sqreen/runner.rb', line 74

def update_whitelisted_ips(paths)
  @whitelisted_ips = Hash[paths.map { |v| [v, IPAddr.new(v)] }].freeze
end

.update_whitelisted_paths(paths) ⇒ Object



69
70
71
# File 'lib/sqreen/runner.rb', line 69

def update_whitelisted_paths(paths)
  @whitelisted_paths = paths.freeze
end