Class: Mdm::Service

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/mdm/service.rb

Overview

A service, such as an ssh server or web server, running on a #host.

Constant Summary collapse

STATES =

Valid values for #state.

['open', 'closed', 'filtered', 'unknown']

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#credsActiveRecord::Relation<Mdm::Cred>

Credentials gathered from this service.

Returns:



18
19
20
21
# File 'app/models/mdm/service.rb', line 18

has_many :creds,
class_name: 'Mdm::Cred',
dependent: :destroy,
inverse_of: :service

#exploit_attemptsActiveRecord::Relation<Mdm::ExploitAttempt>

Exploit attempts against this service.

Returns:



27
28
29
30
# File 'app/models/mdm/service.rb', line 27

has_many :exploit_attempts,
class_name: 'Mdm::ExploitAttempt',
dependent: :destroy,
inverse_of: :service

#exploited_hostsArray<Mdm::ExploitHost>

TODO:

MSP-2732

Returns:

  • (Array<Mdm::ExploitHost>)


35
36
37
38
# File 'app/models/mdm/service.rb', line 35

has_many :exploited_hosts,
class_name: 'Mdm::ExploitedHost',
dependent: :destroy,
inverse_of: :service

#hostMdm::Host

The host on which this service runs.

Returns:



44
45
46
47
# File 'app/models/mdm/service.rb', line 44

belongs_to :host,
class_name: 'Mdm::Host',
counter_cache: :service_count,
inverse_of: :services

#infoString

Additional information about the service that does not fit in the #name or #proto.

Returns:

  • (String)


# File 'app/models/mdm/service.rb', line 130

#lootsActiveRecord::Relation<Mdm::Loot>

Loot gathers from this service.

Returns:



53
54
55
56
# File 'app/models/mdm/service.rb', line 53

has_many :loots,
class_name: 'Mdm::Loot',
dependent: :destroy,
inverse_of: :service

#nameString

The name of the service.

Returns:

  • (String)


# File 'app/models/mdm/service.rb', line 140

#notesActiveRecord::Relation<Mdm::Note>

Notes about this service.

Returns:



62
63
64
65
# File 'app/models/mdm/service.rb', line 62

has_many :notes,
class_name: 'Mdm::Note',
dependent: :destroy,
inverse_of: :service

#portInteger

The port on which this service runs on the #host.

Returns:

  • (Integer)


# File 'app/models/mdm/service.rb', line 135

#protoString

The protocol used by this service

Returns:

  • (String)


# File 'app/models/mdm/service.rb', line 145

#stateString

Whether this service is opened, closed, filtered, or in an unknown state.

Returns:

  • (String)

    element of STATES.



# File 'app/models/mdm/service.rb', line 150

#task_servicesArray<Mdm::TaskService>

Details about what Tasks touched this service

Returns:



71
72
73
74
# File 'app/models/mdm/service.rb', line 71

has_many :task_services,
class_name: 'Mdm::TaskService',
dependent: :destroy,
inverse_of: :service

#tasksArray<Mdm::Task>

Tasks that touched this service

Returns:



102
# File 'app/models/mdm/service.rb', line 102

has_many :tasks, :through => :task_services, :class_name => 'Mdm::Task'

#vulnsActiveRecord::Relation<Mdm::Vuln>

Vulnerabilities found in this service.

Returns:



80
81
82
83
# File 'app/models/mdm/service.rb', line 80

has_many :vulns,
class_name: 'Mdm::Vuln',
dependent: :destroy,
inverse_of: :service

#web_formsArray<Mdm::WebForm> (readonly)

Form in the #web_sites on top of this service.

Returns:



118
# File 'app/models/mdm/service.rb', line 118

has_many :web_forms, :through => :web_sites, :class_name => 'Mdm::WebForm'

#web_pagesArray<Mdm::WebPages> (readonly)

Web pages in the #web_sites on top of this service.

Returns:

  • (Array<Mdm::WebPages>)


112
# File 'app/models/mdm/service.rb', line 112

has_many :web_pages, :through => :web_sites, :class_name => 'Mdm::WebPage'

#web_sitesActiveRecord::Relation<Mdm::WebSite>

Web sites running on top of this service.

Returns:



89
90
91
92
# File 'app/models/mdm/service.rb', line 89

has_many :web_sites,
class_name: 'Mdm::WebSite',
dependent: :destroy,
inverse_of: :service

#web_vulnsArray<Mdm::WebVuln> (readonly)

Vulnerabilities found in the #web_sites on top of this service.

Returns:



124
# File 'app/models/mdm/service.rb', line 124

has_many :web_vulns, :through => :web_sites, :class_name => 'Mdm::WebVuln'

Instance Method Details

#normalize_host_osvoid

This method returns an undefined value.

Normalizes the host operating system whenever #info has changed.



190
191
192
193
194
# File 'app/models/mdm/service.rb', line 190

def normalize_host_os
  if info_changed?
    host.normalize_os
  end
end