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,129 +1,120 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# save_default_settings.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
|
-
|
|
13
|
-
module Gui
|
|
14
|
-
def self.save_settings()
|
|
2
|
+
module Watobo#:nodoc: all
|
|
3
|
+
|
|
4
|
+
module Gui
|
|
5
|
+
def self.save_settings()
|
|
15
6
|
begin
|
|
16
|
-
puts "SAVE SETTINGS"
|
|
17
|
-
|
|
18
|
-
mp = ''
|
|
19
|
-
save_pws = false
|
|
20
|
-
|
|
21
|
-
# puts "= Master Password Settings ="
|
|
22
|
-
# puts Watobo::Gui::MasterPW.settings.to_yaml
|
|
23
|
-
|
|
24
|
-
if Watobo::Gui::MasterPW.save_passwords?
|
|
25
|
-
save_pws = true
|
|
26
|
-
unless Watobo::Gui::MasterPW.set?
|
|
27
|
-
save_pws = false unless Watobo::Gui::MasterPW.save_without_master?
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
Watobo.save_proxy_settings( :save_passwords => save_pws, :key => mp )
|
|
32
|
-
|
|
7
|
+
puts "SAVE SETTINGS"
|
|
8
|
+
|
|
9
|
+
mp = ''
|
|
10
|
+
save_pws = false
|
|
11
|
+
|
|
12
|
+
# puts "= Master Password Settings ="
|
|
13
|
+
# puts Watobo::Gui::MasterPW.settings.to_yaml
|
|
14
|
+
|
|
15
|
+
if Watobo::Gui::MasterPW.save_passwords?
|
|
16
|
+
save_pws = true
|
|
17
|
+
unless Watobo::Gui::MasterPW.set?
|
|
18
|
+
save_pws = false unless Watobo::Gui::MasterPW.save_without_master?
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
Watobo.save_proxy_settings( :save_passwords => save_pws, :key => mp )
|
|
23
|
+
|
|
33
24
|
Watobo::Gui.save_scanner_settings
|
|
34
|
-
|
|
25
|
+
|
|
35
26
|
unless Watobo.project.nil?
|
|
36
27
|
# puts "- save project settings"
|
|
37
|
-
# puts Watobo::Conf::General.dump.to_yaml
|
|
38
|
-
Watobo::Conf::General.save_project
|
|
39
|
-
Watobo::Conf::Interceptor.save_project
|
|
40
|
-
Watobo::Conf::SidCache.save_project
|
|
41
|
-
end
|
|
28
|
+
# puts Watobo::Conf::General.dump.to_yaml
|
|
29
|
+
Watobo::Conf::General.save_project
|
|
30
|
+
Watobo::Conf::Interceptor.save_project
|
|
31
|
+
Watobo::Conf::SidCache.save_project
|
|
32
|
+
end
|
|
42
33
|
# also save global settings here
|
|
43
34
|
# puts "- save global settings"
|
|
44
|
-
# puts Watobo::Conf::General.dump.to_yaml
|
|
45
|
-
Watobo::Conf::General.save
|
|
46
|
-
Watobo::Conf::Interceptor.save
|
|
47
|
-
|
|
48
|
-
return true
|
|
49
|
-
rescue => bang
|
|
50
|
-
puts bang
|
|
51
|
-
puts bang.backtrace if $DEBUG
|
|
52
|
-
end
|
|
53
|
-
return false
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def self.save_default_settings_UNUSED(project)
|
|
57
|
-
mp = ''
|
|
58
|
-
save_pws = false
|
|
59
|
-
|
|
60
|
-
# puts "= Master Password Settings ="
|
|
61
|
-
# puts Watobo::Gui::MasterPW.settings.to_yaml
|
|
62
|
-
|
|
63
|
-
if Watobo::Gui::MasterPW.save_passwords?
|
|
64
|
-
save_pws = true
|
|
65
|
-
unless Watobo::Gui::MasterPW.set?
|
|
66
|
-
save_pws = false unless Watobo::Gui::MasterPW.save_without_master?
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
Watobo.save_proxy_settings( :save_passwords => save_pws, :key => mp )
|
|
71
|
-
|
|
72
|
-
Watobo::Conf::General.save
|
|
73
|
-
Watobo::Conf::Interceptor.save
|
|
74
|
-
|
|
75
|
-
return true
|
|
76
|
-
=begin
|
|
77
|
-
proxy_has_credentials = false
|
|
78
|
-
|
|
79
|
-
settings[:forwarding_proxy].each_key do |p|
|
|
80
|
-
next if p == :default_proxy
|
|
81
|
-
proxy = settings[:forwarding_proxy][p]
|
|
82
|
-
|
|
83
|
-
if proxy.has_key? :password and proxy[:password] != ''
|
|
84
|
-
# puts " - proxy #{p} has password #{proxy_list[p][:credentials][:password]}"
|
|
85
|
-
proxy_has_credentials = true
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
if proxy_has_credentials == true
|
|
91
|
-
if settings[:password_policy][:save_passwords] == true
|
|
92
|
-
if settings[:password_policy][:save_without_master] == false
|
|
93
|
-
if Watobo::Gui.master_password.empty?
|
|
94
|
-
# puts "* need master password for proxy"
|
|
95
|
-
dlg = MasterPWDialog.new(self)
|
|
96
|
-
if dlg.execute != 0
|
|
97
|
-
Watobo::Gui.master_password = dlg.masterPassword
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
unless Watobo::Gui.master_password.empty?
|
|
101
|
-
settings[:forwarding_proxy].each_key do |p|
|
|
102
|
-
#creds = settings[:forwarding_proxy][p][:credentials]
|
|
103
|
-
#pass = "$$WPE$$" + creds[:password]
|
|
104
|
-
pass = settings[:forwarding_proxy][p][:password]
|
|
105
|
-
unless pass.empty?
|
|
106
|
-
creds[:password] = Crypto.encryptPassword(pass, Watobo::Gui.master_password)
|
|
107
|
-
creds[:encrypted] = true
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
else
|
|
111
|
-
cleanCredentials(settings)
|
|
112
|
-
FXMessageBox.information(self,MBOX_OK,"No MasterPassword", "Could not encrypt proxy passwords. No Passwords have been saved!")
|
|
113
|
-
end
|
|
114
|
-
else
|
|
115
|
-
puts "* saving passwords without protection!!!!"
|
|
116
|
-
end
|
|
117
|
-
else
|
|
118
|
-
cleanCredentials(settings)
|
|
119
|
-
end
|
|
120
|
-
# puts "=== DEFAULT SETTINGS PASSWORD POLICY"
|
|
121
|
-
# puts YAML.dump(settings)
|
|
122
|
-
Watobo::Utils.save_settings(@default_settings_file, settings )
|
|
123
|
-
=end
|
|
124
|
-
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
end
|
|
35
|
+
# puts Watobo::Conf::General.dump.to_yaml
|
|
36
|
+
Watobo::Conf::General.save
|
|
37
|
+
Watobo::Conf::Interceptor.save
|
|
38
|
+
|
|
39
|
+
return true
|
|
40
|
+
rescue => bang
|
|
41
|
+
puts bang
|
|
42
|
+
puts bang.backtrace if $DEBUG
|
|
43
|
+
end
|
|
44
|
+
return false
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def self.save_default_settings_UNUSED(project)
|
|
48
|
+
mp = ''
|
|
49
|
+
save_pws = false
|
|
50
|
+
|
|
51
|
+
# puts "= Master Password Settings ="
|
|
52
|
+
# puts Watobo::Gui::MasterPW.settings.to_yaml
|
|
53
|
+
|
|
54
|
+
if Watobo::Gui::MasterPW.save_passwords?
|
|
55
|
+
save_pws = true
|
|
56
|
+
unless Watobo::Gui::MasterPW.set?
|
|
57
|
+
save_pws = false unless Watobo::Gui::MasterPW.save_without_master?
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
Watobo.save_proxy_settings( :save_passwords => save_pws, :key => mp )
|
|
62
|
+
|
|
63
|
+
Watobo::Conf::General.save
|
|
64
|
+
Watobo::Conf::Interceptor.save
|
|
65
|
+
|
|
66
|
+
return true
|
|
67
|
+
=begin
|
|
68
|
+
proxy_has_credentials = false
|
|
69
|
+
|
|
70
|
+
settings[:forwarding_proxy].each_key do |p|
|
|
71
|
+
next if p == :default_proxy
|
|
72
|
+
proxy = settings[:forwarding_proxy][p]
|
|
73
|
+
|
|
74
|
+
if proxy.has_key? :password and proxy[:password] != ''
|
|
75
|
+
# puts " - proxy #{p} has password #{proxy_list[p][:credentials][:password]}"
|
|
76
|
+
proxy_has_credentials = true
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
if proxy_has_credentials == true
|
|
82
|
+
if settings[:password_policy][:save_passwords] == true
|
|
83
|
+
if settings[:password_policy][:save_without_master] == false
|
|
84
|
+
if Watobo::Gui.master_password.empty?
|
|
85
|
+
# puts "* need master password for proxy"
|
|
86
|
+
dlg = MasterPWDialog.new(self)
|
|
87
|
+
if dlg.execute != 0
|
|
88
|
+
Watobo::Gui.master_password = dlg.masterPassword
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
unless Watobo::Gui.master_password.empty?
|
|
92
|
+
settings[:forwarding_proxy].each_key do |p|
|
|
93
|
+
#creds = settings[:forwarding_proxy][p][:credentials]
|
|
94
|
+
#pass = "$$WPE$$" + creds[:password]
|
|
95
|
+
pass = settings[:forwarding_proxy][p][:password]
|
|
96
|
+
unless pass.empty?
|
|
97
|
+
creds[:password] = Crypto.encryptPassword(pass, Watobo::Gui.master_password)
|
|
98
|
+
creds[:encrypted] = true
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
else
|
|
102
|
+
cleanCredentials(settings)
|
|
103
|
+
FXMessageBox.information(self,MBOX_OK,"No MasterPassword", "Could not encrypt proxy passwords. No Passwords have been saved!")
|
|
104
|
+
end
|
|
105
|
+
else
|
|
106
|
+
puts "* saving passwords without protection!!!!"
|
|
107
|
+
end
|
|
108
|
+
else
|
|
109
|
+
cleanCredentials(settings)
|
|
110
|
+
end
|
|
111
|
+
# puts "=== DEFAULT SETTINGS PASSWORD POLICY"
|
|
112
|
+
# puts YAML.dump(settings)
|
|
113
|
+
Watobo::Utils.save_settings(@default_settings_file, settings )
|
|
114
|
+
=end
|
|
115
|
+
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
end
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# save_project_settings.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
|
-
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# save_proxy_settings.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
2
|
module Watobo#:nodoc: all
|
|
12
3
|
def self.save_proxy_settings(prefs={})
|
|
@@ -50,47 +41,47 @@ module Watobo#:nodoc: all
|
|
|
50
41
|
end
|
|
51
42
|
|
|
52
43
|
end
|
|
53
|
-
|
|
44
|
+
|
|
54
45
|
def self.save_proxy_settings_UNUSED(prefs={})
|
|
55
46
|
|
|
56
|
-
puts "* save proxy settings"
|
|
57
|
-
|
|
58
|
-
c_prefs = {
|
|
59
|
-
:save_passwords => false,
|
|
60
|
-
:key => ""
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
c_prefs.update prefs
|
|
64
|
-
|
|
65
|
-
unless Watobo.project.nil?
|
|
66
|
-
Watobo::Conf::ForwardingProxy.save_project() do |s|
|
|
67
|
-
s.each do |name, proxy|
|
|
68
|
-
next unless proxy.is_a? Hash
|
|
69
|
-
unless c_prefs[:save_passwords] == false
|
|
70
|
-
unless c_prefs[:key].empty?
|
|
71
|
-
#asdfa
|
|
72
|
-
end
|
|
73
|
-
else
|
|
74
|
-
proxy[:password] = ''
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
else
|
|
79
|
-
|
|
80
|
-
Watobo::Conf::ForwardingProxy.save do |s|
|
|
81
|
-
s.each do |name, proxy|
|
|
82
|
-
next unless proxy.is_a? Hash
|
|
83
|
-
unless c_prefs[:save_passwords] == false
|
|
84
|
-
unless c_prefs[:key].empty?
|
|
85
|
-
#asdfa
|
|
86
|
-
end
|
|
87
|
-
else
|
|
88
|
-
proxy[:password] = ''
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
end
|
|
95
|
-
|
|
47
|
+
puts "* save proxy settings"
|
|
48
|
+
|
|
49
|
+
c_prefs = {
|
|
50
|
+
:save_passwords => false,
|
|
51
|
+
:key => ""
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
c_prefs.update prefs
|
|
55
|
+
|
|
56
|
+
unless Watobo.project.nil?
|
|
57
|
+
Watobo::Conf::ForwardingProxy.save_project() do |s|
|
|
58
|
+
s.each do |name, proxy|
|
|
59
|
+
next unless proxy.is_a? Hash
|
|
60
|
+
unless c_prefs[:save_passwords] == false
|
|
61
|
+
unless c_prefs[:key].empty?
|
|
62
|
+
#asdfa
|
|
63
|
+
end
|
|
64
|
+
else
|
|
65
|
+
proxy[:password] = ''
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
else
|
|
70
|
+
|
|
71
|
+
Watobo::Conf::ForwardingProxy.save do |s|
|
|
72
|
+
s.each do |name, proxy|
|
|
73
|
+
next unless proxy.is_a? Hash
|
|
74
|
+
unless c_prefs[:save_passwords] == false
|
|
75
|
+
unless c_prefs[:key].empty?
|
|
76
|
+
#asdfa
|
|
77
|
+
end
|
|
78
|
+
else
|
|
79
|
+
proxy[:password] = ''
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
end
|
|
86
|
+
|
|
96
87
|
end
|
|
@@ -1,33 +1,24 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# save_scanner_settings.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 Gui
|
|
2
|
+
module Watobo#:nodoc: all
|
|
3
|
+
module Gui
|
|
13
4
|
def self.save_scanner_settings()
|
|
14
5
|
#puts "* saving scanner settings ..."
|
|
15
6
|
#puts Watobo::Conf::Scanner.settings.to_yaml
|
|
16
|
-
|
|
17
|
-
unless Watobo.project.nil?
|
|
18
|
-
|
|
19
|
-
Watobo::Conf::Scanner.save_project(){ |s|
|
|
7
|
+
|
|
8
|
+
unless Watobo.project.nil?
|
|
9
|
+
|
|
10
|
+
Watobo::Conf::Scanner.save_project(){ |s|
|
|
20
11
|
# puts s.to_yaml
|
|
21
|
-
s.delete(:scan_name)
|
|
22
|
-
s
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
session_filter = [ :sid_patterns, :logout_signatures, :custom_error_patterns, :max_parallel_checks, :excluded_parms, :non_unique_parms ]
|
|
26
|
-
Watobo::Conf::Scanner.save_session(session_filter)
|
|
27
|
-
return true
|
|
28
|
-
else
|
|
29
|
-
Watobo::Conf::Scanner.save
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
12
|
+
s.delete(:scan_name)
|
|
13
|
+
s
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
session_filter = [ :sid_patterns, :logout_signatures, :custom_error_patterns, :max_parallel_checks, :excluded_parms, :non_unique_parms ]
|
|
17
|
+
Watobo::Conf::Scanner.save_session(session_filter)
|
|
18
|
+
return true
|
|
19
|
+
else
|
|
20
|
+
Watobo::Conf::Scanner.save
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
33
24
|
end
|
|
@@ -1,123 +1,114 @@
|
|
|
1
|
-
#.
|
|
2
|
-
# session_history.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
|
-
|
|
13
|
-
module Gui
|
|
14
|
-
|
|
15
|
-
# Watobo::Gui::History
|
|
16
|
-
=begin
|
|
17
|
-
Class for managing history entries
|
|
18
|
-
entries are organised as a hash.
|
|
19
|
-
each entry consists of a hash.
|
|
20
|
-
the key of an entry is based on its session filename
|
|
21
|
-
|
|
22
|
-
@history_entry[session_file] = {
|
|
23
|
-
:last_used
|
|
24
|
-
:created
|
|
25
|
-
:project_name
|
|
26
|
-
:session_name
|
|
27
|
-
:description
|
|
28
|
-
}
|
|
29
|
-
=end
|
|
30
|
-
class SessionHistory
|
|
31
|
-
|
|
32
|
-
attr_accessor :max_entries
|
|
33
|
-
def save()
|
|
34
|
-
begin
|
|
35
|
-
File.open(@history_file,"w") { |fh| fh.write YAML.dump(@history_entries) }
|
|
36
|
-
rescue => bang
|
|
37
|
-
puts bang
|
|
38
|
-
puts bang.backtrace if $DEBUG
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def entries
|
|
43
|
-
@history_entries
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def add_entry(prefs = {})
|
|
47
|
-
t_now = Time.now.to_i
|
|
48
|
-
return false unless prefs.has_key? :session_name or prefs.has_key? :project_name
|
|
49
|
-
puts "#"
|
|
50
|
-
hid = history_id(prefs[:project_name], prefs[:session_name])
|
|
51
|
-
@history_entries[hid] ||= {
|
|
52
|
-
:created => t_now
|
|
53
|
-
}
|
|
54
|
-
@history_entries[hid][:last_used] = t_now
|
|
55
|
-
|
|
56
|
-
[ :description, :project_name, :session_name ].each do |k|
|
|
57
|
-
@history_entries[hid][k] = prefs[k] if prefs.has_key? k
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
while @history_entries.length > @max_entries do
|
|
61
|
-
oid, ov = @history_entries.min_by{ |id,v| v[:last_used] }
|
|
62
|
-
@history_entries.delete oid
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
save()
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def delete_entry(project_name, session_name)
|
|
69
|
-
@history_entries.delete history_id(project_name, session_name)
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def update_usage(prefs)
|
|
73
|
-
t_now = Time.now.to_i
|
|
74
|
-
return false unless prefs.has_key? :session_name or prefs.has_key? :project_name
|
|
75
|
-
hid = history_id(prefs[:project_name], prefs[:session_name])
|
|
76
|
-
return false unless @history_entries.has_key? hid
|
|
77
|
-
@history_entries[hid][:last_used] = t_now
|
|
78
|
-
save()
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
def each(&b)
|
|
82
|
-
@history_entries.each_key{ |k|
|
|
83
|
-
yield @history_entries[k] if block_given?
|
|
84
|
-
}
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
def load(history_file)
|
|
88
|
-
if File.exist? history_file
|
|
89
|
-
@history_entries = YAML.load_file(history_file)
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
def initialize(filename)
|
|
94
|
-
|
|
95
|
-
@max_entries = 8
|
|
96
|
-
@history_entries = Hash.new
|
|
97
|
-
@history_file = filename
|
|
98
|
-
|
|
99
|
-
if File.exist? @history_file
|
|
100
|
-
load(@history_file)
|
|
101
|
-
else
|
|
102
|
-
begin
|
|
103
|
-
File.open(@history_file,"w") { |fh| fh.write YAML.dump(@history_entries) }
|
|
104
|
-
rescue => bang
|
|
105
|
-
puts bang
|
|
106
|
-
puts bang.backtrace if $DEBUG
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
private
|
|
113
|
-
|
|
114
|
-
def history_id(project_name, session_name)
|
|
115
|
-
text = [ project_name, session_name ].join("$")
|
|
116
|
-
return Digest::MD5.hexdigest(text)
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
end
|
|
122
|
-
|
|
2
|
+
module Watobo#:nodoc: all
|
|
3
|
+
|
|
4
|
+
module Gui
|
|
5
|
+
|
|
6
|
+
# Watobo::Gui::History
|
|
7
|
+
=begin
|
|
8
|
+
Class for managing history entries
|
|
9
|
+
entries are organised as a hash.
|
|
10
|
+
each entry consists of a hash.
|
|
11
|
+
the key of an entry is based on its session filename
|
|
12
|
+
|
|
13
|
+
@history_entry[session_file] = {
|
|
14
|
+
:last_used
|
|
15
|
+
:created
|
|
16
|
+
:project_name
|
|
17
|
+
:session_name
|
|
18
|
+
:description
|
|
19
|
+
}
|
|
20
|
+
=end
|
|
21
|
+
class SessionHistory
|
|
22
|
+
|
|
23
|
+
attr_accessor :max_entries
|
|
24
|
+
def save()
|
|
25
|
+
begin
|
|
26
|
+
File.open(@history_file,"w") { |fh| fh.write YAML.dump(@history_entries) }
|
|
27
|
+
rescue => bang
|
|
28
|
+
puts bang
|
|
29
|
+
puts bang.backtrace if $DEBUG
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def entries
|
|
34
|
+
@history_entries
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def add_entry(prefs = {})
|
|
38
|
+
t_now = Time.now.to_i
|
|
39
|
+
return false unless prefs.has_key? :session_name or prefs.has_key? :project_name
|
|
40
|
+
puts "#"
|
|
41
|
+
hid = history_id(prefs[:project_name], prefs[:session_name])
|
|
42
|
+
@history_entries[hid] ||= {
|
|
43
|
+
:created => t_now
|
|
44
|
+
}
|
|
45
|
+
@history_entries[hid][:last_used] = t_now
|
|
46
|
+
|
|
47
|
+
[ :description, :project_name, :session_name ].each do |k|
|
|
48
|
+
@history_entries[hid][k] = prefs[k] if prefs.has_key? k
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
while @history_entries.length > @max_entries do
|
|
52
|
+
oid, ov = @history_entries.min_by{ |id,v| v[:last_used] }
|
|
53
|
+
@history_entries.delete oid
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
save()
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def delete_entry(project_name, session_name)
|
|
60
|
+
@history_entries.delete history_id(project_name, session_name)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def update_usage(prefs)
|
|
64
|
+
t_now = Time.now.to_i
|
|
65
|
+
return false unless prefs.has_key? :session_name or prefs.has_key? :project_name
|
|
66
|
+
hid = history_id(prefs[:project_name], prefs[:session_name])
|
|
67
|
+
return false unless @history_entries.has_key? hid
|
|
68
|
+
@history_entries[hid][:last_used] = t_now
|
|
69
|
+
save()
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def each(&b)
|
|
73
|
+
@history_entries.each_key{ |k|
|
|
74
|
+
yield @history_entries[k] if block_given?
|
|
75
|
+
}
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def load(history_file)
|
|
79
|
+
if File.exist? history_file
|
|
80
|
+
@history_entries = YAML.load_file(history_file)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def initialize(filename)
|
|
85
|
+
|
|
86
|
+
@max_entries = 8
|
|
87
|
+
@history_entries = Hash.new
|
|
88
|
+
@history_file = filename
|
|
89
|
+
|
|
90
|
+
if File.exist? @history_file
|
|
91
|
+
load(@history_file)
|
|
92
|
+
else
|
|
93
|
+
begin
|
|
94
|
+
File.open(@history_file,"w") { |fh| fh.write YAML.dump(@history_entries) }
|
|
95
|
+
rescue => bang
|
|
96
|
+
puts bang
|
|
97
|
+
puts bang.backtrace if $DEBUG
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
private
|
|
104
|
+
|
|
105
|
+
def history_id(project_name, session_name)
|
|
106
|
+
text = [ project_name, session_name ].join("$")
|
|
107
|
+
return Digest::MD5.hexdigest(text)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
end
|
|
113
|
+
|
|
123
114
|
end
|