app/models/mdm/workspace.rb in metasploit_data_models-1.2.2 vs app/models/mdm/workspace.rb in metasploit_data_models-1.2.3
- old
+ new
@@ -233,78 +233,59 @@
# Web forms found on {#web_sites}.
#
# @return [ActiveRecord::Relation<Mdm::WebForm>]
def web_forms
- query = <<-EOQ
- SELECT DISTINCT web_forms.*
- FROM hosts, services, web_sites, web_forms
- WHERE hosts.workspace_id = #{id} AND
- services.host_id = hosts.id AND
- web_sites.service_id = services.id AND
- web_forms.web_site_id = web_sites.id
- EOQ
- Mdm::WebForm.find_by_sql(query)
+ Mdm::WebForm.joins(
+ Mdm::WebForm.join_association(:web_site),
+ Mdm::WebSite.join_association(:service),
+ Mdm::Service.join_association(:host),
+ Mdm::Host.join_association(:workspace)
+ ).where(Mdm::Workspace[:id].eq(id)).uniq
end
# Web pages found on {#web_sites}.
#
# @return [ActiveRecord::Relation<Mdm::WebPage>]
def web_pages
- query = <<-EOQ
- SELECT DISTINCT web_pages.*
- FROM hosts, services, web_sites, web_pages
- WHERE hosts.workspace_id = #{id} AND
- services.host_id = hosts.id AND
- web_sites.service_id = services.id AND
- web_pages.web_site_id = web_sites.id
- EOQ
- Mdm::WebPage.find_by_sql(query)
+ Mdm::WebPage.joins(
+ Mdm::WebPage.join_association(:web_site),
+ Mdm::WebSite.join_association(:service),
+ Mdm::Service.join_association(:host),
+ Mdm::Host.join_association(:workspace)
+ ).where(Mdm::Workspace[:id].eq(id)).uniq
end
# Web sites running on {#services}.
#
# @return [ActiveRecord::Relation<Mdm::WebSite>]
def web_sites
- query = <<-EOQ
- SELECT DISTINCT web_sites.*
- FROM hosts, services, web_sites
- WHERE hosts.workspace_id = #{id} AND
- services.host_id = hosts.id AND
- web_sites.service_id = services.id
- EOQ
- Mdm::WebSite.find_by_sql(query)
+ Mdm::WebSite.joins(
+ Mdm::WebSite.join_association(:service),
+ Mdm::Service.join_association(:host),
+ Mdm::Host.join_association(:workspace)
+ ).where(Mdm::Workspace[:id].eq(id)).uniq
+
end
# Web vulnerability found on {#web_sites}.
#
# @return [ActiveRecord::Relation<Mdm::WebVuln>]
def web_vulns
- query = <<-EOQ
- SELECT DISTINCT web_vulns.*
- FROM hosts, services, web_sites, web_vulns
- WHERE hosts.workspace_id = #{id} AND
- services.host_id = hosts.id AND
- web_sites.service_id = services.id AND
- web_vulns.web_site_id = web_sites.id
- EOQ
- Mdm::WebVuln.find_by_sql(query)
+ Mdm::WebVuln.joins(
+ Mdm::WebVuln.join_association(:web_site),
+ Mdm::WebSite.join_association(:service),
+ Mdm::Service.join_association(:host),
+ Mdm::Host.join_association(:workspace)
+ ).where(Mdm::Workspace[:id].eq(id)).uniq
end
# Web forms on {#web_sites}.
#
# @return [ActiveRecord::Relation<Mdm::WebForm>]
def unique_web_forms
- query = <<-EOQ
- SELECT DISTINCT web_forms.web_site_id, web_forms.path, web_forms.method, web_forms.query
- FROM hosts, services, web_sites, web_forms
- WHERE hosts.workspace_id = #{id} AND
- services.host_id = hosts.id AND
- web_sites.service_id = services.id AND
- web_forms.web_site_id = web_sites.id
- EOQ
- Mdm::WebForm.find_by_sql(query)
+ web_forms.select('web_forms.id, web_forms.web_site_id, web_forms.path, web_forms.method, web_forms.query')
end
# {#unique_web_forms} hosted on `addrs`.
#
# @param addrs [Array<IPAddr, String>] {Mdm::Host#address} for the {Mdm::Service#host} for the {Mdm::WebSite#service}