lib/alertlogic_helper/threat_manager.rb
# Alertlogic Helper
module AlertlogicHelper
# Threat Manager Helper
module ThreatManager
# rubocop:disable MethodLength
# rubocop:disable Metrics/AbcSize
def process_tm_policies(customer_id, policies)
headers = [
'Policy ID',
'Name',
'Appliance Assignment',
'Type'
]
data = []
tables = []
reply_head = "/code Threat Policies for customer: #{customer_id} \n"
policies['policies'].each do |policy|
data << [
policy['policy']['id'],
policy['policy']['name'],
!policy['policy']['appliance_assignment'].nil? ? policy['policy']['appliance_assignment']['appliances'].join(',') : nil,
policy['policy']['type']
]
if check_msg_size?(build_table(data, headers))
tables << [data, headers]
data = []
end
end
summary = "\nTotal Policies: #{policies['total_count']}"
if tables.length > 0
reply = [reply_head, tables, summary]
return reply
else
reply = reply_head
reply << build_table(data, headers)
reply << summary
end
end
# rubocop:enable MethodLength
# rubocop:enable Metrics/AbcSize
# rubocop:disable MethodLength
# rubocop:disable Metrics/AbcSize
def process_tm_hosts(customer_id, hosts)
headers = [
'Host Name',
'Host ID',
'Type',
'IP Address',
'Status'
]
data = []
tables = []
reply_head = "/code Threat Hosts for customer: #{customer_id} \n"
hosts['hosts'].each do |host|
if !host['host']['metadata'].nil?
ipv4 = host['host']['metadata']['local_ipv4']
else
ipv4 = ''
end
data << [
host['host']['name'],
host['host']['id'],
host['host']['type'],
ipv4,
host['host']['status']['status']
]
if check_msg_size?(build_table(data, headers))
tables << [data, headers]
data = []
end
end
summary = "\nTotal Hosts: #{hosts['total_count']}"
if tables.length > 0
reply = [reply_head, tables, summary]
return reply
else
reply = reply_head
reply << build_table(data, headers)
reply << summary
end
end
# rubocop:enable Metrics/AbcSize
# rubocop:enable MethodLength
# rubocop:disable Metrics/AbcSize
def process_protectedhosts(customer_id, phosts)
phost_list = phosts['protectedhosts']
reply = "/code Protectedhosts Status for customer: #{customer_id} \n"
ok = 0
error = 0
new = 0
offline = 0
total = 0
other = 0
headers = %w(OK Error New Offline Unknown)
data = []
phost_list.each do |phost|
status = phost['protectedhost']['status']['status'].strip
ok += 1 if status == 'ok'
error += 1 if status == 'error'
new += 1 if status == 'new'
offline += 1 if status == 'offline'
other += 1 unless %w(ok error new offline).include? status
total += 1
end
data << [ok, error, new, offline, other]
reply << build_table(data, headers)
reply << "\nTotal Protected Hosts: #{total}"
end
# rubocop:enable Metrics/AbcSize
def search_phost_by_name(key, search_term, phosts)
phosts['protectedhosts'].each do |phost|
if search?(key, search_term, phost['protectedhost'])
return JSON.pretty_generate(phost['protectedhost'])
end
end
end
# rubocop:disable MethodLength
# rubocop:disable Metrics/AbcSize
# rubocop:disable Metrics/PerceivedComplexity
def process_protectedhosts_list(customer_id, phosts)
phost_list = phosts['protectedhosts']
reply_head = "/code Protectedhosts Status for customer: #{customer_id} \n"
headers = %w(Name VPC Status)
data = []
tables = []
total = 0
phost_list.each do |phost|
total += 1
if phost['protectedhost'].key?('metadata')
if phost['protectedhost']['metadata'].key?('ec2_vpc')
vpc = phost['protectedhost']['metadata']['ec2_vpc'].join(',')
else
vpc = 'No VPC found'
end
else
vpc = 'No metadata was found'
end
data << [
phost['protectedhost']['name'].strip,
vpc,
phost['protectedhost']['status']['status'].strip
]
if check_msg_size?(build_table(data, headers))
tables << [data, headers]
data = []
end
end
summary = "/code Total Protected Hosts: #{total}"
if tables.length > 0
reply = [reply_head, tables, summary]
reply
else
reply = reply_head
reply << build_table(data, headers)
reply << summary
end
end
# rubocop:enable MethodLength
# rubocop:enable Metrics/AbcSize
# rubocop:enable Metrics/PerceivedComplexity
end
end