watobo 0.9.10 → 0.9.11
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +9 -0
- data/lib/watobo/gui/interceptor_gui.rb +21 -1
- data/lib/watobo/gui/main_window.rb +43 -1
- data/lib/watobo/gui/mixins/gui_settings.rb +51 -0
- data/lib/watobo/gui/request_editor.rb +1 -0
- data/lib/watobo/gui/templates/plugin.rb +30 -1
- data/lib/watobo/gui.rb +1 -0
- data/lib/watobo/mixins/request_parser.rb +47 -3
- data/lib/watobo.rb +1 -1
- data/plugins/catalog/catalog.rb +1 -1
- data/plugins/filefinder/filefinder.rb +173 -60
- metadata +3 -2
data/CHANGELOG
CHANGED
@@ -1,4 +1,13 @@
|
|
1
|
+
= Version 0.9.11
|
2
|
+
== NEW
|
3
|
+
* [FileFinder] pimped the interface, added save-settings
|
4
|
+
|
5
|
+
== Fixes
|
6
|
+
* [ConversationTable] Request-/Resoponse View is updated when navigating with arrow-keys
|
7
|
+
* [INTERCEPOR] fixed bug in parsing intercepted responses
|
8
|
+
|
1
9
|
= Version 0.9.10
|
10
|
+
== Fixes
|
2
11
|
* fixed sqlmap temp directory
|
3
12
|
|
4
13
|
= Version 0.9.9
|
@@ -200,11 +200,27 @@ module Watobo
|
|
200
200
|
notify(:error, "#{$!}")
|
201
201
|
rescue => bang
|
202
202
|
puts bang
|
203
|
+
puts bang.backtrace if $DEBUG
|
203
204
|
notify(:error, "Could not parse request: #{$!}")
|
204
205
|
end
|
205
206
|
|
206
207
|
return nil
|
207
208
|
end
|
209
|
+
|
210
|
+
def to_response(prefs={})
|
211
|
+
begin
|
212
|
+
return @textbox.to_response(prefs)
|
213
|
+
rescue SyntaxError, LocalJumpError, NameError
|
214
|
+
# puts bang
|
215
|
+
# puts bang.backtrace if $DEBUG
|
216
|
+
notify(:error, "#{$!}")
|
217
|
+
rescue => bang
|
218
|
+
puts bang
|
219
|
+
notify(:error, "Could not parse request: #{$!}")
|
220
|
+
end
|
221
|
+
|
222
|
+
return nil
|
223
|
+
end
|
208
224
|
|
209
225
|
private
|
210
226
|
|
@@ -547,6 +563,7 @@ module Watobo
|
|
547
563
|
# request_frame = FXVerticalFrame.new(request_frame_outer, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
548
564
|
|
549
565
|
@requestbox = Watobo::Gui::InterceptEditor.new(request_frame_outer, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
566
|
+
|
550
567
|
|
551
568
|
@response_tab = FXTabItem.new(@tabBook, "Response (0)", nil)
|
552
569
|
response_frame_outer = FXVerticalFrame.new(@tabBook, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED)
|
@@ -646,8 +663,10 @@ module Watobo
|
|
646
663
|
response = @response_list.first
|
647
664
|
if not response.nil?
|
648
665
|
response[:response].clear
|
649
|
-
new_response = @responsebox.
|
666
|
+
new_response = @responsebox.to_response(:update_content_length => true)
|
667
|
+
puts new_response.class
|
650
668
|
response[:response].concat new_response
|
669
|
+
puts new_response
|
651
670
|
response[:thread].run
|
652
671
|
@responsebox.clear
|
653
672
|
@response_list.shift
|
@@ -658,6 +677,7 @@ module Watobo
|
|
658
677
|
rescue => bang
|
659
678
|
puts "!!! Error"
|
660
679
|
puts bang
|
680
|
+
puts bang.backtrace
|
661
681
|
end
|
662
682
|
end
|
663
683
|
|
@@ -1147,6 +1147,9 @@ module Watobo
|
|
1147
1147
|
|
1148
1148
|
self.icon = ICON_WATOBO
|
1149
1149
|
self.show(PLACEMENT_MAXIMIZED)
|
1150
|
+
|
1151
|
+
self.extend Watobo::Gui::Settings
|
1152
|
+
|
1150
1153
|
self.connect(SEL_CLOSE, method(:onClose))
|
1151
1154
|
|
1152
1155
|
@project = nil
|
@@ -1393,7 +1396,10 @@ module Watobo
|
|
1393
1396
|
# R E Q U E S T I N F O
|
1394
1397
|
requestInfo = FXVerticalFrame.new(@switcher, :opts => LAYOUT_FILL_X|LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
|
1395
1398
|
request_splitter = FXSplitter.new(requestInfo, :opts => LAYOUT_SIDE_TOP|SPLITTER_HORIZONTAL|LAYOUT_FILL_Y|LAYOUT_FILL_X|SPLITTER_TRACKING|SPLITTER_REVERSED)
|
1396
|
-
|
1399
|
+
request_splitter.connect(SEL_COMMAND){
|
1400
|
+
puts "Request Splitter Resized!"
|
1401
|
+
|
1402
|
+
}
|
1397
1403
|
|
1398
1404
|
# C H A T T A B L E C O N T R O L L E R
|
1399
1405
|
@conversation_table_ctrl = ConversationTableCtrl.new(request_splitter, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN)
|
@@ -1421,6 +1427,15 @@ module Watobo
|
|
1421
1427
|
open_manual_request_editor(chat)
|
1422
1428
|
end
|
1423
1429
|
end
|
1430
|
+
|
1431
|
+
@chatTable.connect(SEL_CHANGED){ |sender, sel, item|
|
1432
|
+
#puts item.row
|
1433
|
+
@chatTable.selectRow(item.row, false)
|
1434
|
+
chatid = @chatTable.getRowText(item.row).to_i
|
1435
|
+
chat = @project.getChat(chatid)
|
1436
|
+
chat_selected(chat)
|
1437
|
+
|
1438
|
+
}
|
1424
1439
|
|
1425
1440
|
@chatTable.connect(SEL_RIGHTBUTTONRELEASE) do |sender, sel, event|
|
1426
1441
|
@findings_tree.killSelection()
|
@@ -1606,6 +1621,15 @@ module Watobo
|
|
1606
1621
|
@request_viewer = Watobo::Gui::RequestViewer.new(chat_frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
|
1607
1622
|
# @request_viewer = Watobo::Gui::ChatViewer.new(chat_frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
|
1608
1623
|
# @request_viewer.highlight_style = 1
|
1624
|
+
|
1625
|
+
#
|
1626
|
+
# SEL_CONFIGURE is fired when the window is resized
|
1627
|
+
#@request_viewer.connect(SEL_CONFIGURE){ |sender, sel, ptr|
|
1628
|
+
@chat_frame_splitter.connect(SEL_COMMAND){
|
1629
|
+
# puts sender.class
|
1630
|
+
# puts sender.width
|
1631
|
+
puts @request_viewer.height
|
1632
|
+
}
|
1609
1633
|
|
1610
1634
|
# FXHorizontalSeparator.new(chat_frame, :opts => SEPARATOR_GROOVE|LAYOUT_FILL_X)
|
1611
1635
|
chat_frame = FXVerticalFrame.new(@chat_frame_splitter, :opts => LAYOUT_FILL_X|FRAME_SUNKEN|LAYOUT_MIN_WIDTH, :padding => 0, :width=>400)
|
@@ -1672,6 +1696,24 @@ module Watobo
|
|
1672
1696
|
|
1673
1697
|
# end
|
1674
1698
|
private
|
1699
|
+
|
1700
|
+
def chat_selected(chat)
|
1701
|
+
begin
|
1702
|
+
getApp().beginWaitCursor()
|
1703
|
+
# purge viewers
|
1704
|
+
@request_viewer.setText('')
|
1705
|
+
@response_viewer.setText('')
|
1706
|
+
|
1707
|
+
showChat(chat)
|
1708
|
+
|
1709
|
+
rescue => bang
|
1710
|
+
puts "!!!ERROR: chat_selected"
|
1711
|
+
puts bang
|
1712
|
+
puts "!!!"
|
1713
|
+
ensure
|
1714
|
+
getApp().endWaitCursor()
|
1715
|
+
end
|
1716
|
+
end
|
1675
1717
|
|
1676
1718
|
def save_response
|
1677
1719
|
unless @last_chat.nil?
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# .
|
2
|
+
# gui_settings.rb
|
3
|
+
#
|
4
|
+
# Copyright 2012 by siberas, http://www.siberas.de
|
5
|
+
#
|
6
|
+
# This file is part of WATOBO (Web Application Tool Box)
|
7
|
+
# http://watobo.sourceforge.com
|
8
|
+
#
|
9
|
+
# WATOBO is free software; you can redistribute it and/or modify
|
10
|
+
# it under the terms of the GNU General Public License as published by
|
11
|
+
# the Free Software Foundation version 2 of the License.
|
12
|
+
#
|
13
|
+
# WATOBO is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with WATOBO; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
21
|
+
# .
|
22
|
+
module Watobo
|
23
|
+
module Gui
|
24
|
+
module Settings
|
25
|
+
def self.save_gui_settings(settings)
|
26
|
+
wd = Watobo.working_directory
|
27
|
+
|
28
|
+
dir_name = Watobo::Utils.snakecase self.class.to_s.gsub(/.*::/,'')
|
29
|
+
path = File.join(wd, "conf", "gui")
|
30
|
+
Dir.mkdir path unless File.exist? path
|
31
|
+
conf_dir = File.join(path, dir_name)
|
32
|
+
Dir.mkdir conf_dir unless File.exist? conf_dir
|
33
|
+
file = File.join(conf_dir, dir_name + "_settings.yml")
|
34
|
+
|
35
|
+
Watobo::Utils.save_settings(file, config)
|
36
|
+
end
|
37
|
+
|
38
|
+
def load_gui_settings()
|
39
|
+
wd = Watobo.working_directory
|
40
|
+
dir_name = Watobo::Utils.snakecase self.class.to_s.gsub(/.*::/,'')
|
41
|
+
path = File.join(wd, "conf", "gui")
|
42
|
+
Dir.mkdir path unless File.exist? path
|
43
|
+
conf_dir = File.join(path, dir_name)
|
44
|
+
Dir.mkdir conf_dir unless File.exist? conf_dir
|
45
|
+
file = File.join(conf_dir, dir_name + "_settings.yml")
|
46
|
+
config = Watobo::Utils.load_settings(file)
|
47
|
+
config
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -66,7 +66,9 @@ include Watobo::Gui
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def initialize(owner, title, project, opts)
|
69
|
-
|
69
|
+
dialog_opts = { :opts => DECOR_ALL, :width=>800, :height=>650 }
|
70
|
+
dialog_opts.update opts
|
71
|
+
super(owner, title, dialog_opts)
|
70
72
|
# Implement Sender
|
71
73
|
# Implement Scanner
|
72
74
|
@icon = nil
|
@@ -75,6 +77,33 @@ include Watobo::Gui
|
|
75
77
|
@event_dispatcher_listeners = Hash.new
|
76
78
|
|
77
79
|
end
|
80
|
+
|
81
|
+
private
|
82
|
+
|
83
|
+
def save_config(config)
|
84
|
+
wd = Watobo.working_directory
|
85
|
+
|
86
|
+
dir_name = Watobo::Utils.snakecase self.class.to_s.gsub(/.*::/,'')
|
87
|
+
path = File.join(wd, "conf", "plugins")
|
88
|
+
Dir.mkdir path unless File.exist? path
|
89
|
+
conf_dir = File.join(path, dir_name)
|
90
|
+
Dir.mkdir conf_dir unless File.exist? conf_dir
|
91
|
+
file = File.join(conf_dir, dir_name + "_config.yml")
|
92
|
+
|
93
|
+
Watobo::Utils.save_settings(file, config)
|
94
|
+
end
|
95
|
+
|
96
|
+
def load_config()
|
97
|
+
wd = Watobo.working_directory
|
98
|
+
dir_name = Watobo::Utils.snakecase self.class.to_s.gsub(/.*::/,'')
|
99
|
+
path = File.join(wd, "conf", "plugins")
|
100
|
+
Dir.mkdir path unless File.exist? path
|
101
|
+
conf_dir = File.join(path, dir_name)
|
102
|
+
Dir.mkdir conf_dir unless File.exist? conf_dir
|
103
|
+
file = File.join(conf_dir, dir_name + "_config.yml")
|
104
|
+
config = Watobo::Utils.load_settings(file)
|
105
|
+
config
|
106
|
+
end
|
78
107
|
end
|
79
108
|
end
|
80
109
|
end
|
data/lib/watobo/gui.rb
CHANGED
@@ -129,7 +129,7 @@ module Watobo
|
|
129
129
|
# result.extend Watobo::Mixin::Parser::Web10
|
130
130
|
# result.extend Watobo::Mixin::Shaper::Web10
|
131
131
|
Watobo::Request.create result
|
132
|
-
|
132
|
+
|
133
133
|
ct = result.content_type
|
134
134
|
# last line is without "\r\n" if text has a body
|
135
135
|
if ct =~ /multipart\/form/ and body then
|
@@ -173,11 +173,55 @@ module Watobo
|
|
173
173
|
result.push "\r\n"
|
174
174
|
result.push body.strip
|
175
175
|
end
|
176
|
+
|
177
|
+
result.fixupContentLength() if options[:update_content_length] == true
|
178
|
+
puts ">>"
|
179
|
+
puts result
|
180
|
+
return result
|
181
|
+
rescue => bang
|
182
|
+
puts bang
|
183
|
+
puts bang.backtrace
|
184
|
+
raise bang
|
185
|
+
end
|
186
|
+
#return nil
|
187
|
+
end
|
188
|
+
|
189
|
+
def to_response(opts={})
|
190
|
+
options = { :update_content_length => false }
|
191
|
+
options.update opts
|
192
|
+
begin
|
193
|
+
text = parse_code
|
194
|
+
result = []
|
195
|
+
|
196
|
+
if text =~ /\n\n/
|
197
|
+
dummy = text.split(/\n\n/)
|
198
|
+
header = dummy.shift.split(/\n/)
|
199
|
+
body = dummy.join("\n\n")
|
200
|
+
else
|
201
|
+
header = text.split(/\n/)
|
202
|
+
body = nil
|
203
|
+
end
|
204
|
+
|
205
|
+
header.each do |h|
|
206
|
+
result.push "#{h}\r\n"
|
207
|
+
end
|
176
208
|
|
209
|
+
|
210
|
+
Watobo::Response.create result
|
211
|
+
|
212
|
+
if body then
|
213
|
+
result.push "\r\n"
|
214
|
+
result.push body.strip
|
215
|
+
end
|
216
|
+
|
177
217
|
result.fixupContentLength() if options[:update_content_length] == true
|
218
|
+
puts ">>"
|
219
|
+
puts result
|
178
220
|
return result
|
179
|
-
rescue
|
180
|
-
|
221
|
+
rescue => bang
|
222
|
+
puts bang
|
223
|
+
puts bang.backtrace
|
224
|
+
raise bang
|
181
225
|
end
|
182
226
|
#return nil
|
183
227
|
end
|
data/lib/watobo.rb
CHANGED
data/plugins/catalog/catalog.rb
CHANGED
@@ -294,7 +294,7 @@ about_txt.disable
|
|
294
294
|
|
295
295
|
def initialize(owner, project)
|
296
296
|
|
297
|
-
super(owner, "Catalog Scanner", project, :opts => DECOR_ALL, :width=>800, :height=>
|
297
|
+
super(owner, "Catalog Scanner", project, :opts => DECOR_ALL, :width=>800, :height=>600)
|
298
298
|
menu_bar = FXMenuBar.new(self, :opts => LAYOUT_SIDE_TOP|LAYOUT_FILL_X|FRAME_GROOVE)
|
299
299
|
menu_pane = FXMenuPane.new(self)
|
300
300
|
|
@@ -130,6 +130,65 @@ module Watobo
|
|
130
130
|
class Filefinder < Watobo::Template::Plugin
|
131
131
|
|
132
132
|
include Watobo::Constants
|
133
|
+
class DBSelectFrame < FXVerticalFrame
|
134
|
+
|
135
|
+
def select_db(db_name)
|
136
|
+
@db_listbox.numItems.times do |i|
|
137
|
+
if db_name == @db_listbox.getItemData(i)
|
138
|
+
@db_listbox.currentItem = i
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
def get_db_name
|
144
|
+
i = @db_listbox.currentItem
|
145
|
+
db = ''
|
146
|
+
db = @db_listbox.getItemData(i) if i >= 0
|
147
|
+
db
|
148
|
+
end
|
149
|
+
|
150
|
+
def get_db_list
|
151
|
+
l = []
|
152
|
+
@db_listbox.numItems.times do |i|
|
153
|
+
l << @db_listbox.getItemData(i)
|
154
|
+
end
|
155
|
+
l
|
156
|
+
end
|
157
|
+
|
158
|
+
def initialize(parent, db_list, opts)
|
159
|
+
super(parent, opts)
|
160
|
+
@db_list = []
|
161
|
+
db_list.each do |f|
|
162
|
+
@db_list << f if File.exist? f
|
163
|
+
end
|
164
|
+
|
165
|
+
FXLabel.new(self, "Each filename must be in a seperate line, e.g. DirBuster-DBs" )
|
166
|
+
frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
|
167
|
+
|
168
|
+
@db_listbox = FXListBox.new(frame, :opts => LAYOUT_FILL_X|FRAME_SUNKEN|FRAME_THICK)
|
169
|
+
@db_list.each do |db|
|
170
|
+
item = @db_listbox.appendItem(db)
|
171
|
+
@db_listbox.setItemData(@db_listbox.numItems-1, db )
|
172
|
+
end
|
173
|
+
@db_listbox.numVisible = @db_listbox.numItems
|
174
|
+
|
175
|
+
@add_db_btn = FXButton.new(frame, "add")
|
176
|
+
@add_db_btn.connect(SEL_COMMAND) { add_db }
|
177
|
+
end
|
178
|
+
|
179
|
+
private
|
180
|
+
|
181
|
+
def add_db
|
182
|
+
db_path = File.dirname(get_db_name)
|
183
|
+
db = FXFileDialog.getOpenFilename(self, "Open DB", db_path, "All Files (*)")
|
184
|
+
unless db.empty?
|
185
|
+
item = @db_listbox.appendItem(db)
|
186
|
+
i= @db_listbox.numItems-1
|
187
|
+
@db_listbox.setItemData(i, db )
|
188
|
+
@db_listbox.currentItem = i
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
133
192
|
|
134
193
|
def updateView()
|
135
194
|
#@project = project
|
@@ -167,7 +226,7 @@ module Watobo
|
|
167
226
|
|
168
227
|
|
169
228
|
def initialize(owner, project)
|
170
|
-
super(owner, "File Finder", project, :opts => DECOR_ALL, :width=>800, :height=>
|
229
|
+
super(owner, "File Finder", project, :opts => DECOR_ALL, :width=>800, :height=>600)
|
171
230
|
load_icon(__FILE__)
|
172
231
|
|
173
232
|
self.connect(SEL_CLOSE, method(:onClose))
|
@@ -181,6 +240,28 @@ module Watobo
|
|
181
240
|
|
182
241
|
@site = nil
|
183
242
|
@dir = nil
|
243
|
+
@db_list = []
|
244
|
+
@db_name = ""
|
245
|
+
@file_name = ""
|
246
|
+
|
247
|
+
config = load_config
|
248
|
+
|
249
|
+
|
250
|
+
if config.respond_to? :has_key?
|
251
|
+
if config.has_key? :db_list
|
252
|
+
config[:db_list].each do |db|
|
253
|
+
@db_list << db if File.exist? db
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
if config.has_key? :name
|
258
|
+
@db_list.each do |db|
|
259
|
+
@db_name = db if config[:name] == db
|
260
|
+
end
|
261
|
+
@file_name = config[:name] if @db_name.empty?
|
262
|
+
end
|
263
|
+
end
|
264
|
+
puts @db_list
|
184
265
|
|
185
266
|
begin
|
186
267
|
hs_green = FXHiliteStyle.new
|
@@ -202,11 +283,15 @@ module Watobo
|
|
202
283
|
top_splitter = FXSplitter.new(top_frame, LAYOUT_FILL_X|SPLITTER_HORIZONTAL|LAYOUT_FILL_Y|SPLITTER_TRACKING)
|
203
284
|
log_frame = FXVerticalFrame.new(mr_splitter, :opts => LAYOUT_FILL_X|LAYOUT_SIDE_BOTTOM,:height => 100)
|
204
285
|
|
286
|
+
@settings_tab = FXTabBook.new(top_splitter, nil, 0, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
287
|
+
FXTabItem.new(@settings_tab, "Settings", nil)
|
288
|
+
@settings_frame = FXVerticalFrame.new(@settings_tab, :opts => LAYOUT_FILL_Y|LAYOUT_FILL_Y|FRAME_RAISED)
|
205
289
|
|
206
|
-
|
290
|
+
FXTabItem.new(@settings_tab, "Logging", nil)
|
291
|
+
@logging_frame = FXVerticalFrame.new(@settings_tab, :opts => LAYOUT_FILL_Y|LAYOUT_FILL_Y|FRAME_RAISED)
|
207
292
|
|
208
|
-
|
209
|
-
@requestCombo = FXComboBox.new(
|
293
|
+
request_frame = FXVerticalFrame.new(top_splitter, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
294
|
+
@requestCombo = FXComboBox.new(request_frame, 5, nil, 0,
|
210
295
|
COMBOBOX_STATIC|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
|
211
296
|
#@filterCombo.width =200
|
212
297
|
|
@@ -215,7 +300,7 @@ module Watobo
|
|
215
300
|
@requestCombo.editable = false
|
216
301
|
@requestCombo.connect(SEL_COMMAND, method(:onSelectRequest))
|
217
302
|
|
218
|
-
log_text_frame = FXVerticalFrame.new(
|
303
|
+
log_text_frame = FXVerticalFrame.new(request_frame, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN|FRAME_THICK, :padding=>0)
|
219
304
|
@request_editor = RequestEditor.new(log_text_frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
220
305
|
|
221
306
|
# @scope_only_cb = FXCheckButton.new(@settings_frame, "target scope only", nil, 0, ICON_BEFORE_TEXT|LAYOUT_SIDE_LEFT)
|
@@ -246,50 +331,64 @@ module Watobo
|
|
246
331
|
@test_all_dirs.setCheck(false)
|
247
332
|
|
248
333
|
|
249
|
-
@
|
250
|
-
|
251
|
-
@
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
:
|
334
|
+
@finder_tab = FXTabBook.new(@settings_frame, nil, 0, LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_RIGHT)
|
335
|
+
|
336
|
+
FXTabItem.new(@finder_tab, "Filename", nil)
|
337
|
+
frame = FXVerticalFrame.new(@finder_tab, :opts => LAYOUT_FILL_X|FRAME_RAISED)
|
338
|
+
@search_name_dt = FXDataTarget.new(@file_name)
|
339
|
+
|
340
|
+
@dbfile_text = FXTextField.new(frame, 30,
|
341
|
+
:target => @search_name_dt, :selector => FXDataTarget::ID_VALUE,
|
342
|
+
:opts => TEXTFIELD_NORMAL|LAYOUT_FILL_COLUMN|LAYOUT_FILL_X)
|
257
343
|
@dbfile_text.handle(self, FXSEL(SEL_UPDATE, 0), nil)
|
258
|
-
@dbfile_btn = FXButton.new(dbfile_frame, "Change")
|
259
|
-
@dbfile_btn.connect(SEL_COMMAND, method(:selectDBFile))
|
260
344
|
|
345
|
+
|
346
|
+
FXTabItem.new(@finder_tab, "Database", nil)
|
347
|
+
@db_select_frame = DBSelectFrame.new(@finder_tab, @db_list, :opts => FRAME_THICK|FRAME_RAISED|LAYOUT_FILL_X)
|
261
348
|
|
262
|
-
|
349
|
+
unless @db_name.empty?
|
350
|
+
@db_select_frame.select_db @db_name
|
351
|
+
@finder_tab.current = 1
|
352
|
+
end
|
353
|
+
|
354
|
+
@fmode_dt = FXDataTarget.new(0)
|
263
355
|
group_box = FXGroupBox.new(@settings_frame, "Mode", LAYOUT_SIDE_TOP|FRAME_GROOVE|LAYOUT_FILL_X, 0, 0, 0, 0)
|
264
356
|
mode_frame = FXVerticalFrame.new(group_box, :opts => LAYOUT_FILL_X)
|
265
|
-
|
266
|
-
|
267
|
-
@
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
#@fmode_dt.connect(SEL_COMMAND) {
|
272
|
-
# @file_rb.handle(self, FXSEL(SEL_UPDATE, 0), nil)
|
273
|
-
# @dir_rb.handle(self, FXSEL(SEL_UPDATE, 0), nil)
|
274
|
-
#}
|
275
|
-
#@dbfile_text.enabled = false
|
276
|
-
#@dbfile_label.enabled = false
|
277
|
-
#@dbfile_btn.disable
|
278
|
-
# @use_ssl = FXCheckButton.new(@settings_frame, "use SSL", nil, 0, ICON_BEFORE_TEXT|LAYOUT_SIDE_LEFT)
|
279
|
-
|
280
|
-
|
281
|
-
# @run_passive_checks = FXCheckButton.new(@settings_frame, "run passive checks", nil, 0, ICON_BEFORE_TEXT|LAYOUT_SIDE_LEFT)
|
282
|
-
# @run_passive_checks.setCheck(false)
|
283
|
-
gbox = FXGroupBox.new(@settings_frame, "Extensions", LAYOUT_SIDE_LEFT|FRAME_GROOVE|LAYOUT_FILL_X|LAYOUT_FILL_Y, 0, 0, 0, 150)
|
284
|
-
gbframe = FXVerticalFrame.new(gbox, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN|FRAME_THICK, :padding => 0)
|
285
|
-
@extensions_text = FXText.new(gbframe, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|TEXT_WORDWRAP)
|
286
|
-
ext = "bak;php;asp;aspx;tgz;tar.gz;gz;tmp;temp;old;_"
|
287
|
-
# fxtext.backColor = fxtext.parent.backColor
|
288
|
-
# fxtext.disable
|
289
|
-
# text = "FileFinder allows you to search easily for specific files, e.g. files you have uploaded.\nIf you want to search for multiple files you can also use a db-file, "
|
290
|
-
# text << "which is a plain text file - each filename on one line."
|
357
|
+
@append_slash_cb = FXCheckButton.new(mode_frame, "append /", nil, 0, ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP|LAYOUT_FILL_Y)
|
358
|
+
|
359
|
+
@append_extensions_cb = FXCheckButton.new(mode_frame, "append extensions", nil, 0, ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP|LAYOUT_FILL_Y)
|
360
|
+
frame = FXVerticalFrame.new(mode_frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN|FRAME_THICK, :padding => 0)
|
361
|
+
@extensions_text = FXText.new(frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|TEXT_WORDWRAP)
|
362
|
+
ext = "bak;php;asp;aspx;tgz;tar.gz;gz;tmp;temp;old;_"
|
291
363
|
|
292
364
|
@extensions_text.setText(ext)
|
365
|
+
|
366
|
+
frame = @logging_frame
|
367
|
+
@logScanChats = FXCheckButton.new(frame, "enable", nil, 0, JUSTIFY_LEFT|JUSTIFY_TOP|ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP)
|
368
|
+
@logScanChats.checkState = false
|
369
|
+
|
370
|
+
@logScanChats.connect(SEL_COMMAND) do |sender, sel, item|
|
371
|
+
if @logScanChats.checked? then
|
372
|
+
@scanlog_name_text.enabled = true
|
373
|
+
@scanlog_name_text.backColor = FXColor::White
|
374
|
+
else
|
375
|
+
@scanlog_name_text.enabled = false
|
376
|
+
@scanlog_name_text.backColor = @scanlog_name_text.parent.backColor
|
377
|
+
end
|
378
|
+
end
|
379
|
+
|
380
|
+
@scanlog_name_dt = FXDataTarget.new('')
|
381
|
+
# @scanlog_name_dt.value = @project.scanLogDirectory() if File.exist?(@project.scanLogDirectory())
|
382
|
+
@scanlog_dir_label = FXLabel.new(frame, "Scan Name:" )
|
383
|
+
scanlog_frame = FXHorizontalFrame.new(frame,:opts => LAYOUT_FILL_X|LAYOUT_SIDE_TOP)
|
384
|
+
@scanlog_name_text = FXTextField.new(scanlog_frame, 20,
|
385
|
+
:target => @scanlog_name_dt, :selector => FXDataTarget::ID_VALUE,
|
386
|
+
:opts => TEXTFIELD_NORMAL|LAYOUT_FILL_COLUMN|LAYOUT_FILL_X)
|
387
|
+
@scanlog_name_text.handle(self, FXSEL(SEL_UPDATE, 0), nil)
|
388
|
+
unless @logScanChats.checked?
|
389
|
+
@scanlog_name_text.enabled = false
|
390
|
+
@scanlog_name_text.backColor = @scanlog_name_text.parent.backColor
|
391
|
+
end
|
293
392
|
|
294
393
|
|
295
394
|
@pbar = FXProgressBar.new(@settings_frame, nil, 0, LAYOUT_FILL_X|FRAME_SUNKEN|FRAME_THICK|PROGRESSBAR_HORIZONTAL)
|
@@ -304,15 +403,9 @@ module Watobo
|
|
304
403
|
@start_button.connect(SEL_COMMAND, method(:start))
|
305
404
|
@start_button.disable
|
306
405
|
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
406
|
log_frame_header = FXHorizontalFrame.new(log_frame, :opts => LAYOUT_FILL_X)
|
312
407
|
FXLabel.new(log_frame_header, "Logs:" )
|
313
408
|
|
314
|
-
|
315
|
-
#log_text_frame = FXHorizontalFrame.new(bottom_frame, :opts => LAYOUT_FILL_X|FRAME_SUNKEN|LAYOUT_BOTTOM)
|
316
409
|
log_text_frame = FXVerticalFrame.new(log_frame, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN|FRAME_THICK, :padding=>0)
|
317
410
|
@log_viewer = LogViewer.new(log_text_frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
318
411
|
|
@@ -339,6 +432,20 @@ module Watobo
|
|
339
432
|
|
340
433
|
private
|
341
434
|
|
435
|
+
def config
|
436
|
+
name = @search_name_dt.value
|
437
|
+
db_list = @db_select_frame.get_db_list
|
438
|
+
if @finder_tab.current == 1
|
439
|
+
name = @db_select_frame.get_db_name
|
440
|
+
end
|
441
|
+
|
442
|
+
c={
|
443
|
+
:db_list => db_list,
|
444
|
+
:name => name
|
445
|
+
}
|
446
|
+
|
447
|
+
end
|
448
|
+
|
342
449
|
def onSelectRequest(sender, sel, item)
|
343
450
|
begin
|
344
451
|
chat = @requestCombo.getItemData(@requestCombo.currentItem)
|
@@ -455,13 +562,7 @@ module Watobo
|
|
455
562
|
end
|
456
563
|
|
457
564
|
|
458
|
-
|
459
|
-
filename = FXFileDialog.getOpenFilename(self, "Save file", @db_path, "All Files (*)")
|
460
|
-
if filename != ""
|
461
|
-
@dbfile_dt.value = filename
|
462
|
-
@dbfile_text.handle(self, FXSEL(SEL_UPDATE, 0), nil)
|
463
|
-
end
|
464
|
-
end
|
565
|
+
|
465
566
|
|
466
567
|
|
467
568
|
def hide()
|
@@ -483,7 +584,17 @@ module Watobo
|
|
483
584
|
@start_button.text = "Cancel"
|
484
585
|
chatlist = []
|
485
586
|
checklist = []
|
486
|
-
|
587
|
+
#config = { :db_file => @dbfile_dt.value }
|
588
|
+
save_config(config)
|
589
|
+
name = ''
|
590
|
+
if @finder_tab.current == 0
|
591
|
+
name = @search_name_dt.value
|
592
|
+
else
|
593
|
+
name = @db_select_frame.get_db_name
|
594
|
+
end
|
595
|
+
|
596
|
+
|
597
|
+
@check = Check.new(@project, name, @project.getScanPreferences())
|
487
598
|
|
488
599
|
if @append_extensions_cb.checked?
|
489
600
|
extensions = @extensions_text.text.split(/(;|\n)/).select {|x| x !~ /(\n|;)/ }
|
@@ -547,10 +658,12 @@ module Watobo
|
|
547
658
|
|
548
659
|
t.join
|
549
660
|
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
661
|
+
scan_prefs = Watobo.project.getScanPreferences
|
662
|
+
if @logScanChats.checked?
|
663
|
+
scan_prefs[:scanlog_name] = @scanlog_name_dt.value unless @scanlog_name_dt.value.empty?
|
664
|
+
end
|
665
|
+
|
666
|
+
@scanner = Watobo::Scanner2.new(chatlist, checklist, @project.passive_checks, scan_prefs)
|
554
667
|
@pbar.total = @check.numChecks
|
555
668
|
@pbar.progress = 0
|
556
669
|
@pbar.barColor = 'red'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: watobo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.11
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-09-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mechanize
|
@@ -125,6 +125,7 @@ files:
|
|
125
125
|
- lib/watobo/gui/main_window.rb
|
126
126
|
- lib/watobo/gui/manual_request_editor.rb
|
127
127
|
- lib/watobo/gui/master_pw_dialog.rb
|
128
|
+
- lib/watobo/gui/mixins/gui_settings.rb
|
128
129
|
- lib/watobo/gui/mixins/subscriber.rb
|
129
130
|
- lib/watobo/gui/page_tree.rb
|
130
131
|
- lib/watobo/gui/password_policy_dialog.rb
|