watobo 0.9.8.677
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/watobo_gui.rb +39 -0
- data/certificates/cert.pem +19 -0
- data/certificates/privkey.pem +15 -0
- data/certificates/watobo_dh.key +5 -0
- data/config/datastore.yml +5 -0
- data/config/forwarding_proxy.yml +12 -0
- data/config/general.yml +4 -0
- data/config/gui.yml +23 -0
- data/config/interceptor.yml +16 -0
- data/config/scan_policy.yml +13 -0
- data/config/scanner.yml +34 -0
- data/icons/Add.ico +0 -0
- data/icons/Add_24x24.ico +0 -0
- data/icons/Bandwidth.ico +0 -0
- data/icons/Bandwidth_24x24.ico +0 -0
- data/icons/Mr. Bomb.ico +0 -0
- data/icons/Mr. Bomb_16x16.ico +0 -0
- data/icons/Mr. Bomb_24x24.ico +0 -0
- data/icons/Orange Ball.ico +0 -0
- data/icons/Orange Ball_16x16.ico +0 -0
- data/icons/Orange Ball_24x24.ico +0 -0
- data/icons/Pause.ico +0 -0
- data/icons/Play.ico +0 -0
- data/icons/Play_24x24.ico +0 -0
- data/icons/Red Ball.ico +0 -0
- data/icons/Red Ball_16x16.ico +0 -0
- data/icons/Red Ball_24x24.ico +0 -0
- data/icons/Run.ico +0 -0
- data/icons/Stop.ico +0 -0
- data/icons/Stop_24x24.ico +0 -0
- data/icons/Terminal.ico +0 -0
- data/icons/Transfer.ico +0 -0
- data/icons/Transfer_16x16.ico +0 -0
- data/icons/User.ico +0 -0
- data/icons/User_16x16.ico +0 -0
- data/icons/User_24x24.ico +0 -0
- data/icons/Web Browser.ico +0 -0
- data/icons/Web Browser_16x16.ico +0 -0
- data/icons/Write Document.ico +0 -0
- data/icons/Yellow Ball.ico +0 -0
- data/icons/Yellow Ball_16x16.ico +0 -0
- data/icons/Yellow Ball_24x24.ico +0 -0
- data/icons/advanced.ico +0 -0
- data/icons/advanced_16x16.ico +0 -0
- data/icons/advanced_24x24.ico +0 -0
- data/icons/applications.ico +0 -0
- data/icons/applications_16x16.ico +0 -0
- data/icons/applications_24x24.ico +0 -0
- data/icons/browser_16x16.ico +0 -0
- data/icons/browser_24x24.ico +0 -0
- data/icons/burn.ico +0 -0
- data/icons/burn_16x16.ico +0 -0
- data/icons/burn_24x24.ico +0 -0
- data/icons/calculator.ico +0 -0
- data/icons/calculator_24x24.ico +0 -0
- data/icons/cb_checked.ico +0 -0
- data/icons/cb_checked_orange.ico +0 -0
- data/icons/cb_unchecked.ico +0 -0
- data/icons/coin_24x24.ico +0 -0
- data/icons/conversation.ico +0 -0
- data/icons/conversation_24x24.ico +0 -0
- data/icons/engine.ico +0 -0
- data/icons/filter.ico +0 -0
- data/icons/folder.ico +0 -0
- data/icons/folder_16x16.ico +0 -0
- data/icons/fuzzer_16x16.ico +0 -0
- data/icons/fuzzer_24x24.ico +0 -0
- data/icons/go-down_16x16.png +0 -0
- data/icons/go-up_16x16.png +0 -0
- data/icons/help.ico +0 -0
- data/icons/help_16x16.ico +0 -0
- data/icons/help_24x24.ico +0 -0
- data/icons/iChat.ico +0 -0
- data/icons/iChat_16x16.ico +0 -0
- data/icons/iChat_24x24.ico +0 -0
- data/icons/icons.txt +3 -0
- data/icons/info.ico +0 -0
- data/icons/info_16x16.ico +0 -0
- data/icons/info_24x24.ico +0 -0
- data/icons/interceptor_24x24.ico +0 -0
- data/icons/lock.ico +0 -0
- data/icons/lock_12x12.ico +0 -0
- data/icons/lock_16x16.ico +0 -0
- data/icons/monitor.ico +0 -0
- data/icons/plugin.ico +0 -0
- data/icons/plugin_24x24.ico +0 -0
- data/icons/scan_16x16.png +0 -0
- data/icons/send.ico +0 -0
- data/icons/server.ico +0 -0
- data/icons/server_16x16.ico +0 -0
- data/icons/siberas_logo_x24.gif +0 -0
- data/icons/tag_blue_32x32.ico +0 -0
- data/icons/watobo-48x48.png +0 -0
- data/icons/watobo-logo.png +0 -0
- data/icons/watobo.ico +0 -0
- data/lib/watobo/adapters/data_store.rb +38 -0
- data/lib/watobo/adapters/file/file_store.rb +211 -0
- data/lib/watobo/adapters/session_store.rb +27 -0
- data/lib/watobo/adapters.rb +26 -0
- data/lib/watobo/config.rb +143 -0
- data/lib/watobo/constants.rb +92 -0
- data/lib/watobo/core/active_check.rb +404 -0
- data/lib/watobo/core/cookie.rb +69 -0
- data/lib/watobo/core/fuzz_gen.rb +160 -0
- data/lib/watobo/core/http_socket.rb +142 -0
- data/lib/watobo/core/interceptor.rb +729 -0
- data/lib/watobo/core/passive_check.rb +141 -0
- data/lib/watobo/core/project.rb +1058 -0
- data/lib/watobo/core/scanner.rb +396 -0
- data/lib/watobo/core/session.rb +1320 -0
- data/lib/watobo/core/simple_ca.rb +393 -0
- data/lib/watobo/core.rb +34 -0
- data/lib/watobo/defaults.rb +40 -0
- data/lib/watobo/external/diff/lcs/array.rb +42 -0
- data/lib/watobo/external/diff/lcs/block.rb +72 -0
- data/lib/watobo/external/diff/lcs/callbacks.rb +343 -0
- data/lib/watobo/external/diff/lcs/change.rb +190 -0
- data/lib/watobo/external/diff/lcs/hunk.rb +279 -0
- data/lib/watobo/external/diff/lcs/ldiff.rb +247 -0
- data/lib/watobo/external/diff/lcs/string.rb +40 -0
- data/lib/watobo/external/diff/lcs.rb +1124 -0
- data/lib/watobo/external/ntlm/ntlm.rb +797 -0
- data/lib/watobo/externals.rb +28 -0
- data/lib/watobo/framework/create_project.rb +55 -0
- data/lib/watobo/framework/init.rb +149 -0
- data/lib/watobo/framework/init_modules.rb +116 -0
- data/lib/watobo/framework/license_text.rb +50 -0
- data/lib/watobo/framework.rb +26 -0
- data/lib/watobo/gui/about_watobo.rb +68 -0
- data/lib/watobo/gui/browser_preview.rb +460 -0
- data/lib/watobo/gui/certificate_dialog.rb +132 -0
- data/lib/watobo/gui/chat_diff.rb +415 -0
- data/lib/watobo/gui/chatviewer_frame.rb +427 -0
- data/lib/watobo/gui/checkboxtree.rb +221 -0
- data/lib/watobo/gui/checks_policy_frame.rb +123 -0
- data/lib/watobo/gui/client_cert_dialog.rb +227 -0
- data/lib/watobo/gui/confirm_scan_dialog.rb +67 -0
- data/lib/watobo/gui/conversation_table.rb +386 -0
- data/lib/watobo/gui/conversation_table_ctrl.rb +175 -0
- data/lib/watobo/gui/csrf_token_dialog.rb +446 -0
- data/lib/watobo/gui/dashboard.rb +341 -0
- data/lib/watobo/gui/define_scope_frame.rb +380 -0
- data/lib/watobo/gui/edit_comment.rb +70 -0
- data/lib/watobo/gui/edit_scope_dialog.rb +69 -0
- data/lib/watobo/gui/finding_info.rb +212 -0
- data/lib/watobo/gui/findings_tree.rb +459 -0
- data/lib/watobo/gui/full_scan_dialog.rb +269 -0
- data/lib/watobo/gui/fuzzer_gui.rb +1522 -0
- data/lib/watobo/gui/hex_viewer.rb +106 -0
- data/lib/watobo/gui/interceptor_gui.rb +994 -0
- data/lib/watobo/gui/interceptor_settings_dialog.rb +201 -0
- data/lib/watobo/gui/log_viewer.rb +97 -0
- data/lib/watobo/gui/login_wizzard.rb +301 -0
- data/lib/watobo/gui/main_window.rb +1815 -0
- data/lib/watobo/gui/manual_request_editor.rb +1105 -0
- data/lib/watobo/gui/master_pw_dialog.rb +142 -0
- data/lib/watobo/gui/password_policy_dialog.rb +98 -0
- data/lib/watobo/gui/plugin/base.rb +82 -0
- data/lib/watobo/gui/plugin_board.rb +95 -0
- data/lib/watobo/gui/preferences_dialog.rb +116 -0
- data/lib/watobo/gui/progress_window.rb +102 -0
- data/lib/watobo/gui/project_wizzard.rb +369 -0
- data/lib/watobo/gui/proxy_dialog.rb +550 -0
- data/lib/watobo/gui/quick_scan_dialog.rb +242 -0
- data/lib/watobo/gui/request_editor.rb +480 -0
- data/lib/watobo/gui/save_chat_dialog.rb +158 -0
- data/lib/watobo/gui/scanner_settings_dialog.rb +360 -0
- data/lib/watobo/gui/select_chat_dialog.rb +169 -0
- data/lib/watobo/gui/session_management_dialog.rb +688 -0
- data/lib/watobo/gui/sites_tree.rb +347 -0
- data/lib/watobo/gui/status_bar.rb +88 -0
- data/lib/watobo/gui/table_editor.rb +445 -0
- data/lib/watobo/gui/tagless_viewer.rb +62 -0
- data/lib/watobo/gui/templates/plugin.rb +80 -0
- data/lib/watobo/gui/templates/plugin2.rb +103 -0
- data/lib/watobo/gui/text_viewer.rb +247 -0
- data/lib/watobo/gui/transcoder_window.rb +215 -0
- data/lib/watobo/gui/utils/gui_utils.rb +129 -0
- data/lib/watobo/gui/utils/init_icons.rb +106 -0
- data/lib/watobo/gui/utils/load_icons.rb +54 -0
- data/lib/watobo/gui/utils/load_plugins.rb +94 -0
- data/lib/watobo/gui/utils/master_password.rb +90 -0
- data/lib/watobo/gui/utils/save_default_settings.rb +99 -0
- data/lib/watobo/gui/utils/save_project_settings.rb +21 -0
- data/lib/watobo/gui/utils/save_proxy_settings.rb +45 -0
- data/lib/watobo/gui/utils/save_session_settings.rb +21 -0
- data/lib/watobo/gui/utils/session_history.rb +134 -0
- data/lib/watobo/gui/workspace_dialog.rb +89 -0
- data/lib/watobo/gui/www_auth_dialog.rb +348 -0
- data/lib/watobo/gui/xml_viewer_frame.rb +114 -0
- data/lib/watobo/gui.rb +139 -0
- data/lib/watobo/mixins/httpparser.rb +664 -0
- data/lib/watobo/mixins/request_parser.rb +210 -0
- data/lib/watobo/mixins/shapers.rb +345 -0
- data/lib/watobo/mixins/transcoders.rb +88 -0
- data/lib/watobo/mixins.rb +32 -0
- data/lib/watobo/utils/check_regex.rb +36 -0
- data/lib/watobo/utils/copy_object.rb +29 -0
- data/lib/watobo/utils/crypto.rb +74 -0
- data/lib/watobo/utils/expand_range.rb +45 -0
- data/lib/watobo/utils/file_management.rb +73 -0
- data/lib/watobo/utils/load_chat.rb +219 -0
- data/lib/watobo/utils/load_icon.rb +47 -0
- data/lib/watobo/utils/print_debug.rb +34 -0
- data/lib/watobo/utils/response_hash.rb +143 -0
- data/lib/watobo/utils/secure_eval.rb +57 -0
- data/lib/watobo/utils/text2request.rb +96 -0
- data/lib/watobo/utils.rb +32 -0
- data/lib/watobo.rb +76 -0
- data/modules/active/Apache/mod_status.rb +123 -0
- data/modules/active/Flash/crossdomain.rb +102 -0
- data/modules/active/directories/dirwalker.rb +89 -0
- data/modules/active/discovery/fileextensions.rb +151 -0
- data/modules/active/discovery/http_methods.rb +135 -0
- data/modules/active/domino/domino_db.lst +164 -0
- data/modules/active/domino/domino_db.rb +128 -0
- data/modules/active/fileinclusion/lfi_simple.rb +134 -0
- data/modules/active/jboss/jboss_basic.rb +119 -0
- data/modules/active/sap/business_objects.rb +73 -0
- data/modules/active/sap/its_commands.rb +101 -0
- data/modules/active/sap/its_service_parameter.rb +105 -0
- data/modules/active/sap/its_services.rb +103 -0
- data/modules/active/sap/its_xss.rb +98 -0
- data/modules/active/sqlinjection/sql_boolean.rb +262 -0
- data/modules/active/sqlinjection/sqli_simple.rb +205 -0
- data/modules/active/xss/xss_simple.rb +179 -0
- data/modules/passive/cookie_options.rb +97 -0
- data/modules/passive/cookie_xss.rb +85 -0
- data/modules/passive/detect_code.rb +89 -0
- data/modules/passive/detect_fileupload.rb +80 -0
- data/modules/passive/detect_infrastructure.rb +98 -0
- data/modules/passive/detect_one_time_tokens.rb +86 -0
- data/modules/passive/dirindexing.rb +81 -0
- data/modules/passive/disclosure_emails.rb +82 -0
- data/modules/passive/disclosure_ipaddr.rb +87 -0
- data/modules/passive/filename_as_parameter.rb +85 -0
- data/modules/passive/form_spotter.rb +75 -0
- data/modules/passive/hotspots.rb +86 -0
- data/modules/passive/in_script_parameter.rb +92 -0
- data/modules/passive/multiple_server_headers.rb +98 -0
- data/modules/passive/possible_login.rb +134 -0
- data/modules/passive/redirect_url.rb +88 -0
- data/modules/passive/redirectionz.rb +96 -0
- data/modules/passive/xss_dom.rb +91 -0
- data/plugins/catalog/catalog.ico +0 -0
- data/plugins/catalog/catalog.rb +726 -0
- data/plugins/catalog/db_tests +6483 -0
- data/plugins/catalog/db_variables +29 -0
- data/plugins/filefinder/dbs/hbci.db +12 -0
- data/plugins/filefinder/filefinder.rb +602 -0
- data/plugins/sslchecker/cli/sslchecker_cli.rb +21 -0
- data/plugins/sslchecker/gui/cipher_table.rb +260 -0
- data/plugins/sslchecker/gui/gui.rb +245 -0
- data/plugins/sslchecker/gui/sslchecker.rb +26 -0
- data/plugins/sslchecker/icons/green_16x16.ico +0 -0
- data/plugins/sslchecker/icons/grey_16x16.ico +0 -0
- data/plugins/sslchecker/icons/red_16x16.ico +0 -0
- data/plugins/sslchecker/icons/sslchecker.ico +0 -0
- data/plugins/sslchecker/lib/check.rb +117 -0
- metadata +317 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# .
|
|
2
|
+
# load_icons.rb
|
|
3
|
+
#
|
|
4
|
+
# Copyright 2012 by siberas, http://www.siberas.de
|
|
5
|
+
#
|
|
6
|
+
# This file is part of WATOBO (Web Application Tool Box)
|
|
7
|
+
# http://watobo.sourceforge.com
|
|
8
|
+
#
|
|
9
|
+
# WATOBO is free software; you can redistribute it and/or modify
|
|
10
|
+
# it under the terms of the GNU General Public License as published by
|
|
11
|
+
# the Free Software Foundation version 2 of the License.
|
|
12
|
+
#
|
|
13
|
+
# WATOBO is distributed in the hope that it will be useful,
|
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
# GNU General Public License for more details.
|
|
17
|
+
#
|
|
18
|
+
# You should have received a copy of the GNU General Public License
|
|
19
|
+
# along with WATOBO; if not, write to the Free Software
|
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
21
|
+
# .
|
|
22
|
+
module Watobo
|
|
23
|
+
module Gui
|
|
24
|
+
|
|
25
|
+
def self.load_gui_icon(name)
|
|
26
|
+
icon = load_icon(File.join(@icon_path, name))
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.load_icon(filename)
|
|
30
|
+
begin
|
|
31
|
+
icon = nil
|
|
32
|
+
return icon if @application.nil?
|
|
33
|
+
#filename =
|
|
34
|
+
File.open(filename, "rb") do |f|
|
|
35
|
+
if filename.strip =~ /\.ico$/ then
|
|
36
|
+
icon = FXICOIcon.new(@application, f.read)
|
|
37
|
+
#icon = FXICOIcon.new(getApp(), f.read)
|
|
38
|
+
elsif filename.strip =~ /\.png$/ then
|
|
39
|
+
icon = FXPNGIcon.new(@application, f.read)
|
|
40
|
+
elsif filename.strip =~ /\.gif$/ then
|
|
41
|
+
icon = FXGIFIcon.new(@application, f.read)
|
|
42
|
+
end
|
|
43
|
+
icon.create
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
icon
|
|
47
|
+
rescue => bang
|
|
48
|
+
puts "Couldn't load icon: #{filename}"
|
|
49
|
+
puts bang
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# .
|
|
2
|
+
# load_plugins.rb
|
|
3
|
+
#
|
|
4
|
+
# Copyright 2012 by siberas, http://www.siberas.de
|
|
5
|
+
#
|
|
6
|
+
# This file is part of WATOBO (Web Application Tool Box)
|
|
7
|
+
# http://watobo.sourceforge.com
|
|
8
|
+
#
|
|
9
|
+
# WATOBO is free software; you can redistribute it and/or modify
|
|
10
|
+
# it under the terms of the GNU General Public License as published by
|
|
11
|
+
# the Free Software Foundation version 2 of the License.
|
|
12
|
+
#
|
|
13
|
+
# WATOBO is distributed in the hope that it will be useful,
|
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
# GNU General Public License for more details.
|
|
17
|
+
#
|
|
18
|
+
# You should have received a copy of the GNU General Public License
|
|
19
|
+
# along with WATOBO; if not, write to the Free Software
|
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
21
|
+
# .
|
|
22
|
+
module Watobo
|
|
23
|
+
module Gui
|
|
24
|
+
@plugin_list = []
|
|
25
|
+
def self.add_plugin(p)
|
|
26
|
+
@plugin_list << p
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.plugins
|
|
30
|
+
@plugin_list
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.clear_plugins
|
|
34
|
+
@plugin_list = []
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
module Utils
|
|
38
|
+
def self.load_plugins(project=nil)
|
|
39
|
+
raise ArgumentError, "Need a project" unless project
|
|
40
|
+
# this is the old plugin style
|
|
41
|
+
Dir["#{Watobo.plugin_path}/*"].each do |sub|
|
|
42
|
+
if File.ftype(sub) == "directory"
|
|
43
|
+
puts "+ #{sub}"
|
|
44
|
+
Dir["#{sub}/#{File.basename(sub)}.rb"].each do |plugin_file|
|
|
45
|
+
begin
|
|
46
|
+
puts "* processing plugin file #{plugin_file}" if $DEBUG
|
|
47
|
+
require plugin_file
|
|
48
|
+
group = File.basename(sub)
|
|
49
|
+
plugin = File.basename(plugin_file).sub(/\.rb/,'')
|
|
50
|
+
# load "#{@settings[:module_path]}/#{modules}/#{check}"
|
|
51
|
+
group_class = group.slice(0..0).upcase + group.slice(1..-1).downcase
|
|
52
|
+
#
|
|
53
|
+
plugin_class = plugin.slice(0..0).upcase + plugin.slice(1..-1).downcase
|
|
54
|
+
class_constant = Watobo.class_eval("Watobo::Plugin::#{group_class}::#{plugin_class}")
|
|
55
|
+
|
|
56
|
+
Watobo::Gui.add_plugin class_constant.new(Watobo::Gui.application, project)
|
|
57
|
+
rescue => bang
|
|
58
|
+
puts bang
|
|
59
|
+
puts bang.backtrace if $DEBUG
|
|
60
|
+
# notify(:logger, LOG_INFO, "problems loading plugin: #{plugin_file}")
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# this the way loading new plugins
|
|
65
|
+
|
|
66
|
+
Dir["#{sub}/gui/#{File.basename(sub)}.rb"].each do |plugin_file|
|
|
67
|
+
begin
|
|
68
|
+
puts "* processing plugin file #{plugin_file}" if $DEBUG
|
|
69
|
+
require plugin_file
|
|
70
|
+
group = File.basename(sub)
|
|
71
|
+
plugin = File.basename(plugin_file).sub(/\.rb/,'')
|
|
72
|
+
# load "#{@settings[:module_path]}/#{modules}/#{check}"
|
|
73
|
+
group_class = group.slice(0..0).upcase + group.slice(1..-1).downcase
|
|
74
|
+
#
|
|
75
|
+
plugin_class = plugin.slice(0..0).upcase + plugin.slice(1..-1).downcase
|
|
76
|
+
class_name = "Watobo::Plugin::#{group_class}::Gui::Main"
|
|
77
|
+
puts class_name
|
|
78
|
+
class_constant = Watobo.class_eval(class_name)
|
|
79
|
+
|
|
80
|
+
Watobo::Gui.add_plugin class_constant.new(Watobo::Gui.application, project)
|
|
81
|
+
rescue => bang
|
|
82
|
+
puts bang
|
|
83
|
+
puts bang.backtrace if $DEBUG
|
|
84
|
+
# notify(:logger, LOG_INFO, "problems loading plugin: #{plugin_file}")
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
end
|
|
91
|
+
#-------------
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# .
|
|
2
|
+
# master_password.rb
|
|
3
|
+
#
|
|
4
|
+
# Copyright 2012 by siberas, http://www.siberas.de
|
|
5
|
+
#
|
|
6
|
+
# This file is part of WATOBO (Web Application Tool Box)
|
|
7
|
+
# http://watobo.sourceforge.com
|
|
8
|
+
#
|
|
9
|
+
# WATOBO is free software; you can redistribute it and/or modify
|
|
10
|
+
# it under the terms of the GNU General Public License as published by
|
|
11
|
+
# the Free Software Foundation version 2 of the License.
|
|
12
|
+
#
|
|
13
|
+
# WATOBO is distributed in the hope that it will be useful,
|
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
# GNU General Public License for more details.
|
|
17
|
+
#
|
|
18
|
+
# You should have received a copy of the GNU General Public License
|
|
19
|
+
# along with WATOBO; if not, write to the Free Software
|
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
21
|
+
# .
|
|
22
|
+
module Watobo
|
|
23
|
+
module Gui
|
|
24
|
+
module MasterPW
|
|
25
|
+
@master_password = ''
|
|
26
|
+
@save_without_master = false
|
|
27
|
+
@save_passwords = false
|
|
28
|
+
# set the master password
|
|
29
|
+
def self.set=(pw)
|
|
30
|
+
@master_password = ''
|
|
31
|
+
return false unless pw.is_a? String
|
|
32
|
+
@master_password = pw
|
|
33
|
+
true
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.set?
|
|
37
|
+
return false unless @master_password.is_a? String
|
|
38
|
+
@master_password.empty?
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def self.disable
|
|
42
|
+
@save_without_master = false
|
|
43
|
+
@master_password = ''
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def self.enable
|
|
47
|
+
@save_without_master = true
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def self.save_passwords?
|
|
51
|
+
@save_passwords
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def self.save_passwords=(state)
|
|
55
|
+
@save_passwords = state
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def self.save_without_master=(state)
|
|
59
|
+
@save_without_master = state
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def self.save_without_master?
|
|
63
|
+
@save_without_master
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# retrieve the master password
|
|
67
|
+
def self.get
|
|
68
|
+
@master_password
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# check if master password is set
|
|
72
|
+
def self.enabled?
|
|
73
|
+
return @master_password.empty?
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def self.settings
|
|
77
|
+
s = { :save_passwords => @save_passwords, :save_without_master => @save_without_master }
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def self.settings=(s)
|
|
81
|
+
return false unless s.is_a? Hash
|
|
82
|
+
@save_passwords = s[:save_passwords] if s.has_key? :save_passwords
|
|
83
|
+
@save_without_master = s[:save_without_master] if s.has_key? :save_without_master
|
|
84
|
+
true
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# .
|
|
2
|
+
# save_default_settings.rb
|
|
3
|
+
#
|
|
4
|
+
# Copyright 2012 by siberas, http://www.siberas.de
|
|
5
|
+
#
|
|
6
|
+
# This file is part of WATOBO (Web Application Tool Box)
|
|
7
|
+
# http://watobo.sourceforge.com
|
|
8
|
+
#
|
|
9
|
+
# WATOBO is free software; you can redistribute it and/or modify
|
|
10
|
+
# it under the terms of the GNU General Public License as published by
|
|
11
|
+
# the Free Software Foundation version 2 of the License.
|
|
12
|
+
#
|
|
13
|
+
# WATOBO is distributed in the hope that it will be useful,
|
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
# GNU General Public License for more details.
|
|
17
|
+
#
|
|
18
|
+
# You should have received a copy of the GNU General Public License
|
|
19
|
+
# along with WATOBO; if not, write to the Free Software
|
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
21
|
+
# .
|
|
22
|
+
module Watobo
|
|
23
|
+
|
|
24
|
+
module Gui
|
|
25
|
+
def self.save_default_settings(project)
|
|
26
|
+
mp = ''
|
|
27
|
+
save_pws = false
|
|
28
|
+
|
|
29
|
+
puts "= Master Password Settings ="
|
|
30
|
+
puts Watobo::Gui::MasterPW.settings.to_yaml
|
|
31
|
+
|
|
32
|
+
if Watobo::Gui::MasterPW.save_passwords?
|
|
33
|
+
save_pws = true
|
|
34
|
+
unless Watobo::Gui::MasterPW.set?
|
|
35
|
+
save_pws = false unless Watobo::Gui::MasterPW.save_without_master?
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
Watobo.save_proxy_settings( :save_passwords => save_pws, :key => mp )
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
Watobo::Conf::General.save
|
|
43
|
+
Watobo::Conf::Interceptor.save
|
|
44
|
+
|
|
45
|
+
return true
|
|
46
|
+
=begin
|
|
47
|
+
proxy_has_credentials = false
|
|
48
|
+
|
|
49
|
+
settings[:forwarding_proxy].each_key do |p|
|
|
50
|
+
next if p == :default_proxy
|
|
51
|
+
proxy = settings[:forwarding_proxy][p]
|
|
52
|
+
|
|
53
|
+
if proxy.has_key? :password and proxy[:password] != ''
|
|
54
|
+
# puts " - proxy #{p} has password #{proxy_list[p][:credentials][:password]}"
|
|
55
|
+
proxy_has_credentials = true
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
if proxy_has_credentials == true
|
|
61
|
+
if settings[:password_policy][:save_passwords] == true
|
|
62
|
+
if settings[:password_policy][:save_without_master] == false
|
|
63
|
+
if Watobo::Gui.master_password.empty?
|
|
64
|
+
# puts "* need master password for proxy"
|
|
65
|
+
dlg = MasterPWDialog.new(self)
|
|
66
|
+
if dlg.execute != 0
|
|
67
|
+
Watobo::Gui.master_password = dlg.masterPassword
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
unless Watobo::Gui.master_password.empty?
|
|
71
|
+
settings[:forwarding_proxy].each_key do |p|
|
|
72
|
+
#creds = settings[:forwarding_proxy][p][:credentials]
|
|
73
|
+
#pass = "$$WPE$$" + creds[:password]
|
|
74
|
+
pass = settings[:forwarding_proxy][p][:password]
|
|
75
|
+
unless pass.empty?
|
|
76
|
+
creds[:password] = Crypto.encryptPassword(pass, Watobo::Gui.master_password)
|
|
77
|
+
creds[:encrypted] = true
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
else
|
|
81
|
+
cleanCredentials(settings)
|
|
82
|
+
FXMessageBox.information(self,MBOX_OK,"No MasterPassword", "Could not encrypt proxy passwords. No Passwords have been saved!")
|
|
83
|
+
end
|
|
84
|
+
else
|
|
85
|
+
puts "* saving passwords without protection!!!!"
|
|
86
|
+
end
|
|
87
|
+
else
|
|
88
|
+
cleanCredentials(settings)
|
|
89
|
+
end
|
|
90
|
+
# puts "=== DEFAULT SETTINGS PASSWORD POLICY"
|
|
91
|
+
# puts YAML.dump(settings)
|
|
92
|
+
Watobo::Utils.save_settings(@default_settings_file, settings )
|
|
93
|
+
=end
|
|
94
|
+
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# .
|
|
2
|
+
# save_project_settings.rb
|
|
3
|
+
#
|
|
4
|
+
# Copyright 2012 by siberas, http://www.siberas.de
|
|
5
|
+
#
|
|
6
|
+
# This file is part of WATOBO (Web Application Tool Box)
|
|
7
|
+
# http://watobo.sourceforge.com
|
|
8
|
+
#
|
|
9
|
+
# WATOBO is free software; you can redistribute it and/or modify
|
|
10
|
+
# it under the terms of the GNU General Public License as published by
|
|
11
|
+
# the Free Software Foundation version 2 of the License.
|
|
12
|
+
#
|
|
13
|
+
# WATOBO is distributed in the hope that it will be useful,
|
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
# GNU General Public License for more details.
|
|
17
|
+
#
|
|
18
|
+
# You should have received a copy of the GNU General Public License
|
|
19
|
+
# along with WATOBO; if not, write to the Free Software
|
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
21
|
+
# .
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# .
|
|
2
|
+
# save_proxy_settings.rb
|
|
3
|
+
#
|
|
4
|
+
# Copyright 2012 by siberas, http://www.siberas.de
|
|
5
|
+
#
|
|
6
|
+
# This file is part of WATOBO (Web Application Tool Box)
|
|
7
|
+
# http://watobo.sourceforge.com
|
|
8
|
+
#
|
|
9
|
+
# WATOBO is free software; you can redistribute it and/or modify
|
|
10
|
+
# it under the terms of the GNU General Public License as published by
|
|
11
|
+
# the Free Software Foundation version 2 of the License.
|
|
12
|
+
#
|
|
13
|
+
# WATOBO is distributed in the hope that it will be useful,
|
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
# GNU General Public License for more details.
|
|
17
|
+
#
|
|
18
|
+
# You should have received a copy of the GNU General Public License
|
|
19
|
+
# along with WATOBO; if not, write to the Free Software
|
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
21
|
+
# .
|
|
22
|
+
module Watobo
|
|
23
|
+
def self.save_proxy_settings(prefs)
|
|
24
|
+
|
|
25
|
+
c_prefs = {
|
|
26
|
+
:save_passwords => false,
|
|
27
|
+
:key => ""
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
c_prefs.update prefs
|
|
31
|
+
|
|
32
|
+
Watobo::Conf::ForwardingProxy.save do |name, proxy|
|
|
33
|
+
next unless proxy.is_a? Hash
|
|
34
|
+
unless c_prefs[:save_passwords] == false
|
|
35
|
+
unless c_prefs[:key].empty?
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
else
|
|
39
|
+
proxy[:password] = ''
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# .
|
|
2
|
+
# save_session_settings.rb
|
|
3
|
+
#
|
|
4
|
+
# Copyright 2012 by siberas, http://www.siberas.de
|
|
5
|
+
#
|
|
6
|
+
# This file is part of WATOBO (Web Application Tool Box)
|
|
7
|
+
# http://watobo.sourceforge.com
|
|
8
|
+
#
|
|
9
|
+
# WATOBO is free software; you can redistribute it and/or modify
|
|
10
|
+
# it under the terms of the GNU General Public License as published by
|
|
11
|
+
# the Free Software Foundation version 2 of the License.
|
|
12
|
+
#
|
|
13
|
+
# WATOBO is distributed in the hope that it will be useful,
|
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
# GNU General Public License for more details.
|
|
17
|
+
#
|
|
18
|
+
# You should have received a copy of the GNU General Public License
|
|
19
|
+
# along with WATOBO; if not, write to the Free Software
|
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
21
|
+
# .
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# .
|
|
2
|
+
# session_history.rb
|
|
3
|
+
#
|
|
4
|
+
# Copyright 2012 by siberas, http://www.siberas.de
|
|
5
|
+
#
|
|
6
|
+
# This file is part of WATOBO (Web Application Tool Box)
|
|
7
|
+
# http://watobo.sourceforge.com
|
|
8
|
+
#
|
|
9
|
+
# WATOBO is free software; you can redistribute it and/or modify
|
|
10
|
+
# it under the terms of the GNU General Public License as published by
|
|
11
|
+
# the Free Software Foundation version 2 of the License.
|
|
12
|
+
#
|
|
13
|
+
# WATOBO is distributed in the hope that it will be useful,
|
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
# GNU General Public License for more details.
|
|
17
|
+
#
|
|
18
|
+
# You should have received a copy of the GNU General Public License
|
|
19
|
+
# along with WATOBO; if not, write to the Free Software
|
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
21
|
+
# .
|
|
22
|
+
module Watobo
|
|
23
|
+
|
|
24
|
+
module Gui
|
|
25
|
+
|
|
26
|
+
# Watobo::Gui::History
|
|
27
|
+
=begin
|
|
28
|
+
Class for managing history entries
|
|
29
|
+
entries are organised as a hash.
|
|
30
|
+
each entry consists of a hash.
|
|
31
|
+
the key of an entry is based on its session filename
|
|
32
|
+
|
|
33
|
+
@history_entry[session_file] = {
|
|
34
|
+
:last_used
|
|
35
|
+
:created
|
|
36
|
+
:project_name
|
|
37
|
+
:session_name
|
|
38
|
+
:description
|
|
39
|
+
}
|
|
40
|
+
=end
|
|
41
|
+
class SessionHistory
|
|
42
|
+
|
|
43
|
+
attr_accessor :max_entries
|
|
44
|
+
def save()
|
|
45
|
+
begin
|
|
46
|
+
File.open(@history_file,"w") { |fh| fh.write YAML.dump(@history_entries) }
|
|
47
|
+
rescue => bang
|
|
48
|
+
puts bang
|
|
49
|
+
puts bang.backtrace if $DEBUG
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def entries
|
|
54
|
+
@history_entries
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def add_entry(prefs = {})
|
|
58
|
+
t_now = Time.now.to_i
|
|
59
|
+
return false unless prefs.has_key? :session_name or prefs.has_key? :project_name
|
|
60
|
+
puts "#"
|
|
61
|
+
hid = history_id(prefs[:project_name], prefs[:session_name])
|
|
62
|
+
@history_entries[hid] ||= {
|
|
63
|
+
:created => t_now
|
|
64
|
+
}
|
|
65
|
+
@history_entries[hid][:last_used] = t_now
|
|
66
|
+
|
|
67
|
+
[ :description, :project_name, :session_name ].each do |k|
|
|
68
|
+
@history_entries[hid][k] = prefs[k] if prefs.has_key? k
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
while @history_entries.length > @max_entries do
|
|
72
|
+
oid, ov = @history_entries.min_by{ |id,v| v[:last_used] }
|
|
73
|
+
@history_entries.delete oid
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
save()
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def delete_entry(project_name, session_name)
|
|
80
|
+
@history_entries.delete history_id(project_name, session_name)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def update_usage(project_name, session_name)
|
|
84
|
+
t_now = Time.now.to_i
|
|
85
|
+
return false unless prefs.has_key? :session_name or prefs.has_key? :project_name
|
|
86
|
+
hid = history_id(prefs[:project_name], prefs[:session_name])
|
|
87
|
+
return false unless @history_entries.has_key? hid
|
|
88
|
+
@history_entries[hid][:last_used] = t_now
|
|
89
|
+
save()
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def each(&b)
|
|
93
|
+
@history_entries.each_key{ |k|
|
|
94
|
+
yield @history_entries[k] if block_given?
|
|
95
|
+
}
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def load(history_file)
|
|
99
|
+
if File.exist? history_file
|
|
100
|
+
@history_entries = YAML.load_file(history_file)
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def initialize(filename)
|
|
105
|
+
|
|
106
|
+
@max_entries = 8
|
|
107
|
+
@history_entries = Hash.new
|
|
108
|
+
@history_file = filename
|
|
109
|
+
|
|
110
|
+
if File.exist? @history_file
|
|
111
|
+
load(@history_file)
|
|
112
|
+
else
|
|
113
|
+
begin
|
|
114
|
+
File.open(@history_file,"w") { |fh| fh.write YAML.dump(@history_entries) }
|
|
115
|
+
rescue => bang
|
|
116
|
+
puts bang
|
|
117
|
+
puts bang.backtrace if $DEBUG
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
private
|
|
124
|
+
|
|
125
|
+
def history_id(project_name, session_name)
|
|
126
|
+
text = [ project_name, session_name ].join("$")
|
|
127
|
+
return Digest::MD5.hexdigest(text)
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# .
|
|
2
|
+
# workspace_dialog.rb
|
|
3
|
+
#
|
|
4
|
+
# Copyright 2012 by siberas, http://www.siberas.de
|
|
5
|
+
#
|
|
6
|
+
# This file is part of WATOBO (Web Application Tool Box)
|
|
7
|
+
# http://watobo.sourceforge.com
|
|
8
|
+
#
|
|
9
|
+
# WATOBO is free software; you can redistribute it and/or modify
|
|
10
|
+
# it under the terms of the GNU General Public License as published by
|
|
11
|
+
# the Free Software Foundation version 2 of the License.
|
|
12
|
+
#
|
|
13
|
+
# WATOBO is distributed in the hope that it will be useful,
|
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
# GNU General Public License for more details.
|
|
17
|
+
#
|
|
18
|
+
# You should have received a copy of the GNU General Public License
|
|
19
|
+
# along with WATOBO; if not, write to the Free Software
|
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
21
|
+
# .
|
|
22
|
+
module Watobo
|
|
23
|
+
module Gui
|
|
24
|
+
class WorkspaceDialog < FXDialogBox
|
|
25
|
+
|
|
26
|
+
attr :workspace_dir
|
|
27
|
+
|
|
28
|
+
def open_select_workspace_dir_dialog(sender, sel, ptr)
|
|
29
|
+
workspace_dir = FXFileDialog.getOpenDirectory(self, "Select Workspace Directory", @workspace_dir.value)
|
|
30
|
+
if workspace_dir != "" then
|
|
31
|
+
if File.exists?(workspace_dir) then
|
|
32
|
+
@workspace_dir.value = workspace_dir
|
|
33
|
+
@workspace_dir.handle(self, FXSEL(SEL_UPDATE, 0), nil)
|
|
34
|
+
updateProjectList(@workspace_dir.value)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def initialize(parent, prefs)
|
|
41
|
+
# Invoke base class initialize function first
|
|
42
|
+
# super(parent, "New Project", DECOR_TITLE|DECOR_BORDER)
|
|
43
|
+
super(parent, "Define Workspace", DECOR_ALL)
|
|
44
|
+
|
|
45
|
+
@workspace_dir = FXDataTarget.new('')
|
|
46
|
+
|
|
47
|
+
if prefs[:workspace_dir] then
|
|
48
|
+
if File.exists?(prefs[:workspace_dir]) then
|
|
49
|
+
@workspace_dir.value = prefs[:workspace_dir]
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
base_frame = FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
|
|
54
|
+
|
|
55
|
+
workspace_path_form = FXHorizontalFrame.new(base_frame,
|
|
56
|
+
:opts => LAYOUT_FILL_X|LAYOUT_SIDE_TOP)
|
|
57
|
+
FXLabel.new(workspace_path_form, "Workspace Directory:" )
|
|
58
|
+
@workspaceText = FXTextField.new(workspace_path_form, 60,
|
|
59
|
+
:target => @workspace_dir, :selector => FXDataTarget::ID_VALUE,
|
|
60
|
+
:opts => TEXTFIELD_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_COLUMN)
|
|
61
|
+
|
|
62
|
+
browse_button=FXButton.new(workspace_path_form, "Change")
|
|
63
|
+
browse_button.connect(SEL_COMMAND, method(:open_select_workspace_dir_dialog) )
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
#
|
|
67
|
+
# BUTTONS FRAME
|
|
68
|
+
#
|
|
69
|
+
buttons_frame = FXHorizontalFrame.new(base_frame,
|
|
70
|
+
:opts => LAYOUT_FILL_X|LAYOUT_SIDE_TOP)
|
|
71
|
+
|
|
72
|
+
@finishButton = FXButton.new(buttons_frame, "Finish" , nil, nil, :opts => BUTTON_NORMAL|LAYOUT_RIGHT)
|
|
73
|
+
@finishButton.disable
|
|
74
|
+
@finishButton.connect(SEL_COMMAND) do |sender, sel, item|
|
|
75
|
+
#self.handle(self, FXSEL(SEL_COMMAND, ID_CANCEL), nil)
|
|
76
|
+
self.handle(self, FXSEL(SEL_COMMAND, ID_ACCEPT), nil)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
@cancelButton = FXButton.new(buttons_frame, "Cancel" ,
|
|
81
|
+
:target => self, :selector => FXDialogBox::ID_CANCEL,
|
|
82
|
+
:opts => BUTTON_NORMAL|LAYOUT_RIGHT)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|