ronin-web 0.2.1 → 0.3.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. data/.document +4 -0
  2. data/.gemtest +0 -0
  3. data/.rspec +1 -0
  4. data/.yardopts +1 -0
  5. data/COPYING.txt +674 -0
  6. data/{History.txt → ChangeLog.md} +39 -8
  7. data/Gemfile +49 -0
  8. data/{README.txt → README.md} +56 -40
  9. data/Rakefile +25 -24
  10. data/bin/ronin-web +18 -5
  11. data/gemspec.yml +30 -0
  12. data/lib/ronin/network/{helpers → mixins}/web.rb +74 -39
  13. data/lib/ronin/web.rb +7 -6
  14. data/lib/ronin/web/extensions.rb +7 -6
  15. data/lib/ronin/web/extensions/nokogiri.rb +22 -0
  16. data/lib/ronin/web/extensions/nokogiri/xml.rb +22 -0
  17. data/lib/ronin/web/extensions/nokogiri/xml/attr.rb +35 -1
  18. data/lib/ronin/web/extensions/nokogiri/xml/document.rb +34 -4
  19. data/lib/ronin/web/extensions/nokogiri/xml/element.rb +36 -2
  20. data/lib/ronin/web/extensions/nokogiri/xml/node.rb +59 -20
  21. data/lib/ronin/web/extensions/nokogiri/xml/text.rb +36 -2
  22. data/lib/ronin/web/middleware.rb +27 -0
  23. data/lib/ronin/web/middleware/base.rb +144 -0
  24. data/lib/ronin/web/middleware/directories.rb +177 -0
  25. data/lib/ronin/web/middleware/files.rb +142 -0
  26. data/lib/ronin/web/middleware/filters.rb +28 -0
  27. data/lib/ronin/web/middleware/filters/campaign_filter.rb +77 -0
  28. data/lib/ronin/web/middleware/filters/ip_filter.rb +73 -0
  29. data/lib/ronin/web/middleware/filters/path_filter.rb +73 -0
  30. data/lib/ronin/web/middleware/filters/referer_filter.rb +71 -0
  31. data/lib/ronin/web/middleware/filters/user_agent_filter.rb +71 -0
  32. data/lib/ronin/web/middleware/filters/vhost_filter.rb +71 -0
  33. data/lib/ronin/web/middleware/helpers.rb +145 -0
  34. data/lib/ronin/web/middleware/proxy.rb +265 -0
  35. data/lib/ronin/web/middleware/proxy_request.rb +262 -0
  36. data/lib/ronin/web/middleware/request.rb +58 -0
  37. data/lib/ronin/web/middleware/response.rb +33 -0
  38. data/lib/ronin/web/middleware/router.rb +167 -0
  39. data/lib/ronin/web/middleware/rule.rb +103 -0
  40. data/lib/ronin/web/proxy.rb +7 -6
  41. data/lib/ronin/web/proxy/app.rb +7 -6
  42. data/lib/ronin/web/proxy/base.rb +14 -9
  43. data/lib/ronin/web/proxy/web.rb +9 -6
  44. data/lib/ronin/web/server.rb +7 -6
  45. data/lib/ronin/web/server/app.rb +7 -6
  46. data/lib/ronin/web/server/base.rb +209 -82
  47. data/lib/ronin/web/server/web.rb +10 -6
  48. data/lib/ronin/web/spider.rb +38 -26
  49. data/lib/ronin/web/version.rb +8 -7
  50. data/lib/ronin/web/web.rb +122 -80
  51. data/ronin-web.gemspec +15 -0
  52. data/spec/helpers/output.rb +3 -0
  53. data/spec/spec_helper.rb +2 -3
  54. data/spec/web/extensions/nokogiri_spec.rb +7 -7
  55. data/spec/web/{server/helpers/server.rb → helpers/rack_app.rb} +3 -14
  56. data/spec/web/helpers/root.rb +15 -0
  57. data/spec/web/helpers/root/test1.txt +1 -0
  58. data/spec/web/helpers/root/test1/index.html +1 -0
  59. data/spec/web/helpers/root/test1/test1.txt +1 -0
  60. data/spec/web/helpers/root/test2.txt +1 -0
  61. data/spec/web/helpers/root/test2/test2.txt +1 -0
  62. data/spec/web/helpers/root/test3.txt +1 -0
  63. data/spec/web/helpers/root/test3/test3.txt +1 -0
  64. data/spec/web/middleware/directories_spec.rb +86 -0
  65. data/spec/web/middleware/files_spec.rb +57 -0
  66. data/spec/web/middleware/filters/campaign_filter_spec.rb +30 -0
  67. data/spec/web/middleware/filters/ip_filter_spec.rb +25 -0
  68. data/spec/web/middleware/filters/path_filter_spec.rb +29 -0
  69. data/spec/web/middleware/filters/referer_filter_spec.rb +25 -0
  70. data/spec/web/middleware/filters/user_agent_filter_spec.rb +25 -0
  71. data/spec/web/middleware/filters/vhost_filter_spec.rb +23 -0
  72. data/spec/web/middleware/proxy_spec.rb +67 -0
  73. data/spec/web/middleware/response_spec.rb +20 -0
  74. data/spec/web/middleware/router_spec.rb +65 -0
  75. data/spec/web/middleware/rule_spec.rb +37 -0
  76. data/spec/web/proxy/base_spec.rb +1 -2
  77. data/spec/web/server/base_spec.rb +4 -13
  78. data/spec/web/server/classes/sub_app.rb +2 -2
  79. data/spec/web/server/classes/test_app.rb +1 -1
  80. data/spec/web/web_spec.rb +57 -67
  81. metadata +171 -146
  82. data.tar.gz.sig +0 -0
  83. data/Manifest.txt +0 -64
  84. data/lib/ronin/scanners/web.rb +0 -52
  85. data/lib/ronin/web/server/files.rb +0 -92
  86. data/lib/ronin/web/server/helpers.rb +0 -25
  87. data/lib/ronin/web/server/helpers/files.rb +0 -126
  88. data/lib/ronin/web/server/helpers/hosts.rb +0 -72
  89. data/lib/ronin/web/server/helpers/proxy.rb +0 -153
  90. data/lib/ronin/web/server/helpers/rendering.rb +0 -36
  91. data/lib/ronin/web/server/hosts.rb +0 -86
  92. data/lib/ronin/web/server/proxy.rb +0 -116
  93. data/spec/scanners/web_spec.rb +0 -24
  94. data/spec/web/helpers/root/index.html +0 -1
  95. data/spec/web/helpers/root/test.txt +0 -1
  96. data/spec/web/helpers/server.rb +0 -10
  97. data/spec/web/server/classes/files/dir/file.txt +0 -1
  98. data/spec/web/server/classes/files/dir/index.html +0 -1
  99. data/spec/web/server/classes/files/dir2/file2.txt +0 -1
  100. data/spec/web/server/classes/files/dir3/page.xml +0 -4
  101. data/spec/web/server/classes/files/file.txt +0 -1
  102. data/spec/web/server/classes/files_app.rb +0 -27
  103. data/spec/web/server/classes/hosts_app.rb +0 -40
  104. data/spec/web/server/classes/proxy_app.rb +0 -45
  105. data/spec/web/server/files_spec.rb +0 -74
  106. data/spec/web/server/hosts_spec.rb +0 -55
  107. data/spec/web/server/proxy_spec.rb +0 -49
  108. data/tasks/spec.rb +0 -10
  109. data/tasks/yard.rb +0 -13
  110. metadata.gz.sig +0 -3
@@ -1,55 +0,0 @@
1
- require 'ronin/web/server/hosts'
2
-
3
- require 'spec_helper'
4
- require 'web/server/classes/hosts_app'
5
- require 'web/server/helpers/server'
6
-
7
- describe Web::Server::Hosts do
8
- include Helpers::Web::Server
9
-
10
- before(:all) do
11
- self.app = HostsApp
12
- end
13
-
14
- it "should allow routes to respond to specific hosts" do
15
- get_host '/tests/for_host', 'localhost'
16
-
17
- last_response.should be_ok
18
- last_response.body.should == 'Admin Response'
19
- end
20
-
21
- it "should allow routes to respond to hosts matching a pattern" do
22
- get_host '/tests/for_host', 'downloads.example.com'
23
-
24
- last_response.should be_ok
25
- last_response.body.should == 'Download Response'
26
- end
27
-
28
- it "should fallback to the normal response if the host is not recognized" do
29
- get '/tests/for_host'
30
-
31
- last_response.should be_ok
32
- last_response.body.should == 'Generic Response'
33
- end
34
-
35
- it "should route requests for specific hosts" do
36
- get_host '/file', 'example.com'
37
-
38
- last_response.should be_ok
39
- last_response.body.should == 'WWW File'
40
- end
41
-
42
- it "should route requests for hosts matching a pattern" do
43
- get_host '/file', 'ftp.example.com'
44
-
45
- last_response.should be_ok
46
- last_response.body.should == 'FTP File'
47
- end
48
-
49
- it "should not route requests for unrecognized hosts" do
50
- get '/file'
51
-
52
- last_response.should be_ok
53
- last_response.body.should == 'Generic File'
54
- end
55
- end
@@ -1,49 +0,0 @@
1
- require 'ronin/web/server/helpers/proxy'
2
-
3
- require 'spec_helper'
4
- require 'web/server/helpers/server'
5
- require 'web/server/classes/proxy_app'
6
-
7
- describe Web::Server::Helpers::Proxy do
8
- include Helpers::Web::Server
9
-
10
- before(:all) do
11
- self.app = ProxyApp
12
- end
13
-
14
- it "should allow the proxying of requests for certain routes" do
15
- get_host '/', 'www.example.com'
16
-
17
- last_response.should be_ok
18
- last_response.body.should =~ /RFC\s+2606/
19
- end
20
-
21
- it "should allow overriding the headers of proxied requests" do
22
- get '/reddit/erlang'
23
-
24
- last_response.should be_ok
25
- last_response.body.should =~ /Erlang/
26
- end
27
-
28
- it "should allow modification of proxied responses" do
29
- get_host '/r/erlang', 'www.reddit.com'
30
-
31
- last_response.should be_ok
32
- last_response.body.should_not =~ /erlang/i
33
- last_response.body.should =~ /Fixed Gear Bicycle/
34
- end
35
-
36
- it "should allow modification of proxied HTML documents" do
37
- get_host '/r/ruby', 'www.reddit.com'
38
-
39
- last_response.should be_ok
40
- last_response.body.should_not =~ /rails/i
41
- end
42
-
43
- it "should allow modification of proxied XML documents" do
44
- get_host '/feed/vulnerabilities/latest.rss', 'osvdb.org'
45
-
46
- last_response.should be_ok
47
- last_response.body.should_not =~ /(XSS|SQLi|SQL\s+Injection)/i
48
- end
49
- end
@@ -1,10 +0,0 @@
1
- require 'spec/rake/spectask'
2
-
3
- desc "Run all specifications"
4
- Spec::Rake::SpecTask.new(:spec) do |t|
5
- t.libs += ['lib', 'spec']
6
- t.spec_opts = ['--colour', '--format', 'specdoc']
7
- end
8
-
9
- task :test => :spec
10
- task :default => :spec
@@ -1,13 +0,0 @@
1
- require 'ronin/yard/handlers'
2
-
3
- YARD::Rake::YardocTask.new do |t|
4
- t.files = ['lib/**/*.rb']
5
- t.options = [
6
- '--protected',
7
- '--files', 'History.txt',
8
- '--title', 'Ronin Web',
9
- '--quiet'
10
- ]
11
- end
12
-
13
- task :docs => :yardoc
metadata.gz.sig DELETED
@@ -1,3 +0,0 @@
1
- iMh��oS�p��*��}�[~�!�����6n�g���VH�� �U�Oy�W]7Nskb.�׺N�6YO?5�z1����3Լ��4WR����öí����ϔ�W
2
- f&����ʴ���}�絀���7ԕ��F��/�qJ,@U������S��
3
- �b��<�:�9Ǖ�e��ʈ���c�O� ^���Dy�6�S��H<_ݭ�ySć���dI\�h����*y����m^&š�5"�]:�Sf�\�!a;�