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,201 @@
1
+ # .
2
+ # interceptor_settings_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
+
25
+ class InterceptorSettingsFrame < FXVerticalFrame
26
+
27
+ def getSettings()
28
+ settings = Hash.new
29
+ settings[:port] = @port_dt.value
30
+
31
+
32
+
33
+ dummy = []
34
+ @ct_list.each do |nup|
35
+ dummy.push nup.data
36
+ end
37
+ settings[:pass_through] = {
38
+ :content_types => dummy,
39
+ :content_length => @content_length_dt.value
40
+ }
41
+
42
+ return settings
43
+ end
44
+
45
+ def addItem(list_box, item)
46
+ if item != "" then
47
+ list_item = list_box.appendItem("#{item}")
48
+ list_box.setItemData(list_item, item)
49
+ list_box.sortItems()
50
+ end
51
+ end
52
+
53
+ def removePattern(list_box)
54
+ index = list_box.currentItem
55
+ if index >= 0
56
+ list_box.removeItem(index)
57
+ end
58
+ end
59
+
60
+ def initialize(owner, opts)
61
+ super(owner, opts)
62
+
63
+ #@settings = interceptor_settings
64
+ scroller = FXScrollWindow.new(self, :opts => SCROLLERS_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_Y)
65
+ scroll_area = FXVerticalFrame.new(scroller, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
66
+
67
+ gbox = FXGroupBox.new(scroll_area, "Listening Port", LAYOUT_SIDE_RIGHT|FRAME_GROOVE|LAYOUT_FILL_X, 0, 0, 0, 0)
68
+ gbox_frame = FXVerticalFrame.new(gbox, :opts => LAYOUT_SIDE_TOP|PACK_UNIFORM_WIDTH)
69
+
70
+ frame = FXHorizontalFrame.new(gbox_frame, :opts => LAYOUT_FILL_X)
71
+ FXLabel.new(frame, "Listen Port:")
72
+ @port_dt = FXDataTarget.new(0)
73
+ #@port_dt.value = @settings[:port]
74
+ @port_dt.value = Watobo::Conf::Interceptor.port
75
+ lport = FXTextField.new(frame, 5, @port_dt, FXDataTarget::ID_VALUE, :opts => JUSTIFY_RIGHT|FRAME_GROOVE|FRAME_SUNKEN)
76
+ lport.handle(self, FXSEL(SEL_UPDATE, 0), nil)
77
+
78
+
79
+ gbframe = FXGroupBox.new(scroll_area, "Pass-Through Content-Length", LAYOUT_SIDE_RIGHT|FRAME_GROOVE|LAYOUT_FILL_X, 0, 0, 0, 0)
80
+ frame = FXVerticalFrame.new(gbframe, :opts => LAYOUT_FILL_X, :padding => 0)
81
+ fxtext = FXText.new(frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|TEXT_WORDWRAP)
82
+ fxtext.backColor = fxtext.parent.backColor
83
+ fxtext.disable
84
+ text = "Define Content-Length threshold for Pass-Through. Responses which Content-Length exceed this size will be forwarded."
85
+ fxtext.setText(text)
86
+ input_frame = FXHorizontalFrame.new(frame, :opts => LAYOUT_FILL_X)
87
+ FXLabel.new(input_frame, "Max. Content-Length:")
88
+ @content_length_dt = FXDataTarget.new('')
89
+ #@content_length_dt.value = @settings[:pass_through][:content_length]
90
+ @content_length_dt.value = Watobo::Conf::Interceptor.pass_through[:content_length]
91
+ content_length_field = FXTextField.new(input_frame, 7, :target => @content_length_dt, :selector => FXDataTarget::ID_VALUE, :opts => TEXTFIELD_NORMAL|LAYOUT_SIDE_LEFT)
92
+ content_length_field.handle(self, FXSEL(SEL_UPDATE, 0), nil)
93
+
94
+
95
+
96
+ gbframe = FXGroupBox.new(scroll_area, "Pass-Through Content-Types", LAYOUT_SIDE_RIGHT|FRAME_GROOVE|LAYOUT_FILL_X, 0, 0, 0, 0)
97
+ frame = FXVerticalFrame.new(gbframe, :opts => LAYOUT_FILL_X, :padding => 0)
98
+ fxtext = FXText.new(frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|TEXT_WORDWRAP)
99
+ fxtext.backColor = fxtext.parent.backColor
100
+ fxtext.disable
101
+ text = "Define Content-Types for Pass-Through. Responses which are forwarded will not be inspected by Passive-Checks. So you only should define Content-Types which in general contain binary data."
102
+ fxtext.setText(text)
103
+ input_frame = FXHorizontalFrame.new(frame, :opts => LAYOUT_FILL_X)
104
+ @ct_dt = FXDataTarget.new('')
105
+ @ct_field = FXTextField.new(input_frame, 20, :target => @ct_dt, :selector => FXDataTarget::ID_VALUE, :opts => TEXTFIELD_NORMAL|LAYOUT_SIDE_LEFT|LAYOUT_FILL_X)
106
+ @rem_ct_btn = FXButton.new(input_frame, "Remove" , :opts => BUTTON_NORMAL|LAYOUT_RIGHT)
107
+ @add_ct_btn = FXButton.new(input_frame, "Add" , :opts => BUTTON_NORMAL|LAYOUT_RIGHT)
108
+
109
+ list_frame = FXVerticalFrame.new(frame, :opts => LAYOUT_FILL_X|FRAME_SUNKEN, :padding => 0)
110
+ @ct_list = FXList.new(list_frame, :opts => LIST_EXTENDEDSELECT|LAYOUT_FILL_X|LAYOUT_FILL_Y)
111
+ @ct_list.numVisible = 5
112
+
113
+ @ct_list.connect(SEL_COMMAND){ |sender, sel, item|
114
+ @ct_dt.value = sender.getItemText(item)
115
+ @ct_field.handle(self, FXSEL(SEL_UPDATE, 0), nil)
116
+ }
117
+
118
+ # @settings[:pass_through][:content_types].each do |nup|
119
+ Watobo::Conf::Interceptor.pass_through[:content_types].each do |nup|
120
+ addItem(@ct_list, nup)
121
+ end
122
+
123
+ @rem_ct_btn.connect(SEL_COMMAND){ |sender, sel, item|
124
+ removePattern(@ct_list) if @ct_dt.value != ''
125
+ @ct_dt.value = ''
126
+ @ct_field.handle(self, FXSEL(SEL_UPDATE, 0), nil)
127
+ }
128
+ @add_ct_btn.connect(SEL_COMMAND){ |sender, sel, item|
129
+
130
+ addItem(@ct_list, @ct_dt.value) if @ct_dt.value != ''
131
+ @ct_dt.value = ''
132
+ @ct_field.handle(self, FXSEL(SEL_UPDATE, 0), nil)
133
+ }
134
+
135
+ @ct_dt.connect(SEL_COMMAND){ |sender, sel, item|
136
+
137
+ addItem(@ct_list, @ct_dt.value) if @ct_dt.value != ''
138
+ @ct_dt.value = ''
139
+ @ct_field.handle(self, FXSEL(SEL_UPDATE, 0), nil)
140
+ }
141
+
142
+ end
143
+
144
+ end
145
+
146
+ #
147
+ # Class: SelectNonUniqueParmsDialog
148
+ #
149
+ class InterceptorSettingsDialog < FXDialogBox
150
+
151
+ include Responder
152
+ attr :interceptor_settings
153
+
154
+
155
+ def onAccept(sender, sel, event)
156
+
157
+ @interceptor_settings = @interceptorSettingsFrame.getSettings()
158
+
159
+ getApp().stopModal(self, 1)
160
+ self.hide()
161
+ return 1
162
+ end
163
+
164
+
165
+ def initialize(owner)
166
+ super(owner, "Interceptor Settings", DECOR_TITLE|DECOR_BORDER, :width => 400, :height => 500)
167
+ #@interceptor_settings = interceptor_settings
168
+ FXMAPFUNC(SEL_COMMAND, ID_ACCEPT, :onAccept)
169
+
170
+
171
+ base_frame = FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
172
+
173
+ # puts "create scopeframe with scope:"
174
+ # @project.scope
175
+ # @defineScopeFrame = DefineScopeFrame.new(base_frame, @project.listSites(), YAML.load(YAML.dump(@project.scope)), prefs)
176
+ @interceptorSettingsFrame = InterceptorSettingsFrame.new(base_frame, :opts => SCROLLERS_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_Y)
177
+
178
+ buttons_frame = FXHorizontalFrame.new(base_frame,
179
+ :opts => LAYOUT_FILL_X|LAYOUT_SIDE_TOP)
180
+
181
+ @finishButton = FXButton.new(buttons_frame, "Accept" , nil, nil, :opts => BUTTON_NORMAL|LAYOUT_RIGHT)
182
+ @finishButton.enable
183
+ @finishButton.connect(SEL_COMMAND) do |sender, sel, item|
184
+ #self.handle(self, FXSEL(SEL_COMMAND, ID_CANCEL), nil)
185
+ self.handle(self, FXSEL(SEL_COMMAND, ID_ACCEPT), nil)
186
+ end
187
+
188
+ @cancelButton = FXButton.new(buttons_frame, "Cancel" ,
189
+ :target => self, :selector => FXDialogBox::ID_CANCEL,
190
+ :opts => BUTTON_NORMAL|LAYOUT_RIGHT)
191
+
192
+
193
+ end
194
+ end
195
+ end
196
+ end
197
+
198
+
199
+ if __FILE__ == $0
200
+ # TODO Generated stub
201
+ end
@@ -0,0 +1,97 @@
1
+ # .
2
+ # log_viewer.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 LogViewer < FXVerticalFrame
25
+
26
+ include Watobo::Constants
27
+
28
+ def purge
29
+ @lock.synchronize do
30
+ @log_viewer.text = ''
31
+ end
32
+ end
33
+
34
+ def log(sender=nil, log_level, msg )
35
+ puts "#{sender.class} => #{msg}" if $DEBUG
36
+ begin
37
+ t = Time.now
38
+ now = t.strftime("%m/%d/%Y @ %H:%M:%S")
39
+
40
+ begin
41
+ log_text = case log_level
42
+ when LOG_INFO
43
+ "#{now}: #{msg}\n"
44
+ else
45
+ ""
46
+ end
47
+ rescue => bang
48
+ puts bang
49
+ puts bang.backtrace if $DEBUG
50
+ end
51
+ @lock.synchronize do
52
+ log_text << @log_message unless @log_message.nil?
53
+ @log_message = log_text
54
+ end
55
+ rescue => bang
56
+ puts bang
57
+ puts bang.backtrace
58
+ end
59
+
60
+ end
61
+
62
+ def start_update_timer
63
+ @timer = FXApp.instance.addTimeout( 50, :repeat => true) {
64
+ @lock.synchronize do
65
+ unless @log_message.nil?
66
+ @log_viewer.insertText(0,@log_message) unless @log_message.empty?
67
+ @log_message = nil
68
+ end
69
+ end
70
+ }
71
+ end
72
+
73
+ def destroy
74
+ getApp().removeTimeout(@timer) unless @timer.nil?
75
+ super
76
+ 1
77
+ end
78
+
79
+ def initialize(parent, opts)
80
+ opts[:padding] = 0
81
+ super(parent, opts)
82
+
83
+ @log_message = nil
84
+ @lock = Mutex.new
85
+ @timer = nil
86
+
87
+ #self.connect(SEL_CLOSE, method(:onClose))
88
+
89
+ @log_viewer = FXText.new(self, nil, 0, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
90
+ @log_viewer.editable = false
91
+ start_update_timer
92
+ end
93
+
94
+ end
95
+
96
+ end
97
+ end
@@ -0,0 +1,301 @@
1
+ # .
2
+ # login_wizzard.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
+ require 'fox16'
23
+
24
+ include Fox
25
+
26
+
27
+ class FXLoginWizzard < FXDialogBox
28
+
29
+ attr_accessor :sid_patterns
30
+ attr_accessor :requestids
31
+ attr_accessor :project
32
+
33
+ private
34
+
35
+ def onPatternClick(sender,sel,item)
36
+ @lastpattern=item
37
+ highlight_pattern(@pattern_list.getItemText(item))
38
+ @pattern.value = @pattern_list.getItemText(item)
39
+ @pattern.handle(self, FXSEL(SEL_UPDATE, 0), nil)
40
+ end
41
+
42
+ def onRequestClick(sender,sel,item)
43
+ @lastid=item
44
+ chat = @project.getChat(@request_list.getItemText(@lastid))
45
+ if chat then
46
+ show_chat(chat)
47
+ end
48
+
49
+ end
50
+
51
+ def show_chat(chat)
52
+ @requestView.setText('')
53
+ # Enable the style buffer for this text widget
54
+ @requestView.styled = true
55
+
56
+ atext=chat.request.join
57
+ atext.gsub!(/\r/, "")
58
+ @requestView.appendStyledText("#{atext}")
59
+
60
+ @responseView.setText('')
61
+ # Enable the style buffer for this text widget
62
+ @responseView.styled = true
63
+
64
+ atext=chat.response.join
65
+ atext.gsub!(/\r/, "")
66
+ @responseView.appendStyledText("#{atext}")
67
+ end
68
+
69
+ def update_request_list(idlist)
70
+ @request_list.clearItems
71
+ idlist.each do |chatid|
72
+
73
+ chat = @project.getChat(chatid)
74
+ puts chat.id
75
+ if chat then
76
+ #puts chatid
77
+ @lastid = @request_list.appendItem("#{chatid}")
78
+ @request_list.setItemData(@lastid, chat)
79
+ end
80
+ end
81
+ end
82
+
83
+
84
+
85
+
86
+ def highlight_pattern(pattern)
87
+ return if @lastpattern < 0
88
+ return if @lastid < 0
89
+
90
+ chat = @request_list.getItemData(@lastid)
91
+ req_text=chat.request.join
92
+ req_text.gsub!(/\r/, "")
93
+
94
+ @requestView.setText("")
95
+ @requestView.appendStyledText("#{req_text}")
96
+
97
+ resp_text=chat.response.join
98
+ resp_text.gsub!(/\r/, "")
99
+ @responseView.setText("")
100
+ @responseView.appendStyledText("#{resp_text}")
101
+ begin
102
+ if req_text =~ /#{pattern}/ then
103
+ if $1 and $2 then
104
+ string1 = $1
105
+ string2 = $2
106
+ else
107
+ string1 = pattern
108
+ string2 = pattern
109
+ end
110
+ if req_text.index(string1) then
111
+ @requestView.changeStyle(req_text.index(string1),string1.length,1)
112
+ @requestView.changeStyle(req_text.index(string2),string2.length,1)
113
+ end
114
+ end
115
+
116
+ if resp_text =~ /#{pattern}/ then
117
+ if $1 and $2 then
118
+ string1 = $1
119
+ string2 = $2
120
+ else
121
+ string1 = pattern
122
+ string2 = pattern
123
+ end
124
+ if resp_text.index(string1) then
125
+ @responseView.changeStyle(resp_text.index(string1),string1.length,1)
126
+ @responseView.changeStyle(resp_text.index(string2),string2.length,1)
127
+ end
128
+ end
129
+ rescue
130
+ puts "+ no valid regex"
131
+ end
132
+
133
+ end
134
+
135
+ def addPattern(sender,sel,id)
136
+ if @pattern != "" then
137
+ @sid_patterns.push @pattern.value
138
+ update_pattern_list
139
+ end
140
+ end
141
+
142
+ def remPattern(sender,sel,id)
143
+ if @lastpattern >= 0 then
144
+ pattern = @pattern_list.getItemText(@lastpattern)
145
+ #@pattern_list.removeItem(@lastpattern)
146
+ @sid_patterns.delete(pattern)
147
+ @lastpattern = -1
148
+ update_pattern_list
149
+ end
150
+ end
151
+
152
+ def remRequest(sender,sel,id)
153
+ if @lastid >= 0 then
154
+ id = @request_list.getItemText(@lastid)
155
+
156
+ #@pattern_list.removeItem(@lastpattern)
157
+ @requestids.delete(id)
158
+ @lastid = -1
159
+ update_request_list(@requestids)
160
+ end
161
+ end
162
+
163
+ def updatePatternList
164
+ @pattern_list.clearItems
165
+ @sid_patterns.each do |pat|
166
+ @pattern_list.appendItem("#{pat}")
167
+ end
168
+ end
169
+
170
+ public
171
+
172
+ def add_request(chatid)
173
+
174
+ @requestids.push "#{chatid}"
175
+ chat = nil
176
+
177
+
178
+ @project.chat_list.each do |c|
179
+ chat = c
180
+ # puts "#{chat.id} : #{chatid}"
181
+ break if c.id == chatid
182
+ end
183
+
184
+
185
+ show_chat(chat)
186
+ update_request_list(@requestids)
187
+
188
+ end
189
+
190
+
191
+
192
+
193
+ def initialize(owner, project)
194
+ @project = project
195
+ # Invoke base class initialize function first
196
+ # super(owner, "LoginScript Wizzard", DECOR_TITLE|DECOR_BORDER,:width=>800, :height=>600)
197
+ super(owner, "LoginScript Wizzard", DECOR_ALL,:width=>800, :height=>600)
198
+
199
+ #self.icon = icon
200
+ # @project = nil
201
+ @sid_patterns = []
202
+ @requestids = []
203
+ @pattern = FXDataTarget.new("")
204
+
205
+ @sid_patterns = @project.settings[:sid_patterns].clone
206
+ @requestids = @project.loginscript_ids.clone
207
+
208
+
209
+ @lastid=-1
210
+ @lastpattern=-1
211
+
212
+ lw_main = FXPacker.new(self, :opts => LAYOUT_FILL)
213
+ lw_bottom = FXHorizontalFrame.new(lw_main, :opts => LAYOUT_FILL_X|LAYOUT_SIDE_BOTTOM)
214
+ lw_body = FXHorizontalFrame.new(lw_main, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_SIDE_TOP)
215
+
216
+
217
+ #=============================================================================================
218
+ # body
219
+
220
+ lw_left = FXVerticalFrame.new(lw_body, :opts => LAYOUT_FILL_Y|LAYOUT_SIDE_LEFT)
221
+ lw_right = FXVerticalFrame.new(lw_body, :opts => LAYOUT_FILL_Y|LAYOUT_SIDE_RIGHT|LAYOUT_FILL_X)
222
+
223
+
224
+ #=============================================================================================
225
+ # lw_right
226
+
227
+ req_frame = FXVerticalFrame.new(lw_right, :opts => LAYOUT_FILL_X| LAYOUT_FILL_Y|FRAME_GROOVE)
228
+ resp_frame = FXVerticalFrame.new(lw_right, :opts => LAYOUT_FILL_X| LAYOUT_FILL_Y|FRAME_GROOVE)
229
+
230
+ FXLabel.new(req_frame, "Requests:" )
231
+ @requestView = FXText.new(req_frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
232
+
233
+ # Construct some hilite styles
234
+ hs_red = FXHiliteStyle.new
235
+ hs_red.normalForeColor = FXRGBA(255,255,255,255) #FXColor::Red
236
+ hs_red.normalBackColor = FXRGBA(255,0,0,1) # FXColor::White
237
+ hs_red.style = FXText::STYLE_BOLD
238
+ # Enable the style buffer for this text widget
239
+ @requestView.styled = true
240
+ # Set the styles
241
+ @requestView.hiliteStyles = [hs_red]
242
+
243
+
244
+
245
+ FXLabel.new(resp_frame, "Response:" )
246
+ @responseView = FXText.new(resp_frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
247
+ @responseView.styled = true
248
+ # Set the styles
249
+ @responseView.hiliteStyles = [hs_red]
250
+
251
+ #=============================================================================================
252
+ # sid-pattern
253
+ sid_frame = FXVerticalFrame.new(lw_left, :opts => LAYOUT_FILL_X|FRAME_GROOVE)
254
+ lw_sid = FXHorizontalFrame.new(sid_frame, :opts => LAYOUT_FILL_X)
255
+ FXLabel.new(lw_sid, "Pattern:" )
256
+ FXTextField.new(lw_sid, 20,
257
+ :target => @pattern, :selector => FXDataTarget::ID_VALUE,
258
+ :opts => TEXTFIELD_NORMAL|LAYOUT_SIDE_LEFT)
259
+
260
+ addPattern=FXButton.new(lw_sid, " + " , :opts => BUTTON_NORMAL|LAYOUT_LEFT)
261
+ addPattern.connect(SEL_COMMAND, method(:addPattern))
262
+
263
+ remPattern=FXButton.new(lw_sid, " - " , :opts => BUTTON_NORMAL|LAYOUT_LEFT)
264
+ remPattern.connect(SEL_COMMAND, method(:remPattern))
265
+
266
+ @pattern_list = FXList.new(sid_frame, :opts => LIST_EXTENDEDSELECT|LAYOUT_FILL_X|LAYOUT_FILL_Y)
267
+ @pattern_list.numVisible = 8
268
+
269
+ @pattern_list.connect(SEL_COMMAND,method(:onPatternClick))
270
+
271
+ updatePatternList
272
+
273
+
274
+
275
+ #=============================================================================================
276
+ # request-list
277
+
278
+ lw_req_list = FXVerticalFrame.new(lw_left, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_GROOVE)
279
+ lw_request_list_header = FXHorizontalFrame.new(lw_req_list, :opts => LAYOUT_FILL_X)
280
+ FXLabel.new(lw_request_list_header, "Login-Requests:" )
281
+
282
+ @request_list = FXList.new(lw_req_list, :opts => LIST_EXTENDEDSELECT|LAYOUT_FILL_X|LAYOUT_FILL_Y)
283
+ @request_list.connect(SEL_COMMAND,method(:onRequestClick))
284
+
285
+ remRequest=FXButton.new(lw_request_list_header, " - " , :opts => BUTTON_NORMAL|LAYOUT_RIGHT)
286
+ remRequest.connect(SEL_COMMAND, method(:remRequest))
287
+ #=============================================================================================
288
+
289
+
290
+
291
+ #=============================================================================================
292
+ # lw_bottom
293
+
294
+ FXButton.new(lw_bottom, "OK" ,
295
+ :target => self, :selector => FXDialogBox::ID_ACCEPT,
296
+ :opts => BUTTON_NORMAL|LAYOUT_RIGHT)
297
+ FXButton.new(lw_bottom, "Cancel" ,
298
+ :target => self, :selector => FXDialogBox::ID_CANCEL,
299
+ :opts => BUTTON_NORMAL|LAYOUT_RIGHT)
300
+ end
301
+ end