watobo 0.9.8.677
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.
- data/bin/watobo_gui.rb +39 -0
- data/certificates/cert.pem +19 -0
- data/certificates/privkey.pem +15 -0
- data/certificates/watobo_dh.key +5 -0
- data/config/datastore.yml +5 -0
- data/config/forwarding_proxy.yml +12 -0
- data/config/general.yml +4 -0
- data/config/gui.yml +23 -0
- data/config/interceptor.yml +16 -0
- data/config/scan_policy.yml +13 -0
- data/config/scanner.yml +34 -0
- data/icons/Add.ico +0 -0
- data/icons/Add_24x24.ico +0 -0
- data/icons/Bandwidth.ico +0 -0
- data/icons/Bandwidth_24x24.ico +0 -0
- data/icons/Mr. Bomb.ico +0 -0
- data/icons/Mr. Bomb_16x16.ico +0 -0
- data/icons/Mr. Bomb_24x24.ico +0 -0
- data/icons/Orange Ball.ico +0 -0
- data/icons/Orange Ball_16x16.ico +0 -0
- data/icons/Orange Ball_24x24.ico +0 -0
- data/icons/Pause.ico +0 -0
- data/icons/Play.ico +0 -0
- data/icons/Play_24x24.ico +0 -0
- data/icons/Red Ball.ico +0 -0
- data/icons/Red Ball_16x16.ico +0 -0
- data/icons/Red Ball_24x24.ico +0 -0
- data/icons/Run.ico +0 -0
- data/icons/Stop.ico +0 -0
- data/icons/Stop_24x24.ico +0 -0
- data/icons/Terminal.ico +0 -0
- data/icons/Transfer.ico +0 -0
- data/icons/Transfer_16x16.ico +0 -0
- data/icons/User.ico +0 -0
- data/icons/User_16x16.ico +0 -0
- data/icons/User_24x24.ico +0 -0
- data/icons/Web Browser.ico +0 -0
- data/icons/Web Browser_16x16.ico +0 -0
- data/icons/Write Document.ico +0 -0
- data/icons/Yellow Ball.ico +0 -0
- data/icons/Yellow Ball_16x16.ico +0 -0
- data/icons/Yellow Ball_24x24.ico +0 -0
- data/icons/advanced.ico +0 -0
- data/icons/advanced_16x16.ico +0 -0
- data/icons/advanced_24x24.ico +0 -0
- data/icons/applications.ico +0 -0
- data/icons/applications_16x16.ico +0 -0
- data/icons/applications_24x24.ico +0 -0
- data/icons/browser_16x16.ico +0 -0
- data/icons/browser_24x24.ico +0 -0
- data/icons/burn.ico +0 -0
- data/icons/burn_16x16.ico +0 -0
- data/icons/burn_24x24.ico +0 -0
- data/icons/calculator.ico +0 -0
- data/icons/calculator_24x24.ico +0 -0
- data/icons/cb_checked.ico +0 -0
- data/icons/cb_checked_orange.ico +0 -0
- data/icons/cb_unchecked.ico +0 -0
- data/icons/coin_24x24.ico +0 -0
- data/icons/conversation.ico +0 -0
- data/icons/conversation_24x24.ico +0 -0
- data/icons/engine.ico +0 -0
- data/icons/filter.ico +0 -0
- data/icons/folder.ico +0 -0
- data/icons/folder_16x16.ico +0 -0
- data/icons/fuzzer_16x16.ico +0 -0
- data/icons/fuzzer_24x24.ico +0 -0
- data/icons/go-down_16x16.png +0 -0
- data/icons/go-up_16x16.png +0 -0
- data/icons/help.ico +0 -0
- data/icons/help_16x16.ico +0 -0
- data/icons/help_24x24.ico +0 -0
- data/icons/iChat.ico +0 -0
- data/icons/iChat_16x16.ico +0 -0
- data/icons/iChat_24x24.ico +0 -0
- data/icons/icons.txt +3 -0
- data/icons/info.ico +0 -0
- data/icons/info_16x16.ico +0 -0
- data/icons/info_24x24.ico +0 -0
- data/icons/interceptor_24x24.ico +0 -0
- data/icons/lock.ico +0 -0
- data/icons/lock_12x12.ico +0 -0
- data/icons/lock_16x16.ico +0 -0
- data/icons/monitor.ico +0 -0
- data/icons/plugin.ico +0 -0
- data/icons/plugin_24x24.ico +0 -0
- data/icons/scan_16x16.png +0 -0
- data/icons/send.ico +0 -0
- data/icons/server.ico +0 -0
- data/icons/server_16x16.ico +0 -0
- data/icons/siberas_logo_x24.gif +0 -0
- data/icons/tag_blue_32x32.ico +0 -0
- data/icons/watobo-48x48.png +0 -0
- data/icons/watobo-logo.png +0 -0
- data/icons/watobo.ico +0 -0
- data/lib/watobo/adapters/data_store.rb +38 -0
- data/lib/watobo/adapters/file/file_store.rb +211 -0
- data/lib/watobo/adapters/session_store.rb +27 -0
- data/lib/watobo/adapters.rb +26 -0
- data/lib/watobo/config.rb +143 -0
- data/lib/watobo/constants.rb +92 -0
- data/lib/watobo/core/active_check.rb +404 -0
- data/lib/watobo/core/cookie.rb +69 -0
- data/lib/watobo/core/fuzz_gen.rb +160 -0
- data/lib/watobo/core/http_socket.rb +142 -0
- data/lib/watobo/core/interceptor.rb +729 -0
- data/lib/watobo/core/passive_check.rb +141 -0
- data/lib/watobo/core/project.rb +1058 -0
- data/lib/watobo/core/scanner.rb +396 -0
- data/lib/watobo/core/session.rb +1320 -0
- data/lib/watobo/core/simple_ca.rb +393 -0
- data/lib/watobo/core.rb +34 -0
- data/lib/watobo/defaults.rb +40 -0
- data/lib/watobo/external/diff/lcs/array.rb +42 -0
- data/lib/watobo/external/diff/lcs/block.rb +72 -0
- data/lib/watobo/external/diff/lcs/callbacks.rb +343 -0
- data/lib/watobo/external/diff/lcs/change.rb +190 -0
- data/lib/watobo/external/diff/lcs/hunk.rb +279 -0
- data/lib/watobo/external/diff/lcs/ldiff.rb +247 -0
- data/lib/watobo/external/diff/lcs/string.rb +40 -0
- data/lib/watobo/external/diff/lcs.rb +1124 -0
- data/lib/watobo/external/ntlm/ntlm.rb +797 -0
- data/lib/watobo/externals.rb +28 -0
- data/lib/watobo/framework/create_project.rb +55 -0
- data/lib/watobo/framework/init.rb +149 -0
- data/lib/watobo/framework/init_modules.rb +116 -0
- data/lib/watobo/framework/license_text.rb +50 -0
- data/lib/watobo/framework.rb +26 -0
- data/lib/watobo/gui/about_watobo.rb +68 -0
- data/lib/watobo/gui/browser_preview.rb +460 -0
- data/lib/watobo/gui/certificate_dialog.rb +132 -0
- data/lib/watobo/gui/chat_diff.rb +415 -0
- data/lib/watobo/gui/chatviewer_frame.rb +427 -0
- data/lib/watobo/gui/checkboxtree.rb +221 -0
- data/lib/watobo/gui/checks_policy_frame.rb +123 -0
- data/lib/watobo/gui/client_cert_dialog.rb +227 -0
- data/lib/watobo/gui/confirm_scan_dialog.rb +67 -0
- data/lib/watobo/gui/conversation_table.rb +386 -0
- data/lib/watobo/gui/conversation_table_ctrl.rb +175 -0
- data/lib/watobo/gui/csrf_token_dialog.rb +446 -0
- data/lib/watobo/gui/dashboard.rb +341 -0
- data/lib/watobo/gui/define_scope_frame.rb +380 -0
- data/lib/watobo/gui/edit_comment.rb +70 -0
- data/lib/watobo/gui/edit_scope_dialog.rb +69 -0
- data/lib/watobo/gui/finding_info.rb +212 -0
- data/lib/watobo/gui/findings_tree.rb +459 -0
- data/lib/watobo/gui/full_scan_dialog.rb +269 -0
- data/lib/watobo/gui/fuzzer_gui.rb +1522 -0
- data/lib/watobo/gui/hex_viewer.rb +106 -0
- data/lib/watobo/gui/interceptor_gui.rb +994 -0
- data/lib/watobo/gui/interceptor_settings_dialog.rb +201 -0
- data/lib/watobo/gui/log_viewer.rb +97 -0
- data/lib/watobo/gui/login_wizzard.rb +301 -0
- data/lib/watobo/gui/main_window.rb +1815 -0
- data/lib/watobo/gui/manual_request_editor.rb +1105 -0
- data/lib/watobo/gui/master_pw_dialog.rb +142 -0
- data/lib/watobo/gui/password_policy_dialog.rb +98 -0
- data/lib/watobo/gui/plugin/base.rb +82 -0
- data/lib/watobo/gui/plugin_board.rb +95 -0
- data/lib/watobo/gui/preferences_dialog.rb +116 -0
- data/lib/watobo/gui/progress_window.rb +102 -0
- data/lib/watobo/gui/project_wizzard.rb +369 -0
- data/lib/watobo/gui/proxy_dialog.rb +550 -0
- data/lib/watobo/gui/quick_scan_dialog.rb +242 -0
- data/lib/watobo/gui/request_editor.rb +480 -0
- data/lib/watobo/gui/save_chat_dialog.rb +158 -0
- data/lib/watobo/gui/scanner_settings_dialog.rb +360 -0
- data/lib/watobo/gui/select_chat_dialog.rb +169 -0
- data/lib/watobo/gui/session_management_dialog.rb +688 -0
- data/lib/watobo/gui/sites_tree.rb +347 -0
- data/lib/watobo/gui/status_bar.rb +88 -0
- data/lib/watobo/gui/table_editor.rb +445 -0
- data/lib/watobo/gui/tagless_viewer.rb +62 -0
- data/lib/watobo/gui/templates/plugin.rb +80 -0
- data/lib/watobo/gui/templates/plugin2.rb +103 -0
- data/lib/watobo/gui/text_viewer.rb +247 -0
- data/lib/watobo/gui/transcoder_window.rb +215 -0
- data/lib/watobo/gui/utils/gui_utils.rb +129 -0
- data/lib/watobo/gui/utils/init_icons.rb +106 -0
- data/lib/watobo/gui/utils/load_icons.rb +54 -0
- data/lib/watobo/gui/utils/load_plugins.rb +94 -0
- data/lib/watobo/gui/utils/master_password.rb +90 -0
- data/lib/watobo/gui/utils/save_default_settings.rb +99 -0
- data/lib/watobo/gui/utils/save_project_settings.rb +21 -0
- data/lib/watobo/gui/utils/save_proxy_settings.rb +45 -0
- data/lib/watobo/gui/utils/save_session_settings.rb +21 -0
- data/lib/watobo/gui/utils/session_history.rb +134 -0
- data/lib/watobo/gui/workspace_dialog.rb +89 -0
- data/lib/watobo/gui/www_auth_dialog.rb +348 -0
- data/lib/watobo/gui/xml_viewer_frame.rb +114 -0
- data/lib/watobo/gui.rb +139 -0
- data/lib/watobo/mixins/httpparser.rb +664 -0
- data/lib/watobo/mixins/request_parser.rb +210 -0
- data/lib/watobo/mixins/shapers.rb +345 -0
- data/lib/watobo/mixins/transcoders.rb +88 -0
- data/lib/watobo/mixins.rb +32 -0
- data/lib/watobo/utils/check_regex.rb +36 -0
- data/lib/watobo/utils/copy_object.rb +29 -0
- data/lib/watobo/utils/crypto.rb +74 -0
- data/lib/watobo/utils/expand_range.rb +45 -0
- data/lib/watobo/utils/file_management.rb +73 -0
- data/lib/watobo/utils/load_chat.rb +219 -0
- data/lib/watobo/utils/load_icon.rb +47 -0
- data/lib/watobo/utils/print_debug.rb +34 -0
- data/lib/watobo/utils/response_hash.rb +143 -0
- data/lib/watobo/utils/secure_eval.rb +57 -0
- data/lib/watobo/utils/text2request.rb +96 -0
- data/lib/watobo/utils.rb +32 -0
- data/lib/watobo.rb +76 -0
- data/modules/active/Apache/mod_status.rb +123 -0
- data/modules/active/Flash/crossdomain.rb +102 -0
- data/modules/active/directories/dirwalker.rb +89 -0
- data/modules/active/discovery/fileextensions.rb +151 -0
- data/modules/active/discovery/http_methods.rb +135 -0
- data/modules/active/domino/domino_db.lst +164 -0
- data/modules/active/domino/domino_db.rb +128 -0
- data/modules/active/fileinclusion/lfi_simple.rb +134 -0
- data/modules/active/jboss/jboss_basic.rb +119 -0
- data/modules/active/sap/business_objects.rb +73 -0
- data/modules/active/sap/its_commands.rb +101 -0
- data/modules/active/sap/its_service_parameter.rb +105 -0
- data/modules/active/sap/its_services.rb +103 -0
- data/modules/active/sap/its_xss.rb +98 -0
- data/modules/active/sqlinjection/sql_boolean.rb +262 -0
- data/modules/active/sqlinjection/sqli_simple.rb +205 -0
- data/modules/active/xss/xss_simple.rb +179 -0
- data/modules/passive/cookie_options.rb +97 -0
- data/modules/passive/cookie_xss.rb +85 -0
- data/modules/passive/detect_code.rb +89 -0
- data/modules/passive/detect_fileupload.rb +80 -0
- data/modules/passive/detect_infrastructure.rb +98 -0
- data/modules/passive/detect_one_time_tokens.rb +86 -0
- data/modules/passive/dirindexing.rb +81 -0
- data/modules/passive/disclosure_emails.rb +82 -0
- data/modules/passive/disclosure_ipaddr.rb +87 -0
- data/modules/passive/filename_as_parameter.rb +85 -0
- data/modules/passive/form_spotter.rb +75 -0
- data/modules/passive/hotspots.rb +86 -0
- data/modules/passive/in_script_parameter.rb +92 -0
- data/modules/passive/multiple_server_headers.rb +98 -0
- data/modules/passive/possible_login.rb +134 -0
- data/modules/passive/redirect_url.rb +88 -0
- data/modules/passive/redirectionz.rb +96 -0
- data/modules/passive/xss_dom.rb +91 -0
- data/plugins/catalog/catalog.ico +0 -0
- data/plugins/catalog/catalog.rb +726 -0
- data/plugins/catalog/db_tests +6483 -0
- data/plugins/catalog/db_variables +29 -0
- data/plugins/filefinder/dbs/hbci.db +12 -0
- data/plugins/filefinder/filefinder.rb +602 -0
- data/plugins/sslchecker/cli/sslchecker_cli.rb +21 -0
- data/plugins/sslchecker/gui/cipher_table.rb +260 -0
- data/plugins/sslchecker/gui/gui.rb +245 -0
- data/plugins/sslchecker/gui/sslchecker.rb +26 -0
- data/plugins/sslchecker/icons/green_16x16.ico +0 -0
- data/plugins/sslchecker/icons/grey_16x16.ico +0 -0
- data/plugins/sslchecker/icons/red_16x16.ico +0 -0
- data/plugins/sslchecker/icons/sslchecker.ico +0 -0
- data/plugins/sslchecker/lib/check.rb +117 -0
- metadata +317 -0
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
# .
|
|
2
|
+
# sites_tree.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
|
+
#require 'qcustomize.rb'
|
|
23
|
+
|
|
24
|
+
module Watobo
|
|
25
|
+
module Gui
|
|
26
|
+
class SitesTree < FXTreeList
|
|
27
|
+
attr_accessor :project
|
|
28
|
+
|
|
29
|
+
include Watobo::Constants
|
|
30
|
+
include Watobo::Gui::Icons
|
|
31
|
+
def subscribe(event, &callback)
|
|
32
|
+
(@event_dispatcher_listeners[event] ||= []) << callback
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def reload()
|
|
36
|
+
self.clearItems
|
|
37
|
+
|
|
38
|
+
@project.chats.each do |chat|
|
|
39
|
+
addChat(chat)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# @interface.updateRequestTable(@project)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def refresh_tree()
|
|
46
|
+
self.clearItems
|
|
47
|
+
|
|
48
|
+
@project.chats.each do |chat|
|
|
49
|
+
addChat(chat)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# @interface.updateRequestTable(@project)
|
|
53
|
+
end
|
|
54
|
+
def expandFullTree(item)
|
|
55
|
+
self.expandTree(item)
|
|
56
|
+
item.each do |c|
|
|
57
|
+
expandFullTree(c) if !self.itemLeaf?(c)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def useSmallIcons()
|
|
62
|
+
small_font = FXFont.new(getApp(), "helvetica", GUI_SMALL_FONT_SIZE)
|
|
63
|
+
small_font.create
|
|
64
|
+
@folderIcon = ICON_FOLDER_SMALL
|
|
65
|
+
@reqIcon = ICON_REQUEST_SMALL
|
|
66
|
+
@siteIcon= ICON_SITE_SMALL
|
|
67
|
+
self.font = small_font
|
|
68
|
+
reload()
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def useRegularIcons()
|
|
72
|
+
regular_font = FXFont.new(getApp(), "helvetica", GUI_REGULAR_FONT_SIZE)
|
|
73
|
+
regular_font.create
|
|
74
|
+
# Findings Tree Icons
|
|
75
|
+
@folderIcon = ICON_FOLDER
|
|
76
|
+
@reqIcon = ICON_REQUEST
|
|
77
|
+
@siteIcon= ICON_SITE
|
|
78
|
+
self.font = regular_font
|
|
79
|
+
reload()
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def collapseFullTree(item)
|
|
83
|
+
self.collapseTree(item)
|
|
84
|
+
item.each do |c|
|
|
85
|
+
collapseFullTree(c) if !self.itemLeaf?(c)
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def hidden?(chat)
|
|
90
|
+
|
|
91
|
+
#TODO: Filter
|
|
92
|
+
false
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def hideDomain(domain_filter)
|
|
96
|
+
# @interface.default_settings[:domain_filters].push domain_filter
|
|
97
|
+
# @interface.updateTreeLists()
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def addChat(chat)
|
|
101
|
+
add_chat = true
|
|
102
|
+
|
|
103
|
+
add_chat = @project.siteInScope?(chat.request.site) if @show_scope_only == true
|
|
104
|
+
@tree_filters[:response_status].each do |rf|
|
|
105
|
+
#puts "#{chat.response.status} / #{rf}"
|
|
106
|
+
add_chat = false if chat.response.status =~ /#{rf}/
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
addChatItem(chat) if add_chat
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# end
|
|
113
|
+
def addChatItem(chat)
|
|
114
|
+
|
|
115
|
+
site = self.findItem(chat.request.site, nil, SEARCH_FORWARD|SEARCH_IGNORECASE)
|
|
116
|
+
|
|
117
|
+
if not site then
|
|
118
|
+
# found new site
|
|
119
|
+
site = self.appendItem(nil, chat.request.site, @siteIcon, @siteIcon)
|
|
120
|
+
#site = @findings_tree.moveItem(project.first,project,site)
|
|
121
|
+
self.setItemData(site, :item_type_site)
|
|
122
|
+
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
@quick_filter[site.object_id] ||= []
|
|
126
|
+
@quick_filter[site.object_id].push chat
|
|
127
|
+
|
|
128
|
+
folder_parent = site
|
|
129
|
+
#puts "ADD_REQUEST: #{chat.request.first}"
|
|
130
|
+
dir = chat.request.dir
|
|
131
|
+
|
|
132
|
+
if dir != "" then
|
|
133
|
+
#puts "Check Folder: #{chat.request.path} - #{chat.request.site}" if path =~ /jump/
|
|
134
|
+
folders = dir.split('/')
|
|
135
|
+
folders.each do |folder_name|
|
|
136
|
+
# puts "search for folder #{folder_name}"
|
|
137
|
+
folder_item = nil
|
|
138
|
+
folder_parent.each do |c|
|
|
139
|
+
folder_item = c if c.to_s == folder_name
|
|
140
|
+
end
|
|
141
|
+
#folder_item = self.findItem(folder_name, folder_parent, SEARCH_FORWARD|SEARCH_WRAP)
|
|
142
|
+
if folder_item.nil? then
|
|
143
|
+
#folder_item = self.appendItem(folder_parent, folder_name, @folderIcon, @folderIcon)
|
|
144
|
+
folder_item = self.insertItem(folder_parent.first, folder_parent, folder_name, @folderIcon, @folderIcon)
|
|
145
|
+
self.setItemData(folder_item, :item_type_folder)
|
|
146
|
+
|
|
147
|
+
# puts "added folder #{folder_name} to #{folder_parent} for site #{chat.request.site}"
|
|
148
|
+
end
|
|
149
|
+
@quick_filter[folder_item.object_id] ||= []
|
|
150
|
+
@quick_filter[folder_item.object_id].push chat
|
|
151
|
+
folder_parent = folder_item
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
ml = 25
|
|
155
|
+
fext = chat.request.file_ext
|
|
156
|
+
element = "/" + fext.slice(0, ml)
|
|
157
|
+
element += "..." if fext.length > ml
|
|
158
|
+
|
|
159
|
+
item = nil
|
|
160
|
+
folder_parent.each do |c|
|
|
161
|
+
item = c if c.to_s == element
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
if item.nil?
|
|
165
|
+
# puts item.text.methods.sort
|
|
166
|
+
|
|
167
|
+
# puts "added file #{element} to #{folder_parent} for site #{chat.request.site}" if chat.request.url =~ /series60/i
|
|
168
|
+
new_item = self.appendItem(folder_parent, element, @reqIcon, @reqIcon)
|
|
169
|
+
# self.textColor = FXColor::Red
|
|
170
|
+
self.setItemData(new_item, chat)
|
|
171
|
+
@quick_filter[new_item.object_id] ||= []
|
|
172
|
+
#puts new_item.class
|
|
173
|
+
@quick_filter[new_item.object_id].push chat
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
def initialize(parent, interface, project)
|
|
179
|
+
@project = project
|
|
180
|
+
@interface = interface
|
|
181
|
+
@parent = parent
|
|
182
|
+
@quick_filter = Hash.new
|
|
183
|
+
@show_scope_only = false
|
|
184
|
+
|
|
185
|
+
super(parent, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_TOP|LAYOUT_RIGHT|TREELIST_SHOWS_LINES|TREELIST_SHOWS_BOXES|TREELIST_ROOT_BOXES|TREELIST_EXTENDEDSELECT)
|
|
186
|
+
|
|
187
|
+
@event_dispatcher_listeners = Hash.new
|
|
188
|
+
|
|
189
|
+
@projectIcon = ICON_PROJECT
|
|
190
|
+
|
|
191
|
+
@folderIcon = ICON_FOLDER
|
|
192
|
+
@reqIcon = ICON_REQUEST
|
|
193
|
+
@siteIcon= ICON_SITE
|
|
194
|
+
|
|
195
|
+
@filtered_domains = Hash.new # domains which already have been filtered
|
|
196
|
+
|
|
197
|
+
@tree_filters = {
|
|
198
|
+
:response_status => []
|
|
199
|
+
}
|
|
200
|
+
# session_leaf = self.appendItem(nil, @session_name, @projectIcon, @projectIcon)
|
|
201
|
+
|
|
202
|
+
self.connect(SEL_COMMAND) do |sender, sel, item|
|
|
203
|
+
url_parts = []
|
|
204
|
+
# p = item
|
|
205
|
+
if self.itemLeaf?(item)
|
|
206
|
+
getApp().beginWaitCursor do
|
|
207
|
+
begin
|
|
208
|
+
if item.data
|
|
209
|
+
#if item.data.class.to_s =~ /Qchat/
|
|
210
|
+
#@interface.show_chat(item.data)
|
|
211
|
+
notify(:show_chat, item.data)
|
|
212
|
+
#end
|
|
213
|
+
chat = item.data
|
|
214
|
+
# url_parts.unshift chat.request.file_ext
|
|
215
|
+
# p = item.parent
|
|
216
|
+
end
|
|
217
|
+
rescue => bang
|
|
218
|
+
# puts bang
|
|
219
|
+
# puts bang.backtrace if $DEBUG
|
|
220
|
+
#puts "!!! Error: could not show selected tree item"
|
|
221
|
+
end
|
|
222
|
+
end
|
|
223
|
+
#elsif item.data == :item_type_folder||:item_type_site then
|
|
224
|
+
end
|
|
225
|
+
# if !p.nil?
|
|
226
|
+
# while p.parent
|
|
227
|
+
# url_parts.unshift p.text.sub(/^\//,'')
|
|
228
|
+
# p = p.parent
|
|
229
|
+
# end
|
|
230
|
+
#end
|
|
231
|
+
# url_parts.unshift p
|
|
232
|
+
# filter = url_parts.join("/")
|
|
233
|
+
# puts @quick_filter.keys.join("\n")
|
|
234
|
+
# puts "===="
|
|
235
|
+
# puts item
|
|
236
|
+
# puts "===="
|
|
237
|
+
notify(:show_conversation, @quick_filter[item.object_id]) if @quick_filter[item.object_id]
|
|
238
|
+
# notify(:apply_site_filter, filter)
|
|
239
|
+
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
self.connect(SEL_RIGHTBUTTONRELEASE) do |sender, sel, event|
|
|
243
|
+
exclude_site = nil
|
|
244
|
+
unless event.moved?
|
|
245
|
+
FXMenuPane.new(self) do |menu_pane|
|
|
246
|
+
|
|
247
|
+
target = FXMenuCheck.new(menu_pane, "show scope only" )
|
|
248
|
+
target.check = @show_scope_only
|
|
249
|
+
|
|
250
|
+
target.connect(SEL_COMMAND) { |tsender, tsel, titem|
|
|
251
|
+
@show_scope_only = tsender.checked?
|
|
252
|
+
reload() if @project
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
exclude_submenu = FXMenuPane.new(self) do |sub|
|
|
256
|
+
["404", "302"].each do |rc|
|
|
257
|
+
target = FXMenuCheck.new(sub, "#{rc} Status" )
|
|
258
|
+
|
|
259
|
+
target.check = @tree_filters[:response_status].include?(rc)
|
|
260
|
+
|
|
261
|
+
target.connect(SEL_COMMAND) {
|
|
262
|
+
status = target.to_s.slice(/\d+/)
|
|
263
|
+
if sender.checked?()
|
|
264
|
+
@tree_filters[:response_status].push status
|
|
265
|
+
else
|
|
266
|
+
@tree_filters[:response_status].delete(status)
|
|
267
|
+
end
|
|
268
|
+
reload() if @project
|
|
269
|
+
}
|
|
270
|
+
end
|
|
271
|
+
end
|
|
272
|
+
FXMenuCascade.new(menu_pane, "Hide", nil, exclude_submenu)
|
|
273
|
+
|
|
274
|
+
item = sender.getItemAt(event.win_x, event.win_y)
|
|
275
|
+
|
|
276
|
+
unless item.nil?
|
|
277
|
+
|
|
278
|
+
unless self.itemLeaf?(item)
|
|
279
|
+
FXMenuSeparator.new(menu_pane)
|
|
280
|
+
FXMenuCommand.new(menu_pane, "expand tree" ).connect(SEL_COMMAND) {
|
|
281
|
+
expandFullTree(item)
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
FXMenuCommand.new(menu_pane, "collapse tree" ).connect(SEL_COMMAND) {
|
|
285
|
+
self.collapseFullTree(item)
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
data = self.getItemData(item)
|
|
291
|
+
|
|
292
|
+
if data == :item_type_site then
|
|
293
|
+
FXMenuSeparator.new(menu_pane)
|
|
294
|
+
|
|
295
|
+
FXMenuCommand.new(menu_pane, "add site to scope" ).connect(SEL_COMMAND) {
|
|
296
|
+
|
|
297
|
+
notify(:add_site_to_scope, item.to_s)
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
elsif data.is_a? Watobo::Chat
|
|
301
|
+
|
|
302
|
+
FXMenuSeparator.new(menu_pane)
|
|
303
|
+
doManual = FXMenuCommand.new(menu_pane, "Manual Request.." )
|
|
304
|
+
|
|
305
|
+
doManual.connect(SEL_COMMAND) {
|
|
306
|
+
if item.data
|
|
307
|
+
@interface.open_manual_request_editor(item.data)
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
}
|
|
311
|
+
end
|
|
312
|
+
# submenu = FXMenuPane.new(self) do |domain_menu|
|
|
313
|
+
|
|
314
|
+
# @filtered_domains.each do |domain, filter|
|
|
315
|
+
# hide_domain = FXMenuCommand.new(domain_menu, "#{domain}" )
|
|
316
|
+
# hide_domain.connect(SEL_COMMAND) {
|
|
317
|
+
# @interface.default_settings[:domain_filters].delete(filter)
|
|
318
|
+
# @filtered_domains.clear
|
|
319
|
+
# @interface.updateTreeLists
|
|
320
|
+
# }
|
|
321
|
+
# end
|
|
322
|
+
# end
|
|
323
|
+
# FXMenuCascade.new(menu_pane, "Unhide Domains", nil, submenu)
|
|
324
|
+
|
|
325
|
+
end
|
|
326
|
+
menu_pane.create
|
|
327
|
+
menu_pane.popup(nil, event.root_x, event.root_y)
|
|
328
|
+
app.runModalWhileShown(menu_pane)
|
|
329
|
+
|
|
330
|
+
end
|
|
331
|
+
end
|
|
332
|
+
end
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
private
|
|
336
|
+
|
|
337
|
+
def notify(event, *args)
|
|
338
|
+
if @event_dispatcher_listeners[event]
|
|
339
|
+
@event_dispatcher_listeners[event].each do |m|
|
|
340
|
+
m.call(*args) if m.respond_to? :call
|
|
341
|
+
end
|
|
342
|
+
end
|
|
343
|
+
end
|
|
344
|
+
end
|
|
345
|
+
# namespace end
|
|
346
|
+
end
|
|
347
|
+
end
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# .
|
|
2
|
+
# status_bar.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
|
+
class StatusBar < FXHorizontalFrame
|
|
25
|
+
|
|
26
|
+
def setStatusInfo( prefs={} )
|
|
27
|
+
cprefs = {
|
|
28
|
+
:color => self.parent.backColor,
|
|
29
|
+
:text => ''
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
cprefs.update prefs unless prefs.nil?
|
|
33
|
+
|
|
34
|
+
@statusInfo.text = cprefs[:text]
|
|
35
|
+
unless cprefs[:color].nil?
|
|
36
|
+
@statusInfo.backColor = cprefs[:color]
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def statusInfoText=( new_text )
|
|
41
|
+
@statusInfo.text = new_text
|
|
42
|
+
@statusInfo.backColor = self.parent.backColor
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def projectName=(project_name)
|
|
46
|
+
@projectName.text = project_name
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def sessionName=(session_name)
|
|
50
|
+
@sessionName.text = session_name
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def portNumber=(port_number)
|
|
54
|
+
@portNumber.text = port_number
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def forwardingProxy=(forward_proxy)
|
|
58
|
+
@forwardingProxy.text = forward_proxy
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def initialize(owner, opts)
|
|
63
|
+
super(owner, opts)
|
|
64
|
+
|
|
65
|
+
frame = FXHorizontalFrame.new(self, :opts => FRAME_SUNKEN, :padding => 0)
|
|
66
|
+
FXLabel.new(frame, "Status: ")
|
|
67
|
+
@statusInfo = FXLabel.new(frame, "- no project started -")
|
|
68
|
+
|
|
69
|
+
frame = FXHorizontalFrame.new(self, :opts => FRAME_SUNKEN, :padding => 0)
|
|
70
|
+
FXLabel.new(frame, "Project: ")
|
|
71
|
+
@projectName = FXLabel.new(frame, " - ")
|
|
72
|
+
|
|
73
|
+
frame = FXHorizontalFrame.new(self, :opts => FRAME_SUNKEN, :padding => 0)
|
|
74
|
+
FXLabel.new(frame, "Session: ")
|
|
75
|
+
@sessionName = FXLabel.new(frame, " - ")
|
|
76
|
+
|
|
77
|
+
frame = FXHorizontalFrame.new(self, :opts => FRAME_SUNKEN, :padding => 0)
|
|
78
|
+
FXLabel.new(frame, "Port: ")
|
|
79
|
+
@portNumber = FXLabel.new(frame, " - ")
|
|
80
|
+
|
|
81
|
+
frame = FXHorizontalFrame.new(self, :opts => FRAME_SUNKEN, :padding => 0)
|
|
82
|
+
FXLabel.new(frame, "Forwarding Proxy: ")
|
|
83
|
+
@forwardingProxy = FXLabel.new(frame, " - ")
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
# class end
|
|
87
|
+
end
|
|
88
|
+
end
|