intrigue-ident 0.4 → 0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +0 -1
  3. data/Gemfile.lock +0 -6
  4. data/data/logos/apache.png +0 -0
  5. data/data/logos/generic.png +0 -0
  6. data/data/logos/oracle_java.png +0 -0
  7. data/data/logos/php.png +0 -0
  8. data/data/logos/varnish.png +0 -0
  9. data/intrigue-ident.gemspec +2 -2
  10. data/lib/checks/acquia.rb +26 -0
  11. data/lib/checks/adobe.rb +38 -0
  12. data/lib/checks/akamai.rb +6 -4
  13. data/lib/checks/amazon.rb +54 -8
  14. data/lib/checks/apache.rb +113 -0
  15. data/lib/checks/aruba.rb +6 -3
  16. data/lib/checks/atlassian.rb +46 -28
  17. data/lib/checks/automattic.rb +189 -0
  18. data/lib/checks/axis.rb +24 -0
  19. data/lib/checks/banu.rb +28 -0
  20. data/lib/checks/base.rb +58 -0
  21. data/lib/checks/checkpoint.rb +55 -0
  22. data/lib/checks/chef.rb +16 -12
  23. data/lib/checks/cisco.rb +85 -12
  24. data/lib/checks/citrix.rb +81 -6
  25. data/lib/checks/cloudflare.rb +40 -30
  26. data/lib/checks/cpanel.rb +8 -6
  27. data/lib/checks/craft.rb +25 -0
  28. data/lib/checks/django.rb +8 -6
  29. data/lib/checks/docuwiki.rb +25 -0
  30. data/lib/checks/drupal.rb +25 -8
  31. data/lib/checks/f5.rb +35 -7
  32. data/lib/checks/fastly.rb +22 -7
  33. data/lib/checks/generic.rb +34 -6
  34. data/lib/checks/gitlab.rb +12 -6
  35. data/lib/checks/google.rb +19 -6
  36. data/lib/checks/grafana.rb +8 -6
  37. data/lib/checks/groovy.rb +24 -0
  38. data/lib/checks/heroku.rb +27 -0
  39. data/lib/checks/hp.rb +25 -0
  40. data/lib/checks/ibm.rb +77 -0
  41. data/lib/checks/ivanti.rb +27 -0
  42. data/lib/checks/jamf.rb +26 -0
  43. data/lib/checks/jekyll.rb +28 -0
  44. data/lib/checks/jenkins.rb +24 -18
  45. data/lib/checks/jive.rb +25 -0
  46. data/lib/checks/jobvite.rb +25 -0
  47. data/lib/checks/joomla.rb +9 -6
  48. data/lib/checks/jupyter.rb +26 -0
  49. data/lib/checks/lighttpd.rb +28 -0
  50. data/lib/checks/limesuvey.rb +8 -6
  51. data/lib/checks/lithium.rb +15 -11
  52. data/lib/checks/lotus.rb +27 -0
  53. data/lib/checks/magento.rb +8 -6
  54. data/lib/checks/mailchimp.rb +25 -0
  55. data/lib/checks/mcafee.rb +8 -6
  56. data/lib/checks/mediawiki.rb +31 -32
  57. data/lib/checks/microsoft.rb +240 -34
  58. data/lib/checks/microtik.rb +27 -0
  59. data/lib/checks/nagios.rb +8 -6
  60. data/lib/checks/new_relic.rb +25 -0
  61. data/lib/checks/nginx.rb +40 -0
  62. data/lib/checks/okta.rb +25 -0
  63. data/lib/checks/ookla.rb +27 -0
  64. data/lib/checks/openresty.rb +25 -0
  65. data/lib/checks/oracle.rb +208 -17
  66. data/lib/checks/palo_alto.rb +6 -4
  67. data/lib/checks/pantheon.rb +26 -0
  68. data/lib/checks/pardot.rb +8 -6
  69. data/lib/checks/perfectsense.rb +27 -0
  70. data/lib/checks/pfsense.rb +8 -9
  71. data/lib/checks/php.rb +41 -0
  72. data/lib/checks/phpmyadmin.rb +8 -6
  73. data/lib/checks/ping_identity.rb +27 -0
  74. data/lib/checks/pivotal.rb +24 -0
  75. data/lib/checks/plesk.rb +41 -0
  76. data/lib/checks/pulse_secure.rb +27 -0
  77. data/lib/checks/rabbitmq.rb +15 -11
  78. data/lib/checks/restlet.rb +28 -0
  79. data/lib/checks/ruckus_wireless.rb +24 -0
  80. data/lib/checks/sailpoint.rb +27 -0
  81. data/lib/checks/sap.rb +43 -0
  82. data/lib/checks/tableau.rb +26 -0
  83. data/lib/checks/team_city.rb +8 -6
  84. data/lib/checks/telerik.rb +23 -8
  85. data/lib/checks/varnish.rb +8 -11
  86. data/lib/checks/vmware.rb +38 -0
  87. data/lib/checks/webmin.rb +41 -0
  88. data/lib/checks/wp_engine.rb +10 -6
  89. data/lib/checks/yaws.rb +29 -0
  90. data/lib/checks/zeit.rb +28 -0
  91. data/lib/checks/zendesk.rb +39 -0
  92. data/lib/checks/zimbra.rb +24 -0
  93. data/lib/checks/zscaler.rb +28 -0
  94. data/{ident.rb → lib/intrigue-ident.rb} +66 -32
  95. data/lib/traverse_exceptions.rb +196 -0
  96. data/util/check.rb +20 -0
  97. data/util/list.rb +9 -0
  98. metadata +58 -9
  99. data/lib/checks/asp_net.rb +0 -70
  100. data/lib/checks/cloudfront.rb +0 -41
  101. data/lib/checks/spring.rb +0 -31
  102. data/lib/checks/tomcat.rb +0 -22
  103. data/lib/checks/wordpress.rb +0 -120
data/lib/checks/citrix.rb CHANGED
@@ -3,17 +3,92 @@ module Ident
3
3
  module Check
4
4
  class Citrix < Intrigue::Ident::Check::Base
5
5
 
6
- def generate_checks(uri)
6
+ def generate_checks(url)
7
7
  [
8
8
  {
9
- :name => "Citrix Netscaler Gateway",
10
- :description => "Citrix Netscaler Gateway",
9
+ :type => "application",
10
+ :vendor => "Citrix",
11
+ :product => "Netscaler Gateway",
12
+ :match_details => "Citrix Netscaler Gateway",
11
13
  :tags => ["tech:vpn"],
12
14
  :version => nil,
13
- :type => :content_body,
14
- :content => /<title>Netscaler Gateway/,
15
+ :match_type => :content_body,
16
+ :match_content => /<title>Netscaler Gateway/,
15
17
  :hide => false,
16
- :paths => ["#{uri}"]
18
+ :paths => ["#{url}"]
19
+ },
20
+ {
21
+ :type => "application",
22
+ :vendor => "Citrix",
23
+ :product => "Netscaler Gateway",
24
+ :match_details => "(often) customized logon page - netscaler gateway",
25
+ :tags => ["tech:vpn"],
26
+ :version => nil,
27
+ :match_type => :content_body,
28
+ :match_content => /CTXMSAM_LogonFont/,
29
+ :hide => false,
30
+ :paths => ["#{url}"]
31
+ },
32
+ {
33
+ :type => "application",
34
+ :vendor => "Citrix",
35
+ :product => "Netscaler Gateway",
36
+ :match_details => "misspelled content-length header",
37
+ :tags => ["tech:vpn"],
38
+ :references => ["https://support.citrix.com/article/CTX211605"],
39
+ :version => nil,
40
+ :match_type => :content_headers,
41
+ :match_content => /^cteonnt-length:.*$/,
42
+ :hide => false,
43
+ :paths => ["#{url}"],
44
+ :examples => ["http://204.29.196.116:80"]
45
+ },
46
+ {
47
+ :type => "application",
48
+ :vendor => "Citrix",
49
+ :product => "Netscaler Gateway",
50
+ :match_details => "cookie",
51
+ :tags => ["tech:vpn"],
52
+ :references => ["https://support.citrix.com/article/CTX131488"],
53
+ :version => nil,
54
+ :match_type => :content_cookies,
55
+ :match_content => /citrix_ns_id=/,
56
+ :hide => false,
57
+ :paths => ["#{url}"],
58
+ :verify => ["dW5kZXJhcm1vdXIjSW50cmlndWU6OkVudGl0eTo6VXJpI2h0dHA6Ly8yMDQuMjkuMTk2LjEwMjo4MA=="],
59
+ :examples => ["http://204.29.196.102:80"]
60
+ },
61
+ {
62
+ :type => "application",
63
+ :vendor => "Citrix",
64
+ :product => "XenServer",
65
+ :match_details => "page title",
66
+ :tags => ["tech:hypervisor"],
67
+ :references => [""],
68
+ :version => nil,
69
+ :dynamic_version => lambda { |x| _first_body_capture(x,/<title>XenServer (.*?)<\/title>/) },
70
+ :match_type => :content_body,
71
+ :match_content => /<title>XenServer/,
72
+ :hide => false,
73
+ :paths => ["#{url}"],
74
+ :verify => ["aWJtI0ludHJpZ3VlOjpFbnRpdHk6OlVyaSNodHRwOi8vMTU4Ljg1LjE3My4zNzo4MA=="],
75
+ :examples => ["http://158.85.173.37:80"]
76
+ },
77
+ {
78
+ :type => "application",
79
+ :vendor => "Citrix",
80
+ :product => "XenServer",
81
+ :match_details => "page title",
82
+ :tags => ["tech:hypervisor"],
83
+ :references => [""],
84
+ :version => nil,
85
+ :dynamic_version => lambda { |x| _first_body_capture(x,/<title>Welcome to Citrix XenServer (.*?)<\/title>/) },
86
+ :match_type => :content_body,
87
+ :match_content => /<title>Welcome to Citrix XenServer/,
88
+ :hide => false,
89
+ :paths => ["#{url}"],
90
+ :verify => ["aWJtI0ludHJpZ3VlOjpFbnRpdHk6OlVyaSNodHRwczovLzIzLmRjLjU1OWUuaXA0LnN0YXRpYy5zbC1yZXZlcnNlLmNvbTo0NDM="],
91
+ :examples => ["https://23.dc.559e.ip4.static.sl-reverse.com:443"]
17
92
  }
18
93
  ]
19
94
  end
@@ -3,52 +3,62 @@ module Ident
3
3
  module Check
4
4
  class Cloudflare < Intrigue::Ident::Check::Base
5
5
 
6
- def generate_checks(uri)
6
+ def generate_checks(url)
7
7
  [
8
8
  {
9
- :name => "Cloudflare",
10
- :description => "Cloudflare Accelerated Page",
11
- :version => "",
12
- :type => :content_cookies,
13
- :content => /__cfduid/i,
14
- :paths => ["#{uri}"]
9
+ :type => "service",
10
+ :vendor => "Cloudflare",
11
+ :product => "CDN",
12
+ :version => nil,
13
+ :match_type => :content_cookies,
14
+ :match_content => /__cfduid/i,
15
+ :match_details =>"Cloudflare Accelerated Page",
16
+ :paths => ["#{url}"]
15
17
  },
16
18
  {
17
- :name => "Cloudflare",
18
- :description => "Cloudflare Server",
19
- :version => "",
20
- :type => :content_headers,
21
- :content => /cloudflare-nginx/i,
22
- :paths => ["#{uri}"]
19
+ :type => "service",
20
+ :vendor => "Cloudflare",
21
+ :product => "CDN",
22
+ :version => nil,
23
+ :match_type => :content_headers,
24
+ :match_content => /cloudflare-nginx/i,
25
+ :match_details =>"Cloudflare Server",
26
+ :paths => ["#{url}"]
23
27
  },
24
28
  {
25
- :name => "Cloudflare",
26
- :description => "Cloudflare - Direct IP Access",
29
+ :type => "service",
30
+ :vendor => "Cloudflare",
31
+ :product => "CDN",
27
32
  :tags => ["error_page"],
28
- :version => "",
29
- :type => :content_body,
30
- :content => /<title>Direct IP access not allowed \| Cloudflare/,
33
+ :version => nil,
34
+ :match_type => :content_body,
35
+ :match_content => /<title>Direct IP access not allowed \| Cloudflare/,
36
+ :match_details =>"Cloudflare - Direct IP Access",
31
37
  :hide => true,
32
- :paths => ["#{uri}"]
38
+ :paths => ["#{url}"]
33
39
  },
34
40
  {
35
- :name => "Cloudflare",
36
- :description => "Cloudflare Error",
41
+ :type => "service",
42
+ :vendor => "Cloudflare",
43
+ :product => "CDN",
44
+ :match_details =>"Cloudflare Error",
37
45
  :tags => ["error_page"],
38
46
  :version => "",
39
- :type => :content_body,
40
- :content => /cferror_details/,
47
+ :match_type => :content_body,
48
+ :match_content => /cferror_details/,
41
49
  :hide => true,
42
- :paths => ["#{uri}"]
50
+ :paths => ["#{url}"]
43
51
  },
44
52
  {
45
- :name => "Cloudflare",
46
- :description => "Cloudfront Error - Direct IP Access",
47
- :version => "",
48
- :type => :content_body,
49
- :content => /403\ Forbidden<\/h1><\/center>\n<hr><center>cloudflare<\/center>/,
53
+ :type => "service",
54
+ :vendor => "Cloudflare",
55
+ :product => "CDN",
56
+ :match_details =>"Cloudfront Error - Direct IP Access",
57
+ :version => nil,
58
+ :match_type => :content_body,
59
+ :match_content => /403\ Forbidden<\/h1><\/center>\n<hr><center>cloudflare<\/center>/im,
50
60
  :hide => true,
51
- :paths => ["#{uri}"]
61
+ :paths => ["#{url}"]
52
62
  }
53
63
  ]
54
64
  end
data/lib/checks/cpanel.rb CHANGED
@@ -3,16 +3,18 @@ module Ident
3
3
  module Check
4
4
  class Cpanel < Intrigue::Ident::Check::Base
5
5
 
6
- def generate_checks(uri)
6
+ def generate_checks(url)
7
7
  [
8
8
  {
9
- :name => "cPanel Hosted - Missing Page",
10
- :description => "cPanel Hosted, but either misconfigured, or accessed via ip vs hostname?",
9
+ :vendor => "cPanel",
10
+ :type => "application",
11
+ :product =>"cPanel Hosted - Missing Page",
12
+ :match_details =>"cPanel Hosted, but either misconfigured, or accessed via ip vs hostname?",
11
13
  :version => nil,
12
- :type => :content_body,
13
- :content => /URL=\/cgi-sys\/defaultwebpage.cgi/,
14
+ :match_type => :content_body,
15
+ :match_content => /URL=\/cgi-sys\/defaultwebpage.cgi/,
14
16
  :hide => true,
15
- :paths => ["#{uri}"]
17
+ :paths => ["#{url}"]
16
18
  }
17
19
  ]
18
20
  end
@@ -0,0 +1,25 @@
1
+ module Intrigue
2
+ module Ident
3
+ module Check
4
+ class Craft < Intrigue::Ident::Check::Base
5
+
6
+ def generate_checks(url)
7
+ [
8
+ {
9
+ :vendor => "Craft",
10
+ :type => "application",
11
+ :product =>"CMS",
12
+ :match_details =>"csrf protection cookie",
13
+ :version => nil,
14
+ :match_type => :content_cookies,
15
+ :match_content => /CRAFT_CSRF_TOKEN/,
16
+ :hide => true,
17
+ :paths => ["#{url}"]
18
+ }
19
+ ]
20
+ end
21
+
22
+ end
23
+ end
24
+ end
25
+ end
data/lib/checks/django.rb CHANGED
@@ -3,15 +3,17 @@ module Ident
3
3
  module Check
4
4
  class Django < Intrigue::Ident::Check::Base
5
5
 
6
- def generate_checks(uri)
6
+ def generate_checks(url)
7
7
  [
8
8
  {
9
- :name => "Django",
10
- :description => "Django Admin Page",
9
+ :type => "application",
10
+ :vendor => "Django",
11
+ :product =>"Django",
11
12
  :version => nil,
12
- :type => :content_body,
13
- :content => /<title>Log in \| Django site admin<\/title>/,
14
- :paths => ["#{uri}/admin"]
13
+ :match_details =>"Django Admin Page",
14
+ :match_type => :content_body,
15
+ :match_content => /<title>Log in \| Django site admin<\/title>/,
16
+ :paths => ["#{url}/admin"]
15
17
  }
16
18
  ]
17
19
  end
@@ -0,0 +1,25 @@
1
+ module Intrigue
2
+ module Ident
3
+ module Check
4
+ class Docuwiki < Intrigue::Ident::Check::Base
5
+
6
+ def generate_checks(url)
7
+ [
8
+ {
9
+ :type => "application",
10
+ :vendor => "Docuwiki",
11
+ :product => "Docuwiki",
12
+ :version => nil,
13
+ :match_type => :content_headers,
14
+ :match_content => /DokuWiki=/,
15
+ :match_details =>"Cookie match",
16
+ :references => ["https://www.dokuwiki.org/dokuwiki"],
17
+ :examples => ["https://docs.foxycart.com:443"],
18
+ :paths => ["#{url}"]
19
+ }
20
+ ]
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
data/lib/checks/drupal.rb CHANGED
@@ -3,20 +3,37 @@ module Ident
3
3
  module Check
4
4
  class Drupal < Intrigue::Ident::Check::Base
5
5
 
6
- def generate_checks(uri)
6
+ def generate_checks(url)
7
7
  [
8
8
  {
9
- :name => "Drupal",
10
- :description => "Drupal CMS",
9
+ :type => "application",
10
+ :vendor => "Drupal",
11
+ :product => "Drupal",
12
+ :tags => ["CMS"],
13
+ :match_details => "Drupal version in page content",
11
14
  :version => nil,
12
- :type => :content_body,
13
- :content => /Drupal/,
15
+ :match_type => :content_body,
16
+ :match_content => /^Drupal [0-9]+\.[0-9]+/,
14
17
  :dynamic_version => lambda { |x|
15
- version = x.body.scan(/^(Drupal.*)[ ,<\.].*$/)[0]
16
- return version.first.gsub("Drupal ","").gsub(",","").chomp if version
18
+ _first_body_capture(x,/^Drupal ([0-9\.]*?)[ ,<\.].*$/)
17
19
  },
18
- :paths => ["#{uri}/CHANGELOG.txt"]
20
+ :paths => ["#{url}/CHANGELOG.txt"]
21
+ },
22
+ {
23
+ :type => "application",
24
+ :vendor => "Drupal",
25
+ :product => "Drupal",
26
+ :tags => ["CMS"],
27
+ :match_details => "Drupal headers",
28
+ :version => nil,
29
+ :match_type => :content_headers,
30
+ :match_content => /x-generator: Drupal/,
31
+ :dynamic_version => lambda { |x|
32
+ _first_header_capture(x,/x-generator: Drupal\ ([0-9]+)\ \(/i,)
33
+ },
34
+ :paths => ["#{url}"]
19
35
  }
36
+
20
37
  ]
21
38
  end
22
39
 
data/lib/checks/f5.rb CHANGED
@@ -3,17 +3,45 @@ module Ident
3
3
  module Check
4
4
  class F5 < Intrigue::Ident::Check::Base
5
5
 
6
- def generate_checks(uri)
6
+ def generate_checks(url)
7
7
  [
8
8
  {
9
- :name => "F5 BIG-IP APM",
10
- :description => "F5 BIG-IP APM",
11
- :tags => ["tech:vpn"],
9
+ :type => "application",
10
+ :vendor => "F5",
11
+ :product =>"BIG-IP APM",
12
+ :match_details =>"F5 BIG-IP APM default cookie",
13
+ :tags => ["tech:load_balancer"],
12
14
  :version => nil,
13
- :type => :content_cookies,
14
- :content => /MRHSession/,
15
+ :match_type => :content_cookies,
16
+ :match_content => /MRHSession/,
15
17
  :hide => false,
16
- :paths => ["#{uri}"]
18
+ :paths => ["#{url}"]
19
+ },
20
+ {
21
+ :type => "application",
22
+ :vendor => "F5",
23
+ :product =>"BIG-IP APM",
24
+ :match_details =>"F5 BIG-IP APM default logo",
25
+ :tags => ["tech:load_balancer"],
26
+ :version => nil,
27
+ :references => ["https://support.f5.com/kb/en-us/products/big-ip_apm/manuals/product/apm-customization-11-6-0/3.html"],
28
+ :match_type => :content_body,
29
+ :match_content => /<img src="\/public\/images\/my\/tr.gif\//,
30
+ :hide => false,
31
+ :paths => ["#{url}"]
32
+ },
33
+ {
34
+ :type => "hardware",
35
+ :vendor => "F5",
36
+ :product =>"BIG-IP",
37
+ :match_details =>"F5 BIG-IP Load balancer cookie",
38
+ :tags => ["tech:load_balancer"],
39
+ :version => nil,
40
+ :match_type => :content_cookies,
41
+ :match_content => /BIGipServer/,
42
+ :examples => ["https://reset.oxy.com:443"],
43
+ :hide => false,
44
+ :paths => ["#{url}"]
17
45
  }
18
46
  ]
19
47
  end
data/lib/checks/fastly.rb CHANGED
@@ -3,15 +3,30 @@ module Ident
3
3
  module Check
4
4
  class Fastly < Intrigue::Ident::Check::Base
5
5
 
6
- def generate_checks(uri)
6
+ def generate_checks(url)
7
7
  [
8
8
  {
9
- :name => "Fastly",
10
- :description => "",
11
- :version => "",
12
- :type => :content_headers,
13
- :content => /x-fastly-backend-reqs/i,
14
- :paths => ["#{uri}"]
9
+ :type => "service",
10
+ :vendor =>"Fastly",
11
+ :product =>"Fastly",
12
+ :match_details =>"header",
13
+ :version => nil,
14
+ :match_type => :content_headers,
15
+ :match_content => /x-fastly-backend-reqs/i,
16
+ :paths => ["#{url}"]
17
+ },
18
+ {
19
+ :type => "service",
20
+ :vendor =>"Fastly",
21
+ :product =>"Fastly",
22
+ :match_details =>"error content in page",
23
+ :version => nil,
24
+ :hide => true,
25
+ :match_type => :content_body,
26
+ :match_content => /<title>Fastly error: unknown domain/i,
27
+ :examples => ["http://151.101.1.224:80"],
28
+ :verify => ["ZXRzeSNJbnRyaWd1ZTo6RW50aXR5OjpVcmkjaHR0cDovLzE1MS4xMDEuMS4yMjQ6ODA="],
29
+ :paths => ["#{url}"]
15
30
  }
16
31
  ]
17
32
  end
@@ -3,16 +3,44 @@ module Ident
3
3
  module Check
4
4
  class Generic < Intrigue::Ident::Check::Base
5
5
 
6
- def generate_checks(uri)
6
+ def generate_checks(url)
7
7
  [
8
8
  {
9
- :name => "Content Missing (404)",
10
- :description => "Content Missing (404) - Could be an API, or just serving something at another location. TODO ... is this ECS-specific? (check header)",
9
+ :type => "none",
10
+ :vendor => nil,
11
+ :product =>"Authentication Required",
12
+ :match_details =>"www-authenticate header",
13
+ :tags => [],
14
+ :version => nil,
15
+ :hide => true,
16
+ :match_type => :content_headers,
17
+ :match_content => /^www-authenticate:.*$/,
18
+ :paths => ["#{url}"],
19
+ :examples => ["https://160.69.1.115:443"]
20
+ },
21
+ {
22
+ :type => "none",
23
+ :vendor => nil,
24
+ :product => "Generic Unauthorized",
25
+ :match_details =>"Generic Unauthorized",
26
+ :tags => ["error_page"],
27
+ :version => nil,
28
+ :hide => true,
29
+ :match_type => :content_body,
30
+ :match_content => /<STRONG>401 Unauthorized/,
31
+ :paths => ["#{url}"]
32
+ },
33
+ {
34
+ :type => "none",
35
+ :vendor => nil,
36
+ :product => "Content Missing (404)",
37
+ :match_details =>"Content Missing (404) - Could be an API, or just serving something at another location. TODO ... is this ECS-specific? (check header)",
11
38
  :tags => ["error_page"],
12
39
  :version => nil,
13
- :type => :content_body,
14
- :content => /<title>404 - Not Found<\/title>/,
15
- :paths => ["#{uri}"]
40
+ :hide => true,
41
+ :match_type => :content_body,
42
+ :match_content => /<title>404 - Not Found<\/title>/,
43
+ :paths => ["#{url}"]
16
44
  }
17
45
  ]
18
46
  end