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.
- data/.yardopts +24 -0
- data/CHANGELOG +17 -7
- data/README +4 -60
- data/bin/nfq_server.rb +191 -0
- data/config/interceptor.yml +2 -6
- data/lib/watobo/adapters/data_store.rb +1 -1
- data/lib/watobo/adapters/file/file_store.rb +50 -33
- data/lib/watobo/ca.rb +22 -0
- data/lib/watobo/config.rb +6 -0
- data/lib/watobo/core/ca.rb +411 -0
- data/lib/watobo/core/cert_store.rb +56 -0
- data/lib/watobo/core/forwarding_proxy.rb +38 -0
- data/lib/watobo/core/http_socket.rb +18 -0
- data/lib/watobo/core/intercept_carver.rb +179 -0
- data/lib/watobo/core/intercept_filter.rb +257 -0
- data/lib/watobo/core/interceptor.rb +342 -79
- data/lib/watobo/core/netfilter_queue.rb +191 -0
- data/lib/watobo/core/project.rb +84 -138
- data/lib/watobo/core/proxy.rb +61 -0
- data/lib/watobo/core/request.rb +40 -0
- data/lib/watobo/core/response.rb +30 -0
- data/lib/watobo/core/scanner.rb +64 -58
- data/lib/watobo/core/session.rb +70 -77
- data/lib/watobo/core.rb +1 -1
- data/lib/watobo/framework/create_project.rb +25 -10
- data/lib/watobo/framework/init.rb +13 -0
- data/lib/watobo/gui/browser_preview.rb +5 -4
- data/lib/watobo/gui/checks_policy_frame.rb +1 -0
- data/lib/watobo/gui/client_cert_dialog.rb +11 -6
- data/lib/watobo/gui/conversation_table.rb +7 -4
- data/lib/watobo/gui/fuzzer_gui.rb +9 -11
- data/lib/watobo/gui/intercept_filter_dialog.rb +210 -0
- data/lib/watobo/gui/interceptor_gui.rb +59 -21
- data/lib/watobo/gui/interceptor_settings_dialog.rb +39 -5
- data/lib/watobo/gui/list_box.rb +2 -1
- data/lib/watobo/gui/log_viewer.rb +79 -5
- data/lib/watobo/gui/main_window.rb +159 -113
- data/lib/watobo/gui/manual_request_editor.rb +11 -5
- data/lib/watobo/gui/mixins/subscriber.rb +47 -0
- data/lib/watobo/gui/project_wizzard.rb +3 -3
- data/lib/watobo/gui/proxy_dialog.rb +17 -18
- data/lib/watobo/gui/request_editor.rb +1 -1
- data/lib/watobo/gui/rewrite_filters_dialog.rb +416 -0
- data/lib/watobo/gui/rewrite_rules_dialog.rb +394 -0
- data/lib/watobo/gui/scanner_settings_dialog.rb +9 -6
- data/lib/watobo/gui/session_management_dialog.rb +33 -23
- data/lib/watobo/gui/sites_tree.rb +5 -6
- data/lib/watobo/gui/status_bar.rb +101 -49
- data/lib/watobo/gui/table_editor.rb +1 -1
- data/lib/watobo/gui/templates/plugin2.rb +23 -27
- data/lib/watobo/gui/utils/save_default_settings.rb +9 -9
- data/lib/watobo/gui/utils/save_proxy_settings.rb +25 -9
- data/lib/watobo/gui/utils/save_scanner_settings.rb +10 -7
- data/lib/watobo/gui/utils/session_history.rb +1 -1
- data/lib/watobo/gui/www_auth_dialog.rb +25 -21
- data/lib/watobo/gui.rb +3 -1
- data/lib/watobo/mixins/httpparser.rb +47 -40
- data/lib/watobo/mixins/request_parser.rb +126 -41
- data/lib/watobo/mixins/shapers.rb +124 -15
- data/lib/watobo/utils/hexprint.rb +31 -0
- data/lib/watobo/utils/load_chat.rb +2 -0
- data/lib/watobo/utils/response_builder.rb +111 -0
- data/lib/watobo.rb +4 -1
- data/modules/active/discovery/http_methods.rb +6 -4
- data/modules/active/fileinclusion/lfi_simple.rb +3 -3
- data/modules/active/sqlinjection/sqli_timing.rb +6 -6
- data/modules/passive/redirectionz.rb +5 -6
- data/plugins/catalog/catalog.rb +240 -56
- data/plugins/catalog/db_tests +1 -6483
- data/plugins/catalog/db_variables +2 -29
- data/plugins/crawler/gui/auth_frame.rb +15 -3
- data/plugins/crawler/gui/crawler_gui.rb +24 -0
- data/plugins/crawler/gui/hooks_frame.rb +7 -2
- data/plugins/crawler/gui/settings_tabbook.rb +4 -0
- data/plugins/crawler/gui.rb +3 -3
- data/plugins/crawler/lib/engine.rb +1 -1
- data/plugins/filefinder/filefinder.rb +21 -17
- data/plugins/sqlmap/bin/test.rb +100 -0
- data/plugins/sqlmap/gui/main.rb +227 -0
- data/plugins/sqlmap/gui/options_frame.rb +119 -0
- data/plugins/sqlmap/gui.rb +27 -0
- data/plugins/sqlmap/icons/sqlmap.ico +0 -0
- data/plugins/sqlmap/lib/sqlmap_ctrl.rb +116 -0
- data/plugins/sqlmap/sqlmap.rb +26 -0
- data/plugins/sslchecker/gui/gui.rb +45 -30
- metadata +32 -9
- data/certificates/cert.pem +0 -19
- data/certificates/privkey.pem +0 -15
- data/certificates/watobo_dh.key +0 -5
- 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
|
-
|
24
|
-
|
23
|
+
module Gui
|
24
|
+
class StatusBar < FXHorizontalFrame
|
25
|
+
def setStatusInfo( prefs={} )
|
26
|
+
cprefs = {
|
27
|
+
:color => self.parent.backColor,
|
28
|
+
:text => ''
|
29
|
+
}
|
25
30
|
|
26
|
-
|
27
|
-
cprefs = {
|
28
|
-
:color => self.parent.backColor,
|
29
|
-
:text => ''
|
30
|
-
}
|
31
|
+
cprefs.update prefs unless prefs.nil?
|
31
32
|
|
32
|
-
|
33
|
+
@statusInfo.text = cprefs[:text]
|
34
|
+
unless cprefs[:color].nil?
|
35
|
+
@statusInfo.backColor = cprefs[:color]
|
36
|
+
end
|
37
|
+
|
33
38
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
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
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
54
|
+
def statusInfoText=( new_text )
|
55
|
+
@statusInfo.text = new_text
|
56
|
+
@statusInfo.backColor = self.parent.backColor
|
57
|
+
end
|
44
58
|
|
45
|
-
|
46
|
-
|
47
|
-
|
59
|
+
def projectName=(project_name)
|
60
|
+
@projectName.text = project_name
|
61
|
+
end
|
48
62
|
|
49
|
-
|
50
|
-
|
51
|
-
|
63
|
+
def sessionName=(session_name)
|
64
|
+
@sessionName.text = session_name
|
65
|
+
end
|
52
66
|
|
53
|
-
|
54
|
-
|
55
|
-
|
67
|
+
def portNumber=(port_number)
|
68
|
+
@portNumber.text = port_number
|
69
|
+
end
|
56
70
|
|
57
|
-
|
58
|
-
|
59
|
-
|
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
|
-
|
63
|
-
|
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
|
-
|
66
|
-
|
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
|
-
|
70
|
-
|
71
|
-
|
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
|
-
|
74
|
-
FXLabel.new(frame, "Session: ")
|
75
|
-
@sessionName = FXLabel.new(frame, " - ")
|
111
|
+
private
|
76
112
|
|
77
|
-
|
78
|
-
FXLabel.new(frame, "Port: ")
|
79
|
-
@portNumber = FXLabel.new(frame, " - ")
|
113
|
+
def switch_proxy_mode
|
80
114
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
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
|
-
|
87
|
-
|
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 =
|
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
|
-
|
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
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
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
|
-
|
46
|
-
|
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
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
unless c_prefs[:
|
37
|
-
|
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
|
-
|
25
|
+
unless Watobo.project.nil?
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
27
|
+
Watobo::Conf::Scanner.save_project(Watobo.project.session_store ){ |s|
|
28
|
+
# puts s.to_yaml
|
29
|
+
x
|
30
|
+
}
|
31
31
|
|
32
|
-
|
33
|
-
|
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(
|
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
|
-
|
160
|
+
return false
|
161
|
+
#@save_pws_cbt.checked?
|
161
162
|
end
|
162
163
|
|
163
164
|
include Responder
|
164
165
|
|
165
|
-
def initialize(owner
|
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
|
-
|
172
|
-
|
173
|
-
|
172
|
+
# @password_policy = {
|
173
|
+
# :save_passwords => false
|
174
|
+
# }
|
174
175
|
|
175
|
-
|
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
|
-
|
189
|
-
|
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
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
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
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
182
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|