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,150 +1,141 @@
1
- #.
2
- # save_chat_dialog.rb
3
- #.
4
- # Copyright 2014 by siberas, http://www.siberas.de
5
- # This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
6
- # WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
7
- # WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
8
- # You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
9
-
10
1
  # @private
11
- module Watobo#:nodoc: all
12
- module Gui
13
- class SaveChatDialog < FXDialogBox
14
- class Sender < Watobo::Session
15
- def initialize()
16
- @project = Watobo::Gui.project
17
- super(@project.object_id, @project.getScanPreferences())
18
-
19
- end
20
-
21
- def send_request(new_request, opts = {} )
22
- prefs = {
23
- :run_login => false,
24
- :update_csrf_tokens => false
25
- }
26
- prefs.update opts
27
-
28
- id = 0
29
- if prefs[:run_login ] == true
30
- puts prefs.to_yaml
31
- puts "Scanner Settings:"
32
- puts Watobo::Conf::Scanner.to_h.to_yaml
33
- runLogin( prefs[:login_chats], prefs)
34
- end
35
- #if prefs[:update_session ] == true and
36
- unless prefs[:update_csrf_tokens] == true
37
- prefs[:csrf_requests] = []
38
- prefs[:csrf_patterns] = []
39
- end
40
-
41
- new_request.extend Watobo::Mixin::Parser::Web10
42
- new_request.extend Watobo::Mixin::Shaper::Web10
43
- begin
44
- test_req, test_resp = self.doRequest(new_request, prefs)
45
- rescue => bang
46
- puts bang
47
- end
48
- return test_req,test_resp
49
- end
50
-
51
- end
52
- include Responder
53
-
54
- def filename
55
- @filename_txt.text
56
- end
57
-
58
- def initialize(owner, chat, prefs={})
59
- raise ArgumentError, "Need Chat Object" unless chat.respond_to? :request
60
- super(owner, "Save Response", :opts => DECOR_ALL)
61
- @chat = chat
62
- @sender = Sender.new
63
- @response = chat.response
64
-
65
- FXMAPFUNC(SEL_COMMAND, ID_ACCEPT, :onAccept)
66
-
67
- @path = Watobo.workspace_path
68
-
69
- main_frame = FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_GROOVE)
70
-
71
- frame = FXHorizontalFrame.new(main_frame, :opts => LAYOUT_FILL_X)
72
- FXLabel.new(frame,"Response:")
73
- @reload_btn = FXButton.new(frame, "Reload", nil, self, 0, FRAME_RAISED|FRAME_THICK|LAYOUT_CENTER_Y|LAYOUT_SIDE_RIGHT)
74
-
75
- @response_viewer = Watobo::Gui::ResponseViewer.new(main_frame, LAYOUT_FILL_X|LAYOUT_FILL_Y)
76
- @response_viewer.setText(@response)
77
- @reload_btn.connect(SEL_COMMAND){
78
- s,a = @sender.send_request(@chat.request)
79
- @response = a
80
- @response.extend Watobo::Mixin::Parser::Web10
81
- @response.extend Watobo::Mixin::Shaper::Web10
82
- @response_viewer.setText(@response)
83
- }
84
-
85
- frame = FXHorizontalFrame.new(main_frame, :opts => LAYOUT_FILL_X)
86
- FXLabel.new(frame, "Save To:", nil, LAYOUT_TOP|JUSTIFY_RIGHT)
87
- @filename_txt = FXTextField.new(frame, 25, :opts => TEXTFIELD_NORMAL|LAYOUT_SIDE_RIGHT)
88
- @select_btn = FXButton.new(frame, "Select")
89
- @select_btn.connect(SEL_COMMAND){ select_target_file }
90
- if @chat.respond_to? :response
91
- @select_btn.enable
92
- @filename_txt.enable
93
- else
94
- @select_btn.disable
95
- @filename_txt.disable
96
- end
97
-
98
- buttons = FXHorizontalFrame.new(main_frame, :opts => LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|PACK_UNIFORM_WIDTH,
99
- :padLeft => 40, :padRight => 40, :padTop => 20, :padBottom => 20)
100
-
101
- accept = FXButton.new(buttons, "&Save", nil, self, ID_ACCEPT,
102
- FRAME_RAISED|FRAME_THICK|LAYOUT_RIGHT|LAYOUT_CENTER_Y)
103
- accept.enable
104
- # Cancel
105
- FXButton.new(buttons, "&Cancel", nil, self, ID_CANCEL,
106
- FRAME_RAISED|FRAME_THICK|LAYOUT_RIGHT|LAYOUT_CENTER_Y)
107
- end
108
-
109
- private
110
-
111
- def select_target_file()
112
- file = @chat.request.file
113
- file = "chat.txt" if file.strip.empty?
114
- dst_file = File.join(@path, file)
115
- filename = FXFileDialog.getSaveFilename(self, "Select Destination File", dst_file)
116
- if filename != "" then
117
- @filename_txt.text = filename
118
- end
119
- end
120
-
121
- def updateFields()
122
- # @sites_combo.handle(self, FXSEL(SEL_UPDATE, 1), nil)
123
-
124
- end
125
-
126
- def onAccept(sender, sel, event)
127
- begin
128
- f = @filename_txt.text
129
- if f != ''
130
- @path = File.dirname(f)
131
-
132
- if @response.has_body?
133
- File.open(f,"wb"){ |fh| fh.print @response.body }
134
- end
135
- end
136
- status = 1
137
- rescue => bang
138
- puts bang
139
- status = 0
140
- ensure
141
- getApp().stopModal(self, 1)
142
- self.hide()
143
- return status
144
- end
145
-
146
- end
147
- end
148
-
149
- end
150
- end
2
+ module Watobo#:nodoc: all
3
+ module Gui
4
+ class SaveChatDialog < FXDialogBox
5
+ class Sender < Watobo::Session
6
+ def initialize()
7
+ @project = Watobo::Gui.project
8
+ super(@project.object_id, @project.getScanPreferences())
9
+
10
+ end
11
+
12
+ def send_request(new_request, opts = {} )
13
+ prefs = {
14
+ :run_login => false,
15
+ :update_csrf_tokens => false
16
+ }
17
+ prefs.update opts
18
+
19
+ id = 0
20
+ if prefs[:run_login ] == true
21
+ puts prefs.to_yaml
22
+ puts "Scanner Settings:"
23
+ puts Watobo::Conf::Scanner.to_h.to_yaml
24
+ runLogin( prefs[:login_chats], prefs)
25
+ end
26
+ #if prefs[:update_session ] == true and
27
+ unless prefs[:update_csrf_tokens] == true
28
+ prefs[:csrf_requests] = []
29
+ prefs[:csrf_patterns] = []
30
+ end
31
+
32
+ new_request.extend Watobo::Mixin::Parser::Web10
33
+ new_request.extend Watobo::Mixin::Shaper::Web10
34
+ begin
35
+ test_req, test_resp = self.doRequest(new_request, prefs)
36
+ rescue => bang
37
+ puts bang
38
+ end
39
+ return test_req,test_resp
40
+ end
41
+
42
+ end
43
+ include Responder
44
+
45
+ def filename
46
+ @filename_txt.text
47
+ end
48
+
49
+ def initialize(owner, chat, prefs={})
50
+ raise ArgumentError, "Need Chat Object" unless chat.respond_to? :request
51
+ super(owner, "Save Response", :opts => DECOR_ALL)
52
+ @chat = chat
53
+ @sender = Sender.new
54
+ @response = chat.response
55
+
56
+ FXMAPFUNC(SEL_COMMAND, ID_ACCEPT, :onAccept)
57
+
58
+ @path = Watobo.workspace_path
59
+
60
+ main_frame = FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_GROOVE)
61
+
62
+ frame = FXHorizontalFrame.new(main_frame, :opts => LAYOUT_FILL_X)
63
+ FXLabel.new(frame,"Response:")
64
+ @reload_btn = FXButton.new(frame, "Reload", nil, self, 0, FRAME_RAISED|FRAME_THICK|LAYOUT_CENTER_Y|LAYOUT_SIDE_RIGHT)
65
+
66
+ @response_viewer = Watobo::Gui::ResponseViewer.new(main_frame, LAYOUT_FILL_X|LAYOUT_FILL_Y)
67
+ @response_viewer.setText(@response)
68
+ @reload_btn.connect(SEL_COMMAND){
69
+ s,a = @sender.send_request(@chat.request)
70
+ @response = a
71
+ @response.extend Watobo::Mixin::Parser::Web10
72
+ @response.extend Watobo::Mixin::Shaper::Web10
73
+ @response_viewer.setText(@response)
74
+ }
75
+
76
+ frame = FXHorizontalFrame.new(main_frame, :opts => LAYOUT_FILL_X)
77
+ FXLabel.new(frame, "Save To:", nil, LAYOUT_TOP|JUSTIFY_RIGHT)
78
+ @filename_txt = FXTextField.new(frame, 25, :opts => TEXTFIELD_NORMAL|LAYOUT_SIDE_RIGHT)
79
+ @select_btn = FXButton.new(frame, "Select")
80
+ @select_btn.connect(SEL_COMMAND){ select_target_file }
81
+ if @chat.respond_to? :response
82
+ @select_btn.enable
83
+ @filename_txt.enable
84
+ else
85
+ @select_btn.disable
86
+ @filename_txt.disable
87
+ end
88
+
89
+ buttons = FXHorizontalFrame.new(main_frame, :opts => LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|PACK_UNIFORM_WIDTH,
90
+ :padLeft => 40, :padRight => 40, :padTop => 20, :padBottom => 20)
91
+
92
+ accept = FXButton.new(buttons, "&Save", nil, self, ID_ACCEPT,
93
+ FRAME_RAISED|FRAME_THICK|LAYOUT_RIGHT|LAYOUT_CENTER_Y)
94
+ accept.enable
95
+ # Cancel
96
+ FXButton.new(buttons, "&Cancel", nil, self, ID_CANCEL,
97
+ FRAME_RAISED|FRAME_THICK|LAYOUT_RIGHT|LAYOUT_CENTER_Y)
98
+ end
99
+
100
+ private
101
+
102
+ def select_target_file()
103
+ file = @chat.request.file
104
+ file = "chat.txt" if file.strip.empty?
105
+ dst_file = File.join(@path, file)
106
+ filename = FXFileDialog.getSaveFilename(self, "Select Destination File", dst_file)
107
+ if filename != "" then
108
+ @filename_txt.text = filename
109
+ end
110
+ end
111
+
112
+ def updateFields()
113
+ # @sites_combo.handle(self, FXSEL(SEL_UPDATE, 1), nil)
114
+
115
+ end
116
+
117
+ def onAccept(sender, sel, event)
118
+ begin
119
+ f = @filename_txt.text
120
+ if f != ''
121
+ @path = File.dirname(f)
122
+
123
+ if @response.has_body?
124
+ File.open(f,"wb"){ |fh| fh.print @response.body }
125
+ end
126
+ end
127
+ status = 1
128
+ rescue => bang
129
+ puts bang
130
+ status = 0
131
+ ensure
132
+ getApp().stopModal(self, 1)
133
+ self.hide()
134
+ return status
135
+ end
136
+
137
+ end
138
+ end
139
+
140
+ end
141
+ end
@@ -1,12 +1,3 @@
1
- #.
2
- # scanner_settings_dialog.rb
3
- #.
4
- # Copyright 2014 by siberas, http://www.siberas.de
5
- # This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
6
- # WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
7
- # WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
8
- # You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
9
-
10
1
  # @private
11
2
  module Watobo#:nodoc: all
12
3
  module Gui
@@ -1,12 +1,3 @@
1
- #.
2
- # select_chat_dialog.rb
3
- #.
4
- # Copyright 2014 by siberas, http://www.siberas.de
5
- # This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
6
- # WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
7
- # WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
8
- # You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
9
-
10
1
  # @private
11
2
  module Watobo#:nodoc: all
12
3
  module Gui
@@ -1,12 +1,3 @@
1
- #.
2
- # session_management_dialog.rb
3
- #.
4
- # Copyright 2014 by siberas, http://www.siberas.de
5
- # This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
6
- # WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
7
- # WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
8
- # You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
9
-
10
1
  # @private
11
2
  module Watobo#:nodoc: all
12
3
  module Gui
@@ -1,12 +1,3 @@
1
- #.
2
- # sites_tree.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
  #require 'qcustomize.rb'
11
2
 
12
3
  # @private
@@ -1,12 +1,3 @@
1
- #.
2
- # status_bar.rb
3
- #.
4
- # Copyright 2014 by siberas, http://www.siberas.de
5
- # This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
6
- # WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
7
- # WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
8
- # You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
9
-
10
1
  # @private
11
2
  module Watobo#:nodoc: all
12
3
  module Gui
@@ -1,12 +1,3 @@
1
- #.
2
- # table_editor.rb
3
- #.
4
- # Copyright 2014 by siberas, http://www.siberas.de
5
- # This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
6
- # WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
7
- # WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
8
- # You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
9
-
10
1
  # @private
11
2
  module Watobo#:nodoc: all
12
3
  module Gui
@@ -1,12 +1,3 @@
1
- #.
2
- # tagless_viewer.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
  require 'watobo/gui/request_editor'
11
2
  # @private
12
3
  module Watobo#:nodoc: all
@@ -1,12 +1,3 @@
1
- #.
2
- # plugin.rb
3
- #.
4
- # Copyright 2014 by siberas, http://www.siberas.de
5
- # This file is part of WATOBO (Web Application Tool Box) http://watobo.sourceforge.com
6
- # WATOBO is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.
7
- # WATOBO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
8
- # You should have received a copy of the GNU General Public License along with WATOBO; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
9
-
10
1
  # @private
11
2
  module Watobo#:nodoc: all
12
3
  module Template
@@ -1,101 +1,93 @@
1
- #.
2
- # plugin2.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 Plugin2 < FXDialogBox
13
- attr :plugin_name
14
- # attr :icon
15
-
16
- include Watobo::Gui
17
- include Watobo::Gui::Icons
18
-
19
- @icon_file = nil
20
- def self.get_icon
21
- @icon_file
22
- end
23
-
24
- def self.icon_file(icon_file)
25
- # puts "Caller >> #{caller.class}"
26
- # puts caller.to_yaml
27
-
28
- dummy = caller.first.split(":")
29
- dummy.pop
30
- file = dummy.join(":")
31
-
32
- @icon_file = File.join(File.dirname(file), "..","icons", icon_file)
33
- end
34
-
35
- def load_icon
36
- icon = self.class.get_icon
37
- # puts "* loading icon > #{icon}"
38
- self.icon = Watobo::Gui.load_icon(icon) unless icon.nil?
39
- end
40
-
41
- def subscribe(event, &callback)
42
- (@event_dispatcher_listeners[event] ||= []) << callback
43
- end
44
-
45
- def clearEvents(event)
46
- @event_dispatcher_listener[event].clear
47
- end
48
-
49
- def notify(event, *args)
50
- if @event_dispatcher_listeners[event]
51
- @event_dispatcher_listeners[event].each do |m|
52
- m.call(*args) if m.respond_to? :call
53
- end
54
- end
55
- end
56
-
57
- def updateView()
58
- raise "!!! updateView not defined"
59
- end
60
-
61
- def logger(msg)
62
- t = Time.now
63
- now = t.strftime("%m/%d/%Y @ %H:%M:%S")
64
-
65
- @update_lock.synchronize do
66
- text = "\n#{now}: msg"
67
- @log_messages << text
68
- end
69
- end
70
-
71
- def initialize(owner, title, project, opts)
72
- super(owner, title, :opts => DECOR_ALL,:width=>800, :height=>600)
73
-
74
- @icon = nil
75
- load_icon()
76
- @plugin_name = "undefined"
77
- @event_dispatcher_listeners = Hash.new
78
- @update_lock = Mutex.new
79
-
80
- @log_messages = []
81
-
82
- add_update_timer(50)
83
-
84
- end
85
-
86
- private
87
-
88
- def on_update_timer
89
-
90
- end
91
-
92
- def add_update_timer(ms)
93
- @update_timer = FXApp.instance.addTimeout( ms, :repeat => true) {
94
- @update_lock.synchronize do
95
- on_update_timer()
96
- end
97
- }
98
- end
99
-
100
- end
101
- end
2
+ module Watobo #:nodoc: all
3
+ class Plugin2 < FXDialogBox
4
+ attr :plugin_name
5
+ # attr :icon
6
+
7
+ include Watobo::Gui
8
+ include Watobo::Gui::Icons
9
+
10
+ @icon_file = nil
11
+
12
+ def self.get_icon
13
+ @icon_file
14
+ end
15
+
16
+ def self.icon_file(icon_file)
17
+ # puts "Caller >> #{caller.class}"
18
+ # puts caller.to_yaml
19
+
20
+ dummy = caller.first.split(":")
21
+ dummy.pop
22
+ file = dummy.join(":")
23
+
24
+ @icon_file = File.join(File.dirname(file), "..", "icons", icon_file)
25
+ end
26
+
27
+ def load_icon
28
+ icon = self.class.get_icon
29
+ # puts "* loading icon > #{icon}"
30
+ self.icon = Watobo::Gui.load_icon(icon) unless icon.nil?
31
+ end
32
+
33
+ def subscribe(event, &callback)
34
+ (@event_dispatcher_listeners[event] ||= []) << callback
35
+ end
36
+
37
+ def clearEvents(event)
38
+ @event_dispatcher_listener[event].clear
39
+ end
40
+
41
+ def notify(event, *args)
42
+ if @event_dispatcher_listeners[event]
43
+ @event_dispatcher_listeners[event].each do |m|
44
+ m.call(*args) if m.respond_to? :call
45
+ end
46
+ end
47
+ end
48
+
49
+ def updateView()
50
+ raise "!!! updateView not defined"
51
+ end
52
+
53
+ def logger(msg)
54
+ t = Time.now
55
+ now = t.strftime("%m/%d/%Y @ %H:%M:%S")
56
+
57
+ @update_lock.synchronize do
58
+ text = "\n#{now}: msg"
59
+ @log_messages << text
60
+ end
61
+ end
62
+
63
+ def initialize(owner, title, project, opts)
64
+ super(owner, title, :opts => DECOR_ALL, :width => 800, :height => 600)
65
+
66
+ @icon = nil
67
+ load_icon()
68
+ @plugin_name = "undefined"
69
+ @event_dispatcher_listeners = Hash.new
70
+ @update_lock = Mutex.new
71
+
72
+ @log_messages = []
73
+
74
+ add_update_timer()
75
+
76
+ end
77
+
78
+ private
79
+
80
+ def on_update_timer
81
+
82
+ end
83
+
84
+ def add_update_timer()
85
+ Watobo.save_thread{
86
+ @update_lock.synchronize do
87
+ on_update_timer()
88
+ end
89
+ }
90
+ end
91
+
92
+ end
93
+ end