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.
Files changed (283) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +46 -1
  3. data/bin/nfq_server.rb +0 -9
  4. data/bin/watobo_gui.rb +3 -13
  5. data/custom-views/prettify-json.rb +9 -18
  6. data/icons/watobo.ico +0 -0
  7. data/icons/watobo.ico.old +0 -0
  8. data/lib/watobo.rb +10 -19
  9. data/lib/watobo/adapters.rb +5 -14
  10. data/lib/watobo/adapters/data_store.rb +50 -59
  11. data/lib/watobo/adapters/file/file_store.rb +287 -296
  12. data/lib/watobo/adapters/file/marshal_store.rb +293 -296
  13. data/lib/watobo/adapters/session_store.rb +5 -14
  14. data/lib/watobo/ca.rb +1 -10
  15. data/lib/watobo/config.rb +197 -206
  16. data/lib/watobo/constants.rb +0 -9
  17. data/lib/watobo/core.rb +3 -12
  18. data/lib/watobo/core/active_check.rb +72 -135
  19. data/lib/watobo/core/active_checks.rb +49 -58
  20. data/lib/watobo/core/ca.rb +369 -389
  21. data/lib/watobo/core/cert_store.rb +34 -43
  22. data/lib/watobo/core/chat.rb +92 -101
  23. data/lib/watobo/core/chats.rb +271 -280
  24. data/lib/watobo/core/client_cert_store.rb +106 -35
  25. data/lib/watobo/core/conversation.rb +48 -57
  26. data/lib/watobo/core/cookie.rb +23 -32
  27. data/lib/watobo/core/egress_handlers.rb +98 -0
  28. data/lib/watobo/core/finding.rb +66 -75
  29. data/lib/watobo/core/findings.rb +107 -114
  30. data/lib/watobo/core/forwarding_proxy.rb +13 -22
  31. data/lib/watobo/core/fuzz_gen.rb +0 -9
  32. data/lib/watobo/core/intercept_carver.rb +166 -177
  33. data/lib/watobo/core/intercept_filter.rb +235 -244
  34. data/lib/watobo/core/interceptor.rb +98 -107
  35. data/lib/watobo/core/min_class.rb +4 -13
  36. data/lib/watobo/core/netfilter_queue.rb +170 -179
  37. data/lib/watobo/core/ott_cache.rb +132 -141
  38. data/lib/watobo/core/parameter.rb +43 -52
  39. data/lib/watobo/core/passive_check.rb +103 -102
  40. data/lib/watobo/core/passive_checks.rb +48 -57
  41. data/lib/watobo/core/passive_scanner.rb +54 -55
  42. data/lib/watobo/core/plugin.rb +11 -20
  43. data/lib/watobo/core/project.rb +3 -9
  44. data/lib/watobo/core/proxy.rb +43 -52
  45. data/lib/watobo/core/request.rb +125 -123
  46. data/lib/watobo/core/response.rb +44 -53
  47. data/lib/watobo/core/scanner.rb +0 -9
  48. data/lib/watobo/core/scanner3.rb +405 -414
  49. data/lib/watobo/core/scope.rb +83 -92
  50. data/lib/watobo/core/session.rb +1043 -1026
  51. data/lib/watobo/core/sid_cache.rb +98 -107
  52. data/lib/watobo/core/subscriber.rb +25 -34
  53. data/lib/watobo/defaults.rb +21 -30
  54. data/lib/watobo/external/diff/lcs.rb +0 -9
  55. data/lib/watobo/external/diff/lcs/array.rb +0 -9
  56. data/lib/watobo/external/diff/lcs/block.rb +0 -9
  57. data/lib/watobo/external/diff/lcs/callbacks.rb +0 -9
  58. data/lib/watobo/external/diff/lcs/change.rb +0 -9
  59. data/lib/watobo/external/diff/lcs/hunk.rb +0 -9
  60. data/lib/watobo/external/diff/lcs/ldiff.rb +0 -9
  61. data/lib/watobo/external/diff/lcs/string.rb +0 -9
  62. data/lib/watobo/externals.rb +6 -15
  63. data/lib/watobo/framework.rb +4 -13
  64. data/lib/watobo/framework/create_project.rb +60 -69
  65. data/lib/watobo/framework/init.rb +0 -9
  66. data/lib/watobo/framework/init_modules.rb +0 -9
  67. data/lib/watobo/framework/license_text.rb +28 -37
  68. data/lib/watobo/framework/load_chat.rb +13 -22
  69. data/lib/watobo/gui.rb +132 -123
  70. data/lib/watobo/gui/about_watobo.rb +0 -9
  71. data/lib/watobo/gui/browser_preview.rb +0 -9
  72. data/lib/watobo/gui/certificate_dialog.rb +0 -9
  73. data/lib/watobo/gui/chat_diff.rb +0 -9
  74. data/lib/watobo/gui/chatviewer_frame.rb +73 -72
  75. data/lib/watobo/gui/checkboxtree.rb +0 -9
  76. data/lib/watobo/gui/checks_policy_frame.rb +0 -9
  77. data/lib/watobo/gui/client_cert_dialog.rb +96 -87
  78. data/lib/watobo/gui/confirm_scan_dialog.rb +0 -9
  79. data/lib/watobo/gui/conversation_table.rb +158 -164
  80. data/lib/watobo/gui/conversation_table_ctrl.rb +207 -216
  81. data/lib/watobo/gui/conversation_table_ctrl2.rb +373 -382
  82. data/lib/watobo/gui/csrf_token_dialog.rb +0 -9
  83. data/lib/watobo/gui/custom_viewer.rb +374 -383
  84. data/lib/watobo/gui/dashboard.rb +296 -303
  85. data/lib/watobo/gui/define_scope_frame.rb +0 -9
  86. data/lib/watobo/gui/differ_frame.rb +215 -224
  87. data/lib/watobo/gui/edit_comment.rb +0 -9
  88. data/lib/watobo/gui/edit_scope_dialog.rb +0 -9
  89. data/lib/watobo/gui/export_dialog.rb +104 -113
  90. data/lib/watobo/gui/finding_info.rb +0 -9
  91. data/lib/watobo/gui/findings_tree.rb +210 -217
  92. data/lib/watobo/gui/full_scan_dialog.rb +0 -9
  93. data/lib/watobo/gui/fuzzer_gui.rb +1295 -1313
  94. data/lib/watobo/gui/fxsave_thread.rb +14 -0
  95. data/lib/watobo/gui/goto_url_dialog.rb +70 -79
  96. data/lib/watobo/gui/hex_viewer.rb +0 -9
  97. data/lib/watobo/gui/html_viewer.rb +287 -296
  98. data/lib/watobo/gui/intercept_filter_dialog.rb +188 -197
  99. data/lib/watobo/gui/interceptor_gui.rb +1041 -1051
  100. data/lib/watobo/gui/interceptor_settings_dialog.rb +0 -9
  101. data/lib/watobo/gui/json_viewer.rb +287 -0
  102. data/lib/watobo/gui/list_box.rb +101 -110
  103. data/lib/watobo/gui/log_file_viewer.rb +32 -41
  104. data/lib/watobo/gui/log_viewer.rb +83 -88
  105. data/lib/watobo/gui/login_wizzard.rb +0 -9
  106. data/lib/watobo/gui/main_window.rb +587 -618
  107. data/lib/watobo/gui/manual_request_editor.rb +620 -565
  108. data/lib/watobo/gui/master_pw_dialog.rb +0 -9
  109. data/lib/watobo/gui/mixins/gui_settings.rb +29 -38
  110. data/lib/watobo/gui/page_tree.rb +217 -226
  111. data/lib/watobo/gui/password_policy_dialog.rb +0 -9
  112. data/lib/watobo/gui/plugin_board.rb +0 -9
  113. data/lib/watobo/gui/preferences_dialog.rb +0 -9
  114. data/lib/watobo/gui/progress_window.rb +17 -27
  115. data/lib/watobo/gui/project_wizzard.rb +0 -9
  116. data/lib/watobo/gui/proxy_dialog.rb +1 -10
  117. data/lib/watobo/gui/quick_scan_dialog.rb +0 -9
  118. data/lib/watobo/gui/request_builder_frame.rb +102 -111
  119. data/lib/watobo/gui/request_editor.rb +181 -137
  120. data/lib/watobo/gui/rewrite_filters_dialog.rb +394 -403
  121. data/lib/watobo/gui/rewrite_rules_dialog.rb +372 -381
  122. data/lib/watobo/gui/save_chat_dialog.rb +140 -149
  123. data/lib/watobo/gui/scanner_settings_dialog.rb +0 -9
  124. data/lib/watobo/gui/select_chat_dialog.rb +0 -9
  125. data/lib/watobo/gui/session_management_dialog.rb +0 -9
  126. data/lib/watobo/gui/sites_tree.rb +0 -9
  127. data/lib/watobo/gui/status_bar.rb +0 -9
  128. data/lib/watobo/gui/table_editor.rb +0 -9
  129. data/lib/watobo/gui/tagless_viewer.rb +0 -9
  130. data/lib/watobo/gui/templates/plugin.rb +0 -9
  131. data/lib/watobo/gui/templates/plugin2.rb +92 -100
  132. data/lib/watobo/gui/templates/plugin_base.rb +144 -153
  133. data/lib/watobo/gui/text_viewer.rb +0 -9
  134. data/lib/watobo/gui/transcoder_window.rb +0 -9
  135. data/lib/watobo/gui/utils/gui_utils.rb +0 -9
  136. data/lib/watobo/gui/utils/init_icons.rb +86 -95
  137. data/lib/watobo/gui/utils/load_icons.rb +33 -42
  138. data/lib/watobo/gui/utils/load_plugins.rb +116 -119
  139. data/lib/watobo/gui/utils/master_password.rb +68 -77
  140. data/lib/watobo/gui/utils/save_default_settings.rb +113 -122
  141. data/lib/watobo/gui/utils/save_project_settings.rb +0 -9
  142. data/lib/watobo/gui/utils/save_proxy_settings.rb +41 -50
  143. data/lib/watobo/gui/utils/save_scanner_settings.rb +18 -27
  144. data/lib/watobo/gui/utils/session_history.rb +112 -121
  145. data/lib/watobo/gui/workspace_dialog.rb +0 -9
  146. data/lib/watobo/gui/www_auth_dialog.rb +0 -9
  147. data/lib/watobo/gui/xml_viewer_frame.rb +0 -9
  148. data/lib/watobo/http.rb +4 -13
  149. data/lib/watobo/http/cookies/cookies.rb +26 -35
  150. data/lib/watobo/http/data/data.rb +45 -54
  151. data/lib/watobo/http/data/json.rb +47 -55
  152. data/lib/watobo/http/url/url.rb +38 -47
  153. data/lib/watobo/http/xml/xml.rb +124 -130
  154. data/lib/watobo/interceptor.rb +3 -12
  155. data/lib/watobo/interceptor/proxy.rb +742 -739
  156. data/lib/watobo/interceptor/transparent.rb +22 -24
  157. data/lib/watobo/mixins.rb +10 -19
  158. data/lib/watobo/mixins/check_info.rb +27 -36
  159. data/lib/watobo/mixins/httpparser.rb +613 -637
  160. data/lib/watobo/mixins/request_parser.rb +88 -97
  161. data/lib/watobo/mixins/shapers.rb +515 -529
  162. data/lib/watobo/mixins/transcoders.rb +3 -11
  163. data/lib/watobo/parser.rb +1 -10
  164. data/lib/watobo/parser/html.rb +83 -92
  165. data/lib/watobo/patch_fxruby_setfocus.rb +26 -0
  166. data/lib/watobo/sockets.rb +3 -12
  167. data/lib/watobo/sockets/agent.rb +828 -837
  168. data/lib/watobo/sockets/client_socket.rb +308 -312
  169. data/lib/watobo/sockets/connection.rb +401 -410
  170. data/lib/watobo/sockets/http_socket.rb +11 -13
  171. data/lib/watobo/sockets/ntlm_auth.rb +129 -138
  172. data/lib/watobo/utils.rb +10 -19
  173. data/lib/watobo/utils/check_regex.rb +0 -9
  174. data/lib/watobo/utils/copy_object.rb +0 -9
  175. data/lib/watobo/utils/crypto.rb +0 -9
  176. data/lib/watobo/utils/expand_range.rb +23 -32
  177. data/lib/watobo/utils/export_xml.rb +97 -106
  178. data/lib/watobo/utils/file_management.rb +9 -11
  179. data/lib/watobo/utils/hexprint.rb +9 -18
  180. data/lib/watobo/utils/load_chat.rb +0 -9
  181. data/lib/watobo/utils/load_icon.rb +0 -9
  182. data/lib/watobo/utils/ntlm.rb +866 -875
  183. data/lib/watobo/utils/print_debug.rb +12 -21
  184. data/lib/watobo/utils/response_builder.rb +90 -99
  185. data/lib/watobo/utils/response_hash.rb +0 -9
  186. data/lib/watobo/utils/secure_eval.rb +0 -9
  187. data/lib/watobo/utils/strings.rb +10 -19
  188. data/lib/watobo/utils/text2request.rb +0 -9
  189. data/lib/watobo/utils/url.rb +23 -32
  190. data/lib/watobo/utils/utf16.rb +11 -20
  191. data/modules/active/Apache/mod_status.rb +0 -9
  192. data/modules/active/Apache/multiview.rb +151 -160
  193. data/modules/active/Flash/crossdomain.rb +0 -9
  194. data/modules/active/JWT/jwt_oauth2_none.rb +111 -0
  195. data/modules/active/cq5/cq5_default_selectors.rb +106 -115
  196. data/modules/active/cq5/cqp_user_enumeration.rb +125 -134
  197. data/modules/active/directories/dirwalker.rb +0 -9
  198. data/modules/active/discovery/fileextensions.rb +0 -9
  199. data/modules/active/discovery/http_methods.rb +0 -9
  200. data/modules/active/discovery/jsmapfiles.rb +79 -0
  201. data/modules/active/domino/domino_db.rb +68 -76
  202. data/modules/active/dotNET/custom_errors.rb +102 -111
  203. data/modules/active/dotNET/dotnet_files.rb +90 -99
  204. data/modules/active/fileinclusion/lfi_simple.rb +0 -9
  205. data/modules/active/jboss/jboss_basic.rb +0 -9
  206. data/modules/active/sap/business_objects.rb +51 -60
  207. data/modules/active/sap/its_commands.rb +0 -9
  208. data/modules/active/sap/its_service_parameter.rb +0 -9
  209. data/modules/active/sap/its_services.rb +0 -9
  210. data/modules/active/sap/its_xss.rb +0 -9
  211. data/modules/active/shell_shock/shell_shock.rb +139 -148
  212. data/modules/active/siebel/siebel_apps.rb +160 -169
  213. data/modules/active/sqlinjection/sql_boolean.rb +0 -9
  214. data/modules/active/sqlinjection/sql_numerical.rb +198 -0
  215. data/modules/active/sqlinjection/sqli_error.rb +0 -9
  216. data/modules/active/sqlinjection/sqli_timing.rb +220 -229
  217. data/modules/active/struts2/default_handler_ognl.rb +106 -115
  218. data/modules/active/struts2/include_params_ognl.rb +105 -114
  219. data/modules/active/xml/xml_xxe.rb +112 -123
  220. data/modules/active/xss/xss_ng.rb +214 -223
  221. data/modules/active/xss/xss_simple.rb +0 -9
  222. data/modules/passive/ajax.rb +68 -77
  223. data/modules/passive/autocomplete.rb +56 -65
  224. data/modules/passive/cookie_options.rb +0 -9
  225. data/modules/passive/cookie_xss.rb +0 -9
  226. data/modules/passive/detect_code.rb +0 -9
  227. data/modules/passive/detect_fileupload.rb +0 -9
  228. data/modules/passive/detect_infrastructure.rb +0 -9
  229. data/modules/passive/detect_one_time_tokens.rb +0 -9
  230. data/modules/passive/dirindexing.rb +0 -9
  231. data/modules/passive/disclosure_domino.rb +55 -64
  232. data/modules/passive/disclosure_emails.rb +0 -9
  233. data/modules/passive/disclosure_ipaddr.rb +55 -53
  234. data/modules/passive/filename_as_parameter.rb +0 -9
  235. data/modules/passive/form_spotter.rb +0 -9
  236. data/modules/passive/hidden_fields.rb +50 -59
  237. data/modules/passive/hotspots.rb +0 -9
  238. data/modules/passive/in_script_parameter.rb +0 -9
  239. data/modules/passive/json_web_token.rb +93 -0
  240. data/modules/passive/multiple_server_headers.rb +0 -9
  241. data/modules/passive/possible_login.rb +0 -9
  242. data/modules/passive/redirect_url.rb +0 -9
  243. data/modules/passive/redirectionz.rb +0 -9
  244. data/modules/passive/sap-headers.rb +56 -65
  245. data/modules/passive/xss_dom.rb +0 -9
  246. data/plugins/aem/aem.rb +11 -20
  247. data/plugins/aem/gui/main.rb +118 -127
  248. data/plugins/aem/gui/tree_view.rb +171 -180
  249. data/plugins/aem/lib/agent.rb +130 -138
  250. data/plugins/aem/lib/dispatcher.rb +45 -51
  251. data/plugins/aem/lib/engine.rb +177 -186
  252. data/plugins/catalog/catalog.rb +345 -355
  253. data/plugins/crawler/crawler.rb +4 -13
  254. data/plugins/crawler/gui.rb +5 -14
  255. data/plugins/crawler/gui/auth_frame.rb +270 -279
  256. data/plugins/crawler/gui/crawler_gui.rb +271 -276
  257. data/plugins/crawler/gui/general_settings_frame.rb +96 -105
  258. data/plugins/crawler/gui/hooks_frame.rb +80 -89
  259. data/plugins/crawler/gui/scope_frame.rb +50 -59
  260. data/plugins/crawler/gui/settings_tabbook.rb +38 -47
  261. data/plugins/crawler/gui/status_frame.rb +59 -68
  262. data/plugins/crawler/lib/bags.rb +18 -27
  263. data/plugins/crawler/lib/constants.rb +11 -20
  264. data/plugins/crawler/lib/engine.rb +488 -497
  265. data/plugins/crawler/lib/grabber.rb +68 -77
  266. data/plugins/crawler/lib/status.rb +71 -80
  267. data/plugins/crawler/lib/uri_mp.rb +12 -21
  268. data/plugins/filefinder/filefinder.rb +326 -333
  269. data/plugins/sqlmap/bin/test.rb +78 -87
  270. data/plugins/sqlmap/gui.rb +4 -13
  271. data/plugins/sqlmap/gui/main.rb +218 -227
  272. data/plugins/sqlmap/gui/options_frame.rb +97 -106
  273. data/plugins/sqlmap/lib/sqlmap_ctrl.rb +90 -100
  274. data/plugins/sqlmap/sqlmap.rb +2 -11
  275. data/plugins/sslchecker/cli/sslchecker_cli.rb +0 -9
  276. data/plugins/sslchecker/gui/cipher_table.rb +246 -254
  277. data/plugins/sslchecker/gui/gui.rb +258 -264
  278. data/plugins/sslchecker/gui/sslchecker.rb +4 -13
  279. data/plugins/sslchecker/lib/check.rb +127 -133
  280. data/plugins/wshell/gui/main.rb +119 -117
  281. data/plugins/wshell/lib/core.rb +38 -88
  282. data/plugins/wshell/wshell.rb +11 -20
  283. metadata +170 -164
@@ -1,16 +1,7 @@
1
- #.
2
- # session_store.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
- class SessionStore
13
-
14
- # TODO: Define default methods here
15
- end
2
+ module Watobo#:nodoc: all
3
+ class SessionStore
4
+
5
+ # TODO: Define default methods here
6
+ end
16
7
  end
@@ -1,10 +1 @@
1
- #.
2
- # ca.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
- require 'watobo/core/ca.rb'
1
+ require 'watobo/core/ca.rb'
@@ -1,217 +1,208 @@
1
- #.
2
- # config.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 Conf
13
-
14
- @@settings = Hash.new
15
- @count = 0
16
- @@modules = []
17
-
18
- def self.each(&b)
19
- @@modules.each do |m|
20
- yield m if block_given?
21
- end
22
- @@modules.length
23
- end
24
-
25
- def self.load_project_settings()
26
- @@modules.each do |m|
27
- m.load_project()
28
- end
29
- end
30
-
31
- def self.load_session_settings()
32
- @@modules.each do |m|
33
- m.load_session()
34
- end
35
- end
36
-
37
- def self.add(group, settings)
38
- # puts "* create new configuration for #{group}"
39
-
40
- module_eval("module #{group}; @settings = #{settings}; end")
41
- m = const_get(group)
42
- m.module_eval do
43
- def self.to_file
44
- # n = self.to_s.gsub(/(Watobo)?::/, "/").gsub(/([A-Z])([A-Z][a-z])/, '\1_\2').gsub(/([a-z\d])([A-Z])/, '\1_\2').tr("-","_").downcase
45
- n = Watobo::Utils.snakecase self.to_s.gsub(/(Watobo)?::/, "/")
46
- n << ".yml"
47
- end
48
-
49
- def self.update(filename=nil, &b)
50
- n = self.to_file
51
- file = filename unless filename.nil?
52
- file = File.join( Watobo::Conf::General.working_directory, n )
53
- if File.exist? file
54
- puts " [#{self}] update settings from file #{file}" if $DEBUG
55
- @settings.update YAML.load_file(file)
56
- else
57
- puts "! [#{self}] could not update settings from file #{file}" if $DEBUG
58
- end
59
- end
60
-
61
- # returns the group name of the module
62
- # e.g. the group name of Watobo::Conf::Interceptor would be Interceptor
63
- def self.group_name
64
- self.to_s.gsub(/.*::/,"")
65
- end
66
-
67
- def self.set(settings)
68
- return false unless settings.is_a? Hash
69
- @settings = YAML.load(YAML.dump(settings))
70
- end
71
-
72
- def self.save_session( *filter, &b)
73
- #raise ArgumentError, "Need a valid Watobo::DataStore" unless data_store.respond_to? :save_project_settings
74
- s = filter_settings filter
75
- s = yield s if block_given?
76
- # puts group_name
77
- Watobo::DataStore.save_session_settings( group_name, s )
78
- end
79
-
80
- def self.save_project( *filter, &b)
81
- # raise ArgumentError, "Need a valid Watobo::DataStore" unless data_store.respond_to? :save_project_settings
2
+ module Watobo#:nodoc: all
3
+ module Conf
4
+
5
+ @@settings = Hash.new
6
+ @count = 0
7
+ @@modules = []
8
+
9
+ def self.each(&b)
10
+ @@modules.each do |m|
11
+ yield m if block_given?
12
+ end
13
+ @@modules.length
14
+ end
15
+
16
+ def self.load_project_settings()
17
+ @@modules.each do |m|
18
+ m.load_project()
19
+ end
20
+ end
21
+
22
+ def self.load_session_settings()
23
+ @@modules.each do |m|
24
+ m.load_session()
25
+ end
26
+ end
27
+
28
+ def self.add(group, settings)
29
+ # puts "* create new configuration for #{group}"
30
+
31
+ module_eval("module #{group}; @settings = #{settings}; end")
32
+ m = const_get(group)
33
+ m.module_eval do
34
+ def self.to_file
35
+ # n = self.to_s.gsub(/(Watobo)?::/, "/").gsub(/([A-Z])([A-Z][a-z])/, '\1_\2').gsub(/([a-z\d])([A-Z])/, '\1_\2').tr("-","_").downcase
36
+ n = Watobo::Utils.snakecase self.to_s.gsub(/(Watobo)?::/, "/")
37
+ n << ".yml"
38
+ end
39
+
40
+ def self.update(filename=nil, &b)
41
+ n = self.to_file
42
+ file = filename unless filename.nil?
43
+ file = File.join( Watobo::Conf::General.working_directory, n )
44
+ if File.exist? file
45
+ puts " [#{self}] update settings from file #{file}" if $DEBUG
46
+ @settings.update YAML.load_file(file)
47
+ else
48
+ puts "! [#{self}] could not update settings from file #{file}" if $DEBUG
49
+ end
50
+ end
51
+
52
+ # returns the group name of the module
53
+ # e.g. the group name of Watobo::Conf::Interceptor would be Interceptor
54
+ def self.group_name
55
+ self.to_s.gsub(/.*::/,"")
56
+ end
57
+
58
+ def self.set(settings)
59
+ return false unless settings.is_a? Hash
60
+ @settings = YAML.load(YAML.dump(settings))
61
+ end
62
+
63
+ def self.save_session( *filter, &b)
64
+ #raise ArgumentError, "Need a valid Watobo::DataStore" unless data_store.respond_to? :save_project_settings
65
+ s = filter_settings filter
66
+ s = yield s if block_given?
67
+ # puts group_name
68
+ Watobo::DataStore.save_session_settings( group_name, s )
69
+ end
70
+
71
+ def self.save_project( *filter, &b)
72
+ # raise ArgumentError, "Need a valid Watobo::DataStore" unless data_store.respond_to? :save_project_settings
82
73
  s = filter_settings filter
83
- s = yield s if block_given?
84
- # puts @settings.to_yaml
85
- # puts s.to_yaml
86
- Watobo::DataStore.save_project_settings(group_name, s)
87
- end
88
-
89
- def self.load_session(prefs={}, &b)
90
-
91
- p = { :update => true }
92
- p.update prefs
93
-
94
- s = Watobo::DataStore.load_session_settings(group_name)
95
- return false if s.nil?
96
-
97
- if p[:update] == true
98
- @settings.update s
99
- else
100
- @settings = s
101
- end
102
- end
103
-
104
- def self.load_project(prefs={}, &b)
105
- p = { :update => true }
106
- p.update prefs
107
-
108
- s = Watobo::DataStore.load_project_settings(group_name)
109
- return false if s.nil?
110
-
111
- if p[:update] == true
112
- @settings.update s
113
- else
114
- @settings = s
115
- end
116
- end
117
-
118
- def self.filter_settings(f)
74
+ s = yield s if block_given?
75
+ # puts @settings.to_yaml
76
+ # puts s.to_yaml
77
+ Watobo::DataStore.save_project_settings(group_name, s)
78
+ end
79
+
80
+ def self.load_session(prefs={}, &b)
81
+
82
+ p = { :update => true }
83
+ p.update prefs
84
+
85
+ s = Watobo::DataStore.load_session_settings(group_name)
86
+ return false if s.nil?
87
+
88
+ if p[:update] == true
89
+ @settings.update s
90
+ else
91
+ @settings = s
92
+ end
93
+ end
94
+
95
+ def self.load_project(prefs={}, &b)
96
+ p = { :update => true }
97
+ p.update prefs
98
+
99
+ s = Watobo::DataStore.load_project_settings(group_name)
100
+ return false if s.nil?
101
+
102
+ if p[:update] == true
103
+ @settings.update s
104
+ else
105
+ @settings = s
106
+ end
107
+ end
108
+
109
+ def self.filter_settings(f)
119
110
  s = YAML.load(YAML.dump(@settings))
120
111
 
121
112
  return s unless f.is_a? Array
122
113
  return s if f.empty?
123
114
  #return s unless s.respond_to? :each_key
124
-
125
- s.each_key do |k|
126
- s.delete k unless f.include? k
127
- end
128
- s
129
- end
130
-
131
- def self.save(path=nil, *filter, &b)
132
-
133
- n = self.to_file
134
- p = Conf::General.working_directory
135
- unless path.nil?
136
- if File.exist? path
137
- p = path
138
- end
139
- end
140
-
141
- file = File.join( p, n )
142
-
115
+
116
+ s.each_key do |k|
117
+ s.delete k unless f.include? k
118
+ end
119
+ s
120
+ end
121
+
122
+ def self.save(path=nil, *filter, &b)
123
+
124
+ n = self.to_file
125
+ p = Conf::General.working_directory
126
+ unless path.nil?
127
+ if File.exist? path
128
+ p = path
129
+ end
130
+ end
131
+
132
+ file = File.join( p, n )
133
+
143
134
  s = filter_settings filter
144
-
145
-
146
- yield s if block_given?
147
-
148
- if File.exist?(File.dirname(file))
135
+
136
+
137
+ yield s if block_given?
138
+
139
+ if File.exist?(File.dirname(file))
149
140
  puts "* save config #{self} to: #{file}"
150
- puts s.to_yaml
151
-
152
- File.open(file, "w") { |fh|
153
- YAML.dump(s, fh)
154
- }
155
- else
156
- puts "Could not save file to #{File.dirname(file)}"
157
- end
158
- end
159
-
160
- def self.respond_to?(f)
161
- # puts "* respond_to?"
162
- # puts f
163
- return true if @settings.has_key? f.to_sym
164
- # puts @settings.to_yaml
165
- super
166
- end
167
-
168
- def self.dump
169
- @settings
170
- end
171
-
172
- def self.to_h
173
- @settings
141
+ puts s.to_yaml
142
+
143
+ File.open(file, "w") { |fh|
144
+ YAML.dump(s, fh)
145
+ }
146
+ else
147
+ puts "Could not save file to #{File.dirname(file)}"
148
+ end
149
+ end
150
+
151
+ def self.respond_to?(f)
152
+ # puts "* respond_to?"
153
+ # puts f
154
+ return true if @settings.has_key? f.to_sym
155
+ # puts @settings.to_yaml
156
+ super
157
+ end
158
+
159
+ def self.dump
160
+ @settings
174
161
  end
175
-
176
-
177
- #@@settings = settings
178
- def self.method_missing(name, *args, &block)
179
- # puts "* instance method missing (#{name})"
180
- if name =~ /(.*)=$/
181
- @settings.has_key? $1.to_sym || super
182
- @settings[$1.to_sym] = args[0]
183
- else
184
- # puts @settings[name.to_sym]
185
- @settings[name.to_sym]
186
-
187
- end
188
- end
189
-
190
- # TODO: create a class-instance of the module itself, so it can be referenced like @scanner.scope
191
- # before creating the reference also check if there's another class-instance variable with the same name
192
- def self.included_UNUSED(clazz)
193
- puts "* #{self} gets included into #{clazz}"
194
- @settings.each_key do |k|
195
- puts "* add method for #{k}"
196
-
197
- clazz.class_eval "
198
- @@#{k} ||= #{self}.#{k}
199
-
200
- def #{k}=(value)
201
- @@#{k} = value
202
- end
203
-
204
- def #{k}
205
- @@#{k}
206
- end
207
- "
208
-
209
- end
210
- end
211
-
212
- end
213
- @@modules << m
214
- end
215
-
216
- end
162
+
163
+ def self.to_h
164
+ @settings
165
+ end
166
+
167
+
168
+ #@@settings = settings
169
+ def self.method_missing(name, *args, &block)
170
+ # puts "* instance method missing (#{name})"
171
+ if name =~ /(.*)=$/
172
+ @settings.has_key? $1.to_sym || super
173
+ @settings[$1.to_sym] = args[0]
174
+ else
175
+ # puts @settings[name.to_sym]
176
+ @settings[name.to_sym]
177
+
178
+ end
179
+ end
180
+
181
+ # TODO: create a class-instance of the module itself, so it can be referenced like @scanner.scope
182
+ # before creating the reference also check if there's another class-instance variable with the same name
183
+ def self.included_UNUSED(clazz)
184
+ puts "* #{self} gets included into #{clazz}"
185
+ @settings.each_key do |k|
186
+ puts "* add method for #{k}"
187
+
188
+ clazz.class_eval "
189
+ @@#{k} ||= #{self}.#{k}
190
+
191
+ def #{k}=(value)
192
+ @@#{k} = value
193
+ end
194
+
195
+ def #{k}
196
+ @@#{k}
197
+ end
198
+ "
199
+
200
+ end
201
+ end
202
+
203
+ end
204
+ @@modules << m
205
+ end
206
+
207
+ end
217
208
  end
@@ -1,12 +1,3 @@
1
- #.
2
- # constants.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
  $debug_project = false
11
2
  $debug_active_check = false
12
3
  $debug_scanner = false