pygments.rb-jruby 0.5.4
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.
- checksums.yaml +7 -0
- data/.gitignore +6 -0
- data/CHANGELOG.md +71 -0
- data/Gemfile +2 -0
- data/LICENSE +17 -0
- data/README.md +118 -0
- data/Rakefile +66 -0
- data/bench.rb +22 -0
- data/cache-lexers.rb +8 -0
- data/lexers +0 -0
- data/lib/pygments.rb +8 -0
- data/lib/pygments/lexer.rb +148 -0
- data/lib/pygments/mentos.py +351 -0
- data/lib/pygments/popen.rb +404 -0
- data/lib/pygments/version.rb +3 -0
- data/pygments.rb.gemspec +24 -0
- data/test/test_data.c +2581 -0
- data/test/test_data.py +514 -0
- data/test/test_data_generated +2582 -0
- data/test/test_pygments.rb +287 -0
- data/vendor/custom_lexers/github.py +565 -0
- data/vendor/pygments-main/AUTHORS +153 -0
- data/vendor/pygments-main/CHANGES +889 -0
- data/vendor/pygments-main/LICENSE +25 -0
- data/vendor/pygments-main/MANIFEST.in +6 -0
- data/vendor/pygments-main/Makefile +59 -0
- data/vendor/pygments-main/REVISION +1 -0
- data/vendor/pygments-main/TODO +15 -0
- data/vendor/pygments-main/docs/generate.py +472 -0
- data/vendor/pygments-main/docs/pygmentize.1 +94 -0
- data/vendor/pygments-main/docs/src/api.txt +270 -0
- data/vendor/pygments-main/docs/src/authors.txt +5 -0
- data/vendor/pygments-main/docs/src/changelog.txt +5 -0
- data/vendor/pygments-main/docs/src/cmdline.txt +147 -0
- data/vendor/pygments-main/docs/src/filterdevelopment.txt +70 -0
- data/vendor/pygments-main/docs/src/filters.txt +42 -0
- data/vendor/pygments-main/docs/src/formatterdevelopment.txt +169 -0
- data/vendor/pygments-main/docs/src/formatters.txt +48 -0
- data/vendor/pygments-main/docs/src/index.txt +69 -0
- data/vendor/pygments-main/docs/src/installation.txt +71 -0
- data/vendor/pygments-main/docs/src/integrate.txt +48 -0
- data/vendor/pygments-main/docs/src/java.txt +70 -0
- data/vendor/pygments-main/docs/src/lexerdevelopment.txt +603 -0
- data/vendor/pygments-main/docs/src/lexers.txt +67 -0
- data/vendor/pygments-main/docs/src/moinmoin.txt +39 -0
- data/vendor/pygments-main/docs/src/plugins.txt +93 -0
- data/vendor/pygments-main/docs/src/quickstart.txt +202 -0
- data/vendor/pygments-main/docs/src/rstdirective.txt +22 -0
- data/vendor/pygments-main/docs/src/styles.txt +143 -0
- data/vendor/pygments-main/docs/src/tokens.txt +349 -0
- data/vendor/pygments-main/docs/src/unicode.txt +49 -0
- data/vendor/pygments-main/external/autopygmentize +64 -0
- data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +144 -0
- data/vendor/pygments-main/external/markdown-processor.py +67 -0
- data/vendor/pygments-main/external/moin-parser.py +112 -0
- data/vendor/pygments-main/external/pygments.bashcomp +38 -0
- data/vendor/pygments-main/external/rst-directive-old.py +77 -0
- data/vendor/pygments-main/external/rst-directive.py +83 -0
- data/vendor/pygments-main/ez_setup.py +276 -0
- data/vendor/pygments-main/pygmentize +7 -0
- data/vendor/pygments-main/pygments/__init__.py +91 -0
- data/vendor/pygments-main/pygments/cmdline.py +441 -0
- data/vendor/pygments-main/pygments/console.py +74 -0
- data/vendor/pygments-main/pygments/filter.py +74 -0
- data/vendor/pygments-main/pygments/filters/__init__.py +356 -0
- data/vendor/pygments-main/pygments/formatter.py +95 -0
- data/vendor/pygments-main/pygments/formatters/__init__.py +68 -0
- data/vendor/pygments-main/pygments/formatters/_mapping.py +92 -0
- data/vendor/pygments-main/pygments/formatters/bbcode.py +109 -0
- data/vendor/pygments-main/pygments/formatters/html.py +821 -0
- data/vendor/pygments-main/pygments/formatters/img.py +553 -0
- data/vendor/pygments-main/pygments/formatters/latex.py +378 -0
- data/vendor/pygments-main/pygments/formatters/other.py +115 -0
- data/vendor/pygments-main/pygments/formatters/rtf.py +136 -0
- data/vendor/pygments-main/pygments/formatters/svg.py +154 -0
- data/vendor/pygments-main/pygments/formatters/terminal.py +112 -0
- data/vendor/pygments-main/pygments/formatters/terminal256.py +222 -0
- data/vendor/pygments-main/pygments/lexer.py +765 -0
- data/vendor/pygments-main/pygments/lexers/__init__.py +240 -0
- data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1645 -0
- data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +232 -0
- data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +5172 -0
- data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +249 -0
- data/vendor/pygments-main/pygments/lexers/_mapping.py +354 -0
- data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +562 -0
- data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +3787 -0
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +233 -0
- data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +557 -0
- data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +40 -0
- data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +1072 -0
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +360 -0
- data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +13 -0
- data/vendor/pygments-main/pygments/lexers/agile.py +2290 -0
- data/vendor/pygments-main/pygments/lexers/asm.py +398 -0
- data/vendor/pygments-main/pygments/lexers/compiled.py +3723 -0
- data/vendor/pygments-main/pygments/lexers/dalvik.py +104 -0
- data/vendor/pygments-main/pygments/lexers/dotnet.py +671 -0
- data/vendor/pygments-main/pygments/lexers/foxpro.py +428 -0
- data/vendor/pygments-main/pygments/lexers/functional.py +2731 -0
- data/vendor/pygments-main/pygments/lexers/github.py +565 -0
- data/vendor/pygments-main/pygments/lexers/hdl.py +356 -0
- data/vendor/pygments-main/pygments/lexers/jvm.py +1112 -0
- data/vendor/pygments-main/pygments/lexers/math.py +1918 -0
- data/vendor/pygments-main/pygments/lexers/other.py +3778 -0
- data/vendor/pygments-main/pygments/lexers/parsers.py +778 -0
- data/vendor/pygments-main/pygments/lexers/shell.py +424 -0
- data/vendor/pygments-main/pygments/lexers/special.py +100 -0
- data/vendor/pygments-main/pygments/lexers/sql.py +559 -0
- data/vendor/pygments-main/pygments/lexers/templates.py +1742 -0
- data/vendor/pygments-main/pygments/lexers/text.py +1893 -0
- data/vendor/pygments-main/pygments/lexers/web.py +4045 -0
- data/vendor/pygments-main/pygments/modeline.py +40 -0
- data/vendor/pygments-main/pygments/plugin.py +74 -0
- data/vendor/pygments-main/pygments/scanner.py +104 -0
- data/vendor/pygments-main/pygments/style.py +117 -0
- data/vendor/pygments-main/pygments/styles/__init__.py +70 -0
- data/vendor/pygments-main/pygments/styles/autumn.py +65 -0
- data/vendor/pygments-main/pygments/styles/borland.py +51 -0
- data/vendor/pygments-main/pygments/styles/bw.py +49 -0
- data/vendor/pygments-main/pygments/styles/colorful.py +81 -0
- data/vendor/pygments-main/pygments/styles/default.py +73 -0
- data/vendor/pygments-main/pygments/styles/emacs.py +72 -0
- data/vendor/pygments-main/pygments/styles/friendly.py +72 -0
- data/vendor/pygments-main/pygments/styles/fruity.py +42 -0
- data/vendor/pygments-main/pygments/styles/manni.py +75 -0
- data/vendor/pygments-main/pygments/styles/monokai.py +106 -0
- data/vendor/pygments-main/pygments/styles/murphy.py +80 -0
- data/vendor/pygments-main/pygments/styles/native.py +65 -0
- data/vendor/pygments-main/pygments/styles/pastie.py +75 -0
- data/vendor/pygments-main/pygments/styles/perldoc.py +69 -0
- data/vendor/pygments-main/pygments/styles/rrt.py +33 -0
- data/vendor/pygments-main/pygments/styles/tango.py +141 -0
- data/vendor/pygments-main/pygments/styles/trac.py +63 -0
- data/vendor/pygments-main/pygments/styles/vim.py +63 -0
- data/vendor/pygments-main/pygments/styles/vs.py +38 -0
- data/vendor/pygments-main/pygments/token.py +195 -0
- data/vendor/pygments-main/pygments/unistring.py +140 -0
- data/vendor/pygments-main/pygments/util.py +277 -0
- data/vendor/pygments-main/scripts/check_sources.py +242 -0
- data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +32 -0
- data/vendor/pygments-main/scripts/epydoc.css +280 -0
- data/vendor/pygments-main/scripts/find_codetags.py +205 -0
- data/vendor/pygments-main/scripts/find_error.py +170 -0
- data/vendor/pygments-main/scripts/get_vimkw.py +43 -0
- data/vendor/pygments-main/scripts/pylintrc +301 -0
- data/vendor/pygments-main/scripts/reindent.py +291 -0
- data/vendor/pygments-main/scripts/vim2pygments.py +933 -0
- data/vendor/pygments-main/setup.cfg +7 -0
- data/vendor/pygments-main/setup.py +90 -0
- data/vendor/pygments-main/tests/dtds/HTML4-f.dtd +37 -0
- data/vendor/pygments-main/tests/dtds/HTML4-s.dtd +869 -0
- data/vendor/pygments-main/tests/dtds/HTML4.dcl +88 -0
- data/vendor/pygments-main/tests/dtds/HTML4.dtd +1092 -0
- data/vendor/pygments-main/tests/dtds/HTML4.soc +9 -0
- data/vendor/pygments-main/tests/dtds/HTMLlat1.ent +195 -0
- data/vendor/pygments-main/tests/dtds/HTMLspec.ent +77 -0
- data/vendor/pygments-main/tests/dtds/HTMLsym.ent +241 -0
- data/vendor/pygments-main/tests/examplefiles/ANTLRv3.g +608 -0
- data/vendor/pygments-main/tests/examplefiles/AcidStateAdvanced.hs +209 -0
- data/vendor/pygments-main/tests/examplefiles/AlternatingGroup.mu +102 -0
- data/vendor/pygments-main/tests/examplefiles/BOM.js +1 -0
- data/vendor/pygments-main/tests/examplefiles/CPDictionary.j +611 -0
- data/vendor/pygments-main/tests/examplefiles/Config.in.cache +1973 -0
- data/vendor/pygments-main/tests/examplefiles/Constants.mo +158 -0
- data/vendor/pygments-main/tests/examplefiles/DancingSudoku.lhs +411 -0
- data/vendor/pygments-main/tests/examplefiles/Deflate.fs +578 -0
- data/vendor/pygments-main/tests/examplefiles/Errors.scala +18 -0
- data/vendor/pygments-main/tests/examplefiles/File.hy +174 -0
- data/vendor/pygments-main/tests/examplefiles/Get-CommandDefinitionHtml.ps1 +66 -0
- data/vendor/pygments-main/tests/examplefiles/IPDispatchC.nc +104 -0
- data/vendor/pygments-main/tests/examplefiles/IPDispatchP.nc +671 -0
- data/vendor/pygments-main/tests/examplefiles/Intro.java +1660 -0
- data/vendor/pygments-main/tests/examplefiles/Makefile +1131 -0
- data/vendor/pygments-main/tests/examplefiles/Object.st +4394 -0
- data/vendor/pygments-main/tests/examplefiles/OrderedMap.hx +584 -0
- data/vendor/pygments-main/tests/examplefiles/RoleQ.pm6 +23 -0
- data/vendor/pygments-main/tests/examplefiles/SmallCheck.hs +378 -0
- data/vendor/pygments-main/tests/examplefiles/Sorting.mod +470 -0
- data/vendor/pygments-main/tests/examplefiles/Sudoku.lhs +382 -0
- data/vendor/pygments-main/tests/examplefiles/addressbook.proto +30 -0
- data/vendor/pygments-main/tests/examplefiles/antlr_throws +1 -0
- data/vendor/pygments-main/tests/examplefiles/apache2.conf +393 -0
- data/vendor/pygments-main/tests/examplefiles/as3_test.as +143 -0
- data/vendor/pygments-main/tests/examplefiles/as3_test2.as +46 -0
- data/vendor/pygments-main/tests/examplefiles/as3_test3.as +3 -0
- data/vendor/pygments-main/tests/examplefiles/aspx-cs_example +27 -0
- data/vendor/pygments-main/tests/examplefiles/autoit_submit.au3 +25 -0
- data/vendor/pygments-main/tests/examplefiles/badcase.java +2 -0
- data/vendor/pygments-main/tests/examplefiles/batchfile.bat +49 -0
- data/vendor/pygments-main/tests/examplefiles/bigtest.nsi +308 -0
- data/vendor/pygments-main/tests/examplefiles/boot-9.scm +1557 -0
- data/vendor/pygments-main/tests/examplefiles/ca65_example +284 -0
- data/vendor/pygments-main/tests/examplefiles/cbmbas_example +9 -0
- data/vendor/pygments-main/tests/examplefiles/cells.ps +515 -0
- data/vendor/pygments-main/tests/examplefiles/ceval.c +2604 -0
- data/vendor/pygments-main/tests/examplefiles/cheetah_example.html +13 -0
- data/vendor/pygments-main/tests/examplefiles/classes.dylan +125 -0
- data/vendor/pygments-main/tests/examplefiles/condensed_ruby.rb +10 -0
- data/vendor/pygments-main/tests/examplefiles/coq_RelationClasses +447 -0
- data/vendor/pygments-main/tests/examplefiles/database.pytb +20 -0
- data/vendor/pygments-main/tests/examplefiles/de.MoinMoin.po +2461 -0
- data/vendor/pygments-main/tests/examplefiles/demo.ahk +181 -0
- data/vendor/pygments-main/tests/examplefiles/demo.cfm +38 -0
- data/vendor/pygments-main/tests/examplefiles/django_sample.html+django +68 -0
- data/vendor/pygments-main/tests/examplefiles/dwarf.cw +17 -0
- data/vendor/pygments-main/tests/examplefiles/erl_session +10 -0
- data/vendor/pygments-main/tests/examplefiles/escape_semicolon.clj +1 -0
- data/vendor/pygments-main/tests/examplefiles/evil_regex.js +48 -0
- data/vendor/pygments-main/tests/examplefiles/example.Rd +78 -0
- data/vendor/pygments-main/tests/examplefiles/example.bug +54 -0
- data/vendor/pygments-main/tests/examplefiles/example.c +2080 -0
- data/vendor/pygments-main/tests/examplefiles/example.ceylon +52 -0
- data/vendor/pygments-main/tests/examplefiles/example.clay +33 -0
- data/vendor/pygments-main/tests/examplefiles/example.cls +15 -0
- data/vendor/pygments-main/tests/examplefiles/example.cob +3556 -0
- data/vendor/pygments-main/tests/examplefiles/example.cpp +2363 -0
- data/vendor/pygments-main/tests/examplefiles/example.gs +106 -0
- data/vendor/pygments-main/tests/examplefiles/example.gst +7 -0
- data/vendor/pygments-main/tests/examplefiles/example.hx +142 -0
- data/vendor/pygments-main/tests/examplefiles/example.jag +48 -0
- data/vendor/pygments-main/tests/examplefiles/example.kt +47 -0
- data/vendor/pygments-main/tests/examplefiles/example.lagda +19 -0
- data/vendor/pygments-main/tests/examplefiles/example.lua +250 -0
- data/vendor/pygments-main/tests/examplefiles/example.monkey +152 -0
- data/vendor/pygments-main/tests/examplefiles/example.moo +26 -0
- data/vendor/pygments-main/tests/examplefiles/example.moon +629 -0
- data/vendor/pygments-main/tests/examplefiles/example.msc +43 -0
- data/vendor/pygments-main/tests/examplefiles/example.nim +1010 -0
- data/vendor/pygments-main/tests/examplefiles/example.ns2 +69 -0
- data/vendor/pygments-main/tests/examplefiles/example.p +34 -0
- data/vendor/pygments-main/tests/examplefiles/example.pas +2708 -0
- data/vendor/pygments-main/tests/examplefiles/example.prg +161 -0
- data/vendor/pygments-main/tests/examplefiles/example.rb +1852 -0
- data/vendor/pygments-main/tests/examplefiles/example.reg +19 -0
- data/vendor/pygments-main/tests/examplefiles/example.rexx +50 -0
- data/vendor/pygments-main/tests/examplefiles/example.rhtml +561 -0
- data/vendor/pygments-main/tests/examplefiles/example.rkt +95 -0
- data/vendor/pygments-main/tests/examplefiles/example.rpf +4 -0
- data/vendor/pygments-main/tests/examplefiles/example.sh-session +19 -0
- data/vendor/pygments-main/tests/examplefiles/example.shell-session +45 -0
- data/vendor/pygments-main/tests/examplefiles/example.sml +156 -0
- data/vendor/pygments-main/tests/examplefiles/example.snobol +15 -0
- data/vendor/pygments-main/tests/examplefiles/example.stan +108 -0
- data/vendor/pygments-main/tests/examplefiles/example.tea +34 -0
- data/vendor/pygments-main/tests/examplefiles/example.ts +28 -0
- data/vendor/pygments-main/tests/examplefiles/example.u +548 -0
- data/vendor/pygments-main/tests/examplefiles/example.weechatlog +9 -0
- data/vendor/pygments-main/tests/examplefiles/example.xhtml +376 -0
- data/vendor/pygments-main/tests/examplefiles/example.xtend +34 -0
- data/vendor/pygments-main/tests/examplefiles/example.yaml +302 -0
- data/vendor/pygments-main/tests/examplefiles/example2.aspx +29 -0
- data/vendor/pygments-main/tests/examplefiles/example2.msc +79 -0
- data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +363 -0
- data/vendor/pygments-main/tests/examplefiles/example_file.fy +128 -0
- data/vendor/pygments-main/tests/examplefiles/firefox.mak +586 -0
- data/vendor/pygments-main/tests/examplefiles/flipflop.sv +19 -0
- data/vendor/pygments-main/tests/examplefiles/foo.sce +6 -0
- data/vendor/pygments-main/tests/examplefiles/format.ml +1213 -0
- data/vendor/pygments-main/tests/examplefiles/fucked_up.rb +77 -0
- data/vendor/pygments-main/tests/examplefiles/function.mu +1 -0
- data/vendor/pygments-main/tests/examplefiles/functional.rst +1472 -0
- data/vendor/pygments-main/tests/examplefiles/garcia-wachs.kk +133 -0
- data/vendor/pygments-main/tests/examplefiles/genclass.clj +510 -0
- data/vendor/pygments-main/tests/examplefiles/genshi_example.xml+genshi +193 -0
- data/vendor/pygments-main/tests/examplefiles/genshitext_example.genshitext +33 -0
- data/vendor/pygments-main/tests/examplefiles/glsl.frag +7 -0
- data/vendor/pygments-main/tests/examplefiles/glsl.vert +13 -0
- data/vendor/pygments-main/tests/examplefiles/grammar-test.p6 +22 -0
- data/vendor/pygments-main/tests/examplefiles/hello.smali +40 -0
- data/vendor/pygments-main/tests/examplefiles/hello.sp +9 -0
- data/vendor/pygments-main/tests/examplefiles/html+php_faulty.php +1 -0
- data/vendor/pygments-main/tests/examplefiles/http_request_example +15 -0
- data/vendor/pygments-main/tests/examplefiles/http_response_example +29 -0
- data/vendor/pygments-main/tests/examplefiles/import.hs +4 -0
- data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +71 -0
- data/vendor/pygments-main/tests/examplefiles/intro.ik +24 -0
- data/vendor/pygments-main/tests/examplefiles/ints.php +10 -0
- data/vendor/pygments-main/tests/examplefiles/intsyn.fun +675 -0
- data/vendor/pygments-main/tests/examplefiles/intsyn.sig +286 -0
- data/vendor/pygments-main/tests/examplefiles/irb_heredoc +8 -0
- data/vendor/pygments-main/tests/examplefiles/irc.lsp +214 -0
- data/vendor/pygments-main/tests/examplefiles/java.properties +16 -0
- data/vendor/pygments-main/tests/examplefiles/jbst_example1.jbst +28 -0
- data/vendor/pygments-main/tests/examplefiles/jbst_example2.jbst +45 -0
- data/vendor/pygments-main/tests/examplefiles/jinjadesignerdoc.rst +713 -0
- data/vendor/pygments-main/tests/examplefiles/json.lasso +301 -0
- data/vendor/pygments-main/tests/examplefiles/json.lasso9 +213 -0
- data/vendor/pygments-main/tests/examplefiles/lighttpd_config.conf +13 -0
- data/vendor/pygments-main/tests/examplefiles/linecontinuation.py +47 -0
- data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +41 -0
- data/vendor/pygments-main/tests/examplefiles/logos_example.xm +28 -0
- data/vendor/pygments-main/tests/examplefiles/ltmain.sh +2849 -0
- data/vendor/pygments-main/tests/examplefiles/main.cmake +42 -0
- data/vendor/pygments-main/tests/examplefiles/markdown.lsp +679 -0
- data/vendor/pygments-main/tests/examplefiles/matlab_noreturn +3 -0
- data/vendor/pygments-main/tests/examplefiles/matlab_sample +30 -0
- data/vendor/pygments-main/tests/examplefiles/matlabsession_sample.txt +37 -0
- data/vendor/pygments-main/tests/examplefiles/metagrammar.treetop +455 -0
- data/vendor/pygments-main/tests/examplefiles/mg_sample.pro +73 -0
- data/vendor/pygments-main/tests/examplefiles/minehunt.qml +112 -0
- data/vendor/pygments-main/tests/examplefiles/minimal.ns2 +4 -0
- data/vendor/pygments-main/tests/examplefiles/moin_SyntaxReference.txt +340 -0
- data/vendor/pygments-main/tests/examplefiles/multiline_regexes.rb +38 -0
- data/vendor/pygments-main/tests/examplefiles/nanomsg.intr +95 -0
- data/vendor/pygments-main/tests/examplefiles/nasm_aoutso.asm +96 -0
- data/vendor/pygments-main/tests/examplefiles/nasm_objexe.asm +30 -0
- data/vendor/pygments-main/tests/examplefiles/nemerle_sample.n +87 -0
- data/vendor/pygments-main/tests/examplefiles/nginx_nginx.conf +118 -0
- data/vendor/pygments-main/tests/examplefiles/numbers.c +12 -0
- data/vendor/pygments-main/tests/examplefiles/objc_example.m +32 -0
- data/vendor/pygments-main/tests/examplefiles/objc_example2.m +24 -0
- data/vendor/pygments-main/tests/examplefiles/perl_misc +62 -0
- data/vendor/pygments-main/tests/examplefiles/perl_perl5db +998 -0
- data/vendor/pygments-main/tests/examplefiles/perl_regex-delims +120 -0
- data/vendor/pygments-main/tests/examplefiles/perlfunc.1 +856 -0
- data/vendor/pygments-main/tests/examplefiles/phpMyAdmin.spec +163 -0
- data/vendor/pygments-main/tests/examplefiles/phpcomplete.vim +567 -0
- data/vendor/pygments-main/tests/examplefiles/pleac.in.rb +1223 -0
- data/vendor/pygments-main/tests/examplefiles/postgresql_test.txt +47 -0
- data/vendor/pygments-main/tests/examplefiles/pppoe.applescript +10 -0
- data/vendor/pygments-main/tests/examplefiles/psql_session.txt +122 -0
- data/vendor/pygments-main/tests/examplefiles/py3_test.txt +2 -0
- data/vendor/pygments-main/tests/examplefiles/py3tb_test.py3tb +4 -0
- data/vendor/pygments-main/tests/examplefiles/pycon_test.pycon +14 -0
- data/vendor/pygments-main/tests/examplefiles/pytb_test2.pytb +2 -0
- data/vendor/pygments-main/tests/examplefiles/pytb_test3.pytb +4 -0
- data/vendor/pygments-main/tests/examplefiles/python25-bsd.mak +234 -0
- data/vendor/pygments-main/tests/examplefiles/qsort.prolog +13 -0
- data/vendor/pygments-main/tests/examplefiles/r-console-transcript.Rout +38 -0
- data/vendor/pygments-main/tests/examplefiles/ragel-cpp_rlscan +280 -0
- data/vendor/pygments-main/tests/examplefiles/ragel-cpp_snippet +2 -0
- data/vendor/pygments-main/tests/examplefiles/regex.js +22 -0
- data/vendor/pygments-main/tests/examplefiles/reversi.lsp +427 -0
- data/vendor/pygments-main/tests/examplefiles/robotframework.txt +39 -0
- data/vendor/pygments-main/tests/examplefiles/ruby_func_def.rb +11 -0
- data/vendor/pygments-main/tests/examplefiles/rust_example.rs +233 -0
- data/vendor/pygments-main/tests/examplefiles/scilab.sci +30 -0
- data/vendor/pygments-main/tests/examplefiles/session.dylan-console +9 -0
- data/vendor/pygments-main/tests/examplefiles/sibling.prolog +19 -0
- data/vendor/pygments-main/tests/examplefiles/simple.md +747 -0
- data/vendor/pygments-main/tests/examplefiles/smarty_example.html +209 -0
- data/vendor/pygments-main/tests/examplefiles/source.lgt +343 -0
- data/vendor/pygments-main/tests/examplefiles/sources.list +62 -0
- data/vendor/pygments-main/tests/examplefiles/sphere.pov +18 -0
- data/vendor/pygments-main/tests/examplefiles/sqlite3.sqlite3-console +27 -0
- data/vendor/pygments-main/tests/examplefiles/squid.conf +30 -0
- data/vendor/pygments-main/tests/examplefiles/string.jl +1031 -0
- data/vendor/pygments-main/tests/examplefiles/string_delimiters.d +21 -0
- data/vendor/pygments-main/tests/examplefiles/stripheredoc.sh +3 -0
- data/vendor/pygments-main/tests/examplefiles/swig_java.swg +1329 -0
- data/vendor/pygments-main/tests/examplefiles/swig_std_vector.i +225 -0
- data/vendor/pygments-main/tests/examplefiles/test.R +153 -0
- data/vendor/pygments-main/tests/examplefiles/test.adb +211 -0
- data/vendor/pygments-main/tests/examplefiles/test.agda +102 -0
- data/vendor/pygments-main/tests/examplefiles/test.asy +131 -0
- data/vendor/pygments-main/tests/examplefiles/test.awk +121 -0
- data/vendor/pygments-main/tests/examplefiles/test.bas +29 -0
- data/vendor/pygments-main/tests/examplefiles/test.bb +95 -0
- data/vendor/pygments-main/tests/examplefiles/test.bmx +145 -0
- data/vendor/pygments-main/tests/examplefiles/test.boo +39 -0
- data/vendor/pygments-main/tests/examplefiles/test.bro +250 -0
- data/vendor/pygments-main/tests/examplefiles/test.cs +374 -0
- data/vendor/pygments-main/tests/examplefiles/test.css +54 -0
- data/vendor/pygments-main/tests/examplefiles/test.cu +36 -0
- data/vendor/pygments-main/tests/examplefiles/test.d +135 -0
- data/vendor/pygments-main/tests/examplefiles/test.dart +23 -0
- data/vendor/pygments-main/tests/examplefiles/test.dtd +89 -0
- data/vendor/pygments-main/tests/examplefiles/test.ebnf +31 -0
- data/vendor/pygments-main/tests/examplefiles/test.ec +605 -0
- data/vendor/pygments-main/tests/examplefiles/test.ecl +58 -0
- data/vendor/pygments-main/tests/examplefiles/test.eh +315 -0
- data/vendor/pygments-main/tests/examplefiles/test.erl +169 -0
- data/vendor/pygments-main/tests/examplefiles/test.evoque +33 -0
- data/vendor/pygments-main/tests/examplefiles/test.fan +818 -0
- data/vendor/pygments-main/tests/examplefiles/test.flx +57 -0
- data/vendor/pygments-main/tests/examplefiles/test.gdc +13 -0
- data/vendor/pygments-main/tests/examplefiles/test.groovy +97 -0
- data/vendor/pygments-main/tests/examplefiles/test.html +339 -0
- data/vendor/pygments-main/tests/examplefiles/test.ini +10 -0
- data/vendor/pygments-main/tests/examplefiles/test.java +653 -0
- data/vendor/pygments-main/tests/examplefiles/test.jsp +24 -0
- data/vendor/pygments-main/tests/examplefiles/test.maql +45 -0
- data/vendor/pygments-main/tests/examplefiles/test.mod +374 -0
- data/vendor/pygments-main/tests/examplefiles/test.moo +51 -0
- data/vendor/pygments-main/tests/examplefiles/test.myt +166 -0
- data/vendor/pygments-main/tests/examplefiles/test.nim +93 -0
- data/vendor/pygments-main/tests/examplefiles/test.opa +10 -0
- data/vendor/pygments-main/tests/examplefiles/test.p6 +252 -0
- data/vendor/pygments-main/tests/examplefiles/test.pas +743 -0
- data/vendor/pygments-main/tests/examplefiles/test.php +505 -0
- data/vendor/pygments-main/tests/examplefiles/test.plot +333 -0
- data/vendor/pygments-main/tests/examplefiles/test.ps1 +108 -0
- data/vendor/pygments-main/tests/examplefiles/test.pypylog +1839 -0
- data/vendor/pygments-main/tests/examplefiles/test.r3 +94 -0
- data/vendor/pygments-main/tests/examplefiles/test.rb +177 -0
- data/vendor/pygments-main/tests/examplefiles/test.rhtml +43 -0
- data/vendor/pygments-main/tests/examplefiles/test.scaml +8 -0
- data/vendor/pygments-main/tests/examplefiles/test.ssp +12 -0
- data/vendor/pygments-main/tests/examplefiles/test.tcsh +830 -0
- data/vendor/pygments-main/tests/examplefiles/test.vb +407 -0
- data/vendor/pygments-main/tests/examplefiles/test.vhdl +161 -0
- data/vendor/pygments-main/tests/examplefiles/test.xqy +138 -0
- data/vendor/pygments-main/tests/examplefiles/test.xsl +23 -0
- data/vendor/pygments-main/tests/examplefiles/test2.pypylog +120 -0
- data/vendor/pygments-main/tests/examplefiles/truncated.pytb +15 -0
- data/vendor/pygments-main/tests/examplefiles/type.lisp +1218 -0
- data/vendor/pygments-main/tests/examplefiles/underscore.coffee +603 -0
- data/vendor/pygments-main/tests/examplefiles/unicode.applescript +5 -0
- data/vendor/pygments-main/tests/examplefiles/unicodedoc.py +11 -0
- data/vendor/pygments-main/tests/examplefiles/unix-io.lid +37 -0
- data/vendor/pygments-main/tests/examplefiles/webkit-transition.css +3 -0
- data/vendor/pygments-main/tests/examplefiles/while.pov +13 -0
- data/vendor/pygments-main/tests/examplefiles/wiki.factor +384 -0
- data/vendor/pygments-main/tests/examplefiles/xml_example +1897 -0
- data/vendor/pygments-main/tests/examplefiles/zmlrpc.f90 +798 -0
- data/vendor/pygments-main/tests/old_run.py +138 -0
- data/vendor/pygments-main/tests/run.py +49 -0
- data/vendor/pygments-main/tests/support.py +15 -0
- data/vendor/pygments-main/tests/support/tags +36 -0
- data/vendor/pygments-main/tests/test_basic_api.py +295 -0
- data/vendor/pygments-main/tests/test_clexer.py +31 -0
- data/vendor/pygments-main/tests/test_cmdline.py +105 -0
- data/vendor/pygments-main/tests/test_examplefiles.py +99 -0
- data/vendor/pygments-main/tests/test_html_formatter.py +178 -0
- data/vendor/pygments-main/tests/test_latex_formatter.py +55 -0
- data/vendor/pygments-main/tests/test_lexers_other.py +68 -0
- data/vendor/pygments-main/tests/test_perllexer.py +137 -0
- data/vendor/pygments-main/tests/test_regexlexer.py +47 -0
- data/vendor/pygments-main/tests/test_token.py +46 -0
- data/vendor/pygments-main/tests/test_using_api.py +40 -0
- data/vendor/pygments-main/tests/test_util.py +135 -0
- data/vendor/simplejson/.gitignore +10 -0
- data/vendor/simplejson/.travis.yml +5 -0
- data/vendor/simplejson/CHANGES.txt +291 -0
- data/vendor/simplejson/LICENSE.txt +19 -0
- data/vendor/simplejson/MANIFEST.in +5 -0
- data/vendor/simplejson/README.rst +19 -0
- data/vendor/simplejson/conf.py +179 -0
- data/vendor/simplejson/index.rst +628 -0
- data/vendor/simplejson/scripts/make_docs.py +18 -0
- data/vendor/simplejson/setup.py +104 -0
- data/vendor/simplejson/simplejson/__init__.py +510 -0
- data/vendor/simplejson/simplejson/_speedups.c +2745 -0
- data/vendor/simplejson/simplejson/decoder.py +425 -0
- data/vendor/simplejson/simplejson/encoder.py +567 -0
- data/vendor/simplejson/simplejson/ordered_dict.py +119 -0
- data/vendor/simplejson/simplejson/scanner.py +77 -0
- data/vendor/simplejson/simplejson/tests/__init__.py +67 -0
- data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +55 -0
- data/vendor/simplejson/simplejson/tests/test_check_circular.py +30 -0
- data/vendor/simplejson/simplejson/tests/test_decimal.py +66 -0
- data/vendor/simplejson/simplejson/tests/test_decode.py +83 -0
- data/vendor/simplejson/simplejson/tests/test_default.py +9 -0
- data/vendor/simplejson/simplejson/tests/test_dump.py +67 -0
- data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +46 -0
- data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +32 -0
- data/vendor/simplejson/simplejson/tests/test_errors.py +34 -0
- data/vendor/simplejson/simplejson/tests/test_fail.py +91 -0
- data/vendor/simplejson/simplejson/tests/test_float.py +19 -0
- data/vendor/simplejson/simplejson/tests/test_indent.py +86 -0
- data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +20 -0
- data/vendor/simplejson/simplejson/tests/test_namedtuple.py +121 -0
- data/vendor/simplejson/simplejson/tests/test_pass1.py +76 -0
- data/vendor/simplejson/simplejson/tests/test_pass2.py +14 -0
- data/vendor/simplejson/simplejson/tests/test_pass3.py +20 -0
- data/vendor/simplejson/simplejson/tests/test_recursion.py +67 -0
- data/vendor/simplejson/simplejson/tests/test_scanstring.py +117 -0
- data/vendor/simplejson/simplejson/tests/test_separators.py +42 -0
- data/vendor/simplejson/simplejson/tests/test_speedups.py +20 -0
- data/vendor/simplejson/simplejson/tests/test_tuple.py +49 -0
- data/vendor/simplejson/simplejson/tests/test_unicode.py +109 -0
- data/vendor/simplejson/simplejson/tool.py +39 -0
- metadata +557 -0
@@ -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
|
+
}
|
@@ -0,0 +1,374 @@
|
|
1
|
+
////////////////////////////////////////////////////////////////////////////////
|
2
|
+
// //
|
3
|
+
// MIT X11 license, Copyright (c) 2005-2006 by: //
|
4
|
+
// //
|
5
|
+
// Authors: //
|
6
|
+
// Michael Dominic K. <michaldominik@gmail.com> //
|
7
|
+
// //
|
8
|
+
// Permission is hereby granted, free of charge, to any person obtaining a //
|
9
|
+
// copy of this software and associated documentation files (the "Software"), //
|
10
|
+
// to deal in the Software without restriction, including without limitation //
|
11
|
+
// the rights to use, copy, modify, merge, publish, distribute, sublicense, //
|
12
|
+
// and/or sell copies of the Software, and to permit persons to whom the //
|
13
|
+
// Software is furnished to do so, subject to the following conditions: //
|
14
|
+
// //
|
15
|
+
// The above copyright notice and this permission notice shall be included //
|
16
|
+
// in all copies or substantial portions of the Software. //
|
17
|
+
// //
|
18
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS //
|
19
|
+
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF //
|
20
|
+
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN //
|
21
|
+
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, //
|
22
|
+
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR //
|
23
|
+
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE //
|
24
|
+
// USE OR OTHER DEALINGS IN THE SOFTWARE. //
|
25
|
+
// //
|
26
|
+
////////////////////////////////////////////////////////////////////////////////
|
27
|
+
|
28
|
+
namespace Diva.Core {
|
29
|
+
|
30
|
+
using System;
|
31
|
+
using Widgets;
|
32
|
+
using System.Xml;
|
33
|
+
using Util;
|
34
|
+
using System.Collections.Generic;
|
35
|
+
using System.Collections;
|
36
|
+
using Basics;
|
37
|
+
|
38
|
+
public class OpenerTask : Task, IBoilProvider {
|
39
|
+
|
40
|
+
// Private structs ////////////////////////////////////////////
|
41
|
+
|
42
|
+
struct ObjectInfo {
|
43
|
+
|
44
|
+
public ObjectContainer Container;
|
45
|
+
public int[] Depends;
|
46
|
+
public string SystemType;
|
47
|
+
public int RefId;
|
48
|
+
|
49
|
+
/* CONSTRUCTOR */
|
50
|
+
public ObjectInfo (ObjectContainer container)
|
51
|
+
{
|
52
|
+
Container = container;
|
53
|
+
Depends = container.Depends.ToArray ();
|
54
|
+
SystemType = container.SystemType;
|
55
|
+
RefId = container.RefId;
|
56
|
+
}
|
57
|
+
|
58
|
+
public override string ToString ()
|
59
|
+
{
|
60
|
+
return String.Format ("Type: {0} Deps count: {1} Id: {2}",
|
61
|
+
SystemType, Depends.Length, RefId);
|
62
|
+
}
|
63
|
+
|
64
|
+
public bool IsUnBoilable (IBoilProvider provider)
|
65
|
+
{
|
66
|
+
if (Depends.Length == 0)
|
67
|
+
return true;
|
68
|
+
|
69
|
+
foreach (int id in Depends)
|
70
|
+
if (! (provider.Contains (id)))
|
71
|
+
return false;
|
72
|
+
|
73
|
+
return true;
|
74
|
+
}
|
75
|
+
|
76
|
+
}
|
77
|
+
|
78
|
+
// Enums //////////////////////////////////////////////////////
|
79
|
+
|
80
|
+
enum OpenerTaskStep { Init, Header, ProjectInfoRead, ObjectListRead,
|
81
|
+
ObjectListParse, ObjectListUnBoil, FindRoots,
|
82
|
+
Finished };
|
83
|
+
|
84
|
+
// Fields /////////////////////////////////////////////////////
|
85
|
+
|
86
|
+
string fileName; // Filename we're reading
|
87
|
+
XmlDocument xmlDocument; // Our document
|
88
|
+
//XmlNode projectInfoNode; // <projectinfo> node
|
89
|
+
IEnumerator objectsEnumerator; // Enumerator
|
90
|
+
List <ObjectInfo> objectsList; // Objects list
|
91
|
+
ObjectListContainer objectListContainer;
|
92
|
+
OpenerTaskStep currentStep; // Our current step
|
93
|
+
|
94
|
+
Dictionary <int, object> idToObject; // Id -> object
|
95
|
+
Dictionary <object, int> objectToId; // Object -> Id
|
96
|
+
|
97
|
+
string projectName = String.Empty;
|
98
|
+
string projectDirectory = String.Empty;
|
99
|
+
TagList projectTagList;
|
100
|
+
StuffList projectStuffList;
|
101
|
+
TrackList projectTrackList;
|
102
|
+
ClipList projectClipList;
|
103
|
+
MediaItemList projectMediaItemList;
|
104
|
+
Commander projectCommander;
|
105
|
+
Gdv.Pipeline projectPipeline;
|
106
|
+
Gdv.ProjectFormat projectFormat;
|
107
|
+
|
108
|
+
// Properties /////////////////////////////////////////////////
|
109
|
+
|
110
|
+
public string ProjectName {
|
111
|
+
get { return projectName; }
|
112
|
+
}
|
113
|
+
|
114
|
+
public string ProjectDirectory {
|
115
|
+
get { return projectDirectory; }
|
116
|
+
}
|
117
|
+
|
118
|
+
public TagList ProjectTagList {
|
119
|
+
get { return projectTagList; }
|
120
|
+
}
|
121
|
+
|
122
|
+
public StuffList ProjectStuffList {
|
123
|
+
get { return projectStuffList; }
|
124
|
+
}
|
125
|
+
|
126
|
+
public TrackList ProjectTrackList {
|
127
|
+
get { return projectTrackList; }
|
128
|
+
}
|
129
|
+
|
130
|
+
public ClipList ProjectClipList {
|
131
|
+
get { return projectClipList; }
|
132
|
+
}
|
133
|
+
|
134
|
+
public MediaItemList ProjectMediaItemList {
|
135
|
+
get { return projectMediaItemList; }
|
136
|
+
}
|
137
|
+
|
138
|
+
public Commander ProjectCommander {
|
139
|
+
get { return projectCommander; }
|
140
|
+
}
|
141
|
+
|
142
|
+
public Gdv.Pipeline ProjectPipeline {
|
143
|
+
get { return projectPipeline; }
|
144
|
+
}
|
145
|
+
|
146
|
+
public Gdv.ProjectFormat ProjectFormat {
|
147
|
+
get { return projectFormat; }
|
148
|
+
}
|
149
|
+
|
150
|
+
// Public methods /////////////////////////////////////////////
|
151
|
+
|
152
|
+
/* CONSTRUCTOR */
|
153
|
+
public OpenerTask (string fileName)
|
154
|
+
{
|
155
|
+
this.fileName = fileName;
|
156
|
+
var verbatimString = @"c:\test\";
|
157
|
+
|
158
|
+
var verbatimStringWithNewline = @"test \\ \n \t \r
|
159
|
+
a
|
160
|
+
b
|
161
|
+
c";
|
162
|
+
var verbatimStringWithEscapedQuotes = @"He said
|
163
|
+
""she says \"" is not an escaped character in verbatimstrings""
|
164
|
+
";
|
165
|
+
|
166
|
+
int[] numbers = { 5,6,4,2,4,6,8,9,7,0 };
|
167
|
+
var linqExample = from n in numbers
|
168
|
+
where n > 5
|
169
|
+
select n;
|
170
|
+
|
171
|
+
var anotherlinqExample = from n in numbers
|
172
|
+
orderby n descending
|
173
|
+
select n;
|
174
|
+
|
175
|
+
int[] someMoreNumbers = { 8,2,17,34,8,9,9,5,3,4,2,1,5 };
|
176
|
+
var moreLinq = from n in numbers
|
177
|
+
join mn in moreNumbers on n equals mn + 2
|
178
|
+
select new {n, mn};
|
179
|
+
}
|
180
|
+
|
181
|
+
public override void Reset ()
|
182
|
+
{
|
183
|
+
objectToId = new Dictionary <object, int> ();
|
184
|
+
idToObject = new Dictionary <int, object> ();
|
185
|
+
|
186
|
+
xmlDocument = null;
|
187
|
+
//projectInfoNode = null;
|
188
|
+
|
189
|
+
currentStep = OpenerTaskStep.Init;
|
190
|
+
|
191
|
+
base.Reset ();
|
192
|
+
}
|
193
|
+
|
194
|
+
public int GetIdForObject (object o)
|
195
|
+
{
|
196
|
+
return objectToId [o];
|
197
|
+
}
|
198
|
+
|
199
|
+
public object GetObjectForId (int id)
|
200
|
+
{
|
201
|
+
return idToObject [id];
|
202
|
+
}
|
203
|
+
|
204
|
+
public bool Contains (int id)
|
205
|
+
{
|
206
|
+
return idToObject.ContainsKey (id);
|
207
|
+
}
|
208
|
+
|
209
|
+
// Private methods ////////////////////////////////////////////
|
210
|
+
|
211
|
+
protected override TaskStatus ExecuteStep (int s)
|
212
|
+
{
|
213
|
+
bool cont = true;
|
214
|
+
|
215
|
+
// Main
|
216
|
+
switch (currentStep) {
|
217
|
+
|
218
|
+
case OpenerTaskStep.Init:
|
219
|
+
objectsList = new List <ObjectInfo> ();
|
220
|
+
xmlDocument = new XmlDocument ();
|
221
|
+
xmlDocument.Load (fileName);
|
222
|
+
currentStep = OpenerTaskStep.Header;
|
223
|
+
break;
|
224
|
+
|
225
|
+
case OpenerTaskStep.Header:
|
226
|
+
//ReadHeader ();
|
227
|
+
currentStep = OpenerTaskStep.ProjectInfoRead;
|
228
|
+
break;
|
229
|
+
|
230
|
+
case OpenerTaskStep.ProjectInfoRead:
|
231
|
+
foreach (XmlNode node in xmlDocument.DocumentElement.ChildNodes)
|
232
|
+
if (node.Name == "projectinfo")
|
233
|
+
ResolveProjectInfoNode (node);
|
234
|
+
|
235
|
+
// FIXME: Fail if not found/not resolved
|
236
|
+
currentStep = OpenerTaskStep.ObjectListRead;
|
237
|
+
break;
|
238
|
+
|
239
|
+
case OpenerTaskStep.ObjectListRead:
|
240
|
+
foreach (XmlNode node in xmlDocument.DocumentElement.ChildNodes)
|
241
|
+
if (node.Name == "objectlist")
|
242
|
+
objectListContainer = (ObjectListContainer)
|
243
|
+
DataFactory.MakeDataElement (node as XmlElement);
|
244
|
+
|
245
|
+
if (objectListContainer == null)
|
246
|
+
throw new Exception ("ObjectListContainer not found!");
|
247
|
+
|
248
|
+
currentStep = OpenerTaskStep.ObjectListParse;
|
249
|
+
break;
|
250
|
+
|
251
|
+
case OpenerTaskStep.ObjectListParse:
|
252
|
+
bool flush = EnumerateSomeObjects ();
|
253
|
+
if (flush)
|
254
|
+
currentStep = OpenerTaskStep.ObjectListUnBoil;
|
255
|
+
break;
|
256
|
+
|
257
|
+
case OpenerTaskStep.ObjectListUnBoil:
|
258
|
+
bool done = UnBoilSomeObjects ();
|
259
|
+
if (done)
|
260
|
+
currentStep = OpenerTaskStep.FindRoots;
|
261
|
+
break;
|
262
|
+
|
263
|
+
|
264
|
+
case OpenerTaskStep.FindRoots:
|
265
|
+
projectTrackList = (TrackList) FindRoot ("tracklist");
|
266
|
+
projectTagList = (TagList) FindRoot ("taglist");
|
267
|
+
projectStuffList = (StuffList) FindRoot ("stufflist");
|
268
|
+
projectClipList = (ClipList) FindRoot ("cliplist");
|
269
|
+
projectMediaItemList = (MediaItemList) FindRoot ("mediaitemlist");
|
270
|
+
projectPipeline = (Gdv.Pipeline) FindRoot ("pipeline");
|
271
|
+
projectCommander = (Commander) FindRoot ("commander");
|
272
|
+
projectFormat = (Gdv.ProjectFormat) FindRoot ("projectformat");
|
273
|
+
|
274
|
+
currentStep = OpenerTaskStep.Finished;
|
275
|
+
break;
|
276
|
+
|
277
|
+
case OpenerTaskStep.Finished:
|
278
|
+
cont = false;
|
279
|
+
break;
|
280
|
+
|
281
|
+
default:
|
282
|
+
break;
|
283
|
+
}
|
284
|
+
|
285
|
+
// Post
|
286
|
+
if (cont)
|
287
|
+
return TaskStatus.Running;
|
288
|
+
else
|
289
|
+
return TaskStatus.Done;
|
290
|
+
}
|
291
|
+
|
292
|
+
/*
|
293
|
+
void ReadHeader ()
|
294
|
+
{
|
295
|
+
// FIXME: Read all the attributes from the <divaproject> element
|
296
|
+
}*/
|
297
|
+
|
298
|
+
void ResolveProjectInfoNode (XmlNode node)
|
299
|
+
{
|
300
|
+
foreach (XmlNode childNode in node) {
|
301
|
+
|
302
|
+
switch (childNode.Name) {
|
303
|
+
|
304
|
+
case "name":
|
305
|
+
projectName = childNode.FirstChild.Value;
|
306
|
+
break;
|
307
|
+
|
308
|
+
case "directory":
|
309
|
+
projectDirectory = childNode.FirstChild.Value;
|
310
|
+
break;
|
311
|
+
|
312
|
+
// FIXME: Duration etc.
|
313
|
+
}
|
314
|
+
}
|
315
|
+
}
|
316
|
+
|
317
|
+
bool EnumerateSomeObjects ()
|
318
|
+
{
|
319
|
+
if (objectsEnumerator == null)
|
320
|
+
objectsEnumerator = objectListContainer.FindAllObjects ().GetEnumerator ();
|
321
|
+
|
322
|
+
for (int i = 0; i < 10; i++) {
|
323
|
+
if (objectsEnumerator.MoveNext () == false)
|
324
|
+
return true;
|
325
|
+
|
326
|
+
ObjectContainer container = (ObjectContainer)
|
327
|
+
objectsEnumerator.Current;
|
328
|
+
|
329
|
+
ObjectInfo newInfo = new ObjectInfo (container);
|
330
|
+
objectsList.Add (newInfo);
|
331
|
+
}
|
332
|
+
|
333
|
+
return false;
|
334
|
+
}
|
335
|
+
|
336
|
+
ObjectInfo GetNextCandidate ()
|
337
|
+
{
|
338
|
+
foreach (ObjectInfo objInfo in objectsList)
|
339
|
+
if (objInfo.IsUnBoilable (this))
|
340
|
+
return objInfo;
|
341
|
+
|
342
|
+
throw new Exception ("FIXME: No more unboilable objects found. Recursive?");
|
343
|
+
}
|
344
|
+
|
345
|
+
bool UnBoilSomeObjects ()
|
346
|
+
{
|
347
|
+
for (int i = 0; i < 5; i++) {
|
348
|
+
// All unboiled
|
349
|
+
if (objectsList.Count == 0)
|
350
|
+
return true;
|
351
|
+
|
352
|
+
ObjectInfo objInfo = GetNextCandidate ();
|
353
|
+
|
354
|
+
object o = BoilFactory.UnBoil (objInfo.Container, this);
|
355
|
+
objectsList.Remove (objInfo);
|
356
|
+
|
357
|
+
// Add
|
358
|
+
idToObject [objInfo.RefId] = o;
|
359
|
+
objectToId [o] = objInfo.RefId;
|
360
|
+
|
361
|
+
}
|
362
|
+
|
363
|
+
return false;
|
364
|
+
}
|
365
|
+
|
366
|
+
object FindRoot (string rootString)
|
367
|
+
{
|
368
|
+
ObjectContainer container = objectListContainer.FindObjectContainer (rootString);
|
369
|
+
return idToObject [container.RefId];
|
370
|
+
}
|
371
|
+
|
372
|
+
}
|
373
|
+
|
374
|
+
}
|