Module: NewRelic::Security::Instrumentation::SQLite3::Statement

Included in:
Prepend
Defined in:
lib/newrelic_security/instrumentation-security/sqlite3/chain.rb,
lib/newrelic_security/instrumentation-security/sqlite3/prepend.rb,
lib/newrelic_security/instrumentation-security/sqlite3/instrumentation.rb

Defined Under Namespace

Modules: Chain, Prepend

Instance Method Summary collapse

Instance Method Details

#bind_params_on_enter(*bind_vars) ⇒ Object



102
103
104
105
106
107
108
109
110
111
# File 'lib/newrelic_security/instrumentation-security/sqlite3/instrumentation.rb', line 102

def bind_params_on_enter(*bind_vars)
  event = nil
  NewRelic::Security::Agent.logger.debug "OnEnter : #{self.class}.#{__method__}"
  NewRelic::Security::Agent::Control::HTTPContext.get_context.cache[self.object_id][:parameters] = bind_vars.flatten if NewRelic::Security::Agent::Control::HTTPContext.get_context && NewRelic::Security::Agent::Control::HTTPContext.get_context.cache.key?(self.object_id)
rescue => exception
  NewRelic::Security::Agent.logger.error "Exception in hook in #{self.class}.#{__method__}, #{exception.inspect}, #{exception.backtrace}"
ensure
  yield
  return event
end

#bind_params_on_exit(event) ⇒ Object



113
114
115
116
117
118
119
# File 'lib/newrelic_security/instrumentation-security/sqlite3/instrumentation.rb', line 113

def bind_params_on_exit(event)
  NewRelic::Security::Agent.logger.debug "OnExit :  #{self.class}.#{__method__}"
rescue => exception
  NewRelic::Security::Agent.logger.error "Exception in hook in #{self.class}.#{__method__}, #{exception.inspect}, #{exception.backtrace}"
ensure
  yield
end

#execute_on_enter(*bind_vars) ⇒ Object



121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# File 'lib/newrelic_security/instrumentation-security/sqlite3/instrumentation.rb', line 121

def execute_on_enter(*bind_vars)
  event = nil
  NewRelic::Security::Agent.logger.debug "OnEnter : #{self.class}.#{__method__}"
  ic_args = []
  key = self.object_id
  if NewRelic::Security::Agent::Control::HTTPContext.get_context && NewRelic::Security::Agent::Control::HTTPContext.get_context.cache.key?(self.object_id)
    if bind_vars.length == 0
      ic_args.push(NewRelic::Security::Agent::Control::HTTPContext.get_context.cache[key])
    else
      hash = {}
      hash[:sql] = NewRelic::Security::Agent::Control::HTTPContext.get_context.cache[key][:sql]
      hash[:parameters] = bind_vars.flatten
      ic_args.push(hash)
    end
  end
  if ic_args[0].has_key?(:sql)
    event = NewRelic::Security::Agent::Control::Collector.collect(SQL_DB_COMMAND, ic_args, SQLITE) unless NewRelic::Security::Instrumentation::InstrumentationUtils.sql_filter_events?(ic_args[0][:sql])
  else
    event = NewRelic::Security::Agent::Control::Collector.collect(SQL_DB_COMMAND, ic_args, SQLITE)
  end
  NewRelic::Security::Agent::Control::HTTPContext.get_context.cache.delete(key) if NewRelic::Security::Agent::Control::HTTPContext.get_context
rescue => exception
  NewRelic::Security::Agent.logger.error "Exception in hook in #{self.class}.#{__method__}, #{exception.inspect}, #{exception.backtrace}"
ensure
  yield
  return event
end

#execute_on_exit(event) ⇒ Object



149
150
151
152
153
154
155
156
# File 'lib/newrelic_security/instrumentation-security/sqlite3/instrumentation.rb', line 149

def execute_on_exit(event)
  NewRelic::Security::Agent.logger.debug "OnExit :  #{self.class}.#{__method__}"
  NewRelic::Security::Agent::Utils.create_exit_event(event)
rescue => exception
  NewRelic::Security::Agent.logger.error "Exception in hook in #{self.class}.#{__method__}, #{exception.inspect}, #{exception.backtrace}"
ensure
  yield
end

#initialize_on_enter(db, sql) ⇒ Object



83
84
85
86
87
88
89
90
91
# File 'lib/newrelic_security/instrumentation-security/sqlite3/instrumentation.rb', line 83

def initialize_on_enter(db, sql)
  event = nil
  NewRelic::Security::Agent.logger.debug "OnEnter : #{self.class}.#{__method__}"
rescue => exception
  NewRelic::Security::Agent.logger.error "Exception in hook in #{self.class}.#{__method__}, #{exception.inspect}, #{exception.backtrace}"
ensure
  yield
  return event
end

#initialize_on_exit(event, retval, sql) ⇒ Object



93
94
95
96
97
98
99
100
# File 'lib/newrelic_security/instrumentation-security/sqlite3/instrumentation.rb', line 93

def initialize_on_exit(event, retval, sql)
  NewRelic::Security::Agent.logger.debug "OnExit :  #{self.class}.#{__method__}"
  NewRelic::Security::Agent::Control::HTTPContext.get_context.cache[retval.object_id] = { :sql => sql } if NewRelic::Security::Agent::Control::HTTPContext.get_context
rescue => exception
  NewRelic::Security::Agent.logger.error "Exception in hook in #{self.class}.#{__method__}, #{exception.inspect}, #{exception.backtrace}"
ensure
  yield
end