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.
Files changed (260) hide show
  1. data/bin/watobo_gui.rb +39 -0
  2. data/certificates/cert.pem +19 -0
  3. data/certificates/privkey.pem +15 -0
  4. data/certificates/watobo_dh.key +5 -0
  5. data/config/datastore.yml +5 -0
  6. data/config/forwarding_proxy.yml +12 -0
  7. data/config/general.yml +4 -0
  8. data/config/gui.yml +23 -0
  9. data/config/interceptor.yml +16 -0
  10. data/config/scan_policy.yml +13 -0
  11. data/config/scanner.yml +34 -0
  12. data/icons/Add.ico +0 -0
  13. data/icons/Add_24x24.ico +0 -0
  14. data/icons/Bandwidth.ico +0 -0
  15. data/icons/Bandwidth_24x24.ico +0 -0
  16. data/icons/Mr. Bomb.ico +0 -0
  17. data/icons/Mr. Bomb_16x16.ico +0 -0
  18. data/icons/Mr. Bomb_24x24.ico +0 -0
  19. data/icons/Orange Ball.ico +0 -0
  20. data/icons/Orange Ball_16x16.ico +0 -0
  21. data/icons/Orange Ball_24x24.ico +0 -0
  22. data/icons/Pause.ico +0 -0
  23. data/icons/Play.ico +0 -0
  24. data/icons/Play_24x24.ico +0 -0
  25. data/icons/Red Ball.ico +0 -0
  26. data/icons/Red Ball_16x16.ico +0 -0
  27. data/icons/Red Ball_24x24.ico +0 -0
  28. data/icons/Run.ico +0 -0
  29. data/icons/Stop.ico +0 -0
  30. data/icons/Stop_24x24.ico +0 -0
  31. data/icons/Terminal.ico +0 -0
  32. data/icons/Transfer.ico +0 -0
  33. data/icons/Transfer_16x16.ico +0 -0
  34. data/icons/User.ico +0 -0
  35. data/icons/User_16x16.ico +0 -0
  36. data/icons/User_24x24.ico +0 -0
  37. data/icons/Web Browser.ico +0 -0
  38. data/icons/Web Browser_16x16.ico +0 -0
  39. data/icons/Write Document.ico +0 -0
  40. data/icons/Yellow Ball.ico +0 -0
  41. data/icons/Yellow Ball_16x16.ico +0 -0
  42. data/icons/Yellow Ball_24x24.ico +0 -0
  43. data/icons/advanced.ico +0 -0
  44. data/icons/advanced_16x16.ico +0 -0
  45. data/icons/advanced_24x24.ico +0 -0
  46. data/icons/applications.ico +0 -0
  47. data/icons/applications_16x16.ico +0 -0
  48. data/icons/applications_24x24.ico +0 -0
  49. data/icons/browser_16x16.ico +0 -0
  50. data/icons/browser_24x24.ico +0 -0
  51. data/icons/burn.ico +0 -0
  52. data/icons/burn_16x16.ico +0 -0
  53. data/icons/burn_24x24.ico +0 -0
  54. data/icons/calculator.ico +0 -0
  55. data/icons/calculator_24x24.ico +0 -0
  56. data/icons/cb_checked.ico +0 -0
  57. data/icons/cb_checked_orange.ico +0 -0
  58. data/icons/cb_unchecked.ico +0 -0
  59. data/icons/coin_24x24.ico +0 -0
  60. data/icons/conversation.ico +0 -0
  61. data/icons/conversation_24x24.ico +0 -0
  62. data/icons/engine.ico +0 -0
  63. data/icons/filter.ico +0 -0
  64. data/icons/folder.ico +0 -0
  65. data/icons/folder_16x16.ico +0 -0
  66. data/icons/fuzzer_16x16.ico +0 -0
  67. data/icons/fuzzer_24x24.ico +0 -0
  68. data/icons/go-down_16x16.png +0 -0
  69. data/icons/go-up_16x16.png +0 -0
  70. data/icons/help.ico +0 -0
  71. data/icons/help_16x16.ico +0 -0
  72. data/icons/help_24x24.ico +0 -0
  73. data/icons/iChat.ico +0 -0
  74. data/icons/iChat_16x16.ico +0 -0
  75. data/icons/iChat_24x24.ico +0 -0
  76. data/icons/icons.txt +3 -0
  77. data/icons/info.ico +0 -0
  78. data/icons/info_16x16.ico +0 -0
  79. data/icons/info_24x24.ico +0 -0
  80. data/icons/interceptor_24x24.ico +0 -0
  81. data/icons/lock.ico +0 -0
  82. data/icons/lock_12x12.ico +0 -0
  83. data/icons/lock_16x16.ico +0 -0
  84. data/icons/monitor.ico +0 -0
  85. data/icons/plugin.ico +0 -0
  86. data/icons/plugin_24x24.ico +0 -0
  87. data/icons/scan_16x16.png +0 -0
  88. data/icons/send.ico +0 -0
  89. data/icons/server.ico +0 -0
  90. data/icons/server_16x16.ico +0 -0
  91. data/icons/siberas_logo_x24.gif +0 -0
  92. data/icons/tag_blue_32x32.ico +0 -0
  93. data/icons/watobo-48x48.png +0 -0
  94. data/icons/watobo-logo.png +0 -0
  95. data/icons/watobo.ico +0 -0
  96. data/lib/watobo/adapters/data_store.rb +38 -0
  97. data/lib/watobo/adapters/file/file_store.rb +211 -0
  98. data/lib/watobo/adapters/session_store.rb +27 -0
  99. data/lib/watobo/adapters.rb +26 -0
  100. data/lib/watobo/config.rb +143 -0
  101. data/lib/watobo/constants.rb +92 -0
  102. data/lib/watobo/core/active_check.rb +404 -0
  103. data/lib/watobo/core/cookie.rb +69 -0
  104. data/lib/watobo/core/fuzz_gen.rb +160 -0
  105. data/lib/watobo/core/http_socket.rb +142 -0
  106. data/lib/watobo/core/interceptor.rb +729 -0
  107. data/lib/watobo/core/passive_check.rb +141 -0
  108. data/lib/watobo/core/project.rb +1058 -0
  109. data/lib/watobo/core/scanner.rb +396 -0
  110. data/lib/watobo/core/session.rb +1320 -0
  111. data/lib/watobo/core/simple_ca.rb +393 -0
  112. data/lib/watobo/core.rb +34 -0
  113. data/lib/watobo/defaults.rb +40 -0
  114. data/lib/watobo/external/diff/lcs/array.rb +42 -0
  115. data/lib/watobo/external/diff/lcs/block.rb +72 -0
  116. data/lib/watobo/external/diff/lcs/callbacks.rb +343 -0
  117. data/lib/watobo/external/diff/lcs/change.rb +190 -0
  118. data/lib/watobo/external/diff/lcs/hunk.rb +279 -0
  119. data/lib/watobo/external/diff/lcs/ldiff.rb +247 -0
  120. data/lib/watobo/external/diff/lcs/string.rb +40 -0
  121. data/lib/watobo/external/diff/lcs.rb +1124 -0
  122. data/lib/watobo/external/ntlm/ntlm.rb +797 -0
  123. data/lib/watobo/externals.rb +28 -0
  124. data/lib/watobo/framework/create_project.rb +55 -0
  125. data/lib/watobo/framework/init.rb +149 -0
  126. data/lib/watobo/framework/init_modules.rb +116 -0
  127. data/lib/watobo/framework/license_text.rb +50 -0
  128. data/lib/watobo/framework.rb +26 -0
  129. data/lib/watobo/gui/about_watobo.rb +68 -0
  130. data/lib/watobo/gui/browser_preview.rb +460 -0
  131. data/lib/watobo/gui/certificate_dialog.rb +132 -0
  132. data/lib/watobo/gui/chat_diff.rb +415 -0
  133. data/lib/watobo/gui/chatviewer_frame.rb +427 -0
  134. data/lib/watobo/gui/checkboxtree.rb +221 -0
  135. data/lib/watobo/gui/checks_policy_frame.rb +123 -0
  136. data/lib/watobo/gui/client_cert_dialog.rb +227 -0
  137. data/lib/watobo/gui/confirm_scan_dialog.rb +67 -0
  138. data/lib/watobo/gui/conversation_table.rb +386 -0
  139. data/lib/watobo/gui/conversation_table_ctrl.rb +175 -0
  140. data/lib/watobo/gui/csrf_token_dialog.rb +446 -0
  141. data/lib/watobo/gui/dashboard.rb +341 -0
  142. data/lib/watobo/gui/define_scope_frame.rb +380 -0
  143. data/lib/watobo/gui/edit_comment.rb +70 -0
  144. data/lib/watobo/gui/edit_scope_dialog.rb +69 -0
  145. data/lib/watobo/gui/finding_info.rb +212 -0
  146. data/lib/watobo/gui/findings_tree.rb +459 -0
  147. data/lib/watobo/gui/full_scan_dialog.rb +269 -0
  148. data/lib/watobo/gui/fuzzer_gui.rb +1522 -0
  149. data/lib/watobo/gui/hex_viewer.rb +106 -0
  150. data/lib/watobo/gui/interceptor_gui.rb +994 -0
  151. data/lib/watobo/gui/interceptor_settings_dialog.rb +201 -0
  152. data/lib/watobo/gui/log_viewer.rb +97 -0
  153. data/lib/watobo/gui/login_wizzard.rb +301 -0
  154. data/lib/watobo/gui/main_window.rb +1815 -0
  155. data/lib/watobo/gui/manual_request_editor.rb +1105 -0
  156. data/lib/watobo/gui/master_pw_dialog.rb +142 -0
  157. data/lib/watobo/gui/password_policy_dialog.rb +98 -0
  158. data/lib/watobo/gui/plugin/base.rb +82 -0
  159. data/lib/watobo/gui/plugin_board.rb +95 -0
  160. data/lib/watobo/gui/preferences_dialog.rb +116 -0
  161. data/lib/watobo/gui/progress_window.rb +102 -0
  162. data/lib/watobo/gui/project_wizzard.rb +369 -0
  163. data/lib/watobo/gui/proxy_dialog.rb +550 -0
  164. data/lib/watobo/gui/quick_scan_dialog.rb +242 -0
  165. data/lib/watobo/gui/request_editor.rb +480 -0
  166. data/lib/watobo/gui/save_chat_dialog.rb +158 -0
  167. data/lib/watobo/gui/scanner_settings_dialog.rb +360 -0
  168. data/lib/watobo/gui/select_chat_dialog.rb +169 -0
  169. data/lib/watobo/gui/session_management_dialog.rb +688 -0
  170. data/lib/watobo/gui/sites_tree.rb +347 -0
  171. data/lib/watobo/gui/status_bar.rb +88 -0
  172. data/lib/watobo/gui/table_editor.rb +445 -0
  173. data/lib/watobo/gui/tagless_viewer.rb +62 -0
  174. data/lib/watobo/gui/templates/plugin.rb +80 -0
  175. data/lib/watobo/gui/templates/plugin2.rb +103 -0
  176. data/lib/watobo/gui/text_viewer.rb +247 -0
  177. data/lib/watobo/gui/transcoder_window.rb +215 -0
  178. data/lib/watobo/gui/utils/gui_utils.rb +129 -0
  179. data/lib/watobo/gui/utils/init_icons.rb +106 -0
  180. data/lib/watobo/gui/utils/load_icons.rb +54 -0
  181. data/lib/watobo/gui/utils/load_plugins.rb +94 -0
  182. data/lib/watobo/gui/utils/master_password.rb +90 -0
  183. data/lib/watobo/gui/utils/save_default_settings.rb +99 -0
  184. data/lib/watobo/gui/utils/save_project_settings.rb +21 -0
  185. data/lib/watobo/gui/utils/save_proxy_settings.rb +45 -0
  186. data/lib/watobo/gui/utils/save_session_settings.rb +21 -0
  187. data/lib/watobo/gui/utils/session_history.rb +134 -0
  188. data/lib/watobo/gui/workspace_dialog.rb +89 -0
  189. data/lib/watobo/gui/www_auth_dialog.rb +348 -0
  190. data/lib/watobo/gui/xml_viewer_frame.rb +114 -0
  191. data/lib/watobo/gui.rb +139 -0
  192. data/lib/watobo/mixins/httpparser.rb +664 -0
  193. data/lib/watobo/mixins/request_parser.rb +210 -0
  194. data/lib/watobo/mixins/shapers.rb +345 -0
  195. data/lib/watobo/mixins/transcoders.rb +88 -0
  196. data/lib/watobo/mixins.rb +32 -0
  197. data/lib/watobo/utils/check_regex.rb +36 -0
  198. data/lib/watobo/utils/copy_object.rb +29 -0
  199. data/lib/watobo/utils/crypto.rb +74 -0
  200. data/lib/watobo/utils/expand_range.rb +45 -0
  201. data/lib/watobo/utils/file_management.rb +73 -0
  202. data/lib/watobo/utils/load_chat.rb +219 -0
  203. data/lib/watobo/utils/load_icon.rb +47 -0
  204. data/lib/watobo/utils/print_debug.rb +34 -0
  205. data/lib/watobo/utils/response_hash.rb +143 -0
  206. data/lib/watobo/utils/secure_eval.rb +57 -0
  207. data/lib/watobo/utils/text2request.rb +96 -0
  208. data/lib/watobo/utils.rb +32 -0
  209. data/lib/watobo.rb +76 -0
  210. data/modules/active/Apache/mod_status.rb +123 -0
  211. data/modules/active/Flash/crossdomain.rb +102 -0
  212. data/modules/active/directories/dirwalker.rb +89 -0
  213. data/modules/active/discovery/fileextensions.rb +151 -0
  214. data/modules/active/discovery/http_methods.rb +135 -0
  215. data/modules/active/domino/domino_db.lst +164 -0
  216. data/modules/active/domino/domino_db.rb +128 -0
  217. data/modules/active/fileinclusion/lfi_simple.rb +134 -0
  218. data/modules/active/jboss/jboss_basic.rb +119 -0
  219. data/modules/active/sap/business_objects.rb +73 -0
  220. data/modules/active/sap/its_commands.rb +101 -0
  221. data/modules/active/sap/its_service_parameter.rb +105 -0
  222. data/modules/active/sap/its_services.rb +103 -0
  223. data/modules/active/sap/its_xss.rb +98 -0
  224. data/modules/active/sqlinjection/sql_boolean.rb +262 -0
  225. data/modules/active/sqlinjection/sqli_simple.rb +205 -0
  226. data/modules/active/xss/xss_simple.rb +179 -0
  227. data/modules/passive/cookie_options.rb +97 -0
  228. data/modules/passive/cookie_xss.rb +85 -0
  229. data/modules/passive/detect_code.rb +89 -0
  230. data/modules/passive/detect_fileupload.rb +80 -0
  231. data/modules/passive/detect_infrastructure.rb +98 -0
  232. data/modules/passive/detect_one_time_tokens.rb +86 -0
  233. data/modules/passive/dirindexing.rb +81 -0
  234. data/modules/passive/disclosure_emails.rb +82 -0
  235. data/modules/passive/disclosure_ipaddr.rb +87 -0
  236. data/modules/passive/filename_as_parameter.rb +85 -0
  237. data/modules/passive/form_spotter.rb +75 -0
  238. data/modules/passive/hotspots.rb +86 -0
  239. data/modules/passive/in_script_parameter.rb +92 -0
  240. data/modules/passive/multiple_server_headers.rb +98 -0
  241. data/modules/passive/possible_login.rb +134 -0
  242. data/modules/passive/redirect_url.rb +88 -0
  243. data/modules/passive/redirectionz.rb +96 -0
  244. data/modules/passive/xss_dom.rb +91 -0
  245. data/plugins/catalog/catalog.ico +0 -0
  246. data/plugins/catalog/catalog.rb +726 -0
  247. data/plugins/catalog/db_tests +6483 -0
  248. data/plugins/catalog/db_variables +29 -0
  249. data/plugins/filefinder/dbs/hbci.db +12 -0
  250. data/plugins/filefinder/filefinder.rb +602 -0
  251. data/plugins/sslchecker/cli/sslchecker_cli.rb +21 -0
  252. data/plugins/sslchecker/gui/cipher_table.rb +260 -0
  253. data/plugins/sslchecker/gui/gui.rb +245 -0
  254. data/plugins/sslchecker/gui/sslchecker.rb +26 -0
  255. data/plugins/sslchecker/icons/green_16x16.ico +0 -0
  256. data/plugins/sslchecker/icons/grey_16x16.ico +0 -0
  257. data/plugins/sslchecker/icons/red_16x16.ico +0 -0
  258. data/plugins/sslchecker/icons/sslchecker.ico +0 -0
  259. data/plugins/sslchecker/lib/check.rb +117 -0
  260. 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