watobo 0.9.12 → 0.9.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (263) hide show
  1. data/.yardopts +2 -2
  2. data/{CHANGELOG → CHANGELOG.md} +62 -0
  3. data/README.md +30 -0
  4. data/bin/nfq_server.rb +4 -3
  5. data/bin/watobo_gui.rb +1 -1
  6. data/config/ott_cache.yml +4 -0
  7. data/config/scanner.yml +1 -18
  8. data/config/sid_cache.yml +14 -0
  9. data/extras/private-hostspot.sh +17 -0
  10. data/extras/watobo-installer.sh +61 -0
  11. data/extras/watobo-transparent.sh +38 -0
  12. data/icons/BestPractice_16x16.ico +0 -0
  13. data/icons/BestPractice_24x24.ico +0 -0
  14. data/lib/watobo/adapters/data_store.rb +25 -3
  15. data/lib/watobo/adapters/file/file_store.rb +19 -11
  16. data/lib/watobo/adapters/session_store.rb +3 -2
  17. data/lib/watobo/adapters.rb +1 -1
  18. data/lib/watobo/ca.rb +1 -1
  19. data/lib/watobo/config.rb +17 -19
  20. data/lib/watobo/constants.rb +3 -2
  21. data/lib/watobo/core/active_check.rb +62 -40
  22. data/lib/watobo/core/active_checks.rb +73 -0
  23. data/lib/watobo/core/ca.rb +3 -2
  24. data/lib/watobo/core/cert_store.rb +3 -2
  25. data/lib/watobo/core/chat.rb +122 -0
  26. data/lib/watobo/core/chats.rb +301 -0
  27. data/lib/watobo/core/conversation.rb +71 -0
  28. data/lib/watobo/core/cookie.rb +9 -25
  29. data/lib/watobo/core/finding.rb +89 -0
  30. data/lib/watobo/core/findings.rb +132 -0
  31. data/lib/watobo/core/forwarding_proxy.rb +4 -2
  32. data/lib/watobo/core/fuzz_gen.rb +3 -2
  33. data/lib/watobo/core/intercept_carver.rb +24 -12
  34. data/lib/watobo/core/intercept_filter.rb +4 -3
  35. data/lib/watobo/core/interceptor.rb +9 -888
  36. data/lib/watobo/core/min_class.rb +27 -0
  37. data/lib/watobo/core/netfilter_queue.rb +3 -2
  38. data/lib/watobo/core/ott_cache.rb +156 -0
  39. data/lib/watobo/core/parameter.rb +66 -0
  40. data/lib/watobo/core/passive_check.rb +15 -22
  41. data/lib/watobo/core/passive_checks.rb +72 -0
  42. data/lib/watobo/core/passive_scanner.rb +69 -0
  43. data/lib/watobo/core/plugin.rb +33 -0
  44. data/lib/watobo/core/project.rb +40 -547
  45. data/lib/watobo/core/proxy.rb +7 -2
  46. data/lib/watobo/core/request.rb +95 -10
  47. data/lib/watobo/core/response.rb +44 -3
  48. data/lib/watobo/core/scanner.rb +6 -7
  49. data/lib/watobo/core/scanner3.rb +439 -0
  50. data/lib/watobo/core/scope.rb +106 -0
  51. data/lib/watobo/core/session.rb +106 -286
  52. data/lib/watobo/core/sid_cache.rb +121 -0
  53. data/lib/watobo/core/subscriber.rb +48 -0
  54. data/lib/watobo/core.rb +2 -2
  55. data/lib/watobo/defaults.rb +3 -2
  56. data/lib/watobo/external/diff/lcs/array.rb +1 -1
  57. data/lib/watobo/external/diff/lcs/block.rb +1 -1
  58. data/lib/watobo/external/diff/lcs/callbacks.rb +1 -1
  59. data/lib/watobo/external/diff/lcs/change.rb +1 -1
  60. data/lib/watobo/external/diff/lcs/hunk.rb +1 -1
  61. data/lib/watobo/external/diff/lcs/ldiff.rb +1 -1
  62. data/lib/watobo/external/diff/lcs/string.rb +1 -1
  63. data/lib/watobo/external/diff/lcs.rb +1 -1
  64. data/lib/watobo/external/ntlm/ntlm.rb +1 -1
  65. data/lib/watobo/externals.rb +1 -1
  66. data/lib/watobo/framework/create_project.rb +19 -12
  67. data/lib/watobo/framework/init.rb +4 -3
  68. data/lib/watobo/framework/init_modules.rb +32 -3
  69. data/lib/watobo/framework/license_text.rb +3 -2
  70. data/lib/watobo/framework/load_chat.rb +36 -0
  71. data/lib/watobo/framework.rb +2 -2
  72. data/lib/watobo/gui/about_watobo.rb +3 -2
  73. data/lib/watobo/gui/browser_preview.rb +4 -3
  74. data/lib/watobo/gui/certificate_dialog.rb +3 -2
  75. data/lib/watobo/gui/chat_diff.rb +6 -14
  76. data/lib/watobo/gui/chatviewer_frame.rb +30 -5
  77. data/lib/watobo/gui/checkboxtree.rb +13 -12
  78. data/lib/watobo/gui/checks_policy_frame.rb +8 -10
  79. data/lib/watobo/gui/client_cert_dialog.rb +8 -6
  80. data/lib/watobo/gui/confirm_scan_dialog.rb +5 -3
  81. data/lib/watobo/gui/conversation_table.rb +288 -51
  82. data/lib/watobo/gui/conversation_table_ctrl.rb +36 -3
  83. data/lib/watobo/gui/conversation_table_ctrl2.rb +416 -0
  84. data/lib/watobo/gui/csrf_token_dialog.rb +25 -33
  85. data/lib/watobo/gui/dashboard.rb +47 -45
  86. data/lib/watobo/gui/define_scope_frame.rb +27 -22
  87. data/lib/watobo/gui/differ_frame.rb +238 -0
  88. data/lib/watobo/gui/edit_comment.rb +3 -2
  89. data/lib/watobo/gui/edit_scope_dialog.rb +7 -6
  90. data/lib/watobo/gui/finding_info.rb +3 -2
  91. data/lib/watobo/gui/findings_tree.rb +101 -26
  92. data/lib/watobo/gui/full_scan_dialog.rb +5 -6
  93. data/lib/watobo/gui/fuzzer_gui.rb +51 -18
  94. data/lib/watobo/gui/goto_url_dialog.rb +92 -0
  95. data/lib/watobo/gui/hex_viewer.rb +16 -5
  96. data/lib/watobo/gui/html_viewer.rb +309 -0
  97. data/lib/watobo/gui/intercept_filter_dialog.rb +3 -2
  98. data/lib/watobo/gui/interceptor_gui.rb +5 -4
  99. data/lib/watobo/gui/interceptor_settings_dialog.rb +4 -3
  100. data/lib/watobo/gui/list_box.rb +4 -3
  101. data/lib/watobo/gui/log_file_viewer.rb +55 -0
  102. data/lib/watobo/gui/log_viewer.rb +3 -82
  103. data/lib/watobo/gui/login_wizzard.rb +3 -3
  104. data/lib/watobo/gui/main_window.rb +183 -164
  105. data/lib/watobo/gui/manual_request_editor.rb +157 -642
  106. data/lib/watobo/gui/master_pw_dialog.rb +3 -2
  107. data/lib/watobo/gui/mixins/gui_settings.rb +3 -2
  108. data/lib/watobo/gui/page_tree.rb +3 -2
  109. data/lib/watobo/gui/password_policy_dialog.rb +3 -2
  110. data/lib/watobo/gui/plugin_board.rb +103 -73
  111. data/lib/watobo/gui/preferences_dialog.rb +3 -2
  112. data/lib/watobo/gui/progress_window.rb +3 -2
  113. data/lib/watobo/gui/project_wizzard.rb +3 -2
  114. data/lib/watobo/gui/proxy_dialog.rb +3 -2
  115. data/lib/watobo/gui/quick_scan_dialog.rb +17 -32
  116. data/lib/watobo/gui/request_builder_frame.rb +134 -0
  117. data/lib/watobo/gui/request_editor.rb +14 -9
  118. data/lib/watobo/gui/rewrite_filters_dialog.rb +4 -3
  119. data/lib/watobo/gui/rewrite_rules_dialog.rb +4 -3
  120. data/lib/watobo/gui/save_chat_dialog.rb +7 -3
  121. data/lib/watobo/gui/scanner_settings_dialog.rb +4 -3
  122. data/lib/watobo/gui/select_chat_dialog.rb +15 -25
  123. data/lib/watobo/gui/session_management_dialog.rb +21 -25
  124. data/lib/watobo/gui/sites_tree.rb +5 -4
  125. data/lib/watobo/gui/status_bar.rb +3 -2
  126. data/lib/watobo/gui/table_editor.rb +398 -386
  127. data/lib/watobo/gui/tagless_viewer.rb +3 -2
  128. data/lib/watobo/gui/templates/plugin.rb +3 -2
  129. data/lib/watobo/gui/templates/plugin2.rb +4 -3
  130. data/lib/watobo/gui/templates/plugin_base.rb +168 -0
  131. data/lib/watobo/gui/text_viewer.rb +49 -3
  132. data/lib/watobo/gui/transcoder_window.rb +3 -2
  133. data/lib/watobo/gui/utils/gui_utils.rb +5 -4
  134. data/lib/watobo/gui/utils/init_icons.rb +5 -2
  135. data/lib/watobo/gui/utils/load_icons.rb +3 -2
  136. data/lib/watobo/gui/utils/load_plugins.rb +22 -5
  137. data/lib/watobo/gui/utils/master_password.rb +3 -2
  138. data/lib/watobo/gui/utils/save_default_settings.rb +7 -5
  139. data/lib/watobo/gui/utils/save_project_settings.rb +1 -1
  140. data/lib/watobo/gui/utils/save_proxy_settings.rb +4 -3
  141. data/lib/watobo/gui/utils/save_scanner_settings.rb +5 -4
  142. data/lib/watobo/gui/utils/session_history.rb +3 -2
  143. data/lib/watobo/gui/workspace_dialog.rb +3 -2
  144. data/lib/watobo/gui/www_auth_dialog.rb +4 -3
  145. data/lib/watobo/gui/xml_viewer_frame.rb +3 -2
  146. data/lib/watobo/gui.rb +6 -3
  147. data/lib/watobo/http/cookies/cookies.rb +66 -0
  148. data/lib/watobo/http/data/data.rb +68 -0
  149. data/lib/watobo/{gui/mixins/subscriber.rb → http/url/url.rb} +33 -19
  150. data/lib/watobo/http_socket/agent.rb +851 -0
  151. data/lib/watobo/http_socket/client_socket.rb +290 -0
  152. data/lib/watobo/http_socket/connection.rb +423 -0
  153. data/lib/watobo/http_socket/http_socket.rb +273 -0
  154. data/lib/watobo/http_socket/ntlm_auth.rb +152 -0
  155. data/lib/watobo/http_socket/proxy.rb +31 -0
  156. data/lib/watobo/http_socket.rb +25 -0
  157. data/lib/watobo/interceptor/proxy.rb +883 -0
  158. data/lib/watobo/interceptor/transparent.rb +37 -0
  159. data/lib/watobo/interceptor.rb +25 -0
  160. data/lib/watobo/mixins/check_info.rb +50 -0
  161. data/lib/watobo/mixins/httpparser.rb +92 -20
  162. data/lib/watobo/mixins/request_parser.rb +103 -88
  163. data/lib/watobo/mixins/shapers.rb +42 -11
  164. data/lib/watobo/mixins/transcoders.rb +61 -57
  165. data/lib/watobo/mixins.rb +3 -2
  166. data/lib/watobo/parser/html.rb +106 -0
  167. data/lib/watobo/parser.rb +22 -0
  168. data/lib/watobo/utils/check_regex.rb +3 -2
  169. data/lib/watobo/utils/copy_object.rb +3 -2
  170. data/lib/watobo/utils/crypto.rb +3 -2
  171. data/lib/watobo/utils/expand_range.rb +3 -2
  172. data/lib/watobo/utils/file_management.rb +7 -3
  173. data/lib/watobo/utils/hexprint.rb +3 -2
  174. data/lib/watobo/utils/load_chat.rb +4 -3
  175. data/lib/watobo/utils/load_icon.rb +3 -2
  176. data/lib/watobo/utils/print_debug.rb +3 -2
  177. data/lib/watobo/utils/response_builder.rb +6 -4
  178. data/lib/watobo/utils/response_hash.rb +66 -49
  179. data/lib/watobo/utils/secure_eval.rb +3 -2
  180. data/lib/watobo/utils/strings.rb +3 -2
  181. data/lib/watobo/utils/text2request.rb +4 -5
  182. data/lib/watobo/utils/url.rb +46 -0
  183. data/lib/watobo/utils.rb +3 -2
  184. data/lib/watobo.rb +13 -3
  185. data/modules/active/Apache/mod_status.rb +15 -11
  186. data/modules/active/Flash/crossdomain.rb +17 -14
  187. data/modules/active/RoR/cve_2013_015x.rb +21 -0
  188. data/modules/active/directories/dirwalker.rb +10 -16
  189. data/modules/active/discovery/fileextensions.rb +10 -7
  190. data/modules/active/discovery/http_methods.rb +8 -9
  191. data/modules/active/domino/domino_db.rb +10 -11
  192. data/modules/active/dotNET/custom_errors.rb +124 -0
  193. data/modules/active/dotNET/dotnet_files.rb +112 -0
  194. data/modules/active/fileinclusion/lfi_simple.rb +9 -7
  195. data/modules/active/jboss/jboss_basic.rb +12 -9
  196. data/modules/active/sap/its_commands.rb +10 -9
  197. data/modules/active/sap/its_service_parameter.rb +10 -9
  198. data/modules/active/sap/its_services.rb +10 -9
  199. data/modules/active/sap/its_xss.rb +11 -10
  200. data/modules/active/siebel/siebel_apps.rb +14 -16
  201. data/modules/active/sqlinjection/sql_boolean.rb +139 -75
  202. data/modules/active/sqlinjection/sqli_error.rb +9 -6
  203. data/modules/active/sqlinjection/sqli_timing.rb +13 -11
  204. data/modules/active/xml/xml_xxe.rb +134 -0
  205. data/modules/active/xss/{xss_rated.rb → xss_ng.rb} +89 -56
  206. data/modules/active/xss/xss_simple.rb +9 -6
  207. data/modules/passive/ajax.rb +85 -0
  208. data/modules/passive/autocomplete.rb +78 -0
  209. data/modules/passive/cookie_options.rb +3 -2
  210. data/modules/passive/cookie_xss.rb +3 -2
  211. data/modules/passive/detect_code.rb +7 -4
  212. data/modules/passive/detect_fileupload.rb +3 -2
  213. data/modules/passive/detect_infrastructure.rb +7 -4
  214. data/modules/passive/detect_one_time_tokens.rb +3 -2
  215. data/modules/passive/dirindexing.rb +3 -2
  216. data/modules/passive/disclosure_domino.rb +3 -2
  217. data/modules/passive/disclosure_emails.rb +3 -2
  218. data/modules/passive/disclosure_ipaddr.rb +3 -2
  219. data/modules/passive/filename_as_parameter.rb +3 -2
  220. data/modules/passive/form_spotter.rb +10 -7
  221. data/modules/passive/hidden_fields.rb +73 -0
  222. data/modules/passive/hotspots.rb +7 -4
  223. data/modules/passive/in_script_parameter.rb +3 -2
  224. data/modules/passive/multiple_server_headers.rb +4 -3
  225. data/modules/passive/possible_login.rb +3 -2
  226. data/modules/passive/redirect_url.rb +3 -2
  227. data/modules/passive/redirectionz.rb +6 -3
  228. data/modules/passive/xss_dom.rb +16 -9
  229. data/plugins/catalog/catalog.rb +119 -193
  230. data/plugins/crawler/crawler.rb +4 -3
  231. data/plugins/crawler/gui/auth_frame.rb +3 -2
  232. data/plugins/crawler/gui/crawler_gui.rb +3 -2
  233. data/plugins/crawler/gui/general_settings_frame.rb +3 -2
  234. data/plugins/crawler/gui/hooks_frame.rb +3 -2
  235. data/plugins/crawler/gui/scope_frame.rb +3 -2
  236. data/plugins/crawler/gui/settings_tabbook.rb +3 -2
  237. data/plugins/crawler/gui/status_frame.rb +3 -2
  238. data/plugins/crawler/gui.rb +3 -2
  239. data/plugins/crawler/lib/bags.rb +3 -2
  240. data/plugins/crawler/lib/constants.rb +3 -2
  241. data/plugins/crawler/lib/engine.rb +3 -2
  242. data/plugins/crawler/lib/grabber.rb +3 -2
  243. data/plugins/crawler/lib/uri_mp.rb +1 -1
  244. data/plugins/filefinder/filefinder.rb +92 -70
  245. data/plugins/sqlmap/bin/test.rb +3 -2
  246. data/plugins/sqlmap/gui/main.rb +3 -2
  247. data/plugins/sqlmap/gui/options_frame.rb +4 -3
  248. data/plugins/sqlmap/gui.rb +1 -1
  249. data/plugins/sqlmap/lib/sqlmap_ctrl.rb +3 -2
  250. data/plugins/sqlmap/sqlmap.rb +1 -1
  251. data/plugins/sslchecker/cli/sslchecker_cli.rb +1 -1
  252. data/plugins/sslchecker/gui/cipher_table.rb +17 -10
  253. data/plugins/sslchecker/gui/gui.rb +59 -56
  254. data/plugins/sslchecker/gui/sslchecker.rb +1 -1
  255. data/plugins/sslchecker/lib/check.rb +43 -18
  256. data/plugins/wshell/gui/main.rb +130 -0
  257. data/plugins/wshell/icons/wsh.ico +0 -0
  258. data/plugins/wshell/lib/core.rb +99 -0
  259. data/plugins/wshell/wshell.rb +33 -0
  260. metadata +80 -8
  261. data/README +0 -26
  262. data/lib/watobo/core/http_socket.rb +0 -161
  263. data/lib/watobo/gui/plugin/base.rb +0 -82
@@ -1,7 +1,7 @@
1
1
  # .
2
2
  # shapers.rb
3
3
  #
4
- # Copyright 2012 by siberas, http://www.siberas.de
4
+ # Copyright 2013 by siberas, http://www.siberas.de
5
5
  #
6
6
  # This file is part of WATOBO (Web Application Tool Box)
7
7
  # http://watobo.sourceforge.com
@@ -19,7 +19,8 @@
19
19
  # along with WATOBO; if not, write to the Free Software
20
20
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
21
  # .
22
- module Watobo
22
+ # @private
23
+ module Watobo#:nodoc: all
23
24
  module Mixin
24
25
  module Shaper
25
26
  module Web10
@@ -43,8 +44,9 @@ module Watobo
43
44
  def replaceFileExt(new_file)
44
45
  # puts "replace element #{new_element}"
45
46
  begin
46
- new_file.gsub!(/^\//, "")
47
- self.first.gsub!(/([^\?]*\/)(.*) (HTTP.*)/i,"\\1#{new_file} \\3")
47
+ file = new_file.strip
48
+ file.gsub!(/^\//, "")
49
+ self.first.gsub!(/([^\?]*\/)(.*) (HTTP.*)/i,"\\1#{file} \\3")
48
50
  rescue => bang
49
51
  puts bang
50
52
  end
@@ -66,12 +68,7 @@ module Watobo
66
68
  end
67
69
 
68
70
  def strip_path()
69
- if self.first =~ /(^[^[:space:]]{1,} https?:\/\/[\-0-9a-zA-Z.]*[:0-9]{0,6}[^\?]*\/).* (HTTP.*)/i then
70
- new_line = "#{$1} #{$2}"
71
- self.shift
72
- self.unshift(new_line)
73
- end
74
- # puts "* StripPath: #{self.first}"
71
+ self.first.gsub!(/([^\?]*\/)(.*) (HTTP.*)/i,"\\1# \\3")
75
72
  end
76
73
 
77
74
  def setDir(dir)
@@ -121,6 +118,8 @@ module Watobo
121
118
  self.replace(self_copy)
122
119
 
123
120
  end
121
+
122
+ alias_method :add_header, :addHeader
124
123
 
125
124
  def removeURI
126
125
  if self.first =~ /(^[^[:space:]]{1,}) (https?:\/\/[\-0-9a-zA-Z.]*[:0-9]{0,6}\/)/ then
@@ -139,7 +138,7 @@ module Watobo
139
138
  self.pop if self[-2].strip.empty?
140
139
  end
141
140
 
142
- def set_header(header, value)
141
+ def set_header_UNUSED(header, value)
143
142
  self.each do |h|
144
143
  break if h.strip.empty?
145
144
  if h =~ /^#{header}:/
@@ -198,6 +197,8 @@ module Watobo
198
197
  puts "====="
199
198
  end
200
199
  end
200
+
201
+ alias_method :remove_header, :removeHeader
201
202
 
202
203
  # removeUrlParms
203
204
  # Function: Remove all parameter within the URL
@@ -354,6 +355,33 @@ module Watobo
354
355
  end
355
356
  }
356
357
  end
358
+
359
+ def set_content_length(length)
360
+ set_header("Content-Length", length)
361
+ end
362
+
363
+ def set_content_type(ctype)
364
+ set_header("Content-Type", ctype)
365
+ end
366
+
367
+ def set_header(header, value)
368
+ begin
369
+ new_header = "#{header}: #{value}\r\n"
370
+ self.each_with_index do |h, i|
371
+ if h =~ /^#{Regexp.quote(header)}:/
372
+ h.replace(new_header)
373
+ return true
374
+ end
375
+ if h.strip.empty? or i == self.length-1
376
+ self.insert(i, new_header)
377
+ return true
378
+ end
379
+ end
380
+ rescue => bang
381
+ puts bang
382
+ end
383
+ return false
384
+ end
357
385
 
358
386
  # sets post data
359
387
  def setData(data)
@@ -370,6 +398,8 @@ module Watobo
370
398
  def setMethod(method)
371
399
  self.first.gsub!(/(^[^[:space:]]{1,}) /, "#{method} ")
372
400
  end
401
+
402
+ alias_method :set_method, :setMethod
373
403
 
374
404
  def setHTTPVersion(version)
375
405
  self.first.gsub!(/HTTP\/(.*)$/, "HTTP\/#{version}")
@@ -397,6 +427,7 @@ module Watobo
397
427
  new_body = ''
398
428
 
399
429
  body_orig = self.body
430
+ return true if body_orig.nil?
400
431
  # puts body_orig.class
401
432
  puts body_orig.length
402
433
  pattern = '[0-9a-fA-F]{1,6}\r?\n'
@@ -1,7 +1,7 @@
1
1
  # .
2
2
  # transcoders.rb
3
3
  #
4
- # Copyright 2012 by siberas, http://www.siberas.de
4
+ # Copyright 2013 by siberas, http://www.siberas.de
5
5
  #
6
6
  # This file is part of WATOBO (Web Application Tool Box)
7
7
  # http://watobo.sourceforge.com
@@ -19,70 +19,74 @@
19
19
  # along with WATOBO; if not, write to the Free Software
20
20
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
21
  # .
22
- module Watobo
22
+ # @private
23
+ module Watobo#:nodoc: all
23
24
  module Mixin
24
- module Transcoders
25
-
26
- def url_encode
27
- CGI::escape(self)
28
- end
29
-
30
- def url_decode
31
- CGI::unescape(self)
32
- end
33
-
34
-
35
- def b64decode
36
- begin
37
- b64string = self
38
- rs = Base64.decode64(b64string)
39
- return rs
40
- rescue
41
- return ""
25
+ module Transcoders
26
+ def url_encode
27
+ CGI::escape(self)
42
28
  end
43
- end
44
-
45
-
46
- def b64encode
47
- begin
48
- plain = self
49
- rs = Base64.encode64(plain)
50
- # we only need a simple string without linebreaks
51
- rs.gsub!(/\n/,'')
52
- rs.strip!
53
- return rs
54
- rescue
55
- return ""
29
+
30
+ def url_decode
31
+ CGI::unescape(self)
56
32
  end
57
- end
58
-
59
- def hex2int
60
- begin
61
- plain = self.strip
62
- if plain =~ /^[0-9a-fA-F]{1,8}$/ then
33
+
34
+ def b64decode
35
+ err_count = 0
36
+ b64string = self
37
+ begin
38
+ rs = Base64.strict_decode64(b64string)
39
+ #rs = Base64.decode64(b64string)
40
+ return rs
41
+ rescue
42
+ b64string.gsub!(/.$/,'')
43
+ err_count += 1
44
+ retry if err_count < 4
45
+ return ""
46
+ end
47
+ end
48
+
49
+ def b64encode
50
+ begin
51
+ plain = self
52
+ #rs = Base64.strict_encode64(plain)
53
+ rs = Base64.strict_encode64(plain)
54
+ # we only need a simple string without linebreaks
55
+ #rs.gsub!(/\n/,'')
56
+ #rs.strip!
57
+ return rs
58
+ rescue
59
+ return ""
60
+ end
61
+ end
62
+
63
+ def hex2int
64
+ begin
65
+ plain = self.strip
66
+ if plain =~ /^[0-9a-fA-F]{1,8}$/ then
63
67
  return plain.hex
64
- else
68
+ else
69
+ return ""
70
+ end
71
+ rescue
65
72
  return ""
66
73
  end
67
- rescue
68
- return ""
69
74
  end
70
- end
71
-
72
- def hexencode
73
- begin
74
-
75
-
76
- self.unpack("H*")[0]
77
- rescue
78
- return ""
75
+
76
+ def hexencode
77
+ begin
78
+
79
+ self.unpack("H*")[0]
80
+ rescue
81
+ return ""
82
+ end
83
+
84
+ end
85
+
86
+ def hexdecode
87
+
88
+ [ self ].pack("H*")
79
89
  end
80
-
81
- end
82
- def hexdecode
83
-
84
- [ self ].pack("H*")
85
90
  end
86
91
  end
87
- end
88
92
  end
data/lib/watobo/mixins.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # .
2
2
  # mixins.rb
3
3
  #
4
- # Copyright 2012 by siberas, http://www.siberas.de
4
+ # Copyright 2013 by siberas, http://www.siberas.de
5
5
  #
6
6
  # This file is part of WATOBO (Web Application Tool Box)
7
7
  # http://watobo.sourceforge.com
@@ -19,7 +19,8 @@
19
19
  # along with WATOBO; if not, write to the Free Software
20
20
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
21
  # .
22
- module Watobo
22
+ # @private
23
+ module Watobo#:nodoc: all
23
24
  module Mixins
24
25
  mixins_path = File.expand_path(File.join(File.dirname(__FILE__), "mixins"))
25
26
  # puts "* loading mixins #{mixins_path}"
@@ -0,0 +1,106 @@
1
+ # .
2
+ # html.rb
3
+ #
4
+ # Copyright 2013 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
+ # @private
23
+ module Watobo#:nodoc: all
24
+ module Parser
25
+ module HTML
26
+ class Form
27
+ def input_fields(&block)
28
+ if block_given?
29
+ @input_fields.each do |field|
30
+ yield field
31
+ end
32
+ end
33
+ @input_fields
34
+ end
35
+
36
+ def initialize(form_css)
37
+ @form = form_css
38
+ @input_fields = []
39
+ @form.css('input').each do |i|
40
+ @input_fields << InputField.new(i)
41
+ end
42
+
43
+ end
44
+ end
45
+
46
+ class InputField
47
+ attr :id
48
+ attr :value
49
+ attr :name
50
+ # attr :autocomplete
51
+
52
+ def to_www_form_parm()
53
+ Watobo::WWWFormParameter.new(:name => @name, :value => @value)
54
+ end
55
+
56
+ def to_url_parm()
57
+ Watobo::UrlParameter.new(:name => @name, :value => @value)
58
+ end
59
+
60
+ def initialize(input_css)
61
+ @css = input_css
62
+ @id = input_css["id"].nil? ? "" : input_css["id"]
63
+ @value = input_css["value"].nil? ? "" : input_css["value"]
64
+ @name = input_css["name"].nil? ? "" : input_css["name"]
65
+ #@autocomplete = input_css["autocomplete"]
66
+ end
67
+
68
+ def method_missing(name, *args, &block)
69
+ @css[name.to_s].nil? ? "" : input_css[name.to_s]
70
+ end
71
+
72
+ end
73
+
74
+ class Links
75
+
76
+ end
77
+
78
+ def links(&block)
79
+
80
+ end
81
+
82
+ def input_fields(&block)
83
+ fields = []
84
+ forms do |form|
85
+ form.input_fields do |field|
86
+ yield field if block_given?
87
+ fields << field
88
+ end
89
+ end
90
+ fields
91
+ end
92
+
93
+
94
+ def forms(&block)
95
+ fs = []
96
+ doc = Nokogiri::HTML(self.body)
97
+ doc.css('form').each do |f|
98
+ fo = Form.new(f)
99
+ yield fo if block_given?
100
+ end
101
+ fs
102
+ end
103
+
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,22 @@
1
+ # .
2
+ # parser.rb
3
+ #
4
+ # Copyright 2013 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 'watobo/parser/html'
@@ -1,7 +1,7 @@
1
1
  # .
2
2
  # check_regex.rb
3
3
  #
4
- # Copyright 2012 by siberas, http://www.siberas.de
4
+ # Copyright 2013 by siberas, http://www.siberas.de
5
5
  #
6
6
  # This file is part of WATOBO (Web Application Tool Box)
7
7
  # http://watobo.sourceforge.com
@@ -19,7 +19,8 @@
19
19
  # along with WATOBO; if not, write to the Free Software
20
20
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
21
  # .
22
- module Watobo
22
+ # @private
23
+ module Watobo#:nodoc: all
23
24
  module Utils
24
25
  def Utils.checkRegex(pattern)
25
26
  begin
@@ -1,7 +1,7 @@
1
1
  # .
2
2
  # copy_object.rb
3
3
  #
4
- # Copyright 2012 by siberas, http://www.siberas.de
4
+ # Copyright 2013 by siberas, http://www.siberas.de
5
5
  #
6
6
  # This file is part of WATOBO (Web Application Tool Box)
7
7
  # http://watobo.sourceforge.com
@@ -19,7 +19,8 @@
19
19
  # along with WATOBO; if not, write to the Free Software
20
20
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
21
  # .
22
- module Watobo
22
+ # @private
23
+ module Watobo#:nodoc: all
23
24
  module Utils
24
25
  def Utils.copyObject(object)
25
26
  copy = secure_eval(YAML.load(YAML.dump(object.inspect)))
@@ -1,7 +1,7 @@
1
1
  # .
2
2
  # crypto.rb
3
3
  #
4
- # Copyright 2012 by siberas, http://www.siberas.de
4
+ # Copyright 2013 by siberas, http://www.siberas.de
5
5
  #
6
6
  # This file is part of WATOBO (Web Application Tool Box)
7
7
  # http://watobo.sourceforge.com
@@ -24,7 +24,8 @@ require 'digest/sha1'
24
24
  require 'base64'
25
25
 
26
26
  # Thanks to : http://rails.brentsowers.com/2007/12/aes-encryption-and-decryption-in-ruby.html
27
- module Watobo
27
+ # @private
28
+ module Watobo#:nodoc: all
28
29
  module Crypto
29
30
 
30
31
  def Crypto.encryptPassword(plain_password, secret)
@@ -1,7 +1,7 @@
1
1
  # .
2
2
  # expand_range.rb
3
3
  #
4
- # Copyright 2012 by siberas, http://www.siberas.de
4
+ # Copyright 2013 by siberas, http://www.siberas.de
5
5
  #
6
6
  # This file is part of WATOBO (Web Application Tool Box)
7
7
  # http://watobo.sourceforge.com
@@ -19,7 +19,8 @@
19
19
  # along with WATOBO; if not, write to the Free Software
20
20
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
21
  # .
22
- module Watobo
22
+ # @private
23
+ module Watobo#:nodoc: all
23
24
  module Utils
24
25
  # expand range creates an array out of
25
26
  def self.expand_range(pattern)
@@ -1,7 +1,7 @@
1
1
  # .
2
2
  # file_management.rb
3
3
  #
4
- # Copyright 2012 by siberas, http://www.siberas.de
4
+ # Copyright 2013 by siberas, http://www.siberas.de
5
5
  #
6
6
  # This file is part of WATOBO (Web Application Tool Box)
7
7
  # http://watobo.sourceforge.com
@@ -19,7 +19,8 @@
19
19
  # along with WATOBO; if not, write to the Free Software
20
20
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
21
  # .
22
- module Watobo
22
+ # @private
23
+ module Watobo#:nodoc: all
23
24
  module Utils
24
25
  # e.g, save_settings("test-settings.test", 0, "@saved_settings", @saved_settings)
25
26
 
@@ -49,12 +50,15 @@ module Watobo
49
50
  end
50
51
 
51
52
  def Utils.saveChat(chat, filename)
53
+ return false if filename.nil?
54
+ return false if chat.nil?
52
55
  chat_data = {
53
56
  :request => chat.request.map{|x| x.inspect},
54
57
  :response => chat.response.map{|x| x.inspect},
55
58
  }
56
59
 
57
- chat_data.update(chat.settings)
60
+ chat_data.update(chat.settings)
61
+
58
62
  if File.exists?(filename) then
59
63
  puts "Updating #{filename}"
60
64
  File.open(filename, "w") { |fh|
@@ -1,7 +1,7 @@
1
1
  # .
2
2
  # hexprint.rb
3
3
  #
4
- # Copyright 2012 by siberas, http://www.siberas.de
4
+ # Copyright 2013 by siberas, http://www.siberas.de
5
5
  #
6
6
  # This file is part of WATOBO (Web Application Tool Box)
7
7
  # http://watobo.sourceforge.com
@@ -19,7 +19,8 @@
19
19
  # along with WATOBO; if not, write to the Free Software
20
20
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
21
  # .
22
- module Watobo
22
+ # @private
23
+ module Watobo#:nodoc: all
23
24
  module Utils
24
25
  def self.hexprint(data)
25
26
  data.length.times do |i|
@@ -1,7 +1,7 @@
1
1
  # .
2
2
  # load_chat.rb
3
3
  #
4
- # Copyright 2012 by siberas, http://www.siberas.de
4
+ # Copyright 2013 by siberas, http://www.siberas.de
5
5
  #
6
6
  # This file is part of WATOBO (Web Application Tool Box)
7
7
  # http://watobo.sourceforge.com
@@ -19,7 +19,8 @@
19
19
  # along with WATOBO; if not, write to the Free Software
20
20
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
21
  # .
22
- module Watobo
22
+ # @private
23
+ module Watobo#:nodoc: all
23
24
  module Utils
24
25
 
25
26
  # loadChat returns a chat object imported from a yaml file
@@ -72,7 +73,7 @@ module Watobo
72
73
  puts "!!! Malformed File #{file}"
73
74
  rescue => bang
74
75
  puts "! could not load chat from file #{file}"
75
- puts cdata
76
+ #puts cdata
76
77
  #puts bang
77
78
  #puts bang.backtrace if $DEBUG
78
79
  end
@@ -1,7 +1,7 @@
1
1
  # .
2
2
  # load_icon.rb
3
3
  #
4
- # Copyright 2012 by siberas, http://www.siberas.de
4
+ # Copyright 2013 by siberas, http://www.siberas.de
5
5
  #
6
6
  # This file is part of WATOBO (Web Application Tool Box)
7
7
  # http://watobo.sourceforge.com
@@ -19,7 +19,8 @@
19
19
  # along with WATOBO; if not, write to the Free Software
20
20
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
21
  # .
22
- module Watobo
22
+ # @private
23
+ module Watobo#:nodoc: all
23
24
  module Utils
24
25
  def loadIcon(app, filename)
25
26
  begin
@@ -1,7 +1,7 @@
1
1
  # .
2
2
  # print_debug.rb
3
3
  #
4
- # Copyright 2012 by siberas, http://www.siberas.de
4
+ # Copyright 2013 by siberas, http://www.siberas.de
5
5
  #
6
6
  # This file is part of WATOBO (Web Application Tool Box)
7
7
  # http://watobo.sourceforge.com
@@ -19,7 +19,8 @@
19
19
  # along with WATOBO; if not, write to the Free Software
20
20
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
21
  # .
22
- module Watobo
22
+ # @private
23
+ module Watobo#:nodoc: all
23
24
  def self.print_debug(*m)
24
25
  fl = m.shift
25
26
  puts "#"
@@ -1,7 +1,7 @@
1
1
  # .
2
2
  # response_builder.rb
3
3
  #
4
- # Copyright 2012 by siberas, http://www.siberas.de
4
+ # Copyright 2013 by siberas, http://www.siberas.de
5
5
  #
6
6
  # This file is part of WATOBO (Web Application Tool Box)
7
7
  # http://watobo.sourceforge.com
@@ -19,7 +19,8 @@
19
19
  # along with WATOBO; if not, write to the Free Software
20
20
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
21
  # .
22
- module Watobo
22
+ # @private
23
+ module Watobo#:nodoc: all
23
24
  module Utils
24
25
  def self.string2response( text, opts = {} )
25
26
  options = { :update_content_length => false }
@@ -42,12 +43,13 @@ module Watobo
42
43
 
43
44
  response = raw_header.split("\n")
44
45
  response.map!{|r| "#{r.strip}\r\n" }
45
- Watobo::Response.create response
46
+ # Watobo::Response.create response
46
47
  unless raw_body.nil?
47
48
  response << "\r\n"
48
49
  response << raw_body unless raw_body.strip.empty?
49
50
  end
50
- return response
51
+ #return response
52
+ return Watobo::Response.new(response)
51
53
 
52
54
  rescue => bang
53
55
  puts bang