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,107 +1,98 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# general_settings_frame.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
|
# @private
|
|
11
|
-
module Watobo#:nodoc: all
|
|
12
|
-
module Plugin
|
|
13
|
-
module Crawler
|
|
14
|
-
class Gui
|
|
15
|
-
class GeneralSettingsFrame < FXVerticalFrame
|
|
16
|
-
def to_h
|
|
17
|
-
{
|
|
18
|
-
:max_depth => @max_depth_txt.text.to_i,
|
|
19
|
-
:max_threads => @max_threads_txt.text.to_i,
|
|
20
|
-
:max_repeat => @max_repeat_txt.text.to_i,
|
|
21
|
-
:delay => @delay_txt.text.to_i,
|
|
22
|
-
# TODO: :user_agent => @user_agent_txt.text,
|
|
23
|
-
:submit_forms => @submit_forms_cb.checked?,
|
|
24
|
-
:excluded_fields => @excluded_field_patterns.to_a,
|
|
25
|
-
:head_request_pattern => @rewrite_method_cb.checked? ? @head_request_pattern_txt.text : nil
|
|
26
|
-
}
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def set(settings)
|
|
30
|
-
@submit_forms_cb.checkState = settings[:submit_forms] if settings.has_key? :submit_forms
|
|
31
|
-
@max_depth_txt.text = settings[:max_depth].to_s if settings.has_key? :max_depth
|
|
32
|
-
@max_threads_txt.text = settings[:max_threads].to_s if settings.has_key? :max_threads
|
|
33
|
-
@max_repeat_txt.text = settings[:max_repeat].to_s if settings.has_key? :max_repeat
|
|
34
|
-
@head_request_pattern_txt.text = settings[:head_request_pattern].to_s if settings.has_key? :head_request_pattern
|
|
35
|
-
@delay_txt.text = settings[:delay].to_s if settings.has_key? :delay
|
|
36
|
-
@excluded_field_patterns.set settings[:excluded_fields] if settings.has_key? :excluded_fields
|
|
37
|
-
|
|
38
|
-
update_form
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def update_form
|
|
42
|
-
[ @submit_forms_cb, @max_depth_txt, @max_threads_txt, @max_repeat_txt, @delay_txt, @head_request_pattern_txt, @excluded_field_patterns ].each do |e|
|
|
43
|
-
e.handle(self, FXSEL(SEL_UPDATE, 0), nil)
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def initialize(owner)
|
|
48
|
-
super(owner, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
|
|
49
|
-
iframe = FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED|FRAME_THICK)
|
|
50
|
-
|
|
51
|
-
outer_matrix = FXMatrix.new(iframe, 3, :opts => MATRIX_BY_COLUMNS|LAYOUT_FILL_X)
|
|
52
|
-
gbframe = FXGroupBox.new(outer_matrix, "Performance", FRAME_GROOVE|LAYOUT_FILL_Y, 0, 0, 0, 0)
|
|
53
|
-
|
|
54
|
-
matrix = FXMatrix.new(gbframe, 2, :opts => MATRIX_BY_COLUMNS|LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
|
55
|
-
|
|
56
|
-
FXLabel.new(matrix, "Max. Depth:", nil, LAYOUT_TOP|JUSTIFY_RIGHT)
|
|
57
|
-
@max_depth_txt = FXTextField.new(matrix, 10, nil, 0, :opts => TEXTFIELD_NORMAL|LAYOUT_SIDE_RIGHT)
|
|
58
|
-
|
|
59
|
-
FXLabel.new(matrix, "Max. Threads:", nil, LAYOUT_TOP|JUSTIFY_RIGHT)
|
|
60
|
-
@max_threads_txt = FXTextField.new(matrix, 10, nil, 0, :opts => TEXTFIELD_NORMAL|LAYOUT_SIDE_RIGHT)
|
|
61
|
-
|
|
62
|
-
FXLabel.new(matrix, "Max. Repeat:", nil, LAYOUT_TOP|JUSTIFY_RIGHT)
|
|
63
|
-
@max_repeat_txt = FXTextField.new(matrix, 10, nil, 0, :opts => TEXTFIELD_NORMAL|LAYOUT_SIDE_RIGHT)
|
|
64
|
-
|
|
65
|
-
FXLabel.new(matrix, "Delay (ms):", nil, LAYOUT_TOP|JUSTIFY_RIGHT)
|
|
66
|
-
@delay_txt = FXTextField.new(matrix, 10, nil, 0, :opts => TEXTFIELD_NORMAL|LAYOUT_SIDE_RIGHT)
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
gbframe = FXGroupBox.new(outer_matrix, "Form Handling", FRAME_GROOVE|LAYOUT_FILL_Y, 0, 0, 0, 0)
|
|
71
|
-
iframe = FXVerticalFrame.new(gbframe, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
|
72
|
-
@submit_forms_cb = FXCheckButton.new(iframe, "Submit Forms", nil, 0, JUSTIFY_LEFT|JUSTIFY_TOP|ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP)
|
|
73
|
-
@submit_forms_cb.checkState = true
|
|
74
|
-
|
|
75
|
-
@fill_forms_cb = FXCheckButton.new(iframe, "Fill Forms", nil, 0, JUSTIFY_LEFT|JUSTIFY_TOP|ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP)
|
|
76
|
-
@fill_forms_cb.checkState = false
|
|
77
|
-
@fill_forms_cb.disable
|
|
78
|
-
|
|
79
|
-
FXLabel.new(iframe, "Don't send forms if they contain following field names (regex):")
|
|
80
|
-
@excluded_field_patterns = Watobo::Gui::ListBox.new(iframe)
|
|
81
|
-
|
|
82
|
-
#f = FXVerticalFrame.new(outer_matrix, :opts =>LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
|
83
|
-
gbframe = FXGroupBox.new(outer_matrix, "Rewrite", FRAME_GROOVE|LAYOUT_FILL_X|LAYOUT_FILL_Y, 0, 0, 0, 0)
|
|
84
|
-
iframe = FXVerticalFrame.new(gbframe, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_FIX_WIDTH, :width => 250)
|
|
85
|
-
fxtext = FXText.new(iframe, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|TEXT_WORDWRAP)
|
|
86
|
-
fxtext.backColor = fxtext.parent.backColor
|
|
87
|
-
fxtext.disable
|
|
88
|
-
text = "To speed up the crawl process and to save bandwidth it is recommended to use HEAD requests for specific document extensions."
|
|
89
|
-
text << "The response to a HEAD request only includes the http headers but no body. The extensions pattern is defined as an regular expression (case insesitive),"
|
|
90
|
-
text << "e.g. '(pdf|swf|doc|flv|jpg|png|gif)' - without quotes."
|
|
91
|
-
|
|
92
|
-
fxtext.setText(text)
|
|
93
|
-
|
|
94
|
-
@rewrite_method_cb = FXCheckButton.new(iframe, "Use HEAD method for:", nil, 0, JUSTIFY_LEFT|JUSTIFY_TOP|ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP)
|
|
95
|
-
@rewrite_method_cb.checkState = true
|
|
96
|
-
f = FXHorizontalFrame.new(iframe, :opts => LAYOUT_FILL_X)
|
|
97
|
-
FXLabel.new(f, "Ext. Pattern:", nil, LAYOUT_TOP|JUSTIFY_RIGHT)
|
|
98
|
-
@head_request_pattern_txt = FXTextField.new(f, 10, nil, 0, :opts => TEXTFIELD_NORMAL|LAYOUT_SIDE_RIGHT|LAYOUT_FILL_X)
|
|
99
|
-
@head_request_pattern_txt.text = '(pdf|swf|doc|flv|jpg|png|gif|zip|tar|gz|bz2|tgz)'
|
|
100
|
-
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
end
|
|
2
|
+
module Watobo#:nodoc: all
|
|
3
|
+
module Plugin
|
|
4
|
+
module Crawler
|
|
5
|
+
class Gui
|
|
6
|
+
class GeneralSettingsFrame < FXVerticalFrame
|
|
7
|
+
def to_h
|
|
8
|
+
{
|
|
9
|
+
:max_depth => @max_depth_txt.text.to_i,
|
|
10
|
+
:max_threads => @max_threads_txt.text.to_i,
|
|
11
|
+
:max_repeat => @max_repeat_txt.text.to_i,
|
|
12
|
+
:delay => @delay_txt.text.to_i,
|
|
13
|
+
# TODO: :user_agent => @user_agent_txt.text,
|
|
14
|
+
:submit_forms => @submit_forms_cb.checked?,
|
|
15
|
+
:excluded_fields => @excluded_field_patterns.to_a,
|
|
16
|
+
:head_request_pattern => @rewrite_method_cb.checked? ? @head_request_pattern_txt.text : nil
|
|
17
|
+
}
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def set(settings)
|
|
21
|
+
@submit_forms_cb.checkState = settings[:submit_forms] if settings.has_key? :submit_forms
|
|
22
|
+
@max_depth_txt.text = settings[:max_depth].to_s if settings.has_key? :max_depth
|
|
23
|
+
@max_threads_txt.text = settings[:max_threads].to_s if settings.has_key? :max_threads
|
|
24
|
+
@max_repeat_txt.text = settings[:max_repeat].to_s if settings.has_key? :max_repeat
|
|
25
|
+
@head_request_pattern_txt.text = settings[:head_request_pattern].to_s if settings.has_key? :head_request_pattern
|
|
26
|
+
@delay_txt.text = settings[:delay].to_s if settings.has_key? :delay
|
|
27
|
+
@excluded_field_patterns.set settings[:excluded_fields] if settings.has_key? :excluded_fields
|
|
28
|
+
|
|
29
|
+
update_form
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def update_form
|
|
33
|
+
[ @submit_forms_cb, @max_depth_txt, @max_threads_txt, @max_repeat_txt, @delay_txt, @head_request_pattern_txt, @excluded_field_patterns ].each do |e|
|
|
34
|
+
e.handle(self, FXSEL(SEL_UPDATE, 0), nil)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def initialize(owner)
|
|
39
|
+
super(owner, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
|
|
40
|
+
iframe = FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED|FRAME_THICK)
|
|
41
|
+
|
|
42
|
+
outer_matrix = FXMatrix.new(iframe, 3, :opts => MATRIX_BY_COLUMNS|LAYOUT_FILL_X)
|
|
43
|
+
gbframe = FXGroupBox.new(outer_matrix, "Performance", FRAME_GROOVE|LAYOUT_FILL_Y, 0, 0, 0, 0)
|
|
44
|
+
|
|
45
|
+
matrix = FXMatrix.new(gbframe, 2, :opts => MATRIX_BY_COLUMNS|LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
|
46
|
+
|
|
47
|
+
FXLabel.new(matrix, "Max. Depth:", nil, LAYOUT_TOP|JUSTIFY_RIGHT)
|
|
48
|
+
@max_depth_txt = FXTextField.new(matrix, 10, nil, 0, :opts => TEXTFIELD_NORMAL|LAYOUT_SIDE_RIGHT)
|
|
49
|
+
|
|
50
|
+
FXLabel.new(matrix, "Max. Threads:", nil, LAYOUT_TOP|JUSTIFY_RIGHT)
|
|
51
|
+
@max_threads_txt = FXTextField.new(matrix, 10, nil, 0, :opts => TEXTFIELD_NORMAL|LAYOUT_SIDE_RIGHT)
|
|
52
|
+
|
|
53
|
+
FXLabel.new(matrix, "Max. Repeat:", nil, LAYOUT_TOP|JUSTIFY_RIGHT)
|
|
54
|
+
@max_repeat_txt = FXTextField.new(matrix, 10, nil, 0, :opts => TEXTFIELD_NORMAL|LAYOUT_SIDE_RIGHT)
|
|
55
|
+
|
|
56
|
+
FXLabel.new(matrix, "Delay (ms):", nil, LAYOUT_TOP|JUSTIFY_RIGHT)
|
|
57
|
+
@delay_txt = FXTextField.new(matrix, 10, nil, 0, :opts => TEXTFIELD_NORMAL|LAYOUT_SIDE_RIGHT)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
gbframe = FXGroupBox.new(outer_matrix, "Form Handling", FRAME_GROOVE|LAYOUT_FILL_Y, 0, 0, 0, 0)
|
|
62
|
+
iframe = FXVerticalFrame.new(gbframe, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
|
63
|
+
@submit_forms_cb = FXCheckButton.new(iframe, "Submit Forms", nil, 0, JUSTIFY_LEFT|JUSTIFY_TOP|ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP)
|
|
64
|
+
@submit_forms_cb.checkState = true
|
|
65
|
+
|
|
66
|
+
@fill_forms_cb = FXCheckButton.new(iframe, "Fill Forms", nil, 0, JUSTIFY_LEFT|JUSTIFY_TOP|ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP)
|
|
67
|
+
@fill_forms_cb.checkState = false
|
|
68
|
+
@fill_forms_cb.disable
|
|
69
|
+
|
|
70
|
+
FXLabel.new(iframe, "Don't send forms if they contain following field names (regex):")
|
|
71
|
+
@excluded_field_patterns = Watobo::Gui::ListBox.new(iframe)
|
|
72
|
+
|
|
73
|
+
#f = FXVerticalFrame.new(outer_matrix, :opts =>LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
|
74
|
+
gbframe = FXGroupBox.new(outer_matrix, "Rewrite", FRAME_GROOVE|LAYOUT_FILL_X|LAYOUT_FILL_Y, 0, 0, 0, 0)
|
|
75
|
+
iframe = FXVerticalFrame.new(gbframe, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_FIX_WIDTH, :width => 250)
|
|
76
|
+
fxtext = FXText.new(iframe, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|TEXT_WORDWRAP)
|
|
77
|
+
fxtext.backColor = fxtext.parent.backColor
|
|
78
|
+
fxtext.disable
|
|
79
|
+
text = "To speed up the crawl process and to save bandwidth it is recommended to use HEAD requests for specific document extensions."
|
|
80
|
+
text << "The response to a HEAD request only includes the http headers but no body. The extensions pattern is defined as an regular expression (case insesitive),"
|
|
81
|
+
text << "e.g. '(pdf|swf|doc|flv|jpg|png|gif)' - without quotes."
|
|
82
|
+
|
|
83
|
+
fxtext.setText(text)
|
|
84
|
+
|
|
85
|
+
@rewrite_method_cb = FXCheckButton.new(iframe, "Use HEAD method for:", nil, 0, JUSTIFY_LEFT|JUSTIFY_TOP|ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP)
|
|
86
|
+
@rewrite_method_cb.checkState = true
|
|
87
|
+
f = FXHorizontalFrame.new(iframe, :opts => LAYOUT_FILL_X)
|
|
88
|
+
FXLabel.new(f, "Ext. Pattern:", nil, LAYOUT_TOP|JUSTIFY_RIGHT)
|
|
89
|
+
@head_request_pattern_txt = FXTextField.new(f, 10, nil, 0, :opts => TEXTFIELD_NORMAL|LAYOUT_SIDE_RIGHT|LAYOUT_FILL_X)
|
|
90
|
+
@head_request_pattern_txt.text = '(pdf|swf|doc|flv|jpg|png|gif|zip|tar|gz|bz2|tgz)'
|
|
91
|
+
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
107
98
|
end
|
|
@@ -1,91 +1,82 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# hooks_frame.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
|
# @private
|
|
11
|
-
module Watobo#:nodoc: all
|
|
12
|
-
module Plugin
|
|
13
|
-
module Crawler
|
|
14
|
-
class Gui
|
|
15
|
-
class HooksFrame < FXVerticalFrame
|
|
16
|
-
|
|
17
|
-
def to_h
|
|
18
|
-
hooks = {}
|
|
19
|
-
pch = pre_conn_hook
|
|
20
|
-
hooks[:pre_connect_hook] = pch if pch.respond_to? :call
|
|
21
|
-
|
|
22
|
-
hooks
|
|
23
|
-
end
|
|
24
|
-
def pre_conn_hook
|
|
25
|
-
return nil unless pre_conn_valid?
|
|
26
|
-
hook = eval(pre_conn_code)
|
|
27
|
-
|
|
28
|
-
hook
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def selected
|
|
32
|
-
@pre_txt.setFocus()
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def pre_conn_valid?
|
|
36
|
-
return false if pre_conn_code.empty?
|
|
37
|
-
begin
|
|
38
|
-
eval(pre_conn_code)
|
|
39
|
-
return true
|
|
40
|
-
rescue SyntaxError, LocalJumpError, NameError => e
|
|
41
|
-
# puts "Error in PreConnCode!!"
|
|
42
|
-
# puts e
|
|
43
|
-
# puts e.backtrace
|
|
44
|
-
raise SyntaxError, "SyntaxError in Pre-Connect-Code'#{expr}'"
|
|
45
|
-
#return false
|
|
46
|
-
rescue => bang
|
|
47
|
-
puts bang
|
|
48
|
-
puts bang.backtrace
|
|
49
|
-
return false
|
|
50
|
-
#raise bang
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def pre_conn_code
|
|
56
|
-
return "" if @pre_txt.text.empty?
|
|
57
|
-
code = "lambda { |agent,request|\n"
|
|
58
|
-
code << @pre_txt.text
|
|
59
|
-
code << "\n}"
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def initialize(owner)
|
|
63
|
-
super(owner, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED|FRAME_THICK, :padding => 0)
|
|
64
|
-
main = FXVerticalFrame.new(self, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
|
65
|
-
|
|
66
|
-
gbframe = FXGroupBox.new(main, "Pre-Connection", LAYOUT_SIDE_RIGHT|FRAME_GROOVE|LAYOUT_FILL_X|LAYOUT_FILL_Y, 0, 0, 0, 0)
|
|
67
|
-
frame = FXVerticalFrame.new(gbframe, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
|
|
68
|
-
#text_frame = FXHorizontalFrame.new(frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_NONE, :padding =>0)
|
|
69
|
-
fxtext = FXText.new(frame, :opts => LAYOUT_FILL_X|TEXT_WORDWRAP)
|
|
70
|
-
fxtext.backColor = fxtext.parent.backColor
|
|
71
|
-
fxtext.disable
|
|
72
|
-
text = "You can define a script which gets executed just before each connection. So you are able to modify the Mechanize::Agent and Mechanize::Requests just before the request is sent to the server.\n"
|
|
73
|
-
text << "For more information about pre_connection_hooks check the Mechanize homepage (http://mechanize.rubyforge.org/)."
|
|
74
|
-
|
|
75
|
-
fxtext.setText(text)
|
|
76
|
-
|
|
77
|
-
FXLabel.new(frame, "lambda{ |agent, request|")
|
|
78
|
-
txt_frame = FXVerticalFrame.new(frame, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN|FRAME_THICK, :padding => 0)
|
|
79
|
-
@pre_txt = FXText.new(txt_frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|TEXT_WORDWRAP)
|
|
80
|
-
FXLabel.new(frame, "}")
|
|
81
|
-
@pre_txt.setText("")
|
|
82
|
-
# cannot set the focus here because of a crash on ubuntu systems
|
|
83
|
-
# https://bugs.launchpad.net/ubuntu/+source/fox1.6/+bug/887038
|
|
84
|
-
# @pre_txt.setFocus()
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
end
|
|
2
|
+
module Watobo#:nodoc: all
|
|
3
|
+
module Plugin
|
|
4
|
+
module Crawler
|
|
5
|
+
class Gui
|
|
6
|
+
class HooksFrame < FXVerticalFrame
|
|
7
|
+
|
|
8
|
+
def to_h
|
|
9
|
+
hooks = {}
|
|
10
|
+
pch = pre_conn_hook
|
|
11
|
+
hooks[:pre_connect_hook] = pch if pch.respond_to? :call
|
|
12
|
+
|
|
13
|
+
hooks
|
|
14
|
+
end
|
|
15
|
+
def pre_conn_hook
|
|
16
|
+
return nil unless pre_conn_valid?
|
|
17
|
+
hook = eval(pre_conn_code)
|
|
18
|
+
|
|
19
|
+
hook
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def selected
|
|
23
|
+
@pre_txt.setFocus()
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def pre_conn_valid?
|
|
27
|
+
return false if pre_conn_code.empty?
|
|
28
|
+
begin
|
|
29
|
+
eval(pre_conn_code)
|
|
30
|
+
return true
|
|
31
|
+
rescue SyntaxError, LocalJumpError, NameError => e
|
|
32
|
+
# puts "Error in PreConnCode!!"
|
|
33
|
+
# puts e
|
|
34
|
+
# puts e.backtrace
|
|
35
|
+
raise SyntaxError, "SyntaxError in Pre-Connect-Code'#{expr}'"
|
|
36
|
+
#return false
|
|
37
|
+
rescue => bang
|
|
38
|
+
puts bang
|
|
39
|
+
puts bang.backtrace
|
|
40
|
+
return false
|
|
41
|
+
#raise bang
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def pre_conn_code
|
|
47
|
+
return "" if @pre_txt.text.empty?
|
|
48
|
+
code = "lambda { |agent,request|\n"
|
|
49
|
+
code << @pre_txt.text
|
|
50
|
+
code << "\n}"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def initialize(owner)
|
|
54
|
+
super(owner, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED|FRAME_THICK, :padding => 0)
|
|
55
|
+
main = FXVerticalFrame.new(self, LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
|
56
|
+
|
|
57
|
+
gbframe = FXGroupBox.new(main, "Pre-Connection", LAYOUT_SIDE_RIGHT|FRAME_GROOVE|LAYOUT_FILL_X|LAYOUT_FILL_Y, 0, 0, 0, 0)
|
|
58
|
+
frame = FXVerticalFrame.new(gbframe, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
|
|
59
|
+
#text_frame = FXHorizontalFrame.new(frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_NONE, :padding =>0)
|
|
60
|
+
fxtext = FXText.new(frame, :opts => LAYOUT_FILL_X|TEXT_WORDWRAP)
|
|
61
|
+
fxtext.backColor = fxtext.parent.backColor
|
|
62
|
+
fxtext.disable
|
|
63
|
+
text = "You can define a script which gets executed just before each connection. So you are able to modify the Mechanize::Agent and Mechanize::Requests just before the request is sent to the server.\n"
|
|
64
|
+
text << "For more information about pre_connection_hooks check the Mechanize homepage (http://mechanize.rubyforge.org/)."
|
|
65
|
+
|
|
66
|
+
fxtext.setText(text)
|
|
67
|
+
|
|
68
|
+
FXLabel.new(frame, "lambda{ |agent, request|")
|
|
69
|
+
txt_frame = FXVerticalFrame.new(frame, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN|FRAME_THICK, :padding => 0)
|
|
70
|
+
@pre_txt = FXText.new(txt_frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|TEXT_WORDWRAP)
|
|
71
|
+
FXLabel.new(frame, "}")
|
|
72
|
+
@pre_txt.setText("")
|
|
73
|
+
# cannot set the focus here because of a crash on ubuntu systems
|
|
74
|
+
# https://bugs.launchpad.net/ubuntu/+source/fox1.6/+bug/887038
|
|
75
|
+
# @pre_txt.setFocus()
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
91
82
|
end
|
|
@@ -1,61 +1,52 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# scope_frame.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
|
# @private
|
|
11
|
-
module Watobo#:nodoc: all
|
|
12
|
-
module Plugin
|
|
13
|
-
module Crawler
|
|
14
|
-
class Gui
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class ScopeFrame < FXVerticalFrame
|
|
18
|
-
def to_h
|
|
19
|
-
{
|
|
20
|
-
:allowed_hosts => @allowed_hosts_box.to_a,
|
|
21
|
-
:allowed_urls => @allowed_urls_box.to_a,
|
|
22
|
-
:excluded_urls => @exluded_urls_box.to_a
|
|
23
|
-
}
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def path_restricted?
|
|
27
|
-
@restrict_path_cb.checked?
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def set(s)
|
|
31
|
-
@allowed_hosts_box.append s[:allowed_hosts] if s.has_key? :allowed_hosts
|
|
32
|
-
@exluded_urls_box.append s[:allowed_urls] if s.has_key? :allowed_urls
|
|
33
|
-
@exluded_urls_box.append s[:excluded_urls] if s.has_key? :excluded_urls
|
|
34
|
-
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def update_form
|
|
38
|
-
@widgets.each do |e|
|
|
39
|
-
e.handle(self, FXSEL(SEL_UPDATE, 0), nil)
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def initialize(owner)
|
|
44
|
-
super(owner, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
|
|
45
|
-
iframe = FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED|FRAME_THICK)
|
|
46
|
-
#iframe = self
|
|
47
|
-
@restrict_path_cb = FXCheckButton.new(iframe, "restrict to start path", nil, 0, JUSTIFY_LEFT|JUSTIFY_TOP|ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP)
|
|
48
|
-
@restrict_path_cb.checkState = true
|
|
49
|
-
|
|
50
|
-
outer_matrix = FXMatrix.new(iframe, 3, :opts => MATRIX_BY_COLUMNS|LAYOUT_FILL_X)
|
|
51
|
-
@allowed_hosts_box = Watobo::Gui::ListBox.new(outer_matrix, "Allowed Hosts")
|
|
52
|
-
@exluded_urls_box = Watobo::Gui::ListBox.new(outer_matrix, "Excluded URLs")
|
|
53
|
-
@allowed_urls_box = Watobo::Gui::ListBox.new(outer_matrix, "Allowed URLs")
|
|
54
|
-
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
2
|
+
module Watobo#:nodoc: all
|
|
3
|
+
module Plugin
|
|
4
|
+
module Crawler
|
|
5
|
+
class Gui
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ScopeFrame < FXVerticalFrame
|
|
9
|
+
def to_h
|
|
10
|
+
{
|
|
11
|
+
:allowed_hosts => @allowed_hosts_box.to_a,
|
|
12
|
+
:allowed_urls => @allowed_urls_box.to_a,
|
|
13
|
+
:excluded_urls => @exluded_urls_box.to_a
|
|
14
|
+
}
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def path_restricted?
|
|
18
|
+
@restrict_path_cb.checked?
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def set(s)
|
|
22
|
+
@allowed_hosts_box.append s[:allowed_hosts] if s.has_key? :allowed_hosts
|
|
23
|
+
@exluded_urls_box.append s[:allowed_urls] if s.has_key? :allowed_urls
|
|
24
|
+
@exluded_urls_box.append s[:excluded_urls] if s.has_key? :excluded_urls
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def update_form
|
|
29
|
+
@widgets.each do |e|
|
|
30
|
+
e.handle(self, FXSEL(SEL_UPDATE, 0), nil)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def initialize(owner)
|
|
35
|
+
super(owner, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
|
|
36
|
+
iframe = FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED|FRAME_THICK)
|
|
37
|
+
#iframe = self
|
|
38
|
+
@restrict_path_cb = FXCheckButton.new(iframe, "restrict to start path", nil, 0, JUSTIFY_LEFT|JUSTIFY_TOP|ICON_BEFORE_TEXT|LAYOUT_SIDE_TOP)
|
|
39
|
+
@restrict_path_cb.checkState = true
|
|
40
|
+
|
|
41
|
+
outer_matrix = FXMatrix.new(iframe, 3, :opts => MATRIX_BY_COLUMNS|LAYOUT_FILL_X)
|
|
42
|
+
@allowed_hosts_box = Watobo::Gui::ListBox.new(outer_matrix, "Allowed Hosts")
|
|
43
|
+
@exluded_urls_box = Watobo::Gui::ListBox.new(outer_matrix, "Excluded URLs")
|
|
44
|
+
@allowed_urls_box = Watobo::Gui::ListBox.new(outer_matrix, "Allowed URLs")
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
61
52
|
end
|