ruby_on_ruby 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (493) hide show
  1. data/.gitignore +18 -0
  2. data/.rvmrc +1 -0
  3. data/Gemfile +6 -0
  4. data/LICENSE +22 -0
  5. data/README.md +66 -0
  6. data/Rakefile +1 -0
  7. data/lib/ruby_on_ruby.rb +5 -0
  8. data/lib/ruby_on_ruby/console.rb +7 -0
  9. data/lib/ruby_on_ruby/context.rb +33 -0
  10. data/lib/ruby_on_ruby/file_loader.rb +31 -0
  11. data/lib/ruby_on_ruby/ruby_stream.rb +27 -0
  12. data/lib/ruby_on_ruby/version.rb +3 -0
  13. data/lib/rubyonruby.rb +1 -0
  14. data/ruby_in_ruby.gemspec +19 -0
  15. data/vendor/javascripts/emscripted-ruby/lib/.document +106 -0
  16. data/vendor/javascripts/emscripted-ruby/lib/English.rb +155 -0
  17. data/vendor/javascripts/emscripted-ruby/lib/Env.rb +18 -0
  18. data/vendor/javascripts/emscripted-ruby/lib/README +96 -0
  19. data/vendor/javascripts/emscripted-ruby/lib/abbrev.rb +103 -0
  20. data/vendor/javascripts/emscripted-ruby/lib/base64.rb +133 -0
  21. data/vendor/javascripts/emscripted-ruby/lib/benchmark.rb +572 -0
  22. data/vendor/javascripts/emscripted-ruby/lib/cgi-lib.rb +272 -0
  23. data/vendor/javascripts/emscripted-ruby/lib/cgi.rb +2308 -0
  24. data/vendor/javascripts/emscripted-ruby/lib/cgi/.document +2 -0
  25. data/vendor/javascripts/emscripted-ruby/lib/cgi/session.rb +498 -0
  26. data/vendor/javascripts/emscripted-ruby/lib/cgi/session/pstore.rb +111 -0
  27. data/vendor/javascripts/emscripted-ruby/lib/complex.rb +663 -0
  28. data/vendor/javascripts/emscripted-ruby/lib/csv.rb +992 -0
  29. data/vendor/javascripts/emscripted-ruby/lib/date.rb +1767 -0
  30. data/vendor/javascripts/emscripted-ruby/lib/date/format.rb +1190 -0
  31. data/vendor/javascripts/emscripted-ruby/lib/date2.rb +5 -0
  32. data/vendor/javascripts/emscripted-ruby/lib/debug.rb +947 -0
  33. data/vendor/javascripts/emscripted-ruby/lib/delegate.rb +337 -0
  34. data/vendor/javascripts/emscripted-ruby/lib/drb.rb +2 -0
  35. data/vendor/javascripts/emscripted-ruby/lib/drb/acl.rb +146 -0
  36. data/vendor/javascripts/emscripted-ruby/lib/drb/drb.rb +1782 -0
  37. data/vendor/javascripts/emscripted-ruby/lib/drb/eq.rb +16 -0
  38. data/vendor/javascripts/emscripted-ruby/lib/drb/extserv.rb +64 -0
  39. data/vendor/javascripts/emscripted-ruby/lib/drb/extservm.rb +89 -0
  40. data/vendor/javascripts/emscripted-ruby/lib/drb/gw.rb +122 -0
  41. data/vendor/javascripts/emscripted-ruby/lib/drb/invokemethod.rb +36 -0
  42. data/vendor/javascripts/emscripted-ruby/lib/drb/observer.rb +22 -0
  43. data/vendor/javascripts/emscripted-ruby/lib/drb/ssl.rb +190 -0
  44. data/vendor/javascripts/emscripted-ruby/lib/drb/timeridconv.rb +91 -0
  45. data/vendor/javascripts/emscripted-ruby/lib/drb/unix.rb +108 -0
  46. data/vendor/javascripts/emscripted-ruby/lib/e2mmap.rb +195 -0
  47. data/vendor/javascripts/emscripted-ruby/lib/erb.rb +880 -0
  48. data/vendor/javascripts/emscripted-ruby/lib/eregex.rb +37 -0
  49. data/vendor/javascripts/emscripted-ruby/lib/fileutils.rb +1591 -0
  50. data/vendor/javascripts/emscripted-ruby/lib/finalize.rb +193 -0
  51. data/vendor/javascripts/emscripted-ruby/lib/find.rb +79 -0
  52. data/vendor/javascripts/emscripted-ruby/lib/forwardable.rb +218 -0
  53. data/vendor/javascripts/emscripted-ruby/lib/ftools.rb +261 -0
  54. data/vendor/javascripts/emscripted-ruby/lib/generator.rb +418 -0
  55. data/vendor/javascripts/emscripted-ruby/lib/getoptlong.rb +621 -0
  56. data/vendor/javascripts/emscripted-ruby/lib/getopts.rb +127 -0
  57. data/vendor/javascripts/emscripted-ruby/lib/gserver.rb +253 -0
  58. data/vendor/javascripts/emscripted-ruby/lib/importenv.rb +33 -0
  59. data/vendor/javascripts/emscripted-ruby/lib/ipaddr.rb +814 -0
  60. data/vendor/javascripts/emscripted-ruby/lib/irb.rb +346 -0
  61. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/chws.rb +33 -0
  62. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/fork.rb +39 -0
  63. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/help.rb +34 -0
  64. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/load.rb +67 -0
  65. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/nop.rb +39 -0
  66. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/pushws.rb +39 -0
  67. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/subirb.rb +43 -0
  68. data/vendor/javascripts/emscripted-ruby/lib/irb/completion.rb +205 -0
  69. data/vendor/javascripts/emscripted-ruby/lib/irb/context.rb +255 -0
  70. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/change-ws.rb +62 -0
  71. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/history.rb +110 -0
  72. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/loader.rb +120 -0
  73. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/math-mode.rb +37 -0
  74. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/multi-irb.rb +241 -0
  75. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/save-history.rb +85 -0
  76. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/tracer.rb +61 -0
  77. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/use-loader.rb +65 -0
  78. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/workspaces.rb +56 -0
  79. data/vendor/javascripts/emscripted-ruby/lib/irb/extend-command.rb +264 -0
  80. data/vendor/javascripts/emscripted-ruby/lib/irb/frame.rb +67 -0
  81. data/vendor/javascripts/emscripted-ruby/lib/irb/help.rb +33 -0
  82. data/vendor/javascripts/emscripted-ruby/lib/irb/init.rb +259 -0
  83. data/vendor/javascripts/emscripted-ruby/lib/irb/input-method.rb +120 -0
  84. data/vendor/javascripts/emscripted-ruby/lib/irb/lc/error.rb +30 -0
  85. data/vendor/javascripts/emscripted-ruby/lib/irb/lc/help-message +35 -0
  86. data/vendor/javascripts/emscripted-ruby/lib/irb/lc/ja/error.rb +27 -0
  87. data/vendor/javascripts/emscripted-ruby/lib/irb/lc/ja/help-message +36 -0
  88. data/vendor/javascripts/emscripted-ruby/lib/irb/locale.rb +184 -0
  89. data/vendor/javascripts/emscripted-ruby/lib/irb/notifier.rb +145 -0
  90. data/vendor/javascripts/emscripted-ruby/lib/irb/output-method.rb +85 -0
  91. data/vendor/javascripts/emscripted-ruby/lib/irb/ruby-lex.rb +1149 -0
  92. data/vendor/javascripts/emscripted-ruby/lib/irb/ruby-token.rb +273 -0
  93. data/vendor/javascripts/emscripted-ruby/lib/irb/slex.rb +285 -0
  94. data/vendor/javascripts/emscripted-ruby/lib/irb/version.rb +16 -0
  95. data/vendor/javascripts/emscripted-ruby/lib/irb/workspace.rb +107 -0
  96. data/vendor/javascripts/emscripted-ruby/lib/irb/ws-for-case-2.rb +15 -0
  97. data/vendor/javascripts/emscripted-ruby/lib/irb/xmp.rb +86 -0
  98. data/vendor/javascripts/emscripted-ruby/lib/jcode.rb +220 -0
  99. data/vendor/javascripts/emscripted-ruby/lib/logger.rb +703 -0
  100. data/vendor/javascripts/emscripted-ruby/lib/mailread.rb +62 -0
  101. data/vendor/javascripts/emscripted-ruby/lib/mathn.rb +308 -0
  102. data/vendor/javascripts/emscripted-ruby/lib/matrix.rb +1278 -0
  103. data/vendor/javascripts/emscripted-ruby/lib/mkmf.rb +1811 -0
  104. data/vendor/javascripts/emscripted-ruby/lib/monitor.rb +352 -0
  105. data/vendor/javascripts/emscripted-ruby/lib/mutex_m.rb +122 -0
  106. data/vendor/javascripts/emscripted-ruby/lib/net/ftp.rb +927 -0
  107. data/vendor/javascripts/emscripted-ruby/lib/net/http.rb +2277 -0
  108. data/vendor/javascripts/emscripted-ruby/lib/net/https.rb +173 -0
  109. data/vendor/javascripts/emscripted-ruby/lib/net/imap.rb +3371 -0
  110. data/vendor/javascripts/emscripted-ruby/lib/net/pop.rb +999 -0
  111. data/vendor/javascripts/emscripted-ruby/lib/net/protocol.rb +392 -0
  112. data/vendor/javascripts/emscripted-ruby/lib/net/smtp.rb +1014 -0
  113. data/vendor/javascripts/emscripted-ruby/lib/net/telnet.rb +756 -0
  114. data/vendor/javascripts/emscripted-ruby/lib/observer.rb +192 -0
  115. data/vendor/javascripts/emscripted-ruby/lib/open-uri.rb +678 -0
  116. data/vendor/javascripts/emscripted-ruby/lib/open3.rb +101 -0
  117. data/vendor/javascripts/emscripted-ruby/lib/optparse.rb +1790 -0
  118. data/vendor/javascripts/emscripted-ruby/lib/optparse/date.rb +17 -0
  119. data/vendor/javascripts/emscripted-ruby/lib/optparse/shellwords.rb +6 -0
  120. data/vendor/javascripts/emscripted-ruby/lib/optparse/time.rb +10 -0
  121. data/vendor/javascripts/emscripted-ruby/lib/optparse/uri.rb +6 -0
  122. data/vendor/javascripts/emscripted-ruby/lib/optparse/version.rb +70 -0
  123. data/vendor/javascripts/emscripted-ruby/lib/ostruct.rb +146 -0
  124. data/vendor/javascripts/emscripted-ruby/lib/parsearg.rb +87 -0
  125. data/vendor/javascripts/emscripted-ruby/lib/parsedate.rb +53 -0
  126. data/vendor/javascripts/emscripted-ruby/lib/pathname.rb +1062 -0
  127. data/vendor/javascripts/emscripted-ruby/lib/ping.rb +64 -0
  128. data/vendor/javascripts/emscripted-ruby/lib/pp.rb +654 -0
  129. data/vendor/javascripts/emscripted-ruby/lib/prettyprint.rb +896 -0
  130. data/vendor/javascripts/emscripted-ruby/lib/profile.rb +6 -0
  131. data/vendor/javascripts/emscripted-ruby/lib/profiler.rb +59 -0
  132. data/vendor/javascripts/emscripted-ruby/lib/pstore.rb +395 -0
  133. data/vendor/javascripts/emscripted-ruby/lib/racc/parser.rb +442 -0
  134. data/vendor/javascripts/emscripted-ruby/lib/rational.rb +564 -0
  135. data/vendor/javascripts/emscripted-ruby/lib/readbytes.rb +41 -0
  136. data/vendor/javascripts/emscripted-ruby/lib/resolv-replace.rb +62 -0
  137. data/vendor/javascripts/emscripted-ruby/lib/resolv.rb +2210 -0
  138. data/vendor/javascripts/emscripted-ruby/lib/rexml/attlistdecl.rb +62 -0
  139. data/vendor/javascripts/emscripted-ruby/lib/rexml/attribute.rb +185 -0
  140. data/vendor/javascripts/emscripted-ruby/lib/rexml/cdata.rb +67 -0
  141. data/vendor/javascripts/emscripted-ruby/lib/rexml/child.rb +96 -0
  142. data/vendor/javascripts/emscripted-ruby/lib/rexml/comment.rb +80 -0
  143. data/vendor/javascripts/emscripted-ruby/lib/rexml/doctype.rb +271 -0
  144. data/vendor/javascripts/emscripted-ruby/lib/rexml/document.rb +208 -0
  145. data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/attlistdecl.rb +10 -0
  146. data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/dtd.rb +51 -0
  147. data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/elementdecl.rb +17 -0
  148. data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/entitydecl.rb +56 -0
  149. data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/notationdecl.rb +39 -0
  150. data/vendor/javascripts/emscripted-ruby/lib/rexml/element.rb +1227 -0
  151. data/vendor/javascripts/emscripted-ruby/lib/rexml/encoding.rb +71 -0
  152. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/CP-1252.rb +103 -0
  153. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/EUC-JP.rb +35 -0
  154. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/ICONV.rb +22 -0
  155. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/ISO-8859-1.rb +7 -0
  156. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/ISO-8859-15.rb +72 -0
  157. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/SHIFT-JIS.rb +37 -0
  158. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/SHIFT_JIS.rb +1 -0
  159. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/UNILE.rb +34 -0
  160. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/US-ASCII.rb +30 -0
  161. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/UTF-16.rb +35 -0
  162. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/UTF-8.rb +18 -0
  163. data/vendor/javascripts/emscripted-ruby/lib/rexml/entity.rb +165 -0
  164. data/vendor/javascripts/emscripted-ruby/lib/rexml/formatters/default.rb +109 -0
  165. data/vendor/javascripts/emscripted-ruby/lib/rexml/formatters/pretty.rb +137 -0
  166. data/vendor/javascripts/emscripted-ruby/lib/rexml/formatters/transitive.rb +56 -0
  167. data/vendor/javascripts/emscripted-ruby/lib/rexml/functions.rb +382 -0
  168. data/vendor/javascripts/emscripted-ruby/lib/rexml/instruction.rb +70 -0
  169. data/vendor/javascripts/emscripted-ruby/lib/rexml/light/node.rb +196 -0
  170. data/vendor/javascripts/emscripted-ruby/lib/rexml/namespace.rb +47 -0
  171. data/vendor/javascripts/emscripted-ruby/lib/rexml/node.rb +75 -0
  172. data/vendor/javascripts/emscripted-ruby/lib/rexml/output.rb +24 -0
  173. data/vendor/javascripts/emscripted-ruby/lib/rexml/parent.rb +166 -0
  174. data/vendor/javascripts/emscripted-ruby/lib/rexml/parseexception.rb +51 -0
  175. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/baseparser.rb +503 -0
  176. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/lightparser.rb +60 -0
  177. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/pullparser.rb +196 -0
  178. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/sax2parser.rb +238 -0
  179. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/streamparser.rb +46 -0
  180. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/treeparser.rb +97 -0
  181. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/ultralightparser.rb +56 -0
  182. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/xpathparser.rb +698 -0
  183. data/vendor/javascripts/emscripted-ruby/lib/rexml/quickpath.rb +266 -0
  184. data/vendor/javascripts/emscripted-ruby/lib/rexml/rexml.rb +32 -0
  185. data/vendor/javascripts/emscripted-ruby/lib/rexml/sax2listener.rb +97 -0
  186. data/vendor/javascripts/emscripted-ruby/lib/rexml/source.rb +251 -0
  187. data/vendor/javascripts/emscripted-ruby/lib/rexml/streamlistener.rb +92 -0
  188. data/vendor/javascripts/emscripted-ruby/lib/rexml/syncenumerator.rb +33 -0
  189. data/vendor/javascripts/emscripted-ruby/lib/rexml/text.rb +344 -0
  190. data/vendor/javascripts/emscripted-ruby/lib/rexml/undefinednamespaceexception.rb +8 -0
  191. data/vendor/javascripts/emscripted-ruby/lib/rexml/validation/relaxng.rb +559 -0
  192. data/vendor/javascripts/emscripted-ruby/lib/rexml/validation/validation.rb +155 -0
  193. data/vendor/javascripts/emscripted-ruby/lib/rexml/validation/validationexception.rb +9 -0
  194. data/vendor/javascripts/emscripted-ruby/lib/rexml/xmldecl.rb +119 -0
  195. data/vendor/javascripts/emscripted-ruby/lib/rexml/xmltokens.rb +18 -0
  196. data/vendor/javascripts/emscripted-ruby/lib/rexml/xpath.rb +66 -0
  197. data/vendor/javascripts/emscripted-ruby/lib/rexml/xpath_parser.rb +792 -0
  198. data/vendor/javascripts/emscripted-ruby/lib/rinda/rinda.rb +283 -0
  199. data/vendor/javascripts/emscripted-ruby/lib/rinda/ring.rb +271 -0
  200. data/vendor/javascripts/emscripted-ruby/lib/rinda/tuplespace.rb +642 -0
  201. data/vendor/javascripts/emscripted-ruby/lib/rss.rb +19 -0
  202. data/vendor/javascripts/emscripted-ruby/lib/rss/0.9.rb +428 -0
  203. data/vendor/javascripts/emscripted-ruby/lib/rss/1.0.rb +452 -0
  204. data/vendor/javascripts/emscripted-ruby/lib/rss/2.0.rb +111 -0
  205. data/vendor/javascripts/emscripted-ruby/lib/rss/atom.rb +749 -0
  206. data/vendor/javascripts/emscripted-ruby/lib/rss/content.rb +31 -0
  207. data/vendor/javascripts/emscripted-ruby/lib/rss/content/1.0.rb +10 -0
  208. data/vendor/javascripts/emscripted-ruby/lib/rss/content/2.0.rb +12 -0
  209. data/vendor/javascripts/emscripted-ruby/lib/rss/converter.rb +162 -0
  210. data/vendor/javascripts/emscripted-ruby/lib/rss/dublincore.rb +161 -0
  211. data/vendor/javascripts/emscripted-ruby/lib/rss/dublincore/1.0.rb +13 -0
  212. data/vendor/javascripts/emscripted-ruby/lib/rss/dublincore/2.0.rb +13 -0
  213. data/vendor/javascripts/emscripted-ruby/lib/rss/dublincore/atom.rb +17 -0
  214. data/vendor/javascripts/emscripted-ruby/lib/rss/image.rb +193 -0
  215. data/vendor/javascripts/emscripted-ruby/lib/rss/itunes.rb +410 -0
  216. data/vendor/javascripts/emscripted-ruby/lib/rss/maker.rb +44 -0
  217. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/0.9.rb +467 -0
  218. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/1.0.rb +434 -0
  219. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/2.0.rb +223 -0
  220. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/atom.rb +172 -0
  221. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/base.rb +868 -0
  222. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/content.rb +21 -0
  223. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/dublincore.rb +124 -0
  224. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/entry.rb +163 -0
  225. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/feed.rb +429 -0
  226. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/image.rb +111 -0
  227. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/itunes.rb +242 -0
  228. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/slash.rb +33 -0
  229. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/syndication.rb +18 -0
  230. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/taxonomy.rb +118 -0
  231. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/trackback.rb +61 -0
  232. data/vendor/javascripts/emscripted-ruby/lib/rss/parser.rb +541 -0
  233. data/vendor/javascripts/emscripted-ruby/lib/rss/rexmlparser.rb +54 -0
  234. data/vendor/javascripts/emscripted-ruby/lib/rss/rss.rb +1312 -0
  235. data/vendor/javascripts/emscripted-ruby/lib/rss/slash.rb +49 -0
  236. data/vendor/javascripts/emscripted-ruby/lib/rss/syndication.rb +67 -0
  237. data/vendor/javascripts/emscripted-ruby/lib/rss/taxonomy.rb +145 -0
  238. data/vendor/javascripts/emscripted-ruby/lib/rss/trackback.rb +288 -0
  239. data/vendor/javascripts/emscripted-ruby/lib/rss/utils.rb +111 -0
  240. data/vendor/javascripts/emscripted-ruby/lib/rss/xml-stylesheet.rb +105 -0
  241. data/vendor/javascripts/emscripted-ruby/lib/rss/xml.rb +71 -0
  242. data/vendor/javascripts/emscripted-ruby/lib/rss/xmlparser.rb +93 -0
  243. data/vendor/javascripts/emscripted-ruby/lib/rss/xmlscanner.rb +121 -0
  244. data/vendor/javascripts/emscripted-ruby/lib/rubyunit.rb +6 -0
  245. data/vendor/javascripts/emscripted-ruby/lib/runit/assert.rb +73 -0
  246. data/vendor/javascripts/emscripted-ruby/lib/runit/cui/testrunner.rb +51 -0
  247. data/vendor/javascripts/emscripted-ruby/lib/runit/error.rb +9 -0
  248. data/vendor/javascripts/emscripted-ruby/lib/runit/testcase.rb +45 -0
  249. data/vendor/javascripts/emscripted-ruby/lib/runit/testresult.rb +44 -0
  250. data/vendor/javascripts/emscripted-ruby/lib/runit/testsuite.rb +26 -0
  251. data/vendor/javascripts/emscripted-ruby/lib/runit/topublic.rb +8 -0
  252. data/vendor/javascripts/emscripted-ruby/lib/scanf.rb +702 -0
  253. data/vendor/javascripts/emscripted-ruby/lib/securerandom.rb +137 -0
  254. data/vendor/javascripts/emscripted-ruby/lib/set.rb +1233 -0
  255. data/vendor/javascripts/emscripted-ruby/lib/shell.rb +269 -0
  256. data/vendor/javascripts/emscripted-ruby/lib/shell/builtin-command.rb +154 -0
  257. data/vendor/javascripts/emscripted-ruby/lib/shell/command-processor.rb +592 -0
  258. data/vendor/javascripts/emscripted-ruby/lib/shell/error.rb +26 -0
  259. data/vendor/javascripts/emscripted-ruby/lib/shell/filter.rb +110 -0
  260. data/vendor/javascripts/emscripted-ruby/lib/shell/process-controller.rb +260 -0
  261. data/vendor/javascripts/emscripted-ruby/lib/shell/system-command.rb +168 -0
  262. data/vendor/javascripts/emscripted-ruby/lib/shell/version.rb +16 -0
  263. data/vendor/javascripts/emscripted-ruby/lib/shellwords.rb +172 -0
  264. data/vendor/javascripts/emscripted-ruby/lib/singleton.rb +360 -0
  265. data/vendor/javascripts/emscripted-ruby/lib/soap/attachment.rb +107 -0
  266. data/vendor/javascripts/emscripted-ruby/lib/soap/baseData.rb +942 -0
  267. data/vendor/javascripts/emscripted-ruby/lib/soap/element.rb +258 -0
  268. data/vendor/javascripts/emscripted-ruby/lib/soap/encodingstyle/aspDotNetHandler.rb +213 -0
  269. data/vendor/javascripts/emscripted-ruby/lib/soap/encodingstyle/handler.rb +100 -0
  270. data/vendor/javascripts/emscripted-ruby/lib/soap/encodingstyle/literalHandler.rb +226 -0
  271. data/vendor/javascripts/emscripted-ruby/lib/soap/encodingstyle/soapHandler.rb +582 -0
  272. data/vendor/javascripts/emscripted-ruby/lib/soap/generator.rb +268 -0
  273. data/vendor/javascripts/emscripted-ruby/lib/soap/header/handler.rb +57 -0
  274. data/vendor/javascripts/emscripted-ruby/lib/soap/header/handlerset.rb +70 -0
  275. data/vendor/javascripts/emscripted-ruby/lib/soap/header/simplehandler.rb +44 -0
  276. data/vendor/javascripts/emscripted-ruby/lib/soap/httpconfigloader.rb +119 -0
  277. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping.rb +10 -0
  278. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/factory.rb +355 -0
  279. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/mapping.rb +381 -0
  280. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/registry.rb +541 -0
  281. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/rubytypeFactory.rb +475 -0
  282. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/typeMap.rb +50 -0
  283. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/wsdlencodedregistry.rb +280 -0
  284. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/wsdlliteralregistry.rb +418 -0
  285. data/vendor/javascripts/emscripted-ruby/lib/soap/marshal.rb +59 -0
  286. data/vendor/javascripts/emscripted-ruby/lib/soap/mimemessage.rb +240 -0
  287. data/vendor/javascripts/emscripted-ruby/lib/soap/netHttpClient.rb +190 -0
  288. data/vendor/javascripts/emscripted-ruby/lib/soap/parser.rb +251 -0
  289. data/vendor/javascripts/emscripted-ruby/lib/soap/processor.rb +66 -0
  290. data/vendor/javascripts/emscripted-ruby/lib/soap/property.rb +333 -0
  291. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/cgistub.rb +206 -0
  292. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/driver.rb +254 -0
  293. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/element.rb +325 -0
  294. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/httpserver.rb +129 -0
  295. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/proxy.rb +497 -0
  296. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/router.rb +594 -0
  297. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/rpc.rb +25 -0
  298. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/soaplet.rb +162 -0
  299. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/standaloneServer.rb +43 -0
  300. data/vendor/javascripts/emscripted-ruby/lib/soap/soap.rb +140 -0
  301. data/vendor/javascripts/emscripted-ruby/lib/soap/streamHandler.rb +229 -0
  302. data/vendor/javascripts/emscripted-ruby/lib/soap/wsdlDriver.rb +575 -0
  303. data/vendor/javascripts/emscripted-ruby/lib/sync.rb +311 -0
  304. data/vendor/javascripts/emscripted-ruby/lib/tempfile.rb +209 -0
  305. data/vendor/javascripts/emscripted-ruby/lib/test/unit.rb +280 -0
  306. data/vendor/javascripts/emscripted-ruby/lib/test/unit/assertionfailederror.rb +14 -0
  307. data/vendor/javascripts/emscripted-ruby/lib/test/unit/assertions.rb +622 -0
  308. data/vendor/javascripts/emscripted-ruby/lib/test/unit/autorunner.rb +220 -0
  309. data/vendor/javascripts/emscripted-ruby/lib/test/unit/collector.rb +43 -0
  310. data/vendor/javascripts/emscripted-ruby/lib/test/unit/collector/dir.rb +107 -0
  311. data/vendor/javascripts/emscripted-ruby/lib/test/unit/collector/objectspace.rb +34 -0
  312. data/vendor/javascripts/emscripted-ruby/lib/test/unit/error.rb +56 -0
  313. data/vendor/javascripts/emscripted-ruby/lib/test/unit/failure.rb +51 -0
  314. data/vendor/javascripts/emscripted-ruby/lib/test/unit/testcase.rb +160 -0
  315. data/vendor/javascripts/emscripted-ruby/lib/test/unit/testresult.rb +80 -0
  316. data/vendor/javascripts/emscripted-ruby/lib/test/unit/testsuite.rb +76 -0
  317. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/console/testrunner.rb +127 -0
  318. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/fox/testrunner.rb +268 -0
  319. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/gtk/testrunner.rb +416 -0
  320. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/gtk2/testrunner.rb +465 -0
  321. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/testrunnermediator.rb +68 -0
  322. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/testrunnerutilities.rb +46 -0
  323. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/tk/testrunner.rb +260 -0
  324. data/vendor/javascripts/emscripted-ruby/lib/test/unit/util/backtracefilter.rb +40 -0
  325. data/vendor/javascripts/emscripted-ruby/lib/test/unit/util/observable.rb +90 -0
  326. data/vendor/javascripts/emscripted-ruby/lib/test/unit/util/procwrapper.rb +48 -0
  327. data/vendor/javascripts/emscripted-ruby/lib/thread.rb +479 -0
  328. data/vendor/javascripts/emscripted-ruby/lib/thwait.rb +169 -0
  329. data/vendor/javascripts/emscripted-ruby/lib/time.rb +797 -0
  330. data/vendor/javascripts/emscripted-ruby/lib/timeout.rb +122 -0
  331. data/vendor/javascripts/emscripted-ruby/lib/tmpdir.rb +130 -0
  332. data/vendor/javascripts/emscripted-ruby/lib/tracer.rb +167 -0
  333. data/vendor/javascripts/emscripted-ruby/lib/tsort.rb +290 -0
  334. data/vendor/javascripts/emscripted-ruby/lib/un.rb +235 -0
  335. data/vendor/javascripts/emscripted-ruby/lib/uri.rb +29 -0
  336. data/vendor/javascripts/emscripted-ruby/lib/uri/common.rb +611 -0
  337. data/vendor/javascripts/emscripted-ruby/lib/uri/ftp.rb +198 -0
  338. data/vendor/javascripts/emscripted-ruby/lib/uri/generic.rb +1122 -0
  339. data/vendor/javascripts/emscripted-ruby/lib/uri/http.rb +100 -0
  340. data/vendor/javascripts/emscripted-ruby/lib/uri/https.rb +20 -0
  341. data/vendor/javascripts/emscripted-ruby/lib/uri/ldap.rb +190 -0
  342. data/vendor/javascripts/emscripted-ruby/lib/uri/ldaps.rb +12 -0
  343. data/vendor/javascripts/emscripted-ruby/lib/uri/mailto.rb +266 -0
  344. data/vendor/javascripts/emscripted-ruby/lib/weakref.rb +100 -0
  345. data/vendor/javascripts/emscripted-ruby/lib/webrick.rb +29 -0
  346. data/vendor/javascripts/emscripted-ruby/lib/webrick/accesslog.rb +67 -0
  347. data/vendor/javascripts/emscripted-ruby/lib/webrick/cgi.rb +257 -0
  348. data/vendor/javascripts/emscripted-ruby/lib/webrick/compat.rb +15 -0
  349. data/vendor/javascripts/emscripted-ruby/lib/webrick/config.rb +97 -0
  350. data/vendor/javascripts/emscripted-ruby/lib/webrick/cookie.rb +110 -0
  351. data/vendor/javascripts/emscripted-ruby/lib/webrick/htmlutils.rb +25 -0
  352. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth.rb +45 -0
  353. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/authenticator.rb +79 -0
  354. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/basicauth.rb +65 -0
  355. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/digestauth.rb +343 -0
  356. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/htdigest.rb +91 -0
  357. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/htgroup.rb +61 -0
  358. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/htpasswd.rb +83 -0
  359. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/userdb.rb +29 -0
  360. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpproxy.rb +254 -0
  361. data/vendor/javascripts/emscripted-ruby/lib/webrick/httprequest.rb +365 -0
  362. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpresponse.rb +327 -0
  363. data/vendor/javascripts/emscripted-ruby/lib/webrick/https.rb +63 -0
  364. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpserver.rb +210 -0
  365. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet.rb +22 -0
  366. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/abstract.rb +71 -0
  367. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/cgi_runner.rb +47 -0
  368. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/cgihandler.rb +108 -0
  369. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/erbhandler.rb +54 -0
  370. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/filehandler.rb +435 -0
  371. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/prochandler.rb +33 -0
  372. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpstatus.rb +126 -0
  373. data/vendor/javascripts/emscripted-ruby/lib/webrick/httputils.rb +399 -0
  374. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpversion.rb +49 -0
  375. data/vendor/javascripts/emscripted-ruby/lib/webrick/log.rb +88 -0
  376. data/vendor/javascripts/emscripted-ruby/lib/webrick/server.rb +200 -0
  377. data/vendor/javascripts/emscripted-ruby/lib/webrick/ssl.rb +126 -0
  378. data/vendor/javascripts/emscripted-ruby/lib/webrick/utils.rb +100 -0
  379. data/vendor/javascripts/emscripted-ruby/lib/webrick/version.rb +13 -0
  380. data/vendor/javascripts/emscripted-ruby/lib/wsdl/binding.rb +65 -0
  381. data/vendor/javascripts/emscripted-ruby/lib/wsdl/data.rb +64 -0
  382. data/vendor/javascripts/emscripted-ruby/lib/wsdl/definitions.rb +250 -0
  383. data/vendor/javascripts/emscripted-ruby/lib/wsdl/documentation.rb +32 -0
  384. data/vendor/javascripts/emscripted-ruby/lib/wsdl/import.rb +80 -0
  385. data/vendor/javascripts/emscripted-ruby/lib/wsdl/importer.rb +38 -0
  386. data/vendor/javascripts/emscripted-ruby/lib/wsdl/info.rb +39 -0
  387. data/vendor/javascripts/emscripted-ruby/lib/wsdl/message.rb +54 -0
  388. data/vendor/javascripts/emscripted-ruby/lib/wsdl/operation.rb +130 -0
  389. data/vendor/javascripts/emscripted-ruby/lib/wsdl/operationBinding.rb +108 -0
  390. data/vendor/javascripts/emscripted-ruby/lib/wsdl/param.rb +85 -0
  391. data/vendor/javascripts/emscripted-ruby/lib/wsdl/parser.rb +163 -0
  392. data/vendor/javascripts/emscripted-ruby/lib/wsdl/part.rb +52 -0
  393. data/vendor/javascripts/emscripted-ruby/lib/wsdl/port.rb +84 -0
  394. data/vendor/javascripts/emscripted-ruby/lib/wsdl/portType.rb +73 -0
  395. data/vendor/javascripts/emscripted-ruby/lib/wsdl/service.rb +61 -0
  396. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/address.rb +40 -0
  397. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/binding.rb +49 -0
  398. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/body.rb +56 -0
  399. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/cgiStubCreator.rb +76 -0
  400. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/classDefCreator.rb +314 -0
  401. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/classDefCreatorSupport.rb +126 -0
  402. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/clientSkeltonCreator.rb +78 -0
  403. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/complexType.rb +161 -0
  404. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/data.rb +42 -0
  405. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/definitions.rb +149 -0
  406. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/driverCreator.rb +95 -0
  407. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/element.rb +28 -0
  408. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/fault.rb +56 -0
  409. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/header.rb +86 -0
  410. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/headerfault.rb +56 -0
  411. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/mappingRegistryCreator.rb +92 -0
  412. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/methodDefCreator.rb +228 -0
  413. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/operation.rb +122 -0
  414. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/servantSkeltonCreator.rb +67 -0
  415. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/standaloneServerStubCreator.rb +85 -0
  416. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/wsdl2ruby.rb +176 -0
  417. data/vendor/javascripts/emscripted-ruby/lib/wsdl/types.rb +43 -0
  418. data/vendor/javascripts/emscripted-ruby/lib/wsdl/wsdl.rb +23 -0
  419. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/all.rb +69 -0
  420. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/annotation.rb +34 -0
  421. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/any.rb +56 -0
  422. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/attribute.rb +127 -0
  423. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/choice.rb +69 -0
  424. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/complexContent.rb +92 -0
  425. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/complexType.rb +139 -0
  426. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/content.rb +96 -0
  427. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/data.rb +80 -0
  428. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/element.rb +154 -0
  429. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/enumeration.rb +36 -0
  430. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/import.rb +65 -0
  431. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/importer.rb +87 -0
  432. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/include.rb +54 -0
  433. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/length.rb +35 -0
  434. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/parser.rb +166 -0
  435. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/pattern.rb +36 -0
  436. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/schema.rb +143 -0
  437. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/sequence.rb +69 -0
  438. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/simpleContent.rb +65 -0
  439. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/simpleExtension.rb +54 -0
  440. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/simpleRestriction.rb +73 -0
  441. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/simpleType.rb +73 -0
  442. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/unique.rb +34 -0
  443. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/xsd2ruby.rb +107 -0
  444. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/.document +1 -0
  445. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/README.txt +31 -0
  446. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/base64.rb +81 -0
  447. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/client.rb +624 -0
  448. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/config.rb +40 -0
  449. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/create.rb +290 -0
  450. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/datetime.rb +142 -0
  451. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/httpserver.rb +178 -0
  452. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/marshal.rb +76 -0
  453. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/parser.rb +813 -0
  454. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/server.rb +780 -0
  455. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/utils.rb +165 -0
  456. data/vendor/javascripts/emscripted-ruby/lib/xsd/charset.rb +187 -0
  457. data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen.rb +12 -0
  458. data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/classdef.rb +203 -0
  459. data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/commentdef.rb +34 -0
  460. data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/gensupport.rb +166 -0
  461. data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/methoddef.rb +63 -0
  462. data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/moduledef.rb +191 -0
  463. data/vendor/javascripts/emscripted-ruby/lib/xsd/datatypes.rb +1269 -0
  464. data/vendor/javascripts/emscripted-ruby/lib/xsd/datatypes1999.rb +20 -0
  465. data/vendor/javascripts/emscripted-ruby/lib/xsd/iconvcharset.rb +33 -0
  466. data/vendor/javascripts/emscripted-ruby/lib/xsd/mapping.rb +42 -0
  467. data/vendor/javascripts/emscripted-ruby/lib/xsd/namedelements.rb +95 -0
  468. data/vendor/javascripts/emscripted-ruby/lib/xsd/ns.rb +140 -0
  469. data/vendor/javascripts/emscripted-ruby/lib/xsd/qname.rb +78 -0
  470. data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser.rb +61 -0
  471. data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser/parser.rb +96 -0
  472. data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser/rexmlparser.rb +54 -0
  473. data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser/xmlparser.rb +50 -0
  474. data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser/xmlscanner.rb +147 -0
  475. data/vendor/javascripts/emscripted-ruby/lib/yaml.rb +440 -0
  476. data/vendor/javascripts/emscripted-ruby/lib/yaml/baseemitter.rb +247 -0
  477. data/vendor/javascripts/emscripted-ruby/lib/yaml/basenode.rb +216 -0
  478. data/vendor/javascripts/emscripted-ruby/lib/yaml/constants.rb +45 -0
  479. data/vendor/javascripts/emscripted-ruby/lib/yaml/dbm.rb +111 -0
  480. data/vendor/javascripts/emscripted-ruby/lib/yaml/encoding.rb +33 -0
  481. data/vendor/javascripts/emscripted-ruby/lib/yaml/error.rb +34 -0
  482. data/vendor/javascripts/emscripted-ruby/lib/yaml/loader.rb +14 -0
  483. data/vendor/javascripts/emscripted-ruby/lib/yaml/rubytypes.rb +408 -0
  484. data/vendor/javascripts/emscripted-ruby/lib/yaml/store.rb +43 -0
  485. data/vendor/javascripts/emscripted-ruby/lib/yaml/stream.rb +40 -0
  486. data/vendor/javascripts/emscripted-ruby/lib/yaml/stringio.rb +83 -0
  487. data/vendor/javascripts/emscripted-ruby/lib/yaml/syck.rb +19 -0
  488. data/vendor/javascripts/emscripted-ruby/lib/yaml/tag.rb +91 -0
  489. data/vendor/javascripts/emscripted-ruby/lib/yaml/types.rb +192 -0
  490. data/vendor/javascripts/emscripted-ruby/lib/yaml/yamlnode.rb +54 -0
  491. data/vendor/javascripts/emscripted-ruby/lib/yaml/ypath.rb +52 -0
  492. data/vendor/javascripts/emscripted-ruby/ruby.closure.js +7201 -0
  493. metadata +554 -0
@@ -0,0 +1,15 @@
1
+ #
2
+ # compat.rb -- cross platform compatibility
3
+ #
4
+ # Author: IPR -- Internet Programming with Ruby -- writers
5
+ # Copyright (c) 2002 GOTOU Yuuzou
6
+ # Copyright (c) 2002 Internet Programming with Ruby writers. All rights
7
+ # reserved.
8
+ #
9
+ # $IPR: compat.rb,v 1.6 2002/10/01 17:16:32 gotoyuzo Exp $
10
+
11
+ module Errno
12
+ class EPROTO < SystemCallError; end
13
+ class ECONNRESET < SystemCallError; end
14
+ class ECONNABORTED < SystemCallError; end
15
+ end
@@ -0,0 +1,97 @@
1
+ #
2
+ # config.rb -- Default configurations.
3
+ #
4
+ # Author: IPR -- Internet Programming with Ruby -- writers
5
+ # Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
6
+ # Copyright (c) 2003 Internet Programming with Ruby writers. All rights
7
+ # reserved.
8
+ #
9
+ # $IPR: config.rb,v 1.52 2003/07/22 19:20:42 gotoyuzo Exp $
10
+
11
+ require 'webrick/version'
12
+ require 'webrick/httpversion'
13
+ require 'webrick/httputils'
14
+ require 'webrick/utils'
15
+ require 'webrick/log'
16
+
17
+ module WEBrick
18
+ module Config
19
+ LIBDIR = File::dirname(__FILE__)
20
+
21
+ # for GenericServer
22
+ General = {
23
+ :ServerName => Utils::getservername,
24
+ :BindAddress => nil, # "0.0.0.0" or "::" or nil
25
+ :Port => nil, # users MUST specifiy this!!
26
+ :MaxClients => 100, # maximum number of the concurrent connections
27
+ :ServerType => nil, # default: WEBrick::SimpleServer
28
+ :Logger => nil, # default: WEBrick::Log.new
29
+ :ServerSoftware => "WEBrick/#{WEBrick::VERSION} " +
30
+ "(Ruby/#{RUBY_VERSION}/#{RUBY_RELEASE_DATE})",
31
+ :TempDir => ENV['TMPDIR']||ENV['TMP']||ENV['TEMP']||'/tmp',
32
+ :DoNotListen => false,
33
+ :StartCallback => nil,
34
+ :StopCallback => nil,
35
+ :AcceptCallback => nil,
36
+ }
37
+
38
+ # for HTTPServer, HTTPRequest, HTTPResponse ...
39
+ HTTP = General.dup.update(
40
+ :Port => 80,
41
+ :RequestTimeout => 30,
42
+ :HTTPVersion => HTTPVersion.new("1.1"),
43
+ :AccessLog => nil,
44
+ :MimeTypes => HTTPUtils::DefaultMimeTypes,
45
+ :DirectoryIndex => ["index.html","index.htm","index.cgi","index.rhtml"],
46
+ :DocumentRoot => nil,
47
+ :DocumentRootOptions => { :FancyIndexing => true },
48
+ :RequestHandler => nil,
49
+ :RequestCallback => nil, # alias of :RequestHandler
50
+ :ServerAlias => nil,
51
+
52
+ # for HTTPProxyServer
53
+ :ProxyAuthProc => nil,
54
+ :ProxyContentHandler => nil,
55
+ :ProxyVia => true,
56
+ :ProxyTimeout => true,
57
+ :ProxyURI => nil,
58
+
59
+ :CGIInterpreter => nil,
60
+ :CGIPathEnv => nil,
61
+
62
+ # workaround: if Request-URIs contain 8bit chars,
63
+ # they should be escaped before calling of URI::parse().
64
+ :Escape8bitURI => false
65
+ )
66
+
67
+ FileHandler = {
68
+ :NondisclosureName => [".ht*", "*~"],
69
+ :FancyIndexing => false,
70
+ :HandlerTable => {},
71
+ :HandlerCallback => nil,
72
+ :DirectoryCallback => nil,
73
+ :FileCallback => nil,
74
+ :UserDir => nil, # e.g. "public_html"
75
+ :AcceptableLanguages => [] # ["en", "ja", ... ]
76
+ }
77
+
78
+ BasicAuth = {
79
+ :AutoReloadUserDB => true,
80
+ }
81
+
82
+ DigestAuth = {
83
+ :Algorithm => 'MD5-sess', # or 'MD5'
84
+ :Domain => nil, # an array includes domain names.
85
+ :Qop => [ 'auth' ], # 'auth' or 'auth-int' or both.
86
+ :UseOpaque => true,
87
+ :UseNextNonce => false,
88
+ :CheckNc => false,
89
+ :UseAuthenticationInfoHeader => true,
90
+ :AutoReloadUserDB => true,
91
+ :NonceExpirePeriod => 30*60,
92
+ :NonceExpireDelta => 60,
93
+ :InternetExplorerHack => true,
94
+ :OperaHack => true,
95
+ }
96
+ end
97
+ end
@@ -0,0 +1,110 @@
1
+ #
2
+ # cookie.rb -- Cookie class
3
+ #
4
+ # Author: IPR -- Internet Programming with Ruby -- writers
5
+ # Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
6
+ # Copyright (c) 2002 Internet Programming with Ruby writers. All rights
7
+ # reserved.
8
+ #
9
+ # $IPR: cookie.rb,v 1.16 2002/09/21 12:23:35 gotoyuzo Exp $
10
+
11
+ require 'time'
12
+ require 'webrick/httputils'
13
+
14
+ module WEBrick
15
+ class Cookie
16
+
17
+ attr_reader :name
18
+ attr_accessor :value, :version
19
+ attr_accessor :domain, :path, :secure
20
+ attr_accessor :comment, :max_age
21
+ #attr_accessor :comment_url, :discard, :port
22
+
23
+ def initialize(name, value)
24
+ @name = name
25
+ @value = value
26
+ @version = 0 # Netscape Cookie
27
+
28
+ @domain = @path = @secure = @comment = @max_age =
29
+ @expires = @comment_url = @discard = @port = nil
30
+ end
31
+
32
+ def expires=(t)
33
+ @expires = t && (t.is_a?(Time) ? t.httpdate : t.to_s)
34
+ end
35
+
36
+ def expires
37
+ @expires && Time.parse(@expires)
38
+ end
39
+
40
+ def to_s
41
+ ret = ""
42
+ ret << @name << "=" << @value
43
+ ret << "; " << "Version=" << @version.to_s if @version > 0
44
+ ret << "; " << "Domain=" << @domain if @domain
45
+ ret << "; " << "Expires=" << @expires if @expires
46
+ ret << "; " << "Max-Age=" << @max_age.to_s if @max_age
47
+ ret << "; " << "Comment=" << @comment if @comment
48
+ ret << "; " << "Path=" << @path if @path
49
+ ret << "; " << "Secure" if @secure
50
+ ret
51
+ end
52
+
53
+ # Cookie::parse()
54
+ # It parses Cookie field sent from the user agent.
55
+ def self.parse(str)
56
+ if str
57
+ ret = []
58
+ cookie = nil
59
+ ver = 0
60
+ str.split(/[;,]\s+/).each{|x|
61
+ key, val = x.split(/=/,2)
62
+ val = val ? HTTPUtils::dequote(val) : ""
63
+ case key
64
+ when "$Version"; ver = val.to_i
65
+ when "$Path"; cookie.path = val
66
+ when "$Domain"; cookie.domain = val
67
+ when "$Port"; cookie.port = val
68
+ else
69
+ ret << cookie if cookie
70
+ cookie = self.new(key, val)
71
+ cookie.version = ver
72
+ end
73
+ }
74
+ ret << cookie if cookie
75
+ ret
76
+ end
77
+ end
78
+
79
+ def self.parse_set_cookie(str)
80
+ cookie_elem = str.split(/;/)
81
+ first_elem = cookie_elem.shift
82
+ first_elem.strip!
83
+ key, value = first_elem.split(/=/, 2)
84
+ cookie = new(key, HTTPUtils.dequote(value))
85
+ cookie_elem.each{|pair|
86
+ pair.strip!
87
+ key, value = pair.split(/=/, 2)
88
+ if value
89
+ value = HTTPUtils.dequote(value.strip)
90
+ end
91
+ case key.downcase
92
+ when "domain" then cookie.domain = value
93
+ when "path" then cookie.path = value
94
+ when "expires" then cookie.expires = value
95
+ when "max-age" then cookie.max_age = Integer(value)
96
+ when "comment" then cookie.comment = value
97
+ when "version" then cookie.version = Integer(value)
98
+ when "secure" then cookie.secure = true
99
+ end
100
+ }
101
+ return cookie
102
+ end
103
+
104
+ def self.parse_set_cookies(str)
105
+ return str.split(/,(?=[^;,]*=)|,$/).collect{|c|
106
+ parse_set_cookie(c)
107
+ }
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,25 @@
1
+ #
2
+ # htmlutils.rb -- HTMLUtils Module
3
+ #
4
+ # Author: IPR -- Internet Programming with Ruby -- writers
5
+ # Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
6
+ # Copyright (c) 2002 Internet Programming with Ruby writers. All rights
7
+ # reserved.
8
+ #
9
+ # $IPR: htmlutils.rb,v 1.7 2002/09/21 12:23:35 gotoyuzo Exp $
10
+
11
+ module WEBrick
12
+ module HTMLUtils
13
+
14
+ def escape(string)
15
+ str = string ? string.dup : ""
16
+ str.gsub!(/&/n, '&amp;')
17
+ str.gsub!(/\"/n, '&quot;')
18
+ str.gsub!(/>/n, '&gt;')
19
+ str.gsub!(/</n, '&lt;')
20
+ str
21
+ end
22
+ module_function :escape
23
+
24
+ end
25
+ end
@@ -0,0 +1,45 @@
1
+ #
2
+ # httpauth.rb -- HTTP access authentication
3
+ #
4
+ # Author: IPR -- Internet Programming with Ruby -- writers
5
+ # Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
6
+ # Copyright (c) 2002 Internet Programming with Ruby writers. All rights
7
+ # reserved.
8
+ #
9
+ # $IPR: httpauth.rb,v 1.14 2003/07/22 19:20:42 gotoyuzo Exp $
10
+
11
+ require 'webrick/httpauth/basicauth'
12
+ require 'webrick/httpauth/digestauth'
13
+ require 'webrick/httpauth/htpasswd'
14
+ require 'webrick/httpauth/htdigest'
15
+ require 'webrick/httpauth/htgroup'
16
+
17
+ module WEBrick
18
+ module HTTPAuth
19
+ module_function
20
+
21
+ def _basic_auth(req, res, realm, req_field, res_field, err_type, block)
22
+ user = pass = nil
23
+ if /^Basic\s+(.*)/o =~ req[req_field]
24
+ userpass = $1
25
+ user, pass = userpass.unpack("m*")[0].split(":", 2)
26
+ end
27
+ if block.call(user, pass)
28
+ req.user = user
29
+ return
30
+ end
31
+ res[res_field] = "Basic realm=\"#{realm}\""
32
+ raise err_type
33
+ end
34
+
35
+ def basic_auth(req, res, realm, &block)
36
+ _basic_auth(req, res, realm, "Authorization", "WWW-Authenticate",
37
+ HTTPStatus::Unauthorized, block)
38
+ end
39
+
40
+ def proxy_basic_auth(req, res, realm, &block)
41
+ _basic_auth(req, res, realm, "Proxy-Authorization", "Proxy-Authenticate",
42
+ HTTPStatus::ProxyAuthenticationRequired, block)
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,79 @@
1
+ #
2
+ # httpauth/authenticator.rb -- Authenticator mix-in module.
3
+ #
4
+ # Author: IPR -- Internet Programming with Ruby -- writers
5
+ # Copyright (c) 2003 Internet Programming with Ruby writers. All rights
6
+ # reserved.
7
+ #
8
+ # $IPR: authenticator.rb,v 1.3 2003/02/20 07:15:47 gotoyuzo Exp $
9
+
10
+ module WEBrick
11
+ module HTTPAuth
12
+ module Authenticator
13
+ RequestField = "Authorization"
14
+ ResponseField = "WWW-Authenticate"
15
+ ResponseInfoField = "Authentication-Info"
16
+ AuthException = HTTPStatus::Unauthorized
17
+ AuthScheme = nil # must override by the derived class
18
+
19
+ attr_reader :realm, :userdb, :logger
20
+
21
+ private
22
+
23
+ def check_init(config)
24
+ [:UserDB, :Realm].each{|sym|
25
+ unless config[sym]
26
+ raise ArgumentError, "Argument #{sym.inspect} missing."
27
+ end
28
+ }
29
+ @realm = config[:Realm]
30
+ @userdb = config[:UserDB]
31
+ @logger = config[:Logger] || Log::new($stderr)
32
+ @reload_db = config[:AutoReloadUserDB]
33
+ @request_field = self::class::RequestField
34
+ @response_field = self::class::ResponseField
35
+ @resp_info_field = self::class::ResponseInfoField
36
+ @auth_exception = self::class::AuthException
37
+ @auth_scheme = self::class::AuthScheme
38
+ end
39
+
40
+ def check_scheme(req)
41
+ unless credentials = req[@request_field]
42
+ error("no credentials in the request.")
43
+ return nil
44
+ end
45
+ unless match = /^#{@auth_scheme}\s+/.match(credentials)
46
+ error("invalid scheme in %s.", credentials)
47
+ info("%s: %s", @request_field, credentials) if $DEBUG
48
+ return nil
49
+ end
50
+ return match.post_match
51
+ end
52
+
53
+ def log(meth, fmt, *args)
54
+ msg = format("%s %s: ", @auth_scheme, @realm)
55
+ msg << fmt % args
56
+ @logger.send(meth, msg)
57
+ end
58
+
59
+ def error(fmt, *args)
60
+ if @logger.error?
61
+ log(:error, fmt, *args)
62
+ end
63
+ end
64
+
65
+ def info(fmt, *args)
66
+ if @logger.info?
67
+ log(:info, fmt, *args)
68
+ end
69
+ end
70
+ end
71
+
72
+ module ProxyAuthenticator
73
+ RequestField = "Proxy-Authorization"
74
+ ResponseField = "Proxy-Authenticate"
75
+ InfoField = "Proxy-Authentication-Info"
76
+ AuthException = HTTPStatus::ProxyAuthenticationRequired
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,65 @@
1
+ #
2
+ # httpauth/basicauth.rb -- HTTP basic access authentication
3
+ #
4
+ # Author: IPR -- Internet Programming with Ruby -- writers
5
+ # Copyright (c) 2003 Internet Programming with Ruby writers. All rights
6
+ # reserved.
7
+ #
8
+ # $IPR: basicauth.rb,v 1.5 2003/02/20 07:15:47 gotoyuzo Exp $
9
+
10
+ require 'webrick/config'
11
+ require 'webrick/httpstatus'
12
+ require 'webrick/httpauth/authenticator'
13
+
14
+ module WEBrick
15
+ module HTTPAuth
16
+ class BasicAuth
17
+ include Authenticator
18
+
19
+ AuthScheme = "Basic"
20
+
21
+ def self.make_passwd(realm, user, pass)
22
+ pass ||= ""
23
+ pass.crypt(Utils::random_string(2))
24
+ end
25
+
26
+ attr_reader :realm, :userdb, :logger
27
+
28
+ def initialize(config, default=Config::BasicAuth)
29
+ check_init(config)
30
+ @config = default.dup.update(config)
31
+ end
32
+
33
+ def authenticate(req, res)
34
+ unless basic_credentials = check_scheme(req)
35
+ challenge(req, res)
36
+ end
37
+ userid, password = basic_credentials.unpack("m*")[0].split(":", 2)
38
+ password ||= ""
39
+ if userid.empty?
40
+ error("user id was not given.")
41
+ challenge(req, res)
42
+ end
43
+ unless encpass = @userdb.get_passwd(@realm, userid, @reload_db)
44
+ error("%s: the user is not allowed.", userid)
45
+ challenge(req, res)
46
+ end
47
+ if password.crypt(encpass) != encpass
48
+ error("%s: password unmatch.", userid)
49
+ challenge(req, res)
50
+ end
51
+ info("%s: authentication succeeded.", userid)
52
+ req.user = userid
53
+ end
54
+
55
+ def challenge(req, res)
56
+ res[@response_field] = "#{@auth_scheme} realm=\"#{@realm}\""
57
+ raise @auth_exception
58
+ end
59
+ end
60
+
61
+ class ProxyBasicAuth < BasicAuth
62
+ include ProxyAuthenticator
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,343 @@
1
+ #
2
+ # httpauth/digestauth.rb -- HTTP digest access authentication
3
+ #
4
+ # Author: IPR -- Internet Programming with Ruby -- writers
5
+ # Copyright (c) 2003 Internet Programming with Ruby writers.
6
+ # Copyright (c) 2003 H.M.
7
+ #
8
+ # The original implementation is provided by H.M.
9
+ # URL: http://rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb?cmd=view;name=
10
+ # %C7%A7%BE%DA%B5%A1%C7%BD%A4%F2%B2%FE%C2%A4%A4%B7%A4%C6%A4%DF%A4%EB
11
+ #
12
+ # $IPR: digestauth.rb,v 1.5 2003/02/20 07:15:47 gotoyuzo Exp $
13
+
14
+ require 'webrick/config'
15
+ require 'webrick/httpstatus'
16
+ require 'webrick/httpauth/authenticator'
17
+ require 'digest/md5'
18
+ require 'digest/sha1'
19
+
20
+ module WEBrick
21
+ module HTTPAuth
22
+ class DigestAuth
23
+ include Authenticator
24
+
25
+ AuthScheme = "Digest"
26
+ OpaqueInfo = Struct.new(:time, :nonce, :nc)
27
+ attr_reader :algorithm, :qop
28
+
29
+ def self.make_passwd(realm, user, pass)
30
+ pass ||= ""
31
+ Digest::MD5::hexdigest([user, realm, pass].join(":"))
32
+ end
33
+
34
+ def initialize(config, default=Config::DigestAuth)
35
+ check_init(config)
36
+ @config = default.dup.update(config)
37
+ @algorithm = @config[:Algorithm]
38
+ @domain = @config[:Domain]
39
+ @qop = @config[:Qop]
40
+ @use_opaque = @config[:UseOpaque]
41
+ @use_next_nonce = @config[:UseNextNonce]
42
+ @check_nc = @config[:CheckNc]
43
+ @use_auth_info_header = @config[:UseAuthenticationInfoHeader]
44
+ @nonce_expire_period = @config[:NonceExpirePeriod]
45
+ @nonce_expire_delta = @config[:NonceExpireDelta]
46
+ @internet_explorer_hack = @config[:InternetExplorerHack]
47
+ @opera_hack = @config[:OperaHack]
48
+
49
+ case @algorithm
50
+ when 'MD5','MD5-sess'
51
+ @h = Digest::MD5
52
+ when 'SHA1','SHA1-sess' # it is a bonus feature :-)
53
+ @h = Digest::SHA1
54
+ else
55
+ msg = format('Alogrithm "%s" is not supported.', @algorithm)
56
+ raise ArgumentError.new(msg)
57
+ end
58
+
59
+ @instance_key = hexdigest(self.__id__, Time.now.to_i, Process.pid)
60
+ @opaques = {}
61
+ @last_nonce_expire = Time.now
62
+ @mutex = Mutex.new
63
+ end
64
+
65
+ def authenticate(req, res)
66
+ unless result = @mutex.synchronize{ _authenticate(req, res) }
67
+ challenge(req, res)
68
+ end
69
+ if result == :nonce_is_stale
70
+ challenge(req, res, true)
71
+ end
72
+ return true
73
+ end
74
+
75
+ def challenge(req, res, stale=false)
76
+ nonce = generate_next_nonce(req)
77
+ if @use_opaque
78
+ opaque = generate_opaque(req)
79
+ @opaques[opaque].nonce = nonce
80
+ end
81
+
82
+ param = Hash.new
83
+ param["realm"] = HTTPUtils::quote(@realm)
84
+ param["domain"] = HTTPUtils::quote(@domain.to_a.join(" ")) if @domain
85
+ param["nonce"] = HTTPUtils::quote(nonce)
86
+ param["opaque"] = HTTPUtils::quote(opaque) if opaque
87
+ param["stale"] = stale.to_s
88
+ param["algorithm"] = @algorithm
89
+ param["qop"] = HTTPUtils::quote(@qop.to_a.join(",")) if @qop
90
+
91
+ res[@response_field] =
92
+ "#{@auth_scheme} " + param.map{|k,v| "#{k}=#{v}" }.join(", ")
93
+ info("%s: %s", @response_field, res[@response_field]) if $DEBUG
94
+ raise @auth_exception
95
+ end
96
+
97
+ private
98
+
99
+ MustParams = ['username','realm','nonce','uri','response']
100
+ MustParamsAuth = ['cnonce','nc']
101
+
102
+ def _authenticate(req, res)
103
+ unless digest_credentials = check_scheme(req)
104
+ return false
105
+ end
106
+
107
+ auth_req = split_param_value(digest_credentials)
108
+ if auth_req['qop'] == "auth" || auth_req['qop'] == "auth-int"
109
+ req_params = MustParams + MustParamsAuth
110
+ else
111
+ req_params = MustParams
112
+ end
113
+ req_params.each{|key|
114
+ unless auth_req.has_key?(key)
115
+ error('%s: parameter missing. "%s"', auth_req['username'], key)
116
+ raise HTTPStatus::BadRequest
117
+ end
118
+ }
119
+
120
+ if !check_uri(req, auth_req)
121
+ raise HTTPStatus::BadRequest
122
+ end
123
+
124
+ if auth_req['realm'] != @realm
125
+ error('%s: realm unmatch. "%s" for "%s"',
126
+ auth_req['username'], auth_req['realm'], @realm)
127
+ return false
128
+ end
129
+
130
+ auth_req['algorithm'] ||= 'MD5'
131
+ if auth_req['algorithm'] != @algorithm &&
132
+ (@opera_hack && auth_req['algorithm'] != @algorithm.upcase)
133
+ error('%s: algorithm unmatch. "%s" for "%s"',
134
+ auth_req['username'], auth_req['algorithm'], @algorithm)
135
+ return false
136
+ end
137
+
138
+ if (@qop.nil? && auth_req.has_key?('qop')) ||
139
+ (@qop && (! @qop.member?(auth_req['qop'])))
140
+ error('%s: the qop is not allowed. "%s"',
141
+ auth_req['username'], auth_req['qop'])
142
+ return false
143
+ end
144
+
145
+ password = @userdb.get_passwd(@realm, auth_req['username'], @reload_db)
146
+ unless password
147
+ error('%s: the user is not allowd.', auth_req['username'])
148
+ return false
149
+ end
150
+
151
+ nonce_is_invalid = false
152
+ if @use_opaque
153
+ info("@opaque = %s", @opaque.inspect) if $DEBUG
154
+ if !(opaque = auth_req['opaque'])
155
+ error('%s: opaque is not given.', auth_req['username'])
156
+ nonce_is_invalid = true
157
+ elsif !(opaque_struct = @opaques[opaque])
158
+ error('%s: invalid opaque is given.', auth_req['username'])
159
+ nonce_is_invalid = true
160
+ elsif !check_opaque(opaque_struct, req, auth_req)
161
+ @opaques.delete(auth_req['opaque'])
162
+ nonce_is_invalid = true
163
+ end
164
+ elsif !check_nonce(req, auth_req)
165
+ nonce_is_invalid = true
166
+ end
167
+
168
+ if /-sess$/ =~ auth_req['algorithm'] ||
169
+ (@opera_hack && /-SESS$/ =~ auth_req['algorithm'])
170
+ ha1 = hexdigest(password, auth_req['nonce'], auth_req['cnonce'])
171
+ else
172
+ ha1 = password
173
+ end
174
+
175
+ if auth_req['qop'] == "auth" || auth_req['qop'] == nil
176
+ ha2 = hexdigest(req.request_method, auth_req['uri'])
177
+ ha2_res = hexdigest("", auth_req['uri'])
178
+ elsif auth_req['qop'] == "auth-int"
179
+ ha2 = hexdigest(req.request_method, auth_req['uri'],
180
+ hexdigest(req.body))
181
+ ha2_res = hexdigest("", auth_req['uri'], hexdigest(res.body))
182
+ end
183
+
184
+ if auth_req['qop'] == "auth" || auth_req['qop'] == "auth-int"
185
+ param2 = ['nonce', 'nc', 'cnonce', 'qop'].map{|key|
186
+ auth_req[key]
187
+ }.join(':')
188
+ digest = hexdigest(ha1, param2, ha2)
189
+ digest_res = hexdigest(ha1, param2, ha2_res)
190
+ else
191
+ digest = hexdigest(ha1, auth_req['nonce'], ha2)
192
+ digest_res = hexdigest(ha1, auth_req['nonce'], ha2_res)
193
+ end
194
+
195
+ if digest != auth_req['response']
196
+ error("%s: digest unmatch.", auth_req['username'])
197
+ return false
198
+ elsif nonce_is_invalid
199
+ error('%s: digest is valid, but nonce is not valid.',
200
+ auth_req['username'])
201
+ return :nonce_is_stale
202
+ elsif @use_auth_info_header
203
+ auth_info = {
204
+ 'nextnonce' => generate_next_nonce(req),
205
+ 'rspauth' => digest_res
206
+ }
207
+ if @use_opaque
208
+ opaque_struct.time = req.request_time
209
+ opaque_struct.nonce = auth_info['nextnonce']
210
+ opaque_struct.nc = "%08x" % (auth_req['nc'].hex + 1)
211
+ end
212
+ if auth_req['qop'] == "auth" || auth_req['qop'] == "auth-int"
213
+ ['qop','cnonce','nc'].each{|key|
214
+ auth_info[key] = auth_req[key]
215
+ }
216
+ end
217
+ res[@resp_info_field] = auth_info.keys.map{|key|
218
+ if key == 'nc'
219
+ key + '=' + auth_info[key]
220
+ else
221
+ key + "=" + HTTPUtils::quote(auth_info[key])
222
+ end
223
+ }.join(', ')
224
+ end
225
+ info('%s: authentication scceeded.', auth_req['username'])
226
+ req.user = auth_req['username']
227
+ return true
228
+ end
229
+
230
+ def split_param_value(string)
231
+ ret = {}
232
+ while string.size != 0
233
+ case string
234
+ when /^\s*([\w\-\.\*\%\!]+)=\s*\"((\\.|[^\"])*)\"\s*,?/
235
+ key = $1
236
+ matched = $2
237
+ string = $'
238
+ ret[key] = matched.gsub(/\\(.)/, "\\1")
239
+ when /^\s*([\w\-\.\*\%\!]+)=\s*([^,\"]*),?/
240
+ key = $1
241
+ matched = $2
242
+ string = $'
243
+ ret[key] = matched.clone
244
+ when /^s*^,/
245
+ string = $'
246
+ else
247
+ break
248
+ end
249
+ end
250
+ ret
251
+ end
252
+
253
+ def generate_next_nonce(req)
254
+ now = "%012d" % req.request_time.to_i
255
+ pk = hexdigest(now, @instance_key)[0,32]
256
+ nonce = [now + ":" + pk].pack("m*").chop # it has 60 length of chars.
257
+ nonce
258
+ end
259
+
260
+ def check_nonce(req, auth_req)
261
+ username = auth_req['username']
262
+ nonce = auth_req['nonce']
263
+
264
+ pub_time, pk = nonce.unpack("m*")[0].split(":", 2)
265
+ if (!pub_time || !pk)
266
+ error("%s: empty nonce is given", username)
267
+ return false
268
+ elsif (hexdigest(pub_time, @instance_key)[0,32] != pk)
269
+ error("%s: invalid private-key: %s for %s",
270
+ username, hexdigest(pub_time, @instance_key)[0,32], pk)
271
+ return false
272
+ end
273
+
274
+ diff_time = req.request_time.to_i - pub_time.to_i
275
+ if (diff_time < 0)
276
+ error("%s: difference of time-stamp is negative.", username)
277
+ return false
278
+ elsif diff_time > @nonce_expire_period
279
+ error("%s: nonce is expired.", username)
280
+ return false
281
+ end
282
+
283
+ return true
284
+ end
285
+
286
+ def generate_opaque(req)
287
+ @mutex.synchronize{
288
+ now = req.request_time
289
+ if now - @last_nonce_expire > @nonce_expire_delta
290
+ @opaques.delete_if{|key,val|
291
+ (now - val.time) > @nonce_expire_period
292
+ }
293
+ @last_nonce_expire = now
294
+ end
295
+ begin
296
+ opaque = Utils::random_string(16)
297
+ end while @opaques[opaque]
298
+ @opaques[opaque] = OpaqueInfo.new(now, nil, '00000001')
299
+ opaque
300
+ }
301
+ end
302
+
303
+ def check_opaque(opaque_struct, req, auth_req)
304
+ if (@use_next_nonce && auth_req['nonce'] != opaque_struct.nonce)
305
+ error('%s: nonce unmatched. "%s" for "%s"',
306
+ auth_req['username'], auth_req['nonce'], opaque_struct.nonce)
307
+ return false
308
+ elsif !check_nonce(req, auth_req)
309
+ return false
310
+ end
311
+ if (@check_nc && auth_req['nc'] != opaque_struct.nc)
312
+ error('%s: nc unmatched."%s" for "%s"',
313
+ auth_req['username'], auth_req['nc'], opaque_struct.nc)
314
+ return false
315
+ end
316
+ true
317
+ end
318
+
319
+ def check_uri(req, auth_req)
320
+ uri = auth_req['uri']
321
+ if uri != req.request_uri.to_s && uri != req.unparsed_uri &&
322
+ (@internet_explorer_hack && uri != req.path)
323
+ error('%s: uri unmatch. "%s" for "%s"', auth_req['username'],
324
+ auth_req['uri'], req.request_uri.to_s)
325
+ return false
326
+ end
327
+ true
328
+ end
329
+
330
+ def hexdigest(*args)
331
+ @h.hexdigest(args.join(":"))
332
+ end
333
+ end
334
+
335
+ class ProxyDigestAuth < DigestAuth
336
+ include ProxyAuthenticator
337
+
338
+ def check_uri(req, auth_req)
339
+ return true
340
+ end
341
+ end
342
+ end
343
+ end