watobo 0.9.9.pre3 → 0.9.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. data/.yardopts +24 -0
  2. data/CHANGELOG +17 -7
  3. data/README +4 -60
  4. data/bin/nfq_server.rb +191 -0
  5. data/config/interceptor.yml +2 -6
  6. data/lib/watobo/adapters/data_store.rb +1 -1
  7. data/lib/watobo/adapters/file/file_store.rb +50 -33
  8. data/lib/watobo/ca.rb +22 -0
  9. data/lib/watobo/config.rb +6 -0
  10. data/lib/watobo/core/ca.rb +411 -0
  11. data/lib/watobo/core/cert_store.rb +56 -0
  12. data/lib/watobo/core/forwarding_proxy.rb +38 -0
  13. data/lib/watobo/core/http_socket.rb +18 -0
  14. data/lib/watobo/core/intercept_carver.rb +179 -0
  15. data/lib/watobo/core/intercept_filter.rb +257 -0
  16. data/lib/watobo/core/interceptor.rb +342 -79
  17. data/lib/watobo/core/netfilter_queue.rb +191 -0
  18. data/lib/watobo/core/project.rb +84 -138
  19. data/lib/watobo/core/proxy.rb +61 -0
  20. data/lib/watobo/core/request.rb +40 -0
  21. data/lib/watobo/core/response.rb +30 -0
  22. data/lib/watobo/core/scanner.rb +64 -58
  23. data/lib/watobo/core/session.rb +70 -77
  24. data/lib/watobo/core.rb +1 -1
  25. data/lib/watobo/framework/create_project.rb +25 -10
  26. data/lib/watobo/framework/init.rb +13 -0
  27. data/lib/watobo/gui/browser_preview.rb +5 -4
  28. data/lib/watobo/gui/checks_policy_frame.rb +1 -0
  29. data/lib/watobo/gui/client_cert_dialog.rb +11 -6
  30. data/lib/watobo/gui/conversation_table.rb +7 -4
  31. data/lib/watobo/gui/fuzzer_gui.rb +9 -11
  32. data/lib/watobo/gui/intercept_filter_dialog.rb +210 -0
  33. data/lib/watobo/gui/interceptor_gui.rb +59 -21
  34. data/lib/watobo/gui/interceptor_settings_dialog.rb +39 -5
  35. data/lib/watobo/gui/list_box.rb +2 -1
  36. data/lib/watobo/gui/log_viewer.rb +79 -5
  37. data/lib/watobo/gui/main_window.rb +159 -113
  38. data/lib/watobo/gui/manual_request_editor.rb +11 -5
  39. data/lib/watobo/gui/mixins/subscriber.rb +47 -0
  40. data/lib/watobo/gui/project_wizzard.rb +3 -3
  41. data/lib/watobo/gui/proxy_dialog.rb +17 -18
  42. data/lib/watobo/gui/request_editor.rb +1 -1
  43. data/lib/watobo/gui/rewrite_filters_dialog.rb +416 -0
  44. data/lib/watobo/gui/rewrite_rules_dialog.rb +394 -0
  45. data/lib/watobo/gui/scanner_settings_dialog.rb +9 -6
  46. data/lib/watobo/gui/session_management_dialog.rb +33 -23
  47. data/lib/watobo/gui/sites_tree.rb +5 -6
  48. data/lib/watobo/gui/status_bar.rb +101 -49
  49. data/lib/watobo/gui/table_editor.rb +1 -1
  50. data/lib/watobo/gui/templates/plugin2.rb +23 -27
  51. data/lib/watobo/gui/utils/save_default_settings.rb +9 -9
  52. data/lib/watobo/gui/utils/save_proxy_settings.rb +25 -9
  53. data/lib/watobo/gui/utils/save_scanner_settings.rb +10 -7
  54. data/lib/watobo/gui/utils/session_history.rb +1 -1
  55. data/lib/watobo/gui/www_auth_dialog.rb +25 -21
  56. data/lib/watobo/gui.rb +3 -1
  57. data/lib/watobo/mixins/httpparser.rb +47 -40
  58. data/lib/watobo/mixins/request_parser.rb +126 -41
  59. data/lib/watobo/mixins/shapers.rb +124 -15
  60. data/lib/watobo/utils/hexprint.rb +31 -0
  61. data/lib/watobo/utils/load_chat.rb +2 -0
  62. data/lib/watobo/utils/response_builder.rb +111 -0
  63. data/lib/watobo.rb +4 -1
  64. data/modules/active/discovery/http_methods.rb +6 -4
  65. data/modules/active/fileinclusion/lfi_simple.rb +3 -3
  66. data/modules/active/sqlinjection/sqli_timing.rb +6 -6
  67. data/modules/passive/redirectionz.rb +5 -6
  68. data/plugins/catalog/catalog.rb +240 -56
  69. data/plugins/catalog/db_tests +1 -6483
  70. data/plugins/catalog/db_variables +2 -29
  71. data/plugins/crawler/gui/auth_frame.rb +15 -3
  72. data/plugins/crawler/gui/crawler_gui.rb +24 -0
  73. data/plugins/crawler/gui/hooks_frame.rb +7 -2
  74. data/plugins/crawler/gui/settings_tabbook.rb +4 -0
  75. data/plugins/crawler/gui.rb +3 -3
  76. data/plugins/crawler/lib/engine.rb +1 -1
  77. data/plugins/filefinder/filefinder.rb +21 -17
  78. data/plugins/sqlmap/bin/test.rb +100 -0
  79. data/plugins/sqlmap/gui/main.rb +227 -0
  80. data/plugins/sqlmap/gui/options_frame.rb +119 -0
  81. data/plugins/sqlmap/gui.rb +27 -0
  82. data/plugins/sqlmap/icons/sqlmap.ico +0 -0
  83. data/plugins/sqlmap/lib/sqlmap_ctrl.rb +116 -0
  84. data/plugins/sqlmap/sqlmap.rb +26 -0
  85. data/plugins/sslchecker/gui/gui.rb +45 -30
  86. metadata +32 -9
  87. data/certificates/cert.pem +0 -19
  88. data/certificates/privkey.pem +0 -15
  89. data/certificates/watobo_dh.key +0 -5
  90. data/lib/watobo/core/simple_ca.rb +0 -393
@@ -20,69 +20,121 @@
20
20
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
21
  # .
22
22
  module Watobo
23
- module Gui
24
- class StatusBar < FXHorizontalFrame
23
+ module Gui
24
+ class StatusBar < FXHorizontalFrame
25
+ def setStatusInfo( prefs={} )
26
+ cprefs = {
27
+ :color => self.parent.backColor,
28
+ :text => ''
29
+ }
25
30
 
26
- def setStatusInfo( prefs={} )
27
- cprefs = {
28
- :color => self.parent.backColor,
29
- :text => ''
30
- }
31
+ cprefs.update prefs unless prefs.nil?
31
32
 
32
- cprefs.update prefs unless prefs.nil?
33
+ @statusInfo.text = cprefs[:text]
34
+ unless cprefs[:color].nil?
35
+ @statusInfo.backColor = cprefs[:color]
36
+ end
37
+
33
38
 
34
- @statusInfo.text = cprefs[:text]
35
- unless cprefs[:color].nil?
36
- @statusInfo.backColor = cprefs[:color]
37
- end
38
- end
39
+ end
40
+
41
+ def update_proxy_mode
42
+ # puts "Update Proxy Mode ..."
43
+ if Watobo::Conf::Interceptor.proxy_mode == Watobo::Interceptor::MODE_REGULAR
44
+ # puts "REGULAR MODE"
45
+ @portNumber.backColor = @portNumber.parent.backColor
46
+ @port_label.backColor = @port_label.parent.backColor
47
+ else
48
+ # puts "TRANSPARENT MODE"
49
+ @portNumber.backColor = FXColor::Red
50
+ @port_label.backColor = FXColor::Red
51
+ end
52
+ end
39
53
 
40
- def statusInfoText=( new_text )
41
- @statusInfo.text = new_text
42
- @statusInfo.backColor = self.parent.backColor
43
- end
54
+ def statusInfoText=( new_text )
55
+ @statusInfo.text = new_text
56
+ @statusInfo.backColor = self.parent.backColor
57
+ end
44
58
 
45
- def projectName=(project_name)
46
- @projectName.text = project_name
47
- end
59
+ def projectName=(project_name)
60
+ @projectName.text = project_name
61
+ end
48
62
 
49
- def sessionName=(session_name)
50
- @sessionName.text = session_name
51
- end
63
+ def sessionName=(session_name)
64
+ @sessionName.text = session_name
65
+ end
52
66
 
53
- def portNumber=(port_number)
54
- @portNumber.text = port_number
55
- end
67
+ def portNumber=(port_number)
68
+ @portNumber.text = port_number
69
+ end
56
70
 
57
- def forwardingProxy=(forward_proxy)
58
- @forwardingProxy.text = forward_proxy
59
- end
71
+ def forwardingProxy=(forward_proxy)
72
+ @forwardingProxy.text = forward_proxy
73
+ end
74
+
75
+ def bindAddress=(bind_addr)
76
+ @bind_addr_label.text = "Bind-Addr: #{bind_addr} "
77
+ end
78
+
79
+ def initialize(owner, opts)
80
+ super(owner, opts)
81
+
82
+ frame = FXHorizontalFrame.new(self, :opts => FRAME_SUNKEN, :padding => 0)
83
+ FXLabel.new(frame, "Status: ")
84
+ @statusInfo = FXLabel.new(frame, "- no project started -")
60
85
 
86
+ frame = FXHorizontalFrame.new(self, :opts => FRAME_SUNKEN, :padding => 0)
87
+ FXLabel.new(frame, "Project: ")
88
+ @projectName = FXLabel.new(frame, " - ")
61
89
 
62
- def initialize(owner, opts)
63
- super(owner, opts)
90
+ frame = FXHorizontalFrame.new(self, :opts => FRAME_SUNKEN, :padding => 0)
91
+ FXLabel.new(frame, "Session: ")
92
+ @sessionName = FXLabel.new(frame, " - ")
93
+
94
+ frame = FXHorizontalFrame.new(self, :opts => FRAME_SUNKEN, :padding => 0)
64
95
 
65
- frame = FXHorizontalFrame.new(self, :opts => FRAME_SUNKEN, :padding => 0)
66
- FXLabel.new(frame, "Status: ")
67
- @statusInfo = FXLabel.new(frame, "- no project started -")
96
+ #@bind_label = FXLabel.new(frame, "BindAddr: ")
97
+ @bind_addr_label = FXLabel.new(frame, "Bind-Addr: - ")
68
98
 
69
- frame = FXHorizontalFrame.new(self, :opts => FRAME_SUNKEN, :padding => 0)
70
- FXLabel.new(frame, "Project: ")
71
- @projectName = FXLabel.new(frame, " - ")
99
+ frame = FXHorizontalFrame.new(self, :opts => FRAME_SUNKEN, :padding => 0)
100
+
101
+ @port_label = FXLabel.new(frame, "Port: ")
102
+ # @port_label.connect(SEL_RIGHTBUTTONPRESS) { switch_proxy_mode }
103
+ @portNumber = FXLabel.new(frame, " - ")
104
+ # @portNumber.connect(SEL_RIGHTBUTTONPRESS) { switch_proxy_mode }
105
+
106
+ frame = FXHorizontalFrame.new(self, :opts => FRAME_SUNKEN, :padding => 0)
107
+ FXLabel.new(frame, "Forwarding Proxy: ")
108
+ @forwardingProxy = FXLabel.new(frame, " - ")
109
+ end
72
110
 
73
- frame = FXHorizontalFrame.new(self, :opts => FRAME_SUNKEN, :padding => 0)
74
- FXLabel.new(frame, "Session: ")
75
- @sessionName = FXLabel.new(frame, " - ")
111
+ private
76
112
 
77
- frame = FXHorizontalFrame.new(self, :opts => FRAME_SUNKEN, :padding => 0)
78
- FXLabel.new(frame, "Port: ")
79
- @portNumber = FXLabel.new(frame, " - ")
113
+ def switch_proxy_mode
80
114
 
81
- frame = FXHorizontalFrame.new(self, :opts => FRAME_SUNKEN, :padding => 0)
82
- FXLabel.new(frame, "Forwarding Proxy: ")
83
- @forwardingProxy = FXLabel.new(frame, " - ")
84
- end
115
+ if RUBY_PLATFORM =~ /linux/i
116
+ puts "SWITCHING PROXY MODE ..."
117
+ if Watobo::Interceptor.proxy_mode == Watobo::Interceptor::MODE_TRANSPARENT
118
+ mode = "Regular"
119
+ # Watobo::NFQueue.stop
120
+ Watobo::Interceptor.proxy_mode = Watobo::Interceptor::MODE_REGULAR
121
+ @portNumber.backColor = @portNumber.parent.backColor
122
+ @port_label.backColor = @port_label.parent.backColor
123
+ else
124
+ mode = "Transparent"
125
+ # t = Watobo::NFQueue.start
126
+ Watobo::Interceptor.proxy_mode = Watobo::Interceptor::MODE_TRANSPARENT
127
+ @portNumber.backColor = FXColor::Red
128
+ @port_label.backColor = FXColor::Red
129
+ # puts t.status
130
+ end
131
+ puts "current mode: #{mode}"
132
+ else
133
+ puts "COULD NOT SWITCH PROXY-MODE"
134
+ puts "Reason: Platform Not Supported"
135
+ end
85
136
  end
86
- # class end
87
- end
137
+ end
138
+ # class end
139
+ end
88
140
  end
@@ -205,7 +205,7 @@ module Watobo
205
205
  self.connect(SEL_DOUBLECLICKED) do |sender, sel, data|
206
206
  row = sender.getCurrentRow
207
207
  return nil unless row >= 0 and row < self.numRows
208
- transcoder = FXTranscoder.new(FXApp.instance, self.getItemText(row, 2))
208
+ transcoder = TranscoderWindow.new(FXApp.instance, self.getItemText(row, 2))
209
209
  transcoder.create
210
210
  transcoder.show(Fox::PLACEMENT_SCREEN)
211
211
  end
@@ -22,37 +22,33 @@
22
22
  module Watobo
23
23
  class Plugin2 < FXDialogBox
24
24
  attr :plugin_name
25
- # attr :icon
25
+ # attr :icon
26
26
 
27
27
  include Watobo::Gui
28
28
  include Watobo::Gui::Icons
29
-
29
+
30
30
  @icon_file = nil
31
-
32
-
33
- def self.get_icon
34
- @icon_file
35
- end
36
-
37
- def self.icon_file(icon_file)
38
- # puts "Caller >> #{caller.class}"
39
- # puts caller.to_yaml
40
-
41
- dummy = caller.first.split(":")
42
- dummy.pop
43
- file = dummy.join(":")
44
-
45
- @icon_file = File.join(File.dirname(file), "..","icons", icon_file)
46
- end
47
-
48
-
49
-
50
- def load_icon
51
- icon = self.class.get_icon
52
- puts "* loading icon > #{icon}"
53
- self.icon = Watobo::Gui.load_icon(icon) unless icon.nil?
54
- end
55
-
31
+ def self.get_icon
32
+ @icon_file
33
+ end
34
+
35
+ def self.icon_file(icon_file)
36
+ # puts "Caller >> #{caller.class}"
37
+ # puts caller.to_yaml
38
+
39
+ dummy = caller.first.split(":")
40
+ dummy.pop
41
+ file = dummy.join(":")
42
+
43
+ @icon_file = File.join(File.dirname(file), "..","icons", icon_file)
44
+ end
45
+
46
+ def load_icon
47
+ icon = self.class.get_icon
48
+ puts "* loading icon > #{icon}"
49
+ self.icon = Watobo::Gui.load_icon(icon) unless icon.nil?
50
+ end
51
+
56
52
  def subscribe(event, &callback)
57
53
  (@event_dispatcher_listeners[event] ||= []) << callback
58
54
  end
@@ -28,8 +28,8 @@ module Watobo
28
28
  mp = ''
29
29
  save_pws = false
30
30
 
31
- puts "= Master Password Settings ="
32
- puts Watobo::Gui::MasterPW.settings.to_yaml
31
+ # puts "= Master Password Settings ="
32
+ # puts Watobo::Gui::MasterPW.settings.to_yaml
33
33
 
34
34
  if Watobo::Gui::MasterPW.save_passwords?
35
35
  save_pws = true
@@ -41,14 +41,14 @@ module Watobo
41
41
  Watobo.save_proxy_settings( :save_passwords => save_pws, :key => mp )
42
42
 
43
43
  Watobo::Gui.save_scanner_settings()
44
-
45
- Watobo::Conf::General.save_project(Watobo.project.session_store)
46
- Watobo::Conf::Interceptor.save_project(Watobo.project.session_store)
47
-
44
+ unless Watobo.project.nil?
45
+ Watobo::Conf::General.save_project(Watobo.project.session_store)
46
+ Watobo::Conf::Interceptor.save_project(Watobo.project.session_store)
47
+ end
48
48
  # also save global settings here
49
49
  Watobo::Conf::General.save
50
50
  Watobo::Conf::Interceptor.save
51
-
51
+
52
52
  return true
53
53
  rescue => bang
54
54
  puts bang
@@ -61,8 +61,8 @@ module Watobo
61
61
  mp = ''
62
62
  save_pws = false
63
63
 
64
- puts "= Master Password Settings ="
65
- puts Watobo::Gui::MasterPW.settings.to_yaml
64
+ # puts "= Master Password Settings ="
65
+ # puts Watobo::Gui::MasterPW.settings.to_yaml
66
66
 
67
67
  if Watobo::Gui::MasterPW.save_passwords?
68
68
  save_pws = true
@@ -20,7 +20,7 @@
20
20
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
21
  # .
22
22
  module Watobo
23
- def self.save_proxy_settings(prefs)
23
+ def self.save_proxy_settings(prefs={})
24
24
 
25
25
  c_prefs = {
26
26
  :save_passwords => false,
@@ -29,15 +29,31 @@ module Watobo
29
29
 
30
30
  c_prefs.update prefs
31
31
 
32
- Watobo::Conf::ForwardingProxy.save_project(Watobo.project.session_store) do |s|
33
- s.each do |name, proxy|
34
- next unless proxy.is_a? Hash
35
- unless c_prefs[:save_passwords] == false
36
- unless c_prefs[:key].empty?
37
- #asdfa
32
+ unless Watobo.project.nil?
33
+ Watobo::Conf::ForwardingProxy.save_project(Watobo.project.session_store) do |s|
34
+ s.each do |name, proxy|
35
+ next unless proxy.is_a? Hash
36
+ unless c_prefs[:save_passwords] == false
37
+ unless c_prefs[:key].empty?
38
+ #asdfa
39
+ end
40
+ else
41
+ proxy[:password] = ''
42
+ end
43
+ end
44
+ end
45
+ else
46
+
47
+ Watobo::Conf::ForwardingProxy.save do |s|
48
+ s.each do |name, proxy|
49
+ next unless proxy.is_a? Hash
50
+ unless c_prefs[:save_passwords] == false
51
+ unless c_prefs[:key].empty?
52
+ #asdfa
53
+ end
54
+ else
55
+ proxy[:password] = ''
38
56
  end
39
- else
40
- proxy[:password] = ''
41
57
  end
42
58
  end
43
59
  end
@@ -22,16 +22,19 @@
22
22
  module Watobo
23
23
  module Gui
24
24
  def self.save_scanner_settings()
25
- return false if Watobo.project.nil?
25
+ unless Watobo.project.nil?
26
26
 
27
- Watobo::Conf::Scanner.save_project(Watobo.project.session_store ){ |s|
28
- # puts s.to_yaml
29
- x
30
- }
27
+ Watobo::Conf::Scanner.save_project(Watobo.project.session_store ){ |s|
28
+ # puts s.to_yaml
29
+ x
30
+ }
31
31
 
32
- session_filter = [ :sid_patterns, :logout_signatures, :custom_error_patterns, :max_parallel_checks, :excluded_parms, :non_unique_parms ]
33
- Watobo::Conf::Scanner.save_session(Watobo.project.session_store)
32
+ session_filter = [ :sid_patterns, :logout_signatures, :custom_error_patterns, :max_parallel_checks, :excluded_parms, :non_unique_parms ]
33
+ Watobo::Conf::Scanner.save_session(Watobo.project.session_store)
34
34
  return true
35
+ else
36
+ Watobo::Conf::Scanner.save
37
+ end
35
38
  end
36
39
  end
37
40
  end
@@ -80,7 +80,7 @@ module Watobo
80
80
  @history_entries.delete history_id(project_name, session_name)
81
81
  end
82
82
 
83
- def update_usage(project_name, session_name)
83
+ def update_usage(prefs)
84
84
  t_now = Time.now.to_i
85
85
  return false unless prefs.has_key? :session_name or prefs.has_key? :project_name
86
86
  hid = history_id(prefs[:project_name], prefs[:session_name])
@@ -157,22 +157,23 @@ module Watobo
157
157
 
158
158
  NO_SELECTION = "no site selected"
159
159
  def savePasswords?()
160
- @save_pws_cbt.checked?
160
+ return false
161
+ #@save_pws_cbt.checked?
161
162
  end
162
163
 
163
164
  include Responder
164
165
 
165
- def initialize(owner, project, prefs={})
166
+ def initialize(owner)
166
167
 
167
168
  super(owner, "NTLM Authentication", :opts => DECOR_ALL)
168
- @project = project
169
+ @project = Watobo.project
169
170
  FXMAPFUNC(SEL_COMMAND, ID_ACCEPT, :onAccept)
170
171
 
171
- @password_policy = {
172
- :save_passwords => false
173
- }
172
+ # @password_policy = {
173
+ # :save_passwords => false
174
+ # }
174
175
 
175
- @password_policy.update prefs[:password_policy] if prefs.has_key? :password_policy
176
+ # @password_policy.update prefs[:password_policy] if prefs.has_key? :password_policy
176
177
 
177
178
  @site_dt = FXDataTarget.new('')
178
179
  @username_dt = FXDataTarget.new('')
@@ -185,13 +186,13 @@ module Watobo
185
186
 
186
187
  top_frame = FXHorizontalFrame.new(main_frame, :opts => LAYOUT_FILL_X)
187
188
 
188
- @scope_only_cb = FXCheckButton.new(top_frame, "scope only", nil, 0, ICON_BEFORE_TEXT|LAYOUT_SIDE_LEFT)
189
- @scope_only_cb.setCheck(false)
189
+ # @scope_only_cb = FXCheckButton.new(top_frame, "scope only", nil, 0, ICON_BEFORE_TEXT|LAYOUT_SIDE_LEFT)
190
+ # @scope_only_cb.setCheck(false)
190
191
 
191
- if project.has_scope?
192
- puts "project has scope defined"
193
- end
194
- @scope_only_cb.connect(SEL_COMMAND) { updateSitesCombo() }
192
+ # if project.has_scope?
193
+ # puts "project has scope defined"
194
+ # end
195
+ # @scope_only_cb.connect(SEL_COMMAND) { updateSitesCombo() }
195
196
 
196
197
  @sites_combo = FXComboBox.new(top_frame, 5, @site_dt, FXDataTarget::ID_VALUE,
197
198
  COMBOBOX_STATIC|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
@@ -242,7 +243,8 @@ module Watobo
242
243
  end
243
244
  }
244
245
 
245
- pas = @project.getWwwAuthentication()
246
+ #pas = @project.getWwwAuthentication()
247
+ pas = Watobo::Conf::Scanner.www_auth
246
248
  # puts pas.to_yaml
247
249
  pas.each_key do |k|
248
250
  auth_settings = {
@@ -265,11 +267,11 @@ module Watobo
265
267
  @rem_auth_btn.connect(SEL_COMMAND){ remAuthenticationItem() }
266
268
  @rem_auth_btn.disable
267
269
 
268
- frame = FXVerticalFrame.new(main_frame, :opts => LAYOUT_FILL_X)
269
- @save_pws_cbt = FXCheckButton.new(frame, "save passwords")
270
- @save_pws_cbt.checkState = false
271
- @save_pws_cbt.checkState = true if @password_policy[:save_passwords] == true
272
- note_label = FXLabel.new(frame, "This setting affects all passwords!!!")
270
+ # frame = FXVerticalFrame.new(main_frame, :opts => LAYOUT_FILL_X)
271
+ # @save_pws_cbt = FXCheckButton.new(frame, "save passwords")
272
+ # @save_pws_cbt.checkState = false
273
+ # @save_pws_cbt.checkState = true if @password_policy[:save_passwords] == true
274
+ # note_label = FXLabel.new(frame, "This setting affects all passwords!!!")
273
275
 
274
276
  buttons = FXHorizontalFrame.new(main_frame, :opts => LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|PACK_UNIFORM_WIDTH,
275
277
  :padLeft => 40, :padRight => 40, :padTop => 20, :padBottom => 20)
@@ -291,10 +293,12 @@ module Watobo
291
293
  def updateSitesCombo()
292
294
  @sites_combo.clearItems
293
295
  @sites_combo.appendItem(NO_SELECTION, nil)
294
- @project.listSites(:in_scope => @scope_only_cb.checked? ){ |site|
296
+ unless Watobo.project.nil?
297
+ Watobo.project.listSites(:in_scope => Watobo.project.has_scope? ){ |site|
295
298
  #puts "Site: #{site}"
296
299
  @sites_combo.appendItem(site, site)
297
300
  }
301
+ end
298
302
  @sites_combo.numVisible = @sites_combo.numItems >= 20 ? 20 : @sites_combo.numItems
299
303
  @sites_combo.setCurrentItem(0) if @sites_combo.numItems > 0
300
304
  end
@@ -332,7 +336,7 @@ module Watobo
332
336
  empty_passwords = true if settings[w3a][:password] == ''
333
337
  end
334
338
  unless empty_passwords == true then
335
- @project.setWwwAuthentication(@auth_table.settings)
339
+ Watobo::Conf::Scanner.www_auth = @auth_table.settings
336
340
  # puts @auth_table.settings.to_yaml
337
341
  getApp().stopModal(self, 1)
338
342
  self.hide()
data/lib/watobo/gui.rb CHANGED
@@ -97,7 +97,8 @@ module Watobo
97
97
  end
98
98
 
99
99
  def self.check_first_run
100
- file = File.join(File.expand_path(File.dirname(__FILE__)), "..", "..", "disclaimer.chk")
100
+ # file = File.join(File.expand_path(File.dirname(__FILE__)), "..", "..", "disclaimer.chk")
101
+ file = File.join(Watobo.working_directory, "disclaimer.chk")
101
102
  unless File.exists?(file)
102
103
  first_start_info = Watobo::Gui::AboutWatobo.new(@main_window)
103
104
  if first_start_info.execute != 0 then
@@ -117,6 +118,7 @@ end
117
118
  Watobo::Gui.create_application
118
119
 
119
120
  require 'watobo/gui/utils/init_icons'
121
+ require 'watobo/gui/mixins/subscriber'
120
122
 
121
123
  gui_path = File.expand_path(File.join(File.dirname(__FILE__), "gui"))
122
124
 
@@ -42,8 +42,8 @@ module Watobo
42
42
  module Url
43
43
  include Watobo::Constants
44
44
  def file
45
- @file ||= nil
46
- return @file unless @file.nil?
45
+ #@file ||= nil
46
+ #return @file unless @file.nil?
47
47
  if self.first =~ /^[^[:space:]]{1,} https?:\/\/[\-0-9a-zA-Z.]*[:0-9]{0,6}[^\?]*\/(.*) HTTP.*/
48
48
  tmp = $1
49
49
  end_of_file_index = tmp.index(/\?/)
@@ -62,8 +62,8 @@ module Watobo
62
62
  end
63
63
 
64
64
  def file_ext
65
- @file_ext ||= nil
66
- return @file_ext unless @file_ext.nil?
65
+ #@file_ext ||= nil
66
+ #return @file_ext unless @file_ext.nil?
67
67
  if self.first =~ /^[^[:space:]]{1,} https?:\/\/[\-0-9a-zA-Z.]*[:0-9]{0,6}[^\?]*\/(.*) HTTP.*/
68
68
  @file_ext = $1
69
69
  else
@@ -178,8 +178,8 @@ module Watobo
178
178
  end
179
179
 
180
180
  def proto
181
- @proto ||= nil
182
- return @proto unless @proto.nil?
181
+ # @proto ||= nil
182
+ # return @proto unless @proto.nil?
183
183
  @proto = "http" if self.first =~ /^[^[:space:]]{1,} http:\/\//i
184
184
  # puts dummy
185
185
  @proto = "https" if self.first =~ /^[^[:space:]]{1,} https:\/\//i
@@ -200,8 +200,8 @@ module Watobo
200
200
  end
201
201
 
202
202
  def url
203
- @url ||= nil
204
- return @url unless @url.nil?
203
+ #@url ||= nil
204
+ #return @url unless @url.nil?
205
205
  if self.first =~ /^[^[:space:]]{1,} (https?:\/\/[\-0-9a-zA-Z.]*[:0-9]{0,6}.*) HTTP\//i then
206
206
  @url = $1
207
207
  else
@@ -211,8 +211,8 @@ module Watobo
211
211
  end
212
212
 
213
213
  def site
214
- @site ||= nil
215
- return @site unless @site.nil?
214
+ #@site ||= nil
215
+ #return @site unless @site.nil?
216
216
  if self.first =~ /^[^[:space:]]{1,} (https?):\/\/([\-0-9a-zA-Z.]*)([:0-9]{0,6})/i then
217
217
  host = $2
218
218
  port_extension = $3
@@ -230,8 +230,8 @@ module Watobo
230
230
  end
231
231
 
232
232
  def host
233
- @host ||= nil
234
- return @host unless @host.nil?
233
+ #@host ||= nil
234
+ #return @host unless @host.nil?
235
235
  if self.first =~ /^[^[:space:]]{1,} https?:\/\/([\-0-9a-zA-Z.]*)[:0-9]{0,6}/i then
236
236
  @host = $1
237
237
  else
@@ -465,13 +465,40 @@ module Watobo
465
465
  return ct
466
466
  end
467
467
 
468
+ def content_encoding
469
+ te = TE_NONE
470
+ self.each do |line|
471
+ break if line.strip.empty?
472
+ if line =~ /^Content-Encoding: (.*)/i then
473
+ dummy = $1.strip
474
+ puts "Content-Encoding => #{dummy}"
475
+ te = case dummy
476
+ when /chunked/i
477
+ TE_CHUNKED
478
+ when /compress/i
479
+ TE_COMPRESS
480
+ when /zip/i
481
+ TE_GZIP
482
+ when /deflate/i
483
+ TE_DEFLATE
484
+ when /identity/i
485
+ TE_IDENTITY
486
+ else
487
+ TE_NONE
488
+ end
489
+ break
490
+ end
491
+ end
492
+ return te
493
+ end
494
+
468
495
  def transferEncoding
469
496
  te = TE_NONE
470
497
  self.each do |line|
471
498
  break if line.strip.empty?
472
499
  if line =~ /^Transfer-Encoding: (.*)/i then
473
500
  dummy = $1.strip
474
- puts dummy
501
+ # puts dummy
475
502
  te = case dummy
476
503
  when 'chunked'
477
504
  TE_CHUNKED
@@ -491,6 +518,8 @@ module Watobo
491
518
  end
492
519
  return te
493
520
  end
521
+
522
+ alias :transfer_encoding :transferEncoding
494
523
 
495
524
  def contentMD5
496
525
  b = self.body.nil? ? "" : self.body
@@ -578,9 +607,11 @@ end
578
607
  return ''
579
608
  end
580
609
  rescue => bang
610
+ if $DEBUG
581
611
  puts "! No Status Available !".upcase
582
612
  puts bang
583
- puts bang.backtrace if $DEBUG
613
+ puts bang.backtrace
614
+ end
584
615
  return nil
585
616
  end
586
617
  end
@@ -635,31 +666,7 @@ end
635
666
 
636
667
  end
637
668
 
638
- ############################################################
639
- # R E S P O N S E P A R S E R M I X I N
640
- ###############################################################
641
- module ResponseParser
642
- def status
643
- dummy = self.first
644
-
645
- if dummy =~ /HTTP\/1.. (.*)/i then
646
- return $1.chomp
647
- else
648
- return nil
649
- end
650
- end
651
-
652
-
653
- def headers(&b)
654
- header=[]
655
- self.each do |line|
656
- return header if line.strip.empty?
657
- yield line if block_given?
658
- header.push line
659
- end
660
- return nil
661
- end
662
- end
669
+
663
670
  end
664
671
  end
665
- end
672
+ end