module PWN::Plugins::DAOPostgres

def self.authors

def self.authors
st.pentest@0dayinc.com>

def self.connect(opts = {})

def self.connect(opts = {})
.to_s
rt].nil? || opts[:port].zero?
t].to_i
ame].to_s
.to_s
[:password].nil?
Plugins::AuthenticationHelper.mask_password
:password].to_s
if opts[:connect_timeout].nil?
  60
else
  opts[:connect_timeout].to_i
end
tions]
]
le'
'
r'
re'
valid :sslmode => #{opts[:sslmode]}. Valid params are :disable, :allow, :prefer, or :require"
ection.new(
rd,
 connect_timeout,
,

g_conn: pg_conn)
 => e

def self.disconnect(opts = {})

def self.disconnect(opts = {})
_conn]
g_conn: pg_conn)
 => e

def self.help

def self.help
}.connect(
d host or IP',
l port (defaults to 5432)',
red database name',
d username',
ional (prompts if left blank)',
t: 'optional (defaults to 60 seconds)',
onal postgres options',
 tty',
ble|:allow|:prefer|:require
l_statement(
nn,
ment: 'SELECT * FROM tn_users WHERE state = $1',
ms: ['Active']
st_all_columns_by_table(
nn,
red schema name',
equired table name'
ct(pg_conn: pg_conn)

def self.list_all_columns_by_table(opts = {})

def self.list_all_columns_by_table(opts = {})
_conn]
g_conn: pg_conn)
s[:table_schema].to_s
:table_name].to_s
formation_schema.columns
ma = $1
 $2
,
nt: prep_sql,
: [table_schema, table_name]
 => e

def self.sql_statement(opts = {})

def self.sql_statement(opts = {})
_conn]
g_conn: pg_conn)
 = opts[:prepared_statement] # Can also be leveraged for 'select * from user;'
 opts[:statement_params] # << Array of Params
tement_params => #{statement_params.class}. Pass as an Array object" unless statement_params.instance_of?(Array) || statement_params.nil?
s.nil?
pared_statement)
pared_statement, statement_params)
 => e

def self.validate_pg_conn(opts = {})

def self.validate_pg_conn(opts = {})
conn]
id pg_conn Object #{pg_conn}" unless pg_conn.instance_of?(PG::Connection)
=> e