watobo 0.9.21 → 0.9.23
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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +46 -1
- data/bin/nfq_server.rb +0 -9
- data/bin/watobo_gui.rb +3 -13
- data/custom-views/prettify-json.rb +9 -18
- data/icons/watobo.ico +0 -0
- data/icons/watobo.ico.old +0 -0
- data/lib/watobo.rb +10 -19
- data/lib/watobo/adapters.rb +5 -14
- data/lib/watobo/adapters/data_store.rb +50 -59
- data/lib/watobo/adapters/file/file_store.rb +287 -296
- data/lib/watobo/adapters/file/marshal_store.rb +293 -296
- data/lib/watobo/adapters/session_store.rb +5 -14
- data/lib/watobo/ca.rb +1 -10
- data/lib/watobo/config.rb +197 -206
- data/lib/watobo/constants.rb +0 -9
- data/lib/watobo/core.rb +3 -12
- data/lib/watobo/core/active_check.rb +72 -135
- data/lib/watobo/core/active_checks.rb +49 -58
- data/lib/watobo/core/ca.rb +369 -389
- data/lib/watobo/core/cert_store.rb +34 -43
- data/lib/watobo/core/chat.rb +92 -101
- data/lib/watobo/core/chats.rb +271 -280
- data/lib/watobo/core/client_cert_store.rb +106 -35
- data/lib/watobo/core/conversation.rb +48 -57
- data/lib/watobo/core/cookie.rb +23 -32
- data/lib/watobo/core/egress_handlers.rb +98 -0
- data/lib/watobo/core/finding.rb +66 -75
- data/lib/watobo/core/findings.rb +107 -114
- data/lib/watobo/core/forwarding_proxy.rb +13 -22
- data/lib/watobo/core/fuzz_gen.rb +0 -9
- data/lib/watobo/core/intercept_carver.rb +166 -177
- data/lib/watobo/core/intercept_filter.rb +235 -244
- data/lib/watobo/core/interceptor.rb +98 -107
- data/lib/watobo/core/min_class.rb +4 -13
- data/lib/watobo/core/netfilter_queue.rb +170 -179
- data/lib/watobo/core/ott_cache.rb +132 -141
- data/lib/watobo/core/parameter.rb +43 -52
- data/lib/watobo/core/passive_check.rb +103 -102
- data/lib/watobo/core/passive_checks.rb +48 -57
- data/lib/watobo/core/passive_scanner.rb +54 -55
- data/lib/watobo/core/plugin.rb +11 -20
- data/lib/watobo/core/project.rb +3 -9
- data/lib/watobo/core/proxy.rb +43 -52
- data/lib/watobo/core/request.rb +125 -123
- data/lib/watobo/core/response.rb +44 -53
- data/lib/watobo/core/scanner.rb +0 -9
- data/lib/watobo/core/scanner3.rb +405 -414
- data/lib/watobo/core/scope.rb +83 -92
- data/lib/watobo/core/session.rb +1043 -1026
- data/lib/watobo/core/sid_cache.rb +98 -107
- data/lib/watobo/core/subscriber.rb +25 -34
- data/lib/watobo/defaults.rb +21 -30
- data/lib/watobo/external/diff/lcs.rb +0 -9
- data/lib/watobo/external/diff/lcs/array.rb +0 -9
- data/lib/watobo/external/diff/lcs/block.rb +0 -9
- data/lib/watobo/external/diff/lcs/callbacks.rb +0 -9
- data/lib/watobo/external/diff/lcs/change.rb +0 -9
- data/lib/watobo/external/diff/lcs/hunk.rb +0 -9
- data/lib/watobo/external/diff/lcs/ldiff.rb +0 -9
- data/lib/watobo/external/diff/lcs/string.rb +0 -9
- data/lib/watobo/externals.rb +6 -15
- data/lib/watobo/framework.rb +4 -13
- data/lib/watobo/framework/create_project.rb +60 -69
- data/lib/watobo/framework/init.rb +0 -9
- data/lib/watobo/framework/init_modules.rb +0 -9
- data/lib/watobo/framework/license_text.rb +28 -37
- data/lib/watobo/framework/load_chat.rb +13 -22
- data/lib/watobo/gui.rb +132 -123
- data/lib/watobo/gui/about_watobo.rb +0 -9
- data/lib/watobo/gui/browser_preview.rb +0 -9
- data/lib/watobo/gui/certificate_dialog.rb +0 -9
- data/lib/watobo/gui/chat_diff.rb +0 -9
- data/lib/watobo/gui/chatviewer_frame.rb +73 -72
- data/lib/watobo/gui/checkboxtree.rb +0 -9
- data/lib/watobo/gui/checks_policy_frame.rb +0 -9
- data/lib/watobo/gui/client_cert_dialog.rb +96 -87
- data/lib/watobo/gui/confirm_scan_dialog.rb +0 -9
- data/lib/watobo/gui/conversation_table.rb +158 -164
- data/lib/watobo/gui/conversation_table_ctrl.rb +207 -216
- data/lib/watobo/gui/conversation_table_ctrl2.rb +373 -382
- data/lib/watobo/gui/csrf_token_dialog.rb +0 -9
- data/lib/watobo/gui/custom_viewer.rb +374 -383
- data/lib/watobo/gui/dashboard.rb +296 -303
- data/lib/watobo/gui/define_scope_frame.rb +0 -9
- data/lib/watobo/gui/differ_frame.rb +215 -224
- data/lib/watobo/gui/edit_comment.rb +0 -9
- data/lib/watobo/gui/edit_scope_dialog.rb +0 -9
- data/lib/watobo/gui/export_dialog.rb +104 -113
- data/lib/watobo/gui/finding_info.rb +0 -9
- data/lib/watobo/gui/findings_tree.rb +210 -217
- data/lib/watobo/gui/full_scan_dialog.rb +0 -9
- data/lib/watobo/gui/fuzzer_gui.rb +1295 -1313
- data/lib/watobo/gui/fxsave_thread.rb +14 -0
- data/lib/watobo/gui/goto_url_dialog.rb +70 -79
- data/lib/watobo/gui/hex_viewer.rb +0 -9
- data/lib/watobo/gui/html_viewer.rb +287 -296
- data/lib/watobo/gui/intercept_filter_dialog.rb +188 -197
- data/lib/watobo/gui/interceptor_gui.rb +1041 -1051
- data/lib/watobo/gui/interceptor_settings_dialog.rb +0 -9
- data/lib/watobo/gui/json_viewer.rb +287 -0
- data/lib/watobo/gui/list_box.rb +101 -110
- data/lib/watobo/gui/log_file_viewer.rb +32 -41
- data/lib/watobo/gui/log_viewer.rb +83 -88
- data/lib/watobo/gui/login_wizzard.rb +0 -9
- data/lib/watobo/gui/main_window.rb +587 -618
- data/lib/watobo/gui/manual_request_editor.rb +620 -565
- data/lib/watobo/gui/master_pw_dialog.rb +0 -9
- data/lib/watobo/gui/mixins/gui_settings.rb +29 -38
- data/lib/watobo/gui/page_tree.rb +217 -226
- data/lib/watobo/gui/password_policy_dialog.rb +0 -9
- data/lib/watobo/gui/plugin_board.rb +0 -9
- data/lib/watobo/gui/preferences_dialog.rb +0 -9
- data/lib/watobo/gui/progress_window.rb +17 -27
- data/lib/watobo/gui/project_wizzard.rb +0 -9
- data/lib/watobo/gui/proxy_dialog.rb +1 -10
- data/lib/watobo/gui/quick_scan_dialog.rb +0 -9
- data/lib/watobo/gui/request_builder_frame.rb +102 -111
- data/lib/watobo/gui/request_editor.rb +181 -137
- data/lib/watobo/gui/rewrite_filters_dialog.rb +394 -403
- data/lib/watobo/gui/rewrite_rules_dialog.rb +372 -381
- data/lib/watobo/gui/save_chat_dialog.rb +140 -149
- data/lib/watobo/gui/scanner_settings_dialog.rb +0 -9
- data/lib/watobo/gui/select_chat_dialog.rb +0 -9
- data/lib/watobo/gui/session_management_dialog.rb +0 -9
- data/lib/watobo/gui/sites_tree.rb +0 -9
- data/lib/watobo/gui/status_bar.rb +0 -9
- data/lib/watobo/gui/table_editor.rb +0 -9
- data/lib/watobo/gui/tagless_viewer.rb +0 -9
- data/lib/watobo/gui/templates/plugin.rb +0 -9
- data/lib/watobo/gui/templates/plugin2.rb +92 -100
- data/lib/watobo/gui/templates/plugin_base.rb +144 -153
- data/lib/watobo/gui/text_viewer.rb +0 -9
- data/lib/watobo/gui/transcoder_window.rb +0 -9
- data/lib/watobo/gui/utils/gui_utils.rb +0 -9
- data/lib/watobo/gui/utils/init_icons.rb +86 -95
- data/lib/watobo/gui/utils/load_icons.rb +33 -42
- data/lib/watobo/gui/utils/load_plugins.rb +116 -119
- data/lib/watobo/gui/utils/master_password.rb +68 -77
- data/lib/watobo/gui/utils/save_default_settings.rb +113 -122
- data/lib/watobo/gui/utils/save_project_settings.rb +0 -9
- data/lib/watobo/gui/utils/save_proxy_settings.rb +41 -50
- data/lib/watobo/gui/utils/save_scanner_settings.rb +18 -27
- data/lib/watobo/gui/utils/session_history.rb +112 -121
- data/lib/watobo/gui/workspace_dialog.rb +0 -9
- data/lib/watobo/gui/www_auth_dialog.rb +0 -9
- data/lib/watobo/gui/xml_viewer_frame.rb +0 -9
- data/lib/watobo/http.rb +4 -13
- data/lib/watobo/http/cookies/cookies.rb +26 -35
- data/lib/watobo/http/data/data.rb +45 -54
- data/lib/watobo/http/data/json.rb +47 -55
- data/lib/watobo/http/url/url.rb +38 -47
- data/lib/watobo/http/xml/xml.rb +124 -130
- data/lib/watobo/interceptor.rb +3 -12
- data/lib/watobo/interceptor/proxy.rb +742 -739
- data/lib/watobo/interceptor/transparent.rb +22 -24
- data/lib/watobo/mixins.rb +10 -19
- data/lib/watobo/mixins/check_info.rb +27 -36
- data/lib/watobo/mixins/httpparser.rb +613 -637
- data/lib/watobo/mixins/request_parser.rb +88 -97
- data/lib/watobo/mixins/shapers.rb +515 -529
- data/lib/watobo/mixins/transcoders.rb +3 -11
- data/lib/watobo/parser.rb +1 -10
- data/lib/watobo/parser/html.rb +83 -92
- data/lib/watobo/patch_fxruby_setfocus.rb +26 -0
- data/lib/watobo/sockets.rb +3 -12
- data/lib/watobo/sockets/agent.rb +828 -837
- data/lib/watobo/sockets/client_socket.rb +308 -312
- data/lib/watobo/sockets/connection.rb +401 -410
- data/lib/watobo/sockets/http_socket.rb +11 -13
- data/lib/watobo/sockets/ntlm_auth.rb +129 -138
- data/lib/watobo/utils.rb +10 -19
- data/lib/watobo/utils/check_regex.rb +0 -9
- data/lib/watobo/utils/copy_object.rb +0 -9
- data/lib/watobo/utils/crypto.rb +0 -9
- data/lib/watobo/utils/expand_range.rb +23 -32
- data/lib/watobo/utils/export_xml.rb +97 -106
- data/lib/watobo/utils/file_management.rb +9 -11
- data/lib/watobo/utils/hexprint.rb +9 -18
- data/lib/watobo/utils/load_chat.rb +0 -9
- data/lib/watobo/utils/load_icon.rb +0 -9
- data/lib/watobo/utils/ntlm.rb +866 -875
- data/lib/watobo/utils/print_debug.rb +12 -21
- data/lib/watobo/utils/response_builder.rb +90 -99
- data/lib/watobo/utils/response_hash.rb +0 -9
- data/lib/watobo/utils/secure_eval.rb +0 -9
- data/lib/watobo/utils/strings.rb +10 -19
- data/lib/watobo/utils/text2request.rb +0 -9
- data/lib/watobo/utils/url.rb +23 -32
- data/lib/watobo/utils/utf16.rb +11 -20
- data/modules/active/Apache/mod_status.rb +0 -9
- data/modules/active/Apache/multiview.rb +151 -160
- data/modules/active/Flash/crossdomain.rb +0 -9
- data/modules/active/JWT/jwt_oauth2_none.rb +111 -0
- data/modules/active/cq5/cq5_default_selectors.rb +106 -115
- data/modules/active/cq5/cqp_user_enumeration.rb +125 -134
- data/modules/active/directories/dirwalker.rb +0 -9
- data/modules/active/discovery/fileextensions.rb +0 -9
- data/modules/active/discovery/http_methods.rb +0 -9
- data/modules/active/discovery/jsmapfiles.rb +79 -0
- data/modules/active/domino/domino_db.rb +68 -76
- data/modules/active/dotNET/custom_errors.rb +102 -111
- data/modules/active/dotNET/dotnet_files.rb +90 -99
- data/modules/active/fileinclusion/lfi_simple.rb +0 -9
- data/modules/active/jboss/jboss_basic.rb +0 -9
- data/modules/active/sap/business_objects.rb +51 -60
- data/modules/active/sap/its_commands.rb +0 -9
- data/modules/active/sap/its_service_parameter.rb +0 -9
- data/modules/active/sap/its_services.rb +0 -9
- data/modules/active/sap/its_xss.rb +0 -9
- data/modules/active/shell_shock/shell_shock.rb +139 -148
- data/modules/active/siebel/siebel_apps.rb +160 -169
- data/modules/active/sqlinjection/sql_boolean.rb +0 -9
- data/modules/active/sqlinjection/sql_numerical.rb +198 -0
- data/modules/active/sqlinjection/sqli_error.rb +0 -9
- data/modules/active/sqlinjection/sqli_timing.rb +220 -229
- data/modules/active/struts2/default_handler_ognl.rb +106 -115
- data/modules/active/struts2/include_params_ognl.rb +105 -114
- data/modules/active/xml/xml_xxe.rb +112 -123
- data/modules/active/xss/xss_ng.rb +214 -223
- data/modules/active/xss/xss_simple.rb +0 -9
- data/modules/passive/ajax.rb +68 -77
- data/modules/passive/autocomplete.rb +56 -65
- data/modules/passive/cookie_options.rb +0 -9
- data/modules/passive/cookie_xss.rb +0 -9
- data/modules/passive/detect_code.rb +0 -9
- data/modules/passive/detect_fileupload.rb +0 -9
- data/modules/passive/detect_infrastructure.rb +0 -9
- data/modules/passive/detect_one_time_tokens.rb +0 -9
- data/modules/passive/dirindexing.rb +0 -9
- data/modules/passive/disclosure_domino.rb +55 -64
- data/modules/passive/disclosure_emails.rb +0 -9
- data/modules/passive/disclosure_ipaddr.rb +55 -53
- data/modules/passive/filename_as_parameter.rb +0 -9
- data/modules/passive/form_spotter.rb +0 -9
- data/modules/passive/hidden_fields.rb +50 -59
- data/modules/passive/hotspots.rb +0 -9
- data/modules/passive/in_script_parameter.rb +0 -9
- data/modules/passive/json_web_token.rb +93 -0
- data/modules/passive/multiple_server_headers.rb +0 -9
- data/modules/passive/possible_login.rb +0 -9
- data/modules/passive/redirect_url.rb +0 -9
- data/modules/passive/redirectionz.rb +0 -9
- data/modules/passive/sap-headers.rb +56 -65
- data/modules/passive/xss_dom.rb +0 -9
- data/plugins/aem/aem.rb +11 -20
- data/plugins/aem/gui/main.rb +118 -127
- data/plugins/aem/gui/tree_view.rb +171 -180
- data/plugins/aem/lib/agent.rb +130 -138
- data/plugins/aem/lib/dispatcher.rb +45 -51
- data/plugins/aem/lib/engine.rb +177 -186
- data/plugins/catalog/catalog.rb +345 -355
- data/plugins/crawler/crawler.rb +4 -13
- data/plugins/crawler/gui.rb +5 -14
- data/plugins/crawler/gui/auth_frame.rb +270 -279
- data/plugins/crawler/gui/crawler_gui.rb +271 -276
- data/plugins/crawler/gui/general_settings_frame.rb +96 -105
- data/plugins/crawler/gui/hooks_frame.rb +80 -89
- data/plugins/crawler/gui/scope_frame.rb +50 -59
- data/plugins/crawler/gui/settings_tabbook.rb +38 -47
- data/plugins/crawler/gui/status_frame.rb +59 -68
- data/plugins/crawler/lib/bags.rb +18 -27
- data/plugins/crawler/lib/constants.rb +11 -20
- data/plugins/crawler/lib/engine.rb +488 -497
- data/plugins/crawler/lib/grabber.rb +68 -77
- data/plugins/crawler/lib/status.rb +71 -80
- data/plugins/crawler/lib/uri_mp.rb +12 -21
- data/plugins/filefinder/filefinder.rb +326 -333
- data/plugins/sqlmap/bin/test.rb +78 -87
- data/plugins/sqlmap/gui.rb +4 -13
- data/plugins/sqlmap/gui/main.rb +218 -227
- data/plugins/sqlmap/gui/options_frame.rb +97 -106
- data/plugins/sqlmap/lib/sqlmap_ctrl.rb +90 -100
- data/plugins/sqlmap/sqlmap.rb +2 -11
- data/plugins/sslchecker/cli/sslchecker_cli.rb +0 -9
- data/plugins/sslchecker/gui/cipher_table.rb +246 -254
- data/plugins/sslchecker/gui/gui.rb +258 -264
- data/plugins/sslchecker/gui/sslchecker.rb +4 -13
- data/plugins/sslchecker/lib/check.rb +127 -133
- data/plugins/wshell/gui/main.rb +119 -117
- data/plugins/wshell/lib/core.rb +38 -88
- data/plugins/wshell/wshell.rb +11 -20
- metadata +170 -164
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# confirm_scan_dialog.rb
|
|
3
|
-
#.
|
|
4
|
-
# Copyright 2014 by siberas, http://www.siberas.de
|
|
5
|
-
# This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
|
|
6
|
-
# WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
|
|
7
|
-
# WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
8
|
-
# You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
9
|
-
|
|
10
1
|
require 'watobo/gui/conversation_table'
|
|
11
2
|
|
|
12
3
|
# @private
|
|
@@ -1,24 +1,16 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# conversation_table.rb
|
|
3
|
-
#.
|
|
4
|
-
# Copyright 2014 by siberas, http://www.siberas.de
|
|
5
|
-
# This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
|
|
6
|
-
# WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
|
|
7
|
-
# WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
8
|
-
# You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
9
|
-
|
|
10
1
|
class CustomTableItem < FXTableItem
|
|
11
2
|
attr_accessor :color
|
|
12
3
|
attr_accessor :backcolor
|
|
4
|
+
|
|
13
5
|
def drawContent table, unusable_dc, x, y, w, h
|
|
14
|
-
FXDCWindow.new(table) {|dc|
|
|
6
|
+
FXDCWindow.new(table) { |dc|
|
|
15
7
|
if @color and not selected?
|
|
16
8
|
|
|
17
9
|
if @backcolor
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
10
|
+
dc.foreground = @backcolor
|
|
11
|
+
hg = table.horizontalGridShown? ? 1 : 0
|
|
12
|
+
vg = table.verticalGridShown? ? 1 : 0
|
|
13
|
+
dc.fillRectangle(x + vg, y + hg, w - vg, h - hg)
|
|
22
14
|
end
|
|
23
15
|
|
|
24
16
|
dc.foreground = @color
|
|
@@ -46,13 +38,13 @@ class FXColoredTable < FXTable
|
|
|
46
38
|
|
|
47
39
|
def setCellBackground row, column, color
|
|
48
40
|
getItem(row, column).backcolor = color
|
|
49
|
-
|
|
50
|
-
|
|
41
|
+
# puts getItem(row, column).methods.sort
|
|
42
|
+
# updateItem row, column
|
|
51
43
|
end
|
|
52
44
|
end
|
|
53
45
|
|
|
54
46
|
# @private
|
|
55
|
-
module Watobo#:nodoc: all
|
|
47
|
+
module Watobo #:nodoc: all
|
|
56
48
|
module Gui
|
|
57
49
|
TABLE_COL_METHOD = 0x0001
|
|
58
50
|
TABLE_COL_HOST = 0x0002
|
|
@@ -64,13 +56,14 @@ module Watobo#:nodoc: all
|
|
|
64
56
|
TABLE_COL_SSL = 0x0100
|
|
65
57
|
class ConversationTable < FXTable
|
|
66
58
|
# class ConversationTable < FXColoredTable
|
|
67
|
-
|
|
59
|
+
|
|
68
60
|
attr :filter
|
|
69
61
|
|
|
70
62
|
attr_accessor :autoscroll
|
|
71
63
|
attr_accessor :url_decode
|
|
72
64
|
|
|
73
65
|
include Watobo::Gui::Icons
|
|
66
|
+
|
|
74
67
|
def subscribe(event, &callback)
|
|
75
68
|
(@event_dispatcher_listeners[event] ||= []) << callback
|
|
76
69
|
end
|
|
@@ -97,9 +90,9 @@ module Watobo#:nodoc: all
|
|
|
97
90
|
self.numRows
|
|
98
91
|
end
|
|
99
92
|
|
|
100
|
-
|
|
93
|
+
|
|
101
94
|
def apply_filter(filter={})
|
|
102
|
-
@filter = filter
|
|
95
|
+
@filter = filter
|
|
103
96
|
puts @filter.to_yaml if $DEBUG
|
|
104
97
|
update_table
|
|
105
98
|
end
|
|
@@ -109,15 +102,15 @@ module Watobo#:nodoc: all
|
|
|
109
102
|
if currentRow >= 0
|
|
110
103
|
chatid = getRowText(currentRow).to_i
|
|
111
104
|
chat = Watobo::Chats.get_by_id(chatid)
|
|
112
|
-
|
|
105
|
+
return chat
|
|
113
106
|
end
|
|
114
107
|
return nil
|
|
115
108
|
end
|
|
116
109
|
|
|
117
110
|
def chat_visible?(chat)
|
|
118
111
|
begin
|
|
119
|
-
return false if @filter[:ok_only] == true and chat.response.responseCode !~ /200/
|
|
120
|
-
|
|
112
|
+
return false if @filter[:ok_only] == true and chat.response.responseCode !~ /200/
|
|
113
|
+
|
|
121
114
|
if @filter[:unique]
|
|
122
115
|
unless Watobo::Gui.project.nil?
|
|
123
116
|
uniq_hash = Watobo::Gui.project.uniqueRequestHash chat.request
|
|
@@ -133,7 +126,7 @@ module Watobo#:nodoc: all
|
|
|
133
126
|
end
|
|
134
127
|
# puts "* passed scope"
|
|
135
128
|
if @filter[:hide_tested]
|
|
136
|
-
|
|
129
|
+
return false if chat.tested?
|
|
137
130
|
end
|
|
138
131
|
# puts "* passed hide tested"
|
|
139
132
|
unless @filter[:doc_filter].include?(chat.request.doctype)
|
|
@@ -145,8 +138,8 @@ module Watobo#:nodoc: all
|
|
|
145
138
|
# puts @filter.to_yaml
|
|
146
139
|
# puts chat.response.responseCode
|
|
147
140
|
|
|
148
|
-
if @filter[:response] == true
|
|
149
|
-
return false if @filter[:text_only] == true and chat.response.content_type !~ /(text|javascript|xml|json)/
|
|
141
|
+
if @filter[:response] == true
|
|
142
|
+
return false if @filter[:text_only] == true and chat.response.content_type !~ /(text|javascript|xml|json)/
|
|
150
143
|
return true if chat.response.join.unpack("C*").pack("C*") =~ /#{@filter[:text]}/i
|
|
151
144
|
end
|
|
152
145
|
|
|
@@ -160,7 +153,7 @@ module Watobo#:nodoc: all
|
|
|
160
153
|
false
|
|
161
154
|
end
|
|
162
155
|
|
|
163
|
-
def showConversation(
|
|
156
|
+
def showConversation(chat_list = nil, prefs = {})
|
|
164
157
|
clearConversation()
|
|
165
158
|
if chat_list.nil?
|
|
166
159
|
Watobo::Chats.each do |chat|
|
|
@@ -195,20 +188,20 @@ module Watobo#:nodoc: all
|
|
|
195
188
|
|
|
196
189
|
def updateComment(row, comment)
|
|
197
190
|
col = @col_order.index(TABLE_COL_COMMENT)
|
|
198
|
-
self.setItemText(row, col, comment.gsub(/[^[:print:]]/,' '))
|
|
191
|
+
self.setItemText(row, col, comment.gsub(/[^[:print:]]/, ' '))
|
|
199
192
|
end
|
|
200
193
|
|
|
201
194
|
def addChat(chat, *prefs)
|
|
202
195
|
return false if chat.nil?
|
|
203
196
|
if self.getNumRows <= 0 then
|
|
204
197
|
clearConversation()
|
|
205
|
-
|
|
198
|
+
# initColumns()
|
|
206
199
|
end
|
|
207
200
|
|
|
208
|
-
@current_chat_list.push chat
|
|
201
|
+
@current_chat_list.push chat
|
|
209
202
|
if prefs.include? :ignore_filter
|
|
210
203
|
add_chat_row(chat)
|
|
211
|
-
|
|
204
|
+
return true
|
|
212
205
|
end
|
|
213
206
|
add_chat_row(chat) if Chats.match?(chat, @filter)
|
|
214
207
|
return true
|
|
@@ -222,18 +215,18 @@ module Watobo#:nodoc: all
|
|
|
222
215
|
|
|
223
216
|
@columns.each do |type, name|
|
|
224
217
|
index = @col_order.index(type)
|
|
225
|
-
self.setColumnText(
|
|
226
|
-
self.setColumnIcon(@col_order.index(TABLE_COL_SSL), TBL_ICON_LOCK)# puts self.getItem(@col_order.index(col), 0 ).class.to_s
|
|
218
|
+
self.setColumnText(index, name)
|
|
219
|
+
self.setColumnIcon(@col_order.index(TABLE_COL_SSL), TBL_ICON_LOCK) # puts self.getItem(@col_order.index(col), 0 ).class.to_s
|
|
227
220
|
end
|
|
228
221
|
|
|
229
222
|
end
|
|
230
223
|
|
|
231
|
-
def initialize(
|
|
224
|
+
def initialize(owner, unused = nil)
|
|
232
225
|
@event_dispatcher_listeners = Hash.new
|
|
233
226
|
|
|
234
227
|
super(owner, :opts => TABLE_COL_SIZABLE|TABLE_ROW_SIZABLE|LAYOUT_FILL_X|LAYOUT_FILL_Y|TABLE_READONLY|LAYOUT_SIDE_TOP, :padding => 2)
|
|
235
|
-
|
|
236
|
-
|
|
228
|
+
|
|
229
|
+
@filter = {}
|
|
237
230
|
|
|
238
231
|
@url_decode = true
|
|
239
232
|
|
|
@@ -243,7 +236,7 @@ module Watobo#:nodoc: all
|
|
|
243
236
|
self.setCellColor(1, 0, FXRGB(240, 255, 240))
|
|
244
237
|
self.setCellColor(1, 1, FXRGB(240, 240, 255))
|
|
245
238
|
|
|
246
|
-
|
|
239
|
+
# reset_filter
|
|
247
240
|
# FXMAPFUNC(SEL_CLICKED, FXTable::ID_SELECT_CELL, :onSelectCell)
|
|
248
241
|
@current_chat_list = []
|
|
249
242
|
@uniq_chats = Hash.new
|
|
@@ -265,7 +258,7 @@ module Watobo#:nodoc: all
|
|
|
265
258
|
@columns[TABLE_COL_SSL] = ""
|
|
266
259
|
|
|
267
260
|
# initialize columns order
|
|
268
|
-
@col_order = [
|
|
261
|
+
@col_order = [TABLE_COL_SSL, TABLE_COL_METHOD, TABLE_COL_HOST, TABLE_COL_PATH, TABLE_COL_PARMS, TABLE_COL_STATUS, TABLE_COL_COOKIE, TABLE_COL_COMMENT]
|
|
269
262
|
|
|
270
263
|
# init cell width
|
|
271
264
|
@cell_width = Hash.new
|
|
@@ -296,66 +289,68 @@ module Watobo#:nodoc: all
|
|
|
296
289
|
column_width = self.getColumnWidth(index)
|
|
297
290
|
|
|
298
291
|
new_width = case column_width
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
292
|
+
when column_width > @cell_auto_max
|
|
293
|
+
@cell_auto_max
|
|
294
|
+
when (column_width > @cell_width_defaults[type])
|
|
295
|
+
@cell_width_defaults[type]
|
|
296
|
+
when @cell_width_defaults[type]
|
|
297
|
+
self.fitColumnsToContents(index)
|
|
298
|
+
w = self.getColumnWidth(index)
|
|
299
|
+
w = @cell_auto_max if self.getColumnWidth(index) > @cell_auto_max
|
|
300
|
+
w = @cell_width_defaults[type] if self.getColumnWidth(index) < @cell_width_defaults[type]
|
|
301
|
+
w
|
|
302
|
+
else
|
|
303
|
+
@cell_width_defaults[type]
|
|
304
|
+
end
|
|
312
305
|
self.setColumnWidth(index, new_width)
|
|
313
306
|
@cell_width[type] = new_width
|
|
314
307
|
self.rowHeaderMode = 0
|
|
315
308
|
|
|
316
309
|
adjustCellWidth()
|
|
317
|
-
|
|
318
|
-
|
|
310
|
+
|
|
311
|
+
|
|
319
312
|
end
|
|
320
|
-
|
|
321
|
-
self.connect(SEL_CHANGED){ |sender, sel, item|
|
|
322
|
-
|
|
313
|
+
|
|
314
|
+
self.connect(SEL_CHANGED) { |sender, sel, item|
|
|
315
|
+
# puts "SEL_CHANGED #{item.row}"
|
|
323
316
|
self.selectRow(item.row, false)
|
|
324
|
-
|
|
325
|
-
|
|
317
|
+
chat = self.getItemData(item.row, 0)
|
|
318
|
+
notify(:chat_selected, chat) if chat.respond_to? :request
|
|
326
319
|
}
|
|
327
|
-
|
|
328
|
-
self.connect(SEL_COMMAND){ |sender, sel, item|
|
|
329
|
-
|
|
320
|
+
|
|
321
|
+
self.connect(SEL_COMMAND) { |sender, sel, item|
|
|
322
|
+
# puts "SEL_COMMAND #{item.row}"
|
|
330
323
|
self.selectRow(item.row, false)
|
|
331
|
-
|
|
332
|
-
|
|
324
|
+
chat = self.getItemData(item.row, 0)
|
|
325
|
+
notify(:chat_selected, chat) if chat.respond_to? :request
|
|
333
326
|
}
|
|
334
|
-
|
|
335
|
-
self.connect(SEL_DOUBLECLICKED){ |sender, sel, item|
|
|
336
|
-
#
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
327
|
+
|
|
328
|
+
self.connect(SEL_DOUBLECLICKED) { |sender, sel, item|
|
|
329
|
+
# puts "SEL_DOUBLECLICKED #{item.row}"
|
|
330
|
+
if item.row >= 0
|
|
331
|
+
self.selectRow(item.row, false)
|
|
332
|
+
chat = self.getItemData(item.row, 0)
|
|
333
|
+
notify(:chat_doubleclicked, chat) if chat.respond_to? :request
|
|
334
|
+
end
|
|
340
335
|
}
|
|
341
|
-
|
|
342
|
-
self.connect(SEL_SELECTED){ |sender, sel, item|
|
|
343
|
-
|
|
336
|
+
|
|
337
|
+
self.connect(SEL_SELECTED) { |sender, sel, item|
|
|
338
|
+
# puts "SEL_SELECTED #{item.row}"
|
|
344
339
|
self.selectRow(item.row, false)
|
|
345
|
-
|
|
346
|
-
|
|
340
|
+
chat = self.getItemData(item.row, 0)
|
|
341
|
+
notify(:chat_selected, chat) if chat.respond_to? :request
|
|
347
342
|
}
|
|
348
343
|
|
|
349
344
|
adjustCellWidth()
|
|
350
345
|
|
|
351
346
|
addHotkeyHandler(self)
|
|
352
|
-
|
|
347
|
+
|
|
353
348
|
start_update_timer
|
|
354
349
|
end
|
|
355
350
|
|
|
356
351
|
def scrollUp()
|
|
357
352
|
#self.makePositionVisible(0, 0)
|
|
358
|
-
|
|
353
|
+
self.setPosition(self.xPosition, 0)
|
|
359
354
|
end
|
|
360
355
|
|
|
361
356
|
def scrollDown()
|
|
@@ -367,17 +362,17 @@ module Watobo#:nodoc: all
|
|
|
367
362
|
#puts "contentHeight: #{self.contentHeight}"
|
|
368
363
|
#puts "y-diff: #{self.viewportHeight - self.contentHeight}"
|
|
369
364
|
#puts "---"
|
|
370
|
-
|
|
365
|
+
self.setPosition(self.xPosition, (self.viewportHeight - self.contentHeight))
|
|
371
366
|
end
|
|
372
|
-
|
|
367
|
+
|
|
373
368
|
def start_update_timer
|
|
374
369
|
@last_row_count = 0
|
|
375
|
-
|
|
370
|
+
Watobo.save_thread {
|
|
376
371
|
if self.getNumRows != @last_row_count
|
|
377
|
-
|
|
378
|
-
|
|
372
|
+
scrollDown if @autoscroll == true
|
|
373
|
+
@last_row_count = self.getNumRows
|
|
379
374
|
end
|
|
380
|
-
|
|
375
|
+
}
|
|
381
376
|
|
|
382
377
|
end
|
|
383
378
|
|
|
@@ -392,10 +387,10 @@ module Watobo#:nodoc: all
|
|
|
392
387
|
|
|
393
388
|
def add_chat_row(chat)
|
|
394
389
|
return false unless chat.respond_to? :request
|
|
395
|
-
return false unless chat.respond_to? :response
|
|
390
|
+
return false unless chat.respond_to? :response
|
|
396
391
|
return false if chat.request.nil?
|
|
397
392
|
return false if chat.response.nil?
|
|
398
|
-
|
|
393
|
+
|
|
399
394
|
lastRowIndex = self.getNumRows
|
|
400
395
|
self.appendRows(1)
|
|
401
396
|
|
|
@@ -412,7 +407,7 @@ module Watobo#:nodoc: all
|
|
|
412
407
|
|
|
413
408
|
index = @col_order.index(TABLE_COL_HOST)
|
|
414
409
|
self.setItemText(lastRowIndex, index, chat.request.host)
|
|
415
|
-
self.getItem(lastRowIndex,index).justify = FXTableItem::LEFT
|
|
410
|
+
self.getItem(lastRowIndex, index).justify = FXTableItem::LEFT
|
|
416
411
|
|
|
417
412
|
index = @col_order.index(TABLE_COL_PATH)
|
|
418
413
|
self.setItemText(lastRowIndex, index, chat.request.path)
|
|
@@ -422,14 +417,14 @@ module Watobo#:nodoc: all
|
|
|
422
417
|
ps = ""
|
|
423
418
|
rup = chat.request.urlparms
|
|
424
419
|
unless rup.nil?
|
|
425
|
-
|
|
426
|
-
end
|
|
420
|
+
ps << rup
|
|
421
|
+
end
|
|
427
422
|
|
|
428
423
|
if chat.request.method =~ /POST/ and !chat.request.body.nil? then
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
424
|
+
post_parms_string = ''
|
|
425
|
+
post_parms_string << chat.request.body
|
|
426
|
+
ps << "&&" unless ps.empty?
|
|
427
|
+
ps << post_parms_string
|
|
433
428
|
end
|
|
434
429
|
|
|
435
430
|
ps = "*MULTIPART*" if chat.request.content_type =~ /multipart/i
|
|
@@ -437,24 +432,24 @@ module Watobo#:nodoc: all
|
|
|
437
432
|
parms = ""
|
|
438
433
|
unless ps.empty?
|
|
439
434
|
ps_ascii = ps.force_encoding('ASCII-8BIT')
|
|
440
|
-
|
|
435
|
+
|
|
441
436
|
if @url_decode == true
|
|
442
437
|
if chat.request.content_type =~ /(json|xml)/
|
|
443
438
|
parms = ps_ascii
|
|
444
|
-
else
|
|
445
|
-
parms = CGI.unescape(ps_ascii)
|
|
439
|
+
else
|
|
440
|
+
parms = CGI.unescape(ps_ascii)
|
|
446
441
|
end
|
|
447
442
|
end
|
|
448
|
-
parms.gsub!(/[^[:print:]]/,'.')
|
|
443
|
+
parms.gsub!(/[^[:print:]]/, '.')
|
|
449
444
|
|
|
450
445
|
end
|
|
451
|
-
|
|
446
|
+
|
|
452
447
|
self.setItemText(lastRowIndex, index, parms)
|
|
453
448
|
self.getItem(lastRowIndex, index).justify = FXTableItem::LEFT
|
|
454
449
|
|
|
455
450
|
index = @col_order.index(TABLE_COL_STATUS)
|
|
456
451
|
self.setItemText(lastRowIndex, index, chat.response.status)
|
|
457
|
-
self.getItem(lastRowIndex,index).justify = FXTableItem::LEFT
|
|
452
|
+
self.getItem(lastRowIndex, index).justify = FXTableItem::LEFT
|
|
458
453
|
|
|
459
454
|
if chat.response.header_value("set-cookie").first then
|
|
460
455
|
index = @col_order.index(TABLE_COL_COOKIE)
|
|
@@ -470,12 +465,12 @@ module Watobo#:nodoc: all
|
|
|
470
465
|
self.setItemText(lastRowIndex, index, cc)
|
|
471
466
|
self.getItem(lastRowIndex, index).justify = FXTableItem::LEFT
|
|
472
467
|
end
|
|
473
|
-
|
|
468
|
+
|
|
474
469
|
self.setItemData(lastRowIndex, 0, chat)
|
|
475
470
|
|
|
476
471
|
#self.makePositionVisible(self.numRows-1, 0) if @autoscroll == true
|
|
477
472
|
if @autoscroll == true
|
|
478
|
-
self.setPosition(self.xPosition, (self.viewportHeight - self.contentHeight - 20
|
|
473
|
+
self.setPosition(self.xPosition, (self.viewportHeight - self.contentHeight - 20))
|
|
479
474
|
end
|
|
480
475
|
end
|
|
481
476
|
|
|
@@ -487,8 +482,8 @@ module Watobo#:nodoc: all
|
|
|
487
482
|
add_chat_row(chat)
|
|
488
483
|
end
|
|
489
484
|
end
|
|
490
|
-
|
|
491
|
-
|
|
485
|
+
|
|
486
|
+
|
|
492
487
|
def adjustCellWidth()
|
|
493
488
|
begin
|
|
494
489
|
self.rowHeader.width = 40
|
|
@@ -507,54 +502,54 @@ module Watobo#:nodoc: all
|
|
|
507
502
|
@ctrl_pressed = false
|
|
508
503
|
|
|
509
504
|
widget.connect(SEL_KEYPRESS) { |sender, sel, event|
|
|
510
|
-
|
|
511
|
-
|
|
505
|
+
# puts event.code
|
|
506
|
+
cont = false
|
|
512
507
|
@ctrl_pressed = true if event.code == KEY_Control_L or event.code == KEY_Control_R
|
|
513
508
|
# @shift_pressed = true if @ctrl_pressed and ( event.code == KEY_Shift_L or event.code == KEY_Shift_R )
|
|
514
|
-
if event.code == KEY_Return
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
509
|
+
if event.code == KEY_Return
|
|
510
|
+
chat = current_chat
|
|
511
|
+
notify(:chat_doubleclicked, chat) if chat.respond_to? :request
|
|
512
|
+
cont = true # special handling of KEY_Return, because we don't want a linebreak in textbox.
|
|
518
513
|
end
|
|
519
514
|
|
|
520
515
|
case event.code
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
516
|
+
when KEY_F1
|
|
517
|
+
|
|
518
|
+
unless event.moved?
|
|
519
|
+
FXMenuPane.new(self) do |menu_pane|
|
|
520
|
+
FXMenuCaption.new(menu_pane, "Hotkeys:")
|
|
521
|
+
FXMenuSeparator.new(menu_pane)
|
|
522
|
+
["G - Goto",
|
|
523
|
+
"<ctrl-n> - Goto Next",
|
|
524
|
+
"<ctrl-N> - Goto Prev",
|
|
525
|
+
"<space> - Edit Comment"
|
|
526
|
+
].each do |hk|
|
|
527
|
+
FXMenuCaption.new(menu_pane, hk).backColor = 'yellow'
|
|
528
|
+
end
|
|
529
|
+
|
|
530
|
+
menu_pane.create
|
|
531
|
+
menu_pane.popup(nil, event.root_x, event.root_y)
|
|
532
|
+
app.runModalWhileShown(menu_pane)
|
|
533
533
|
end
|
|
534
534
|
|
|
535
|
-
menu_pane.create
|
|
536
|
-
menu_pane.popup(nil, event.root_x, event.root_y)
|
|
537
|
-
app.runModalWhileShown(menu_pane)
|
|
538
535
|
end
|
|
539
536
|
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
open_goto_url_dialog
|
|
547
|
-
cont = true
|
|
537
|
+
when KEY_space
|
|
538
|
+
chat = current_chat
|
|
539
|
+
notify(:edit_comment, chat) if chat
|
|
540
|
+
when KEY_G
|
|
541
|
+
open_goto_url_dialog
|
|
542
|
+
cont = true
|
|
548
543
|
end
|
|
549
544
|
|
|
550
545
|
if @ctrl_pressed
|
|
551
546
|
case event.code
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
547
|
+
when KEY_n
|
|
548
|
+
show_next
|
|
549
|
+
when KEY_N
|
|
550
|
+
show_prev
|
|
551
|
+
when KEY_f
|
|
552
|
+
notify(:open_filter_dlg)
|
|
558
553
|
end
|
|
559
554
|
cont = false
|
|
560
555
|
end
|
|
@@ -576,61 +571,60 @@ module Watobo#:nodoc: all
|
|
|
576
571
|
end
|
|
577
572
|
true
|
|
578
573
|
end
|
|
579
|
-
|
|
574
|
+
|
|
580
575
|
def show_next()
|
|
581
576
|
i = get_next_match
|
|
582
577
|
if i >= 0
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
578
|
+
selectRow(i, false)
|
|
579
|
+
setCurrentItem(i, 2)
|
|
580
|
+
makePositionVisible(i, 2)
|
|
581
|
+
end
|
|
587
582
|
end
|
|
588
|
-
|
|
583
|
+
|
|
589
584
|
def show_prev()
|
|
590
585
|
i = get_prev_match
|
|
591
586
|
if i >= 0
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
587
|
+
selectRow(i, false)
|
|
588
|
+
setCurrentItem(i, 2)
|
|
589
|
+
makePositionVisible(i, 2)
|
|
590
|
+
end
|
|
596
591
|
end
|
|
597
|
-
|
|
598
|
-
|
|
592
|
+
|
|
593
|
+
|
|
599
594
|
def show_nearest()
|
|
600
595
|
sel = -1
|
|
601
596
|
pi = get_prev_match()
|
|
602
597
|
ni = get_next_match()
|
|
603
|
-
|
|
598
|
+
|
|
604
599
|
sel = pi
|
|
605
|
-
if (
|
|
606
|
-
sel = (
|
|
600
|
+
if (ni >= 0) and (pi >= 0)
|
|
601
|
+
sel = (currentRow - pi) > (ni - currentRow) ? ni : pi
|
|
607
602
|
elsif pi >= 0
|
|
608
603
|
sel = pi
|
|
609
|
-
else
|
|
604
|
+
else
|
|
610
605
|
sel = ni
|
|
611
606
|
end
|
|
612
|
-
|
|
607
|
+
|
|
613
608
|
if sel >= 0
|
|
614
|
-
selectRow(sel, false)
|
|
609
|
+
selectRow(sel, false)
|
|
615
610
|
setCurrentItem(sel, 2)
|
|
616
|
-
makePositionVisible(sel,2)
|
|
611
|
+
makePositionVisible(sel, 2)
|
|
617
612
|
end
|
|
618
|
-
|
|
613
|
+
|
|
619
614
|
false
|
|
620
615
|
end
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
616
|
+
|
|
617
|
+
|
|
624
618
|
def get_next_match()
|
|
625
619
|
return -1 if @url_pattern.nil?
|
|
626
620
|
return -1 if @url_pattern.empty?
|
|
627
|
-
|
|
621
|
+
|
|
628
622
|
row = currentRow + 1
|
|
629
623
|
match = -1
|
|
630
624
|
while row < numRows
|
|
631
625
|
chat = self.getItemData(row, 0)
|
|
632
626
|
if chat.request.url.to_s =~ /#{@url_pattern}/i
|
|
633
|
-
match = row
|
|
627
|
+
match = row
|
|
634
628
|
#puts chat.request.url.to_s
|
|
635
629
|
end
|
|
636
630
|
return match if match >= 0
|
|
@@ -638,17 +632,17 @@ module Watobo#:nodoc: all
|
|
|
638
632
|
end
|
|
639
633
|
match
|
|
640
634
|
end
|
|
641
|
-
|
|
635
|
+
|
|
642
636
|
def get_prev_match()
|
|
643
637
|
return -1 if @url_pattern.nil?
|
|
644
638
|
return -1 if @url_pattern.empty?
|
|
645
|
-
|
|
639
|
+
|
|
646
640
|
row = currentRow - 1
|
|
647
641
|
match = -1
|
|
648
642
|
while row >= 0
|
|
649
643
|
chat = self.getItemData(row, 0)
|
|
650
644
|
if chat.request.url.to_s =~ /#{@url_pattern}/i
|
|
651
|
-
match = row
|
|
645
|
+
match = row
|
|
652
646
|
#puts chat.request.url.to_s
|
|
653
647
|
end
|
|
654
648
|
return match if match >= 0
|