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,341 @@
1
+ # .
2
+ # dashboard.rb
3
+ #
4
+ # Copyright 2012 by siberas, http://www.siberas.de
5
+ #
6
+ # This file is part of WATOBO (Web Application Tool Box)
7
+ # http://watobo.sourceforge.com
8
+ #
9
+ # WATOBO is free software; you can redistribute it and/or modify
10
+ # it under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation version 2 of the License.
12
+ #
13
+ # WATOBO is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with WATOBO; if not, write to the Free Software
20
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
+ # .
22
+ module Watobo
23
+
24
+ module Gui
25
+
26
+ class ProgressInfo < FXVerticalFrame
27
+
28
+ def increment(i)
29
+ @lock.synchronize do
30
+ @progress += i
31
+ @total += i
32
+ end
33
+ end
34
+
35
+ def update_progress
36
+ @lock.synchronize do
37
+ @pbar.increment(@progress)
38
+ @progress = 0
39
+ @pbar.barColor = 'green' if @pbar.progress == @pbar.total
40
+ @label.text = "#{@check_name} #{@pbar.progress}/#{@pbar.total}"
41
+ end
42
+ end
43
+
44
+ def initialize(owner, check_name, num_checks)
45
+ begin
46
+ super(owner, :opts => LAYOUT_FILL_X|FRAME_GROOVE|LAYOUT_TOP)
47
+ @lock = Mutex.new
48
+ @progress = 0
49
+ @total = 0
50
+ @check_name = check_name
51
+ @label = FXLabel.new(self, check_name, :opts => LAYOUT_LEFT)
52
+
53
+ # puts l
54
+ @pbar = FXProgressBar.new(self, nil, 0, LAYOUT_FILL_X|FRAME_SUNKEN|FRAME_THICK|PROGRESSBAR_HORIZONTAL)
55
+ @pbar.progress = 0
56
+ @pbar.total = num_checks
57
+ puts "#{check_name} has #{num_checks} Checks"
58
+ @pbar.barColor = 0
59
+ if num_checks == 0 then
60
+ @pbar.barColor = 'grey'
61
+ else
62
+ @pbar.barColor = FXRGB(255,0,0)
63
+ end
64
+ rescue => bang
65
+ puts "!!!ERROR: could not add progress info"
66
+ puts bang
67
+ puts bang.backtrace if $DEBUG
68
+ end
69
+ end
70
+ end
71
+
72
+ class ScanProgressFrame < FXVerticalFrame
73
+ attr :progress_bars
74
+ attr :scan_status
75
+
76
+ include Watobo::Gui::Icons
77
+
78
+ def setup(modules=[])
79
+ @progress_bars.clear
80
+
81
+ @progress_frame.each_child do |child|
82
+ @progress_frame.removeChild(child)
83
+ end
84
+
85
+
86
+ #@progress_bars = Hash.new
87
+ modules.each do |check_name, num_checks|
88
+ puts "* new ProgressInfo: #{check_name} - #{num_checks}"
89
+ pi = ProgressInfo.new(@progress_frame, check_name, num_checks)
90
+ pi.create
91
+
92
+ @progress_bars[check_name] = pi
93
+ end
94
+ @progress_frame.recalc
95
+ @progress_frame.update
96
+
97
+
98
+ end
99
+
100
+ def initialize(owner, opts)
101
+ super(owner, opts)
102
+
103
+ # frame = FXScrollWindow.new(self, SCROLLERS_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_Y)
104
+ frame = FXScrollWindow.new(self, SCROLLERS_NORMAL|LAYOUT_FILL_X|LAYOUT_FILL_Y)
105
+ info_container = FXVerticalFrame.new(frame, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
106
+ frame = FXHorizontalFrame.new(info_container, :opts => LAYOUT_FILL_X)
107
+ FXLabel.new(frame, "Scan-Status:")
108
+
109
+ @scan_status = FXLabel.new(frame, "N/A")
110
+ @progress_frame = FXVerticalFrame.new(info_container, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
111
+ #FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y, :padding => 0)
112
+ #FXLabel.new(@main, "No Information Available")
113
+ @progress_bars = Hash.new
114
+ end
115
+ end
116
+
117
+ class ProjectInfo < FXVerticalFrame
118
+ def update(project)
119
+ if project then
120
+ @project_name.text = project.settings[:project_name]
121
+ @session_name.text = project.settings[:session_name]
122
+ @project_path.text = project.settings[:project_path]
123
+ @session_path.text = project.settings[:session_path]
124
+
125
+ @number_active_checks.text = project.active_checks.length.to_s
126
+ @number_passive_checks = project.passive_checks.length.to_s
127
+ @number_total_chats.text = project.chats.length.to_s
128
+ end
129
+
130
+ end
131
+
132
+ def initialize(owner, opts)
133
+ super(owner, opts)
134
+ frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
135
+ FXLabel.new(frame, "Project:")
136
+ @project_name = FXLabel.new(frame,"-")
137
+
138
+ frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
139
+ FXLabel.new(frame, "Session:")
140
+ @session_name = FXLabel.new(frame,"-")
141
+
142
+ frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
143
+ FXLabel.new(frame, "Project Path:")
144
+ @project_path = FXLabel.new(frame,"-")
145
+
146
+ frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
147
+ FXLabel.new(frame, "Session Path:")
148
+ @session_path = FXLabel.new(frame,"-")
149
+
150
+ frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
151
+ FXLabel.new(frame, "Number available ActiveChecks:")
152
+ @number_active_checks = FXLabel.new(frame,"-")
153
+
154
+ frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
155
+ FXLabel.new(frame, "Number of PassiveChecks:")
156
+ @number_passive_checks = FXLabel.new(frame,"-")
157
+
158
+ frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
159
+ FXLabel.new(frame, "Number Current Chats:")
160
+ @number_total_chats = FXLabel.new(frame,"-")
161
+
162
+ # frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
163
+ # FXLabel.new(frame, "Number Critical Findings:")
164
+ # @number_critical_findings = FXLabel.new(frame,"-")
165
+
166
+ # frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
167
+ # FXLabel.new(frame, "Number High Findings:")
168
+ # @number_high_findings = FXLabel.new(frame,"-")
169
+
170
+ # frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
171
+ # FXLabel.new(frame, "Number Medium Findings:")
172
+ # @number_medium_findings = FXLabel.new(frame,"-")
173
+
174
+ # frame = FXHorizontalFrame.new(self, :opts => LAYOUT_FILL_X)
175
+ # FXLabel.new(frame, "Number Low Findings:")
176
+ # @number_low_findings = FXLabel.new(frame,"-")
177
+ end
178
+ end
179
+
180
+
181
+ class Dashboard < FXVerticalFrame
182
+ include Watobo::Gui::Icons
183
+
184
+ def setupScanProgressFrame(scan_modules)
185
+ @scan_progress_frame.setup(scan_modules)
186
+ end
187
+
188
+ def setScanStatus(status)
189
+ @scan_progress_frame.scan_status.text = status
190
+ end
191
+
192
+ def progressDisplays()
193
+ return @scan_progress_frame.progress_bars()
194
+ end
195
+
196
+ def module_finished(mod)
197
+ @progress_lock.synchronize do
198
+ begin
199
+ name = mod
200
+ name = mod.info[:check_name] if mod.respond_to? :run_checks
201
+ pbar = @scan_progress_frame.progress_bars[name]
202
+ pbar.progress = pbar.total
203
+ pbar.barColor = 'green' # FXRGB(0,255,0)
204
+ rescue => bang
205
+ puts bang
206
+ puts bang.backtrace if $DEBUG
207
+ end
208
+ end
209
+ end
210
+
211
+ def progress(m)
212
+ @progress_lock.synchronize do
213
+ name = m
214
+ name = m.info[:check_name] if m.respond_to? :run_checks
215
+ @scan_progress_frame.progress_bars[name].increment(1)
216
+ # p @scan_progress_frame.progress_bars[name].total
217
+ end
218
+ end
219
+
220
+ def updateProjectInfo(project)
221
+ @project = project
222
+ @project_info_frame.update(@project)
223
+ end
224
+
225
+ def update_status(check_module, progress_index)
226
+ if @module_list.has_key?(check_module) then
227
+ #puts "updating status window"
228
+ pbar = @module_list[check_module][:progress]
229
+ pbar.total = @project.chats.length-1
230
+ pbar.progress = progress_index
231
+ if progress_index == pbar.total
232
+
233
+ pbar.barColor=FXRGB(0,255,0)
234
+ end
235
+ else
236
+ puts "check_module not found in dashboard"
237
+ end
238
+ end
239
+
240
+ def setup_status_bars(frame, module_list)
241
+
242
+ module_list.each do |m|
243
+
244
+ dummy = FXVerticalFrame.new(frame,LAYOUT_FILL_X|FRAME_GROOVE)
245
+ dummy.create
246
+
247
+ label = "undefined"
248
+ begin
249
+
250
+ label = m.check_name
251
+ rescue => bang
252
+ # puts "no check name defined"
253
+ # puts bang
254
+ end
255
+ # puts "."
256
+ l = FXLabel.new(dummy, label, :opts => LAYOUT_LEFT)
257
+ l.create
258
+ # puts l
259
+ pbar = FXProgressBar.new(dummy, nil, 0, LAYOUT_FILL_X|FRAME_SUNKEN|FRAME_THICK|PROGRESSBAR_HORIZONTAL)
260
+ pbar.create
261
+
262
+ pbar.progress = 0
263
+ pbar.total = @project.chats.length-1
264
+ pbar.barColor=0
265
+ pbar.barColor=FXRGB(255,0,0)
266
+ @module_list[m] = {
267
+ :progress => pbar,
268
+ }
269
+
270
+ end
271
+
272
+ end
273
+
274
+
275
+ def start_update_timer
276
+ @timer = FXApp.instance.addTimeout( 50, :repeat => true) {
277
+ @scan_progress_frame.progress_bars.each_value do |p|
278
+ p.update_progress
279
+ end
280
+ }
281
+ end
282
+
283
+ def initialize(parent)
284
+ begin
285
+
286
+ super(parent, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN)
287
+ #db_title = FXLabel.new(self, "DASHBOARD", :opts => LAYOUT_LEFT)
288
+ @project = nil
289
+ @progress_lock = Mutex.new
290
+
291
+ main = FXVerticalFrame.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_GROOVE)
292
+ main.backColor = FXColor::White
293
+
294
+ frame = FXHorizontalFrame.new(main, :opts => LAYOUT_FILL_X|FRAME_GROOVE)
295
+ frame.backColor = FXColor::White
296
+ title_icon = FXButton.new(frame, '', ICON_DASHBOARD, :opts => FRAME_NONE)
297
+ title_icon.backColor = FXColor::White
298
+
299
+
300
+ @font_title = FXFont.new(getApp(), "helvetica", 14, FONTWEIGHT_BOLD, FONTSLANT_ITALIC, FONTENCODING_DEFAULT)
301
+ title = FXLabel.new(frame, "Dashboard", nil, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)
302
+ title.backColor = FXColor::White
303
+ title.setFont(@font_title)
304
+ title.justify = JUSTIFY_LEFT|JUSTIFY_CENTER_Y
305
+
306
+ @tabBook = FXTabBook.new(main, nil, 0, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_RIGHT)
307
+ @tabBook.backColor = FXColor::White
308
+
309
+ tab = FXTabItem.new(@tabBook, "Project Information", nil)
310
+ # tab.backColor = FXColor::White
311
+ @project_info_frame = ProjectInfo.new(@tabBook, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED)
312
+ # @project_info_frame.backColor = FXColor::White
313
+ tab = FXTabItem.new(@tabBook, "Scan Information", nil)
314
+ # tab.backColor = FXColor::White
315
+
316
+ @scan_progress_frame = ScanProgressFrame.new(@tabBook, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_RAISED)
317
+
318
+ @tabBook.connect(SEL_COMMAND) do |sender, sel, tabItem|
319
+
320
+ case tabItem.to_i
321
+ when 0
322
+ # puts "Login Script Selected"
323
+ @project_info_frame.update(@project)
324
+ when 1
325
+ # puts "Session IDs Selected"
326
+
327
+ when 2
328
+ #
329
+ end
330
+ end
331
+
332
+ start_update_timer
333
+
334
+ rescue => bang
335
+ puts "Error creating dashboard :("
336
+ puts bang
337
+ end
338
+ end
339
+ end
340
+ end
341
+ end