mirror of
https://github.com/cliffe/SecGen.git
synced 2026-02-21 19:28:02 +00:00
73 lines
1.8 KiB
Ruby
73 lines
1.8 KiB
Ruby
require_relative 'systemreader.rb'
|
|
|
|
class Configuration
|
|
|
|
# populates the system class with an array of System objects.
|
|
def initialize
|
|
@systemreader = SystemReader.new
|
|
@systems = init_systems()
|
|
end
|
|
|
|
def get_systems
|
|
if @systems.empty?
|
|
init_systems()
|
|
end
|
|
return @systems
|
|
end
|
|
|
|
def init_systems()
|
|
@systems = @systemreader.parse_systems
|
|
end
|
|
|
|
def self.networks
|
|
if defined? @@networks
|
|
return @@networks
|
|
end
|
|
return @@networks = _get_list(NETWORKS_XML, "//networks/network", Network)
|
|
end
|
|
|
|
def self.bases
|
|
if defined? @@bases
|
|
return @@bases
|
|
end
|
|
return @@bases = _get_list(BASE_XML, "//bases/base", Basebox)
|
|
end
|
|
|
|
def self.vulnerabilities
|
|
if defined? @@vulnerabilities
|
|
return @@vulnerabilities
|
|
end
|
|
return @@vulnerabilities = _get_list(VULN_XML, "//vulnerabilities/vulnerability", Vulnerability)
|
|
end
|
|
|
|
def self.services
|
|
if defined? @@services
|
|
return @@services
|
|
end
|
|
return @@services = _get_list(SERVICES_XML, "//services/service", Service)
|
|
end
|
|
|
|
def self._get_list(xmlfile, xpath, cls)
|
|
itemlist = []
|
|
|
|
doc = Nokogiri::XML(File.read(xmlfile))
|
|
doc.xpath(xpath).each do |item|
|
|
# new class e.g networks
|
|
obj = cls.new
|
|
# checks to see if there are children puppet and add string to obj.puppets
|
|
# move this to vulnerabilities/services classes?
|
|
if defined? obj.puppets
|
|
item.xpath("puppets/puppet").each { |c| obj.puppets << c.text.strip if not c.text.strip.empty? }
|
|
item.xpath("ports/port").each { |c| obj.ports << c.text.strip if not c.text.strip.empty? }
|
|
end
|
|
# too specific move to vuln class end
|
|
item.each do |attr, value|
|
|
|
|
obj.send "#{attr}=", value
|
|
end
|
|
# vulnerability item
|
|
itemlist << obj
|
|
end
|
|
return itemlist
|
|
end
|
|
end |