class OpenvasCli::VasTarget
Attributes
comment[R]
in_use[RW]
name[R]
port_range[R]
Public Class Methods
create!(params={})
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 161 def self.create!(params={}) t = VasTarget.new(params) t.save! t end
get_all(options = {})
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 168 def self.get_all(options = {}) params = {:tasks => 1} params[:target_id] = options[:id] if options[:id] req = Nokogiri::XML::Builder.new { |xml| xml.get_targets(params) } ret = [] begin targets = connection.send_receive(req.doc) targets.xpath('//target').each { |t| targ = VasTarget.new targ.id = extract_value_from("@id", t) targ.name = extract_value_from("name", t) host_string = extract_value_from("hosts", t) all_hosts = host_string.split(/,/) all_hosts.each { |hst| hst.strip! } targ.hosts = all_hosts targ.comment = extract_value_from("comment", t) targ.port_range = extract_value_from("port_range", t) targ.in_use = extract_value_from("in_use", t).to_i > 0 targ.credential_keys[:ssh] = extract_value_from("ssh_lsc_credential/@id", t) targ.credential_keys[:smb] = extract_value_from("smb_lsc_credential/@id", t) t.xpath('tasks/task').each { |task| targ.task_keys << extract_value_from("@id", task) } targ.reset_changes ret << targ } rescue VasExceptions::CommandException => e raise e unless e.message =~ /Failed to find target/i end ret end
get_local_subnets()
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 45 def self.get_local_subnets adrs = [] `ifconfig`.split("\n").each { |cmd| if cmd =~ /inet addr:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s+.*Mask:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/i adrs << IPAddress("#{$1}/#{$2}") unless $1 == '127.0.0.1' end } adrs.collect{ |a| a.network.to_string } end
new(params = {})
click to toggle source
Calls superclass method
OpenvasCli::VasBase::new
# File lib/openvas-cli/vas_target.rb, line 56 def initialize(params = {}) super(params) @org_hosts = @hosts.collect { |h| h } if @hosts end
Public Instance Methods
changed?()
click to toggle source
Calls superclass method
# File lib/openvas-cli/vas_target.rb, line 30 def changed? local_changes = false local_changes = true unless @org_hosts && @org_hosts.eql?(@hosts) unless local_changes == true local_changes = credential_changed?(:ssh) || credential_changed?(:smb) end local_changes || super end
comment=(val)
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 20 def comment=(val) comment_will_change! unless val == @comment @comment = val end
create_or_update()
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 113 def create_or_update if @id return unless destroy end req = Nokogiri::XML::Builder.new { |xml| xml.create_target { xml.name { xml.text(@name) } xml.comment { xml.text(@comment) } if @comment xml.hosts { xml.text(hosts_string) } xml.ssh_lsc_credential(:id => credentials[:ssh].id) if credentials[:ssh] xml.smb_lsc_credential(:id => credentials[:smb].id) if credentials[:smb] xml.port_range { xml.text(@port_range) } if @port_range } } begin resp = VasTarget.connection.send_receive(req.doc) @id = VasTarget.extract_value_from("create_target_response/@id", resp) reset_changes true rescue VasExceptions::CommandException => e errors[:command_failure] << e.message nil end end
credential_keys()
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 66 def credential_keys @credential_keys ||= { :smb => nil, :ssh => nil } end
credentials()
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 62 def credentials @credentials ||= get_credentials end
delete_record()
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 142 def delete_record return unless @id req = Nokogiri::XML::Builder.new { |xml| xml.delete_target(:target_id => @id) } begin VasTarget.connection.send_receive(req.doc) @id = nil true rescue VasExceptions::CommandException => e errors[:command_failure] << e.message nil end end
hosts()
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 94 def hosts @hosts ||= [] end
hosts=(val)
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 98 def hosts=(val) hosts_will_change! unless @hosts.eql?(val) @hosts = val @org_hosts = val.collect { |h| h } if val end
hosts_string()
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 105 def hosts_string hosts.join(", ") end
hosts_string=(val)
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 109 def hosts_string=(val) self.hosts = val.split(/, ?/) end
name=(val)
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 15 def name=(val) name_will_change! unless val == @name @name = val end
port_range=(val)
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 25 def port_range=(val) port_range_will_change! unless val == @port_range @port_range = val end
smb_credential_id()
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 70 def smb_credential_id credentials[:smb].id if credentials[:smb] end
smb_credential_id=(val)
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 74 def smb_credential_id=(val) credentials[:smb] = VasLscCredential.get_by_id(val) end
ssh_credential_id()
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 78 def ssh_credential_id credentials[:ssh].id if credentials[:ssh] end
ssh_credential_id=(val)
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 82 def ssh_credential_id=(val) credentials[:ssh] = VasLscCredential.get_by_id(val) end
task_keys()
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 90 def task_keys @task_keys ||= [] end
tasks()
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 86 def tasks @tasks ||= get_tasks end
Private Instance Methods
credential_changed?(key)
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 231 def credential_changed?(key) credential_keys[key] = nil if credential_keys[key] && credential_keys[key].empty? if credential_keys[key] == nil && credentials[key] != nil return true elsif credential_keys[key] != nil && credentials[key] == nil return true elsif credential_keys[key] == nil && credentials[key] == nil return false else return credential_keys[key] != credentials[key].id end end
get_credentials()
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 221 def get_credentials ret = { :ssh => nil, :smb => nil } @credential_keys.each { |key, value| ret[key] = VasLscCredential.get_all(:id => value)[0] if value && !value.empty? } if @credential_keys ret end
get_tasks()
click to toggle source
# File lib/openvas-cli/vas_target.rb, line 211 def get_tasks ret = [] @task_keys.each { |key| ret << VasTask.get_all(:task_id => key) } ret end