gitlab-pygments.rb 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. data/.gitignore +6 -0
  2. data/Gemfile +2 -0
  3. data/README.md +91 -0
  4. data/Rakefile +78 -0
  5. data/bench.rb +22 -0
  6. data/cache-lexers.rb +8 -0
  7. data/lexers +0 -0
  8. data/lib/pygments/lexer.rb +148 -0
  9. data/lib/pygments/mentos.py +344 -0
  10. data/lib/pygments/popen.rb +389 -0
  11. data/lib/pygments/version.rb +3 -0
  12. data/lib/pygments.rb +8 -0
  13. data/pygments.rb.gemspec +24 -0
  14. data/test/test_data.c +2581 -0
  15. data/test/test_data.py +514 -0
  16. data/test/test_data_generated +2582 -0
  17. data/test/test_pygments.rb +276 -0
  18. data/vendor/custom_formatters/gitlab.py +171 -0
  19. data/vendor/custom_lexers/github.py +362 -0
  20. data/vendor/pygments-main/AUTHORS +115 -0
  21. data/vendor/pygments-main/CHANGES +762 -0
  22. data/vendor/pygments-main/LICENSE +25 -0
  23. data/vendor/pygments-main/MANIFEST.in +6 -0
  24. data/vendor/pygments-main/Makefile +59 -0
  25. data/vendor/pygments-main/REVISION +1 -0
  26. data/vendor/pygments-main/TODO +15 -0
  27. data/vendor/pygments-main/docs/generate.py +472 -0
  28. data/vendor/pygments-main/docs/pygmentize.1 +94 -0
  29. data/vendor/pygments-main/docs/src/api.txt +270 -0
  30. data/vendor/pygments-main/docs/src/authors.txt +5 -0
  31. data/vendor/pygments-main/docs/src/changelog.txt +5 -0
  32. data/vendor/pygments-main/docs/src/cmdline.txt +147 -0
  33. data/vendor/pygments-main/docs/src/filterdevelopment.txt +70 -0
  34. data/vendor/pygments-main/docs/src/filters.txt +42 -0
  35. data/vendor/pygments-main/docs/src/formatterdevelopment.txt +169 -0
  36. data/vendor/pygments-main/docs/src/formatters.txt +48 -0
  37. data/vendor/pygments-main/docs/src/index.txt +69 -0
  38. data/vendor/pygments-main/docs/src/installation.txt +71 -0
  39. data/vendor/pygments-main/docs/src/integrate.txt +43 -0
  40. data/vendor/pygments-main/docs/src/lexerdevelopment.txt +551 -0
  41. data/vendor/pygments-main/docs/src/lexers.txt +67 -0
  42. data/vendor/pygments-main/docs/src/moinmoin.txt +39 -0
  43. data/vendor/pygments-main/docs/src/plugins.txt +93 -0
  44. data/vendor/pygments-main/docs/src/quickstart.txt +202 -0
  45. data/vendor/pygments-main/docs/src/rstdirective.txt +22 -0
  46. data/vendor/pygments-main/docs/src/styles.txt +143 -0
  47. data/vendor/pygments-main/docs/src/tokens.txt +349 -0
  48. data/vendor/pygments-main/docs/src/unicode.txt +49 -0
  49. data/vendor/pygments-main/external/markdown-processor.py +67 -0
  50. data/vendor/pygments-main/external/moin-parser.py +112 -0
  51. data/vendor/pygments-main/external/pygments.bashcomp +38 -0
  52. data/vendor/pygments-main/external/rst-directive-old.py +77 -0
  53. data/vendor/pygments-main/external/rst-directive.py +83 -0
  54. data/vendor/pygments-main/ez_setup.py +276 -0
  55. data/vendor/pygments-main/pygmentize +7 -0
  56. data/vendor/pygments-main/pygments/__init__.py +91 -0
  57. data/vendor/pygments-main/pygments/cmdline.py +433 -0
  58. data/vendor/pygments-main/pygments/console.py +74 -0
  59. data/vendor/pygments-main/pygments/filter.py +74 -0
  60. data/vendor/pygments-main/pygments/filters/__init__.py +357 -0
  61. data/vendor/pygments-main/pygments/formatter.py +92 -0
  62. data/vendor/pygments-main/pygments/formatters/__init__.py +68 -0
  63. data/vendor/pygments-main/pygments/formatters/_mapping.py +94 -0
  64. data/vendor/pygments-main/pygments/formatters/bbcode.py +109 -0
  65. data/vendor/pygments-main/pygments/formatters/gitlab.py +171 -0
  66. data/vendor/pygments-main/pygments/formatters/html.py +750 -0
  67. data/vendor/pygments-main/pygments/formatters/img.py +553 -0
  68. data/vendor/pygments-main/pygments/formatters/latex.py +378 -0
  69. data/vendor/pygments-main/pygments/formatters/other.py +117 -0
  70. data/vendor/pygments-main/pygments/formatters/rtf.py +136 -0
  71. data/vendor/pygments-main/pygments/formatters/svg.py +154 -0
  72. data/vendor/pygments-main/pygments/formatters/terminal.py +112 -0
  73. data/vendor/pygments-main/pygments/formatters/terminal256.py +222 -0
  74. data/vendor/pygments-main/pygments/lexer.py +697 -0
  75. data/vendor/pygments-main/pygments/lexers/__init__.py +229 -0
  76. data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1645 -0
  77. data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +232 -0
  78. data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +249 -0
  79. data/vendor/pygments-main/pygments/lexers/_mapping.py +298 -0
  80. data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +3787 -0
  81. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +232 -0
  82. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +29 -0
  83. data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +3 -0
  84. data/vendor/pygments-main/pygments/lexers/agile.py +1803 -0
  85. data/vendor/pygments-main/pygments/lexers/asm.py +360 -0
  86. data/vendor/pygments-main/pygments/lexers/compiled.py +2891 -0
  87. data/vendor/pygments-main/pygments/lexers/dotnet.py +636 -0
  88. data/vendor/pygments-main/pygments/lexers/functional.py +1832 -0
  89. data/vendor/pygments-main/pygments/lexers/github.py +362 -0
  90. data/vendor/pygments-main/pygments/lexers/hdl.py +356 -0
  91. data/vendor/pygments-main/pygments/lexers/jvm.py +847 -0
  92. data/vendor/pygments-main/pygments/lexers/math.py +1072 -0
  93. data/vendor/pygments-main/pygments/lexers/other.py +3339 -0
  94. data/vendor/pygments-main/pygments/lexers/parsers.py +695 -0
  95. data/vendor/pygments-main/pygments/lexers/shell.py +361 -0
  96. data/vendor/pygments-main/pygments/lexers/special.py +100 -0
  97. data/vendor/pygments-main/pygments/lexers/sql.py +559 -0
  98. data/vendor/pygments-main/pygments/lexers/templates.py +1631 -0
  99. data/vendor/pygments-main/pygments/lexers/text.py +1753 -0
  100. data/vendor/pygments-main/pygments/lexers/web.py +2864 -0
  101. data/vendor/pygments-main/pygments/plugin.py +74 -0
  102. data/vendor/pygments-main/pygments/scanner.py +104 -0
  103. data/vendor/pygments-main/pygments/style.py +117 -0
  104. data/vendor/pygments-main/pygments/styles/__init__.py +70 -0
  105. data/vendor/pygments-main/pygments/styles/autumn.py +65 -0
  106. data/vendor/pygments-main/pygments/styles/borland.py +51 -0
  107. data/vendor/pygments-main/pygments/styles/bw.py +49 -0
  108. data/vendor/pygments-main/pygments/styles/colorful.py +81 -0
  109. data/vendor/pygments-main/pygments/styles/default.py +73 -0
  110. data/vendor/pygments-main/pygments/styles/emacs.py +72 -0
  111. data/vendor/pygments-main/pygments/styles/friendly.py +72 -0
  112. data/vendor/pygments-main/pygments/styles/fruity.py +42 -0
  113. data/vendor/pygments-main/pygments/styles/manni.py +75 -0
  114. data/vendor/pygments-main/pygments/styles/monokai.py +106 -0
  115. data/vendor/pygments-main/pygments/styles/murphy.py +80 -0
  116. data/vendor/pygments-main/pygments/styles/native.py +65 -0
  117. data/vendor/pygments-main/pygments/styles/pastie.py +75 -0
  118. data/vendor/pygments-main/pygments/styles/perldoc.py +69 -0
  119. data/vendor/pygments-main/pygments/styles/rrt.py +33 -0
  120. data/vendor/pygments-main/pygments/styles/tango.py +141 -0
  121. data/vendor/pygments-main/pygments/styles/trac.py +63 -0
  122. data/vendor/pygments-main/pygments/styles/vim.py +63 -0
  123. data/vendor/pygments-main/pygments/styles/vs.py +38 -0
  124. data/vendor/pygments-main/pygments/token.py +195 -0
  125. data/vendor/pygments-main/pygments/unistring.py +130 -0
  126. data/vendor/pygments-main/pygments/util.py +232 -0
  127. data/vendor/pygments-main/scripts/check_sources.py +242 -0
  128. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +30 -0
  129. data/vendor/pygments-main/scripts/epydoc.css +280 -0
  130. data/vendor/pygments-main/scripts/find_codetags.py +205 -0
  131. data/vendor/pygments-main/scripts/find_error.py +171 -0
  132. data/vendor/pygments-main/scripts/get_vimkw.py +43 -0
  133. data/vendor/pygments-main/scripts/pylintrc +301 -0
  134. data/vendor/pygments-main/scripts/reindent.py +291 -0
  135. data/vendor/pygments-main/scripts/vim2pygments.py +933 -0
  136. data/vendor/pygments-main/setup.cfg +6 -0
  137. data/vendor/pygments-main/setup.py +88 -0
  138. data/vendor/pygments-main/tests/dtds/HTML4-f.dtd +37 -0
  139. data/vendor/pygments-main/tests/dtds/HTML4-s.dtd +869 -0
  140. data/vendor/pygments-main/tests/dtds/HTML4.dcl +88 -0
  141. data/vendor/pygments-main/tests/dtds/HTML4.dtd +1092 -0
  142. data/vendor/pygments-main/tests/dtds/HTML4.soc +9 -0
  143. data/vendor/pygments-main/tests/dtds/HTMLlat1.ent +195 -0
  144. data/vendor/pygments-main/tests/dtds/HTMLspec.ent +77 -0
  145. data/vendor/pygments-main/tests/dtds/HTMLsym.ent +241 -0
  146. data/vendor/pygments-main/tests/examplefiles/ANTLRv3.g +608 -0
  147. data/vendor/pygments-main/tests/examplefiles/AcidStateAdvanced.hs +209 -0
  148. data/vendor/pygments-main/tests/examplefiles/AlternatingGroup.mu +102 -0
  149. data/vendor/pygments-main/tests/examplefiles/CPDictionary.j +611 -0
  150. data/vendor/pygments-main/tests/examplefiles/Constants.mo +158 -0
  151. data/vendor/pygments-main/tests/examplefiles/DancingSudoku.lhs +411 -0
  152. data/vendor/pygments-main/tests/examplefiles/Errors.scala +18 -0
  153. data/vendor/pygments-main/tests/examplefiles/File.hy +174 -0
  154. data/vendor/pygments-main/tests/examplefiles/Intro.java +1660 -0
  155. data/vendor/pygments-main/tests/examplefiles/Makefile +1131 -0
  156. data/vendor/pygments-main/tests/examplefiles/Object.st +4394 -0
  157. data/vendor/pygments-main/tests/examplefiles/OrderedMap.hx +584 -0
  158. data/vendor/pygments-main/tests/examplefiles/SmallCheck.hs +378 -0
  159. data/vendor/pygments-main/tests/examplefiles/Sorting.mod +470 -0
  160. data/vendor/pygments-main/tests/examplefiles/Sudoku.lhs +382 -0
  161. data/vendor/pygments-main/tests/examplefiles/addressbook.proto +30 -0
  162. data/vendor/pygments-main/tests/examplefiles/antlr_throws +1 -0
  163. data/vendor/pygments-main/tests/examplefiles/apache2.conf +393 -0
  164. data/vendor/pygments-main/tests/examplefiles/as3_test.as +143 -0
  165. data/vendor/pygments-main/tests/examplefiles/as3_test2.as +46 -0
  166. data/vendor/pygments-main/tests/examplefiles/as3_test3.as +3 -0
  167. data/vendor/pygments-main/tests/examplefiles/aspx-cs_example +27 -0
  168. data/vendor/pygments-main/tests/examplefiles/badcase.java +2 -0
  169. data/vendor/pygments-main/tests/examplefiles/batchfile.bat +49 -0
  170. data/vendor/pygments-main/tests/examplefiles/boot-9.scm +1557 -0
  171. data/vendor/pygments-main/tests/examplefiles/cells.ps +515 -0
  172. data/vendor/pygments-main/tests/examplefiles/ceval.c +2604 -0
  173. data/vendor/pygments-main/tests/examplefiles/cheetah_example.html +13 -0
  174. data/vendor/pygments-main/tests/examplefiles/classes.dylan +40 -0
  175. data/vendor/pygments-main/tests/examplefiles/condensed_ruby.rb +10 -0
  176. data/vendor/pygments-main/tests/examplefiles/coq_RelationClasses +447 -0
  177. data/vendor/pygments-main/tests/examplefiles/database.pytb +20 -0
  178. data/vendor/pygments-main/tests/examplefiles/de.MoinMoin.po +2461 -0
  179. data/vendor/pygments-main/tests/examplefiles/demo.ahk +181 -0
  180. data/vendor/pygments-main/tests/examplefiles/demo.cfm +38 -0
  181. data/vendor/pygments-main/tests/examplefiles/django_sample.html+django +68 -0
  182. data/vendor/pygments-main/tests/examplefiles/dwarf.cw +17 -0
  183. data/vendor/pygments-main/tests/examplefiles/erl_session +10 -0
  184. data/vendor/pygments-main/tests/examplefiles/escape_semicolon.clj +1 -0
  185. data/vendor/pygments-main/tests/examplefiles/evil_regex.js +48 -0
  186. data/vendor/pygments-main/tests/examplefiles/example.c +2080 -0
  187. data/vendor/pygments-main/tests/examplefiles/example.cls +15 -0
  188. data/vendor/pygments-main/tests/examplefiles/example.cpp +2363 -0
  189. data/vendor/pygments-main/tests/examplefiles/example.gs +106 -0
  190. data/vendor/pygments-main/tests/examplefiles/example.gst +7 -0
  191. data/vendor/pygments-main/tests/examplefiles/example.kt +47 -0
  192. data/vendor/pygments-main/tests/examplefiles/example.lua +250 -0
  193. data/vendor/pygments-main/tests/examplefiles/example.moo +26 -0
  194. data/vendor/pygments-main/tests/examplefiles/example.moon +629 -0
  195. data/vendor/pygments-main/tests/examplefiles/example.nim +1010 -0
  196. data/vendor/pygments-main/tests/examplefiles/example.ns2 +69 -0
  197. data/vendor/pygments-main/tests/examplefiles/example.p +34 -0
  198. data/vendor/pygments-main/tests/examplefiles/example.pas +2708 -0
  199. data/vendor/pygments-main/tests/examplefiles/example.rb +1852 -0
  200. data/vendor/pygments-main/tests/examplefiles/example.rhtml +561 -0
  201. data/vendor/pygments-main/tests/examplefiles/example.sh-session +19 -0
  202. data/vendor/pygments-main/tests/examplefiles/example.sml +156 -0
  203. data/vendor/pygments-main/tests/examplefiles/example.snobol +15 -0
  204. data/vendor/pygments-main/tests/examplefiles/example.tea +34 -0
  205. data/vendor/pygments-main/tests/examplefiles/example.u +548 -0
  206. data/vendor/pygments-main/tests/examplefiles/example.weechatlog +9 -0
  207. data/vendor/pygments-main/tests/examplefiles/example.xhtml +376 -0
  208. data/vendor/pygments-main/tests/examplefiles/example.yaml +302 -0
  209. data/vendor/pygments-main/tests/examplefiles/example2.aspx +29 -0
  210. data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +363 -0
  211. data/vendor/pygments-main/tests/examplefiles/example_file.fy +128 -0
  212. data/vendor/pygments-main/tests/examplefiles/firefox.mak +586 -0
  213. data/vendor/pygments-main/tests/examplefiles/flipflop.sv +19 -0
  214. data/vendor/pygments-main/tests/examplefiles/foo.sce +6 -0
  215. data/vendor/pygments-main/tests/examplefiles/format.ml +1213 -0
  216. data/vendor/pygments-main/tests/examplefiles/fucked_up.rb +77 -0
  217. data/vendor/pygments-main/tests/examplefiles/function.mu +1 -0
  218. data/vendor/pygments-main/tests/examplefiles/functional.rst +1472 -0
  219. data/vendor/pygments-main/tests/examplefiles/genclass.clj +510 -0
  220. data/vendor/pygments-main/tests/examplefiles/genshi_example.xml+genshi +193 -0
  221. data/vendor/pygments-main/tests/examplefiles/genshitext_example.genshitext +33 -0
  222. data/vendor/pygments-main/tests/examplefiles/glsl.frag +7 -0
  223. data/vendor/pygments-main/tests/examplefiles/glsl.vert +13 -0
  224. data/vendor/pygments-main/tests/examplefiles/html+php_faulty.php +1 -0
  225. data/vendor/pygments-main/tests/examplefiles/http_request_example +14 -0
  226. data/vendor/pygments-main/tests/examplefiles/http_response_example +27 -0
  227. data/vendor/pygments-main/tests/examplefiles/import.hs +4 -0
  228. data/vendor/pygments-main/tests/examplefiles/intro.ik +24 -0
  229. data/vendor/pygments-main/tests/examplefiles/ints.php +10 -0
  230. data/vendor/pygments-main/tests/examplefiles/intsyn.fun +675 -0
  231. data/vendor/pygments-main/tests/examplefiles/intsyn.sig +286 -0
  232. data/vendor/pygments-main/tests/examplefiles/irb_heredoc +8 -0
  233. data/vendor/pygments-main/tests/examplefiles/irc.lsp +214 -0
  234. data/vendor/pygments-main/tests/examplefiles/java.properties +16 -0
  235. data/vendor/pygments-main/tests/examplefiles/jbst_example1.jbst +28 -0
  236. data/vendor/pygments-main/tests/examplefiles/jbst_example2.jbst +45 -0
  237. data/vendor/pygments-main/tests/examplefiles/jinjadesignerdoc.rst +713 -0
  238. data/vendor/pygments-main/tests/examplefiles/lighttpd_config.conf +13 -0
  239. data/vendor/pygments-main/tests/examplefiles/linecontinuation.py +47 -0
  240. data/vendor/pygments-main/tests/examplefiles/ltmain.sh +2849 -0
  241. data/vendor/pygments-main/tests/examplefiles/main.cmake +42 -0
  242. data/vendor/pygments-main/tests/examplefiles/markdown.lsp +679 -0
  243. data/vendor/pygments-main/tests/examplefiles/matlab_noreturn +3 -0
  244. data/vendor/pygments-main/tests/examplefiles/matlab_sample +27 -0
  245. data/vendor/pygments-main/tests/examplefiles/matlabsession_sample.txt +37 -0
  246. data/vendor/pygments-main/tests/examplefiles/minimal.ns2 +4 -0
  247. data/vendor/pygments-main/tests/examplefiles/moin_SyntaxReference.txt +340 -0
  248. data/vendor/pygments-main/tests/examplefiles/multiline_regexes.rb +38 -0
  249. data/vendor/pygments-main/tests/examplefiles/nasm_aoutso.asm +96 -0
  250. data/vendor/pygments-main/tests/examplefiles/nasm_objexe.asm +30 -0
  251. data/vendor/pygments-main/tests/examplefiles/nemerle_sample.n +87 -0
  252. data/vendor/pygments-main/tests/examplefiles/nginx_nginx.conf +118 -0
  253. data/vendor/pygments-main/tests/examplefiles/numbers.c +12 -0
  254. data/vendor/pygments-main/tests/examplefiles/objc_example.m +25 -0
  255. data/vendor/pygments-main/tests/examplefiles/objc_example2.m +24 -0
  256. data/vendor/pygments-main/tests/examplefiles/perl_misc +62 -0
  257. data/vendor/pygments-main/tests/examplefiles/perl_perl5db +998 -0
  258. data/vendor/pygments-main/tests/examplefiles/perl_regex-delims +120 -0
  259. data/vendor/pygments-main/tests/examplefiles/perlfunc.1 +856 -0
  260. data/vendor/pygments-main/tests/examplefiles/phpcomplete.vim +567 -0
  261. data/vendor/pygments-main/tests/examplefiles/pleac.in.rb +1223 -0
  262. data/vendor/pygments-main/tests/examplefiles/postgresql_test.txt +47 -0
  263. data/vendor/pygments-main/tests/examplefiles/pppoe.applescript +10 -0
  264. data/vendor/pygments-main/tests/examplefiles/psql_session.txt +122 -0
  265. data/vendor/pygments-main/tests/examplefiles/py3_test.txt +2 -0
  266. data/vendor/pygments-main/tests/examplefiles/pycon_test.pycon +14 -0
  267. data/vendor/pygments-main/tests/examplefiles/pytb_test2.pytb +2 -0
  268. data/vendor/pygments-main/tests/examplefiles/python25-bsd.mak +234 -0
  269. data/vendor/pygments-main/tests/examplefiles/qsort.prolog +13 -0
  270. data/vendor/pygments-main/tests/examplefiles/r-console-transcript.Rout +38 -0
  271. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_rlscan +280 -0
  272. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_snippet +2 -0
  273. data/vendor/pygments-main/tests/examplefiles/regex.js +22 -0
  274. data/vendor/pygments-main/tests/examplefiles/reversi.lsp +427 -0
  275. data/vendor/pygments-main/tests/examplefiles/ruby_func_def.rb +11 -0
  276. data/vendor/pygments-main/tests/examplefiles/scilab.sci +30 -0
  277. data/vendor/pygments-main/tests/examplefiles/sibling.prolog +19 -0
  278. data/vendor/pygments-main/tests/examplefiles/simple.md +747 -0
  279. data/vendor/pygments-main/tests/examplefiles/smarty_example.html +209 -0
  280. data/vendor/pygments-main/tests/examplefiles/source.lgt +343 -0
  281. data/vendor/pygments-main/tests/examplefiles/sources.list +62 -0
  282. data/vendor/pygments-main/tests/examplefiles/sphere.pov +18 -0
  283. data/vendor/pygments-main/tests/examplefiles/sqlite3.sqlite3-console +27 -0
  284. data/vendor/pygments-main/tests/examplefiles/squid.conf +30 -0
  285. data/vendor/pygments-main/tests/examplefiles/string.jl +1031 -0
  286. data/vendor/pygments-main/tests/examplefiles/string_delimiters.d +21 -0
  287. data/vendor/pygments-main/tests/examplefiles/stripheredoc.sh +3 -0
  288. data/vendor/pygments-main/tests/examplefiles/test.R +119 -0
  289. data/vendor/pygments-main/tests/examplefiles/test.adb +211 -0
  290. data/vendor/pygments-main/tests/examplefiles/test.asy +131 -0
  291. data/vendor/pygments-main/tests/examplefiles/test.awk +121 -0
  292. data/vendor/pygments-main/tests/examplefiles/test.bas +29 -0
  293. data/vendor/pygments-main/tests/examplefiles/test.bmx +145 -0
  294. data/vendor/pygments-main/tests/examplefiles/test.boo +39 -0
  295. data/vendor/pygments-main/tests/examplefiles/test.bro +250 -0
  296. data/vendor/pygments-main/tests/examplefiles/test.cs +374 -0
  297. data/vendor/pygments-main/tests/examplefiles/test.css +54 -0
  298. data/vendor/pygments-main/tests/examplefiles/test.d +135 -0
  299. data/vendor/pygments-main/tests/examplefiles/test.dart +23 -0
  300. data/vendor/pygments-main/tests/examplefiles/test.dtd +89 -0
  301. data/vendor/pygments-main/tests/examplefiles/test.ec +605 -0
  302. data/vendor/pygments-main/tests/examplefiles/test.ecl +58 -0
  303. data/vendor/pygments-main/tests/examplefiles/test.eh +315 -0
  304. data/vendor/pygments-main/tests/examplefiles/test.erl +169 -0
  305. data/vendor/pygments-main/tests/examplefiles/test.evoque +33 -0
  306. data/vendor/pygments-main/tests/examplefiles/test.fan +818 -0
  307. data/vendor/pygments-main/tests/examplefiles/test.flx +57 -0
  308. data/vendor/pygments-main/tests/examplefiles/test.gdc +13 -0
  309. data/vendor/pygments-main/tests/examplefiles/test.groovy +97 -0
  310. data/vendor/pygments-main/tests/examplefiles/test.html +339 -0
  311. data/vendor/pygments-main/tests/examplefiles/test.ini +10 -0
  312. data/vendor/pygments-main/tests/examplefiles/test.java +653 -0
  313. data/vendor/pygments-main/tests/examplefiles/test.jsp +24 -0
  314. data/vendor/pygments-main/tests/examplefiles/test.maql +45 -0
  315. data/vendor/pygments-main/tests/examplefiles/test.mod +374 -0
  316. data/vendor/pygments-main/tests/examplefiles/test.moo +51 -0
  317. data/vendor/pygments-main/tests/examplefiles/test.myt +166 -0
  318. data/vendor/pygments-main/tests/examplefiles/test.nim +93 -0
  319. data/vendor/pygments-main/tests/examplefiles/test.pas +743 -0
  320. data/vendor/pygments-main/tests/examplefiles/test.php +505 -0
  321. data/vendor/pygments-main/tests/examplefiles/test.plot +333 -0
  322. data/vendor/pygments-main/tests/examplefiles/test.ps1 +108 -0
  323. data/vendor/pygments-main/tests/examplefiles/test.pypylog +1839 -0
  324. data/vendor/pygments-main/tests/examplefiles/test.r3 +94 -0
  325. data/vendor/pygments-main/tests/examplefiles/test.rb +177 -0
  326. data/vendor/pygments-main/tests/examplefiles/test.rhtml +43 -0
  327. data/vendor/pygments-main/tests/examplefiles/test.scaml +8 -0
  328. data/vendor/pygments-main/tests/examplefiles/test.ssp +12 -0
  329. data/vendor/pygments-main/tests/examplefiles/test.tcsh +830 -0
  330. data/vendor/pygments-main/tests/examplefiles/test.vb +407 -0
  331. data/vendor/pygments-main/tests/examplefiles/test.vhdl +161 -0
  332. data/vendor/pygments-main/tests/examplefiles/test.xqy +138 -0
  333. data/vendor/pygments-main/tests/examplefiles/test.xsl +23 -0
  334. data/vendor/pygments-main/tests/examplefiles/truncated.pytb +15 -0
  335. data/vendor/pygments-main/tests/examplefiles/type.lisp +1202 -0
  336. data/vendor/pygments-main/tests/examplefiles/underscore.coffee +603 -0
  337. data/vendor/pygments-main/tests/examplefiles/unicode.applescript +5 -0
  338. data/vendor/pygments-main/tests/examplefiles/unicodedoc.py +11 -0
  339. data/vendor/pygments-main/tests/examplefiles/webkit-transition.css +3 -0
  340. data/vendor/pygments-main/tests/examplefiles/while.pov +13 -0
  341. data/vendor/pygments-main/tests/examplefiles/wiki.factor +384 -0
  342. data/vendor/pygments-main/tests/examplefiles/xml_example +1897 -0
  343. data/vendor/pygments-main/tests/examplefiles/zmlrpc.f90 +798 -0
  344. data/vendor/pygments-main/tests/old_run.py +138 -0
  345. data/vendor/pygments-main/tests/run.py +48 -0
  346. data/vendor/pygments-main/tests/support.py +15 -0
  347. data/vendor/pygments-main/tests/test_basic_api.py +294 -0
  348. data/vendor/pygments-main/tests/test_clexer.py +31 -0
  349. data/vendor/pygments-main/tests/test_cmdline.py +105 -0
  350. data/vendor/pygments-main/tests/test_examplefiles.py +97 -0
  351. data/vendor/pygments-main/tests/test_html_formatter.py +162 -0
  352. data/vendor/pygments-main/tests/test_latex_formatter.py +55 -0
  353. data/vendor/pygments-main/tests/test_perllexer.py +137 -0
  354. data/vendor/pygments-main/tests/test_regexlexer.py +47 -0
  355. data/vendor/pygments-main/tests/test_token.py +46 -0
  356. data/vendor/pygments-main/tests/test_using_api.py +40 -0
  357. data/vendor/pygments-main/tests/test_util.py +116 -0
  358. data/vendor/simplejson/.gitignore +10 -0
  359. data/vendor/simplejson/.travis.yml +5 -0
  360. data/vendor/simplejson/CHANGES.txt +291 -0
  361. data/vendor/simplejson/LICENSE.txt +19 -0
  362. data/vendor/simplejson/MANIFEST.in +5 -0
  363. data/vendor/simplejson/README.rst +19 -0
  364. data/vendor/simplejson/conf.py +179 -0
  365. data/vendor/simplejson/index.rst +628 -0
  366. data/vendor/simplejson/scripts/make_docs.py +18 -0
  367. data/vendor/simplejson/setup.py +104 -0
  368. data/vendor/simplejson/simplejson/__init__.py +510 -0
  369. data/vendor/simplejson/simplejson/_speedups.c +2745 -0
  370. data/vendor/simplejson/simplejson/decoder.py +425 -0
  371. data/vendor/simplejson/simplejson/encoder.py +567 -0
  372. data/vendor/simplejson/simplejson/ordered_dict.py +119 -0
  373. data/vendor/simplejson/simplejson/scanner.py +77 -0
  374. data/vendor/simplejson/simplejson/tests/__init__.py +67 -0
  375. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +55 -0
  376. data/vendor/simplejson/simplejson/tests/test_check_circular.py +30 -0
  377. data/vendor/simplejson/simplejson/tests/test_decimal.py +66 -0
  378. data/vendor/simplejson/simplejson/tests/test_decode.py +83 -0
  379. data/vendor/simplejson/simplejson/tests/test_default.py +9 -0
  380. data/vendor/simplejson/simplejson/tests/test_dump.py +67 -0
  381. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +46 -0
  382. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +32 -0
  383. data/vendor/simplejson/simplejson/tests/test_errors.py +34 -0
  384. data/vendor/simplejson/simplejson/tests/test_fail.py +91 -0
  385. data/vendor/simplejson/simplejson/tests/test_float.py +19 -0
  386. data/vendor/simplejson/simplejson/tests/test_indent.py +86 -0
  387. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +20 -0
  388. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +121 -0
  389. data/vendor/simplejson/simplejson/tests/test_pass1.py +76 -0
  390. data/vendor/simplejson/simplejson/tests/test_pass2.py +14 -0
  391. data/vendor/simplejson/simplejson/tests/test_pass3.py +20 -0
  392. data/vendor/simplejson/simplejson/tests/test_recursion.py +67 -0
  393. data/vendor/simplejson/simplejson/tests/test_scanstring.py +117 -0
  394. data/vendor/simplejson/simplejson/tests/test_separators.py +42 -0
  395. data/vendor/simplejson/simplejson/tests/test_speedups.py +20 -0
  396. data/vendor/simplejson/simplejson/tests/test_tuple.py +49 -0
  397. data/vendor/simplejson/simplejson/tests/test_unicode.py +109 -0
  398. data/vendor/simplejson/simplejson/tool.py +39 -0
  399. metadata +492 -0
@@ -0,0 +1,121 @@
1
+ #!/bin/awk -f
2
+
3
+ BEGIN {
4
+ # It is not possible to define output file names here because
5
+ # FILENAME is not define in the BEGIN section
6
+ n = "";
7
+ printf "Generating data files ...";
8
+ network_max_bandwidth_in_byte = 10000000;
9
+ network_max_packet_per_second = 1000000;
10
+ last3 = 0;
11
+ last4 = 0;
12
+ last5 = 0;
13
+ last6 = 0;
14
+ }
15
+ {
16
+ if ($1 ~ /Average/)
17
+ { # Skip the Average values
18
+ n = "";
19
+ next;
20
+ }
21
+
22
+ if ($2 ~ /all/)
23
+ { # This is the cpu info
24
+ print $3 > FILENAME".cpu.user.dat";
25
+ # print $4 > FILENAME".cpu.nice.dat";
26
+ print $5 > FILENAME".cpu.system.dat";
27
+ # print $6 > FILENAME".cpu.iowait.dat";
28
+ print $7 > FILENAME".cpu.idle.dat";
29
+ print 100-$7 > FILENAME".cpu.busy.dat";
30
+ }
31
+ if ($2 ~ /eth0/)
32
+ { # This is the eth0 network info
33
+ if ($3 > network_max_packet_per_second)
34
+ print last3 > FILENAME".net.rxpck.dat"; # Total number of packets received per second.
35
+ else
36
+ {
37
+ last3 = $3;
38
+ print $3 > FILENAME".net.rxpck.dat"; # Total number of packets received per second.
39
+ }
40
+ if ($4 > network_max_packet_per_second)
41
+ print last4 > FILENAME".net.txpck.dat"; # Total number of packets transmitted per second.
42
+ else
43
+ {
44
+ last4 = $4;
45
+ print $4 > FILENAME".net.txpck.dat"; # Total number of packets transmitted per second.
46
+ }
47
+ if ($5 > network_max_bandwidth_in_byte)
48
+ print last5 > FILENAME".net.rxbyt.dat"; # Total number of bytes received per second.
49
+ else
50
+ {
51
+ last5 = $5;
52
+ print $5 > FILENAME".net.rxbyt.dat"; # Total number of bytes received per second.
53
+ }
54
+ if ($6 > network_max_bandwidth_in_byte)
55
+ print last6 > FILENAME".net.txbyt.dat"; # Total number of bytes transmitted per second.
56
+ else
57
+ {
58
+ last6 = $6;
59
+ print $6 > FILENAME".net.txbyt.dat"; # Total number of bytes transmitted per second.
60
+ }
61
+ # print $7 > FILENAME".net.rxcmp.dat"; # Number of compressed packets received per second (for cslip etc.).
62
+ # print $8 > FILENAME".net.txcmp.dat"; # Number of compressed packets transmitted per second.
63
+ # print $9 > FILENAME".net.rxmcst.dat"; # Number of multicast packets received per second.
64
+ }
65
+
66
+ # Detect which is the next info to be parsed
67
+ if ($2 ~ /proc|cswch|tps|kbmemfree|totsck/)
68
+ {
69
+ n = $2;
70
+ }
71
+
72
+ # Only get lines with numbers (real data !)
73
+ if ($2 ~ /[0-9]/)
74
+ {
75
+ if (n == "proc/s")
76
+ { # This is the proc/s info
77
+ print $2 > FILENAME".proc.dat";
78
+ # n = "";
79
+ }
80
+ if (n == "cswch/s")
81
+ { # This is the context switches per second info
82
+ print $2 > FILENAME".ctxsw.dat";
83
+ # n = "";
84
+ }
85
+ if (n == "tps")
86
+ { # This is the disk info
87
+ print $2 > FILENAME".disk.tps.dat"; # total transfers per second
88
+ print $3 > FILENAME".disk.rtps.dat"; # read requests per second
89
+ print $4 > FILENAME".disk.wtps.dat"; # write requests per second
90
+ print $5 > FILENAME".disk.brdps.dat"; # block reads per second
91
+ print $6 > FILENAME".disk.bwrps.dat"; # block writes per second
92
+ # n = "";
93
+ }
94
+ if (n == "kbmemfree")
95
+ { # This is the mem info
96
+ print $2 > FILENAME".mem.kbmemfree.dat"; # Amount of free memory available in kilobytes.
97
+ print $3 > FILENAME".mem.kbmemused.dat"; # Amount of used memory in kilobytes. This does not take into account memory used by the kernel itself.
98
+ print $4 > FILENAME".mem.memused.dat"; # Percentage of used memory.
99
+ # It appears the kbmemshrd has been removed from the sysstat output - ntolia
100
+ # print $X > FILENAME".mem.kbmemshrd.dat"; # Amount of memory shared by the system in kilobytes. Always zero with 2.4 kernels.
101
+ # print $5 > FILENAME".mem.kbbuffers.dat"; # Amount of memory used as buffers by the kernel in kilobytes.
102
+ print $6 > FILENAME".mem.kbcached.dat"; # Amount of memory used to cache data by the kernel in kilobytes.
103
+ # print $7 > FILENAME".mem.kbswpfree.dat"; # Amount of free swap space in kilobytes.
104
+ # print $8 > FILENAME".mem.kbswpused.dat"; # Amount of used swap space in kilobytes.
105
+ print $9 > FILENAME".mem.swpused.dat"; # Percentage of used swap space.
106
+ # n = "";
107
+ }
108
+ if (n == "totsck")
109
+ { # This is the socket info
110
+ print $2 > FILENAME".sock.totsck.dat"; # Total number of used sockets.
111
+ print $3 > FILENAME".sock.tcpsck.dat"; # Number of TCP sockets currently in use.
112
+ # print $4 > FILENAME".sock.udpsck.dat"; # Number of UDP sockets currently in use.
113
+ # print $5 > FILENAME".sock.rawsck.dat"; # Number of RAW sockets currently in use.
114
+ # print $6 > FILENAME".sock.ip-frag.dat"; # Number of IP fragments currently in use.
115
+ # n = "";
116
+ }
117
+ }
118
+ }
119
+ END {
120
+ print " '" FILENAME "' done.";
121
+ }
@@ -0,0 +1,29 @@
1
+ Public Class Form1
2
+ Inherits System.Windows.Forms.Form
3
+
4
+ Private t As New System.Timers.Timer(2000)
5
+
6
+ Private Sub Form1_Load(ByVal sender As Object, _
7
+ ByVal e As System.EventArgs) Handles MyBase.Load
8
+
9
+ AddHandler t.Elapsed, AddressOf TimerFired
10
+ End Sub
11
+
12
+ Private Sub btnStart_Click(ByVal sender As System.Object, _
13
+ ByVal e As System.EventArgs) Handles btnStart.Click
14
+
15
+ t.Enabled = True
16
+ End Sub
17
+
18
+ Private Sub btnStop_Click(ByVal sender As System.Object, _
19
+ ByVal e As System.EventArgs) Handles btnStop.Click
20
+
21
+ t.Enabled = False
22
+ End Sub
23
+
24
+ Public Sub TimerFired(ByVal sender As Object, _
25
+ ByVal e As System.Timers.ElapsedEventArgs)
26
+
27
+ Label1.Text = "Signal Time = " & e.SignalTime.ToString
28
+ End Sub
29
+ End Class
@@ -0,0 +1,145 @@
1
+
2
+ Rem
3
+ foobar
4
+ EndRem
5
+
6
+ Rem
7
+ foobar!
8
+ End Rem
9
+
10
+ Rem
11
+ End Rem
12
+
13
+ SuperStrict
14
+
15
+ Framework brl.blitz
16
+ Import brl.standardio
17
+
18
+ 'Import "blah.bmx"
19
+ 'Import "blah/blah.bmx"
20
+ 'Include "blurg/blurg.bmx"
21
+
22
+ Const ca:Long = $10000000 ' Hex
23
+ Const cb:Int = %10101010 ' Binary
24
+ Global ga:String = "blargh"
25
+ Local a:Int = 124, b$ = "abcdef"
26
+ ?Not Debug
27
+ Print(_name123(ga, a, 100.2))
28
+ ?
29
+
30
+ Function _name123 : Float (zorp:String, ll:Int = False, blah#, waffles% = 100)
31
+ Return 235.7804 ' Single-line comment
32
+ End Function
33
+ Function TestString:String()
34
+ End Function
35
+ Function TestByte:Byte()
36
+ End Function
37
+
38
+ Function hub(blah:String, ..
39
+ abc:Int = Pi)
40
+ End Function
41
+ Function Blar%()
42
+ Local aa !, ab @ ,ac @@, ad# ,ae$,af% ' Intentional mangling
43
+ Local ba:Double, bb :Byte, bc: Short,bd:Float,be: String,ff:Int = True
44
+ End Function
45
+
46
+ ?Win32
47
+ abc()
48
+ ?Linux
49
+ abc()
50
+ ?
51
+
52
+ Function abc()
53
+ Print "abc" ' I cannot find a way to parse these as function calls without messing something up
54
+ Print ' Anyhow, they're generally not used in this way
55
+ Goto Eww_Goto
56
+ #Eww_Goto
57
+ End Function
58
+
59
+ Type TBlarf Abstract
60
+ End Type
61
+
62
+ Type TFooBar
63
+ End Type
64
+
65
+ New MyClass.TestMethod()
66
+ New(MyClass).TestMethod()
67
+ Local myinst:MyClass = New MyClass
68
+ myinst.TestMethod()
69
+
70
+ Type MyClass Extends TFooBar
71
+
72
+ Field m_foo:MyClass
73
+ Field m_bar:MyClass
74
+
75
+ Rem
76
+ abc
77
+ def
78
+ End Rem
79
+ Method New()
80
+ Rem
81
+ abcdef
82
+ endrem
83
+ End Method
84
+
85
+ Method TestMethod() ' foobar
86
+ m_foo = Self
87
+ m_bar = MyClass(m_foo)
88
+ m_foo.m_bar.m_foo.m_bar.Yell()
89
+ End Method
90
+
91
+ Method Yell()
92
+ Print("huzzah!")
93
+ End Method
94
+
95
+ Function Wakka$(foo:String)
96
+ Return foo + "bar"
97
+ End Function
98
+
99
+ End Type
100
+
101
+ Extern "c"
102
+ Function vesper!(a:Int) = "vesper@4"
103
+ Function bubbles@@(a%)
104
+ End Extern
105
+
106
+ Print("blah " + ..
107
+ "blah " + ..
108
+ "blah.")
109
+
110
+ Try
111
+ Throw("blar!")
112
+ Catch exception:String
113
+ Print("Caught: " + exception)
114
+ End Try
115
+
116
+ For Local i:Int = 0 To 10 Step 1
117
+ Print("Index: " + i)
118
+ Next
119
+ Local array:String[] = ["foo", "bar", "11", "22", "33"]
120
+ For Local value:String = EachIn array
121
+ Print("Value: " + value)
122
+ Next
123
+
124
+ Local foobar:Int = Not (1 Or (2 And (4 Shl 5 Shr 6)) Sar 7) Mod (8+2)
125
+ Local az:Int = 1234567890
126
+ az : + 1
127
+ az: - 2
128
+ az :* 3
129
+ az:/ 4
130
+ az:& 5
131
+ az:| 6
132
+ az: ~ 7
133
+ az : Shl 8
134
+ az: Shr 9
135
+ az :Sar 10
136
+ az:Mod 11
137
+ az = ((10-5+2/4*2)>(((8^2)) < 2)) & 12|2
138
+
139
+ Function flub(fah Ptr, eah:Int Ptr, blu@@ Ptr)
140
+ End Function
141
+ Function Foob:Int Ptr(blar:Byte Ptr, Saffon@Ptr, blaus#Ptr)
142
+ End Function
143
+ Function zauus@Ptr()
144
+ End Function
145
+
@@ -0,0 +1,39 @@
1
+ import System
2
+ import Boo.Lang.Interpreter from Boo.Lang.Interpreter
3
+
4
+ class ObjectInterpreter(AbstractInterpreter):
5
+
6
+ _context as object
7
+
8
+ [getter(Value)]
9
+ _value as object
10
+
11
+ def constructor(context):
12
+ _context = context
13
+ self.RememberLastValue = true
14
+
15
+ override def Lookup(name as string):
16
+ property = _context.GetType().GetProperty(name)
17
+ return property.PropertyType if property is not null
18
+
19
+ override def GetValue(name as string):
20
+ return _context.GetType().GetProperty(name).GetValue(
21
+ _context, null)
22
+
23
+ override def SetLastValue(value):
24
+ _value = value
25
+
26
+ override def SetValue(name as string, value):
27
+ raise InvalidOperationException()
28
+
29
+ override def Declare(name as string, type as Type):
30
+ raise InvalidOperationException()
31
+
32
+ class Person:
33
+ [property(FirstName)]
34
+ _fname as string = ""
35
+
36
+ p = Person(FirstName: "Homer")
37
+ i = ObjectInterpreter(p)
38
+ i.Eval('"Hello, ${FirstName.ToUpper()}!"')
39
+ print i.Value
@@ -0,0 +1,250 @@
1
+ @load notice
2
+ @load utils/thresholds
3
+
4
+ module SSH;
5
+
6
+ export {
7
+ redef enum Log::ID += { SSH };
8
+
9
+ redef enum Notice::Type += {
10
+ Login,
11
+ Password_Guessing,
12
+ Login_By_Password_Guesser,
13
+ Login_From_Interesting_Hostname,
14
+ Bytecount_Inconsistency,
15
+ };
16
+
17
+ type Info: record {
18
+ ts: time &log;
19
+ uid: string &log;
20
+ id: conn_id &log;
21
+ status: string &log &optional;
22
+ direction: string &log &optional;
23
+ remote_location: geo_location &log &optional;
24
+ client: string &log &optional;
25
+ server: string &log &optional;
26
+ resp_size: count &log &default=0;
27
+
28
+ ## Indicate if the SSH session is done being watched.
29
+ done: bool &default=F;
30
+ };
31
+
32
+ const password_guesses_limit = 30 &redef;
33
+
34
+ # The size in bytes at which the SSH connection is presumed to be
35
+ # successful.
36
+ const authentication_data_size = 5500 &redef;
37
+
38
+ # The amount of time to remember presumed non-successful logins to build
39
+ # model of a password guesser.
40
+ const guessing_timeout = 30 mins &redef;
41
+
42
+ # The set of countries for which you'd like to throw notices upon successful login
43
+ # requires Bro compiled with libGeoIP support
44
+ const watched_countries: set[string] = {"RO"} &redef;
45
+
46
+ # Strange/bad host names to originate successful SSH logins
47
+ const interesting_hostnames =
48
+ /^d?ns[0-9]*\./ |
49
+ /^smtp[0-9]*\./ |
50
+ /^mail[0-9]*\./ |
51
+ /^pop[0-9]*\./ |
52
+ /^imap[0-9]*\./ |
53
+ /^www[0-9]*\./ |
54
+ /^ftp[0-9]*\./ &redef;
55
+
56
+ # This is a table with orig subnet as the key, and subnet as the value.
57
+ const ignore_guessers: table[subnet] of subnet &redef;
58
+
59
+ # If true, we tell the event engine to not look at further data
60
+ # packets after the initial SSH handshake. Helps with performance
61
+ # (especially with large file transfers) but precludes some
62
+ # kinds of analyses (e.g., tracking connection size).
63
+ const skip_processing_after_detection = F &redef;
64
+
65
+ # Keeps count of how many rejections a host has had
66
+ global password_rejections: table[addr] of TrackCount
67
+ &write_expire=guessing_timeout
68
+ &synchronized;
69
+
70
+ # Keeps track of hosts identified as guessing passwords
71
+ # TODO: guessing_timeout doesn't work correctly here. If a user redefs
72
+ # the variable, it won't take effect.
73
+ global password_guessers: set[addr] &read_expire=guessing_timeout+1hr &synchronized;
74
+
75
+ global log_ssh: event(rec: Info);
76
+ }
77
+
78
+ # Configure DPD and the packet filter
79
+ redef capture_filters += { ["ssh"] = "tcp port 22" };
80
+ redef dpd_config += { [ANALYZER_SSH] = [$ports = set(22/tcp)] };
81
+
82
+ redef record connection += {
83
+ ssh: Info &optional;
84
+ };
85
+
86
+ event bro_init()
87
+ {
88
+ Log::create_stream(SSH, [$columns=Info, $ev=log_ssh]);
89
+ }
90
+
91
+ function set_session(c: connection)
92
+ {
93
+ if ( ! c?$ssh )
94
+ {
95
+ local info: Info;
96
+ info$ts=network_time();
97
+ info$uid=c$uid;
98
+ info$id=c$id;
99
+ c$ssh = info;
100
+ }
101
+ }
102
+
103
+ function check_ssh_connection(c: connection, done: bool)
104
+ {
105
+ # If done watching this connection, just return.
106
+ if ( c$ssh$done )
107
+ return;
108
+
109
+ # If this is still a live connection and the byte count has not
110
+ # crossed the threshold, just return and let the resheduled check happen later.
111
+ if ( !done && c$resp$size < authentication_data_size )
112
+ return;
113
+
114
+ # Make sure the server has sent back more than 50 bytes to filter out
115
+ # hosts that are just port scanning. Nothing is ever logged if the server
116
+ # doesn't send back at least 50 bytes.
117
+ if ( c$resp$size < 50 )
118
+ return;
119
+
120
+ local status = "failure";
121
+ local direction = Site::is_local_addr(c$id$orig_h) ? "to" : "from";
122
+ local location: geo_location;
123
+ location = (direction == "to") ? lookup_location(c$id$resp_h) : lookup_location(c$id$orig_h);
124
+
125
+ if ( done && c$resp$size < authentication_data_size )
126
+ {
127
+ # presumed failure
128
+ if ( c$id$orig_h !in password_rejections )
129
+ password_rejections[c$id$orig_h] = new_track_count();
130
+
131
+ # Track the number of rejections
132
+ if ( !(c$id$orig_h in ignore_guessers &&
133
+ c$id$resp_h in ignore_guessers[c$id$orig_h]) )
134
+ ++password_rejections[c$id$orig_h]$n;
135
+
136
+ if ( default_check_threshold(password_rejections[c$id$orig_h]) )
137
+ {
138
+ add password_guessers[c$id$orig_h];
139
+ NOTICE([$note=Password_Guessing,
140
+ $conn=c,
141
+ $msg=fmt("SSH password guessing by %s", c$id$orig_h),
142
+ $sub=fmt("%d failed logins", password_rejections[c$id$orig_h]$n),
143
+ $n=password_rejections[c$id$orig_h]$n]);
144
+ }
145
+ }
146
+ # TODO: This is to work around a quasi-bug in Bro which occasionally
147
+ # causes the byte count to be oversized.
148
+ # Watch for Gregors work that adds an actual counter of bytes transferred.
149
+ else if ( c$resp$size < 20000000 )
150
+ {
151
+ # presumed successful login
152
+ status = "success";
153
+ c$ssh$done = T;
154
+
155
+ if ( c$id$orig_h in password_rejections &&
156
+ password_rejections[c$id$orig_h]$n > password_guesses_limit &&
157
+ c$id$orig_h !in password_guessers )
158
+ {
159
+ add password_guessers[c$id$orig_h];
160
+ NOTICE([$note=Login_By_Password_Guesser,
161
+ $conn=c,
162
+ $n=password_rejections[c$id$orig_h]$n,
163
+ $msg=fmt("Successful SSH login by password guesser %s", c$id$orig_h),
164
+ $sub=fmt("%d failed logins", password_rejections[c$id$orig_h]$n)]);
165
+ }
166
+
167
+ local message = fmt("SSH login %s %s \"%s\" \"%s\" %f %f %s (triggered with %d bytes)",
168
+ direction, location$country_code, location$region, location$city,
169
+ location$latitude, location$longitude,
170
+ id_string(c$id), c$resp$size);
171
+ NOTICE([$note=Login,
172
+ $conn=c,
173
+ $msg=message,
174
+ $sub=location$country_code]);
175
+
176
+ # Check to see if this login came from an interesting hostname
177
+ when ( local hostname = lookup_addr(c$id$orig_h) )
178
+ {
179
+ if ( interesting_hostnames in hostname )
180
+ {
181
+ NOTICE([$note=Login_From_Interesting_Hostname,
182
+ $conn=c,
183
+ $msg=fmt("Strange login from %s", hostname),
184
+ $sub=hostname]);
185
+ }
186
+ }
187
+
188
+ if ( location$country_code in watched_countries )
189
+ {
190
+
191
+ }
192
+
193
+ }
194
+ else if ( c$resp$size >= 200000000 )
195
+ {
196
+ NOTICE([$note=Bytecount_Inconsistency,
197
+ $conn=c,
198
+ $msg="During byte counting in SSH analysis, an overly large value was seen.",
199
+ $sub=fmt("%d",c$resp$size)]);
200
+ }
201
+
202
+ c$ssh$remote_location = location;
203
+ c$ssh$status = status;
204
+ c$ssh$direction = direction;
205
+ c$ssh$resp_size = c$resp$size;
206
+
207
+ Log::write(SSH, c$ssh);
208
+
209
+ # Set the "done" flag to prevent the watching event from rescheduling
210
+ # after detection is done.
211
+ c$ssh$done;
212
+
213
+ # Stop watching this connection, we don't care about it anymore.
214
+ if ( skip_processing_after_detection )
215
+ {
216
+ skip_further_processing(c$id);
217
+ set_record_packets(c$id, F);
218
+ }
219
+ }
220
+
221
+ event connection_state_remove(c: connection) &priority=-5
222
+ {
223
+ if ( c?$ssh )
224
+ check_ssh_connection(c, T);
225
+ }
226
+
227
+ event ssh_watcher(c: connection)
228
+ {
229
+ local id = c$id;
230
+ # don't go any further if this connection is gone already!
231
+ if ( !connection_exists(id) )
232
+ return;
233
+
234
+ check_ssh_connection(c, F);
235
+ if ( ! c$ssh$done )
236
+ schedule +15secs { ssh_watcher(c) };
237
+ }
238
+
239
+ event ssh_server_version(c: connection, version: string) &priority=5
240
+ {
241
+ set_session(c);
242
+ c$ssh$server = version;
243
+ }
244
+
245
+ event ssh_client_version(c: connection, version: string) &priority=5
246
+ {
247
+ set_session(c);
248
+ c$ssh$client = version;
249
+ schedule +15secs { ssh_watcher(c) };
250
+ }