├── .gitignore ├── .idea ├── banruo.iml ├── encodings.xml ├── misc.xml ├── modules.xml ├── vcs.xml └── workspace.xml ├── Dockerfile ├── LICENSE ├── README.md ├── __pycache__ └── manage.cpython-36.pyc ├── asset ├── __init__.py ├── admin.py ├── apps.py ├── migrations │ └── __init__.py ├── models.py ├── port_scan.py ├── tests.py ├── url.py └── views.py ├── audit ├── __init__.py ├── apps.py ├── fortify_run.py ├── info.py ├── migrations │ ├── 0001_initial.py │ ├── 0002_auto_20200321_2302.py │ ├── 0003_auto_20200321_2311.py │ ├── 0004_auto_20200322_0028.py │ ├── 0005_auto_20200322_0046.py │ └── __init__.py ├── models.py ├── tasks.py ├── url.py └── views.py ├── banruo ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-34.pyc │ ├── __init__.cpython-35.pyc │ ├── __init__.cpython-36.pyc │ ├── celery.cpython-35.pyc │ ├── celery.cpython-36.pyc │ ├── settings.cpython-34.pyc │ ├── settings.cpython-35.pyc │ ├── settings.cpython-36.pyc │ ├── urls.cpython-35.pyc │ ├── urls.cpython-36.pyc │ ├── wsgi.cpython-35.pyc │ └── wsgi.cpython-36.pyc ├── celery.py ├── config.json ├── settings.py ├── urls.py └── wsgi.py ├── docker ├── Dockerfile ├── run.sh └── sources.list ├── dump.rdb ├── index ├── __init__.py ├── admin.py ├── apps.py ├── migrations │ ├── 0001_initial.py │ ├── 0002_auto_20200322_0028.py │ └── __init__.py ├── models.py ├── tests.py ├── url.py └── views.py ├── lib ├── __pycache__ │ ├── config_json.cpython-36.pyc │ └── send_msg.cpython-36.pyc ├── config_json.py └── send_msg.py ├── manage.py ├── monitor ├── __init__.py ├── admin.py ├── apps.py ├── migrations │ └── __init__.py ├── models.py ├── tests.py └── views.py ├── pentest ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-35.pyc │ ├── __init__.cpython-36.pyc │ ├── apps.cpython-35.pyc │ ├── apps.cpython-36.pyc │ ├── auth.cpython-36.pyc │ ├── injection.cpython-35.pyc │ ├── injection.cpython-36.pyc │ ├── models.cpython-35.pyc │ ├── models.cpython-36.pyc │ ├── proxy.cpython-36.pyc │ ├── url.cpython-35.pyc │ ├── url.cpython-36.pyc │ ├── views.cpython-35.pyc │ └── views.cpython-36.pyc ├── apps.py ├── auth.py ├── injection.py ├── migrations │ ├── 0001_initial.py │ ├── 0002_auto_20200104_1740.py │ ├── 0003_auto_20200322_1730.py │ ├── __init__.py │ └── __pycache__ │ │ ├── 0001_initial.cpython-35.pyc │ │ ├── 0001_initial.cpython-36.pyc │ │ ├── 0002_auto_20190508_1112.cpython-36.pyc │ │ ├── 0002_auto_20191120_0510.cpython-36.pyc │ │ ├── 0002_remove_target_info_ip.cpython-36.pyc │ │ ├── 0003_auto_20190427_0910.cpython-36.pyc │ │ ├── 0003_auto_20190508_1121.cpython-36.pyc │ │ ├── 0003_auto_20191120_0517.cpython-36.pyc │ │ ├── 0004_auto_20190508_1123.cpython-36.pyc │ │ ├── 0004_sqlmap_log.cpython-36.pyc │ │ ├── 0005_inject_data_api_address.cpython-36.pyc │ │ ├── 0005_inject_data_log_status.cpython-36.pyc │ │ ├── 0006_auto_20190427_1124.cpython-36.pyc │ │ ├── 0006_auto_20190508_1343.cpython-36.pyc │ │ ├── 0007_auto_20190505_1321.cpython-36.pyc │ │ ├── 0007_auto_20190509_0903.cpython-36.pyc │ │ ├── 0008_auto_20190509_1516.cpython-36.pyc │ │ ├── 0008_inject_data_client_ip.cpython-36.pyc │ │ ├── 0009_auto_20190509_1520.cpython-36.pyc │ │ ├── 0010_auto_20191031_1230.cpython-36.pyc │ │ ├── 0011_remove_auth_filter_raw_cookies.cpython-36.pyc │ │ ├── 0012_auto_20191031_1235.cpython-36.pyc │ │ ├── 0013_auto_20191031_1238.cpython-36.pyc │ │ ├── 0014_auto_20191031_1254.cpython-36.pyc │ │ ├── 0015_authdata_date.cpython-36.pyc │ │ ├── 0016_authdata_leixing.cpython-36.pyc │ │ ├── 0017_authresult.cpython-36.pyc │ │ ├── 0018_authresult_parm.cpython-36.pyc │ │ ├── 0019_authdata_parm.cpython-36.pyc │ │ ├── 0020_auto_20191107_1116.cpython-36.pyc │ │ ├── 0021_auto_20191107_1220.cpython-36.pyc │ │ ├── 0022_auth_filter_raw_parm.cpython-36.pyc │ │ ├── 0023_auto_20191107_1224.cpython-36.pyc │ │ ├── 0024_auto_20191107_1318.cpython-36.pyc │ │ ├── 0025_remove_auth_filter_raw_raw.cpython-36.pyc │ │ ├── 0026_auto_20191107_1325.cpython-36.pyc │ │ ├── 0027_auto_20191107_1329.cpython-36.pyc │ │ ├── 0028_remove_proxy_data_port.cpython-36.pyc │ │ ├── 0029_auto_20191108_0315.cpython-36.pyc │ │ ├── 0030_auto_20191108_1515.cpython-36.pyc │ │ ├── 0031_auto_20191108_1550.cpython-36.pyc │ │ ├── 0032_auto_20191108_1551.cpython-36.pyc │ │ ├── 0033_auto_20191108_1552.cpython-36.pyc │ │ ├── 0034_auto_20191108_1553.cpython-36.pyc │ │ ├── 0035_auth_filter_raw_cookies_status.cpython-36.pyc │ │ ├── 0036_auth_filter_raw_get_list.cpython-36.pyc │ │ ├── __init__.cpython-35.pyc │ │ └── __init__.cpython-36.pyc ├── models.py ├── proxy.py ├── sqlmap-api.py ├── url.py ├── views.py └── xss.py ├── readmepic ├── 1.jpg ├── 10.jpg ├── 11.jpg ├── 12.jpg ├── 13.jpg ├── 14.jpg ├── 15.jpg ├── 16.jpg ├── 17.jpg ├── 18.jpg ├── 19.jpg ├── 2.jpg ├── 20.jpg ├── 21.jpg ├── 22.jpg ├── 23.jpg ├── 24.jpg ├── 25.jpg ├── 26.jpg ├── 27.jpg ├── 3.jpg ├── 4.jpg ├── 5.jpg ├── 6.jpg ├── 7.jpg ├── 8.jpg └── 9.jpg ├── requirements.txt ├── ssl ├── mitmproxy-ca-cert.cer ├── mitmproxy-ca-cert.p12 ├── mitmproxy-ca-cert.pem ├── mitmproxy-ca.pem └── mitmproxy-dhparam.pem ├── static ├── css │ ├── animate.min.css │ ├── application.css │ ├── base.css │ ├── bootstrap.css │ ├── date_time_picker.css │ ├── font.css │ ├── form-elements.css │ ├── login.css │ ├── menu.css │ ├── report.css │ ├── responsive.css │ ├── select2.min.css │ ├── skins │ │ └── square │ │ │ ├── grey.css │ │ │ └── grey.png │ ├── style.css │ ├── stylelogin.css │ ├── toolkit-inverse.css │ └── xadmin.css ├── fonts │ ├── iconfont.eot │ ├── iconfont.svg │ ├── iconfont.ttf │ └── iconfont.woff ├── icon │ └── funnel.png ├── images │ ├── aiwrap.png │ └── bg.png ├── js │ ├── codemirror │ │ ├── addon │ │ │ ├── comment │ │ │ │ ├── comment.js │ │ │ │ └── continuecomment.js │ │ │ ├── dialog │ │ │ │ ├── dialog.css │ │ │ │ └── dialog.js │ │ │ ├── display │ │ │ │ ├── autorefresh.js │ │ │ │ ├── fullscreen.css │ │ │ │ ├── fullscreen.js │ │ │ │ ├── panel.js │ │ │ │ ├── placeholder.js │ │ │ │ └── rulers.js │ │ │ ├── edit │ │ │ │ ├── closebrackets.js │ │ │ │ ├── closetag.js │ │ │ │ ├── continuelist.js │ │ │ │ ├── matchbrackets.js │ │ │ │ ├── matchtags.js │ │ │ │ └── trailingspace.js │ │ │ ├── fold │ │ │ │ ├── brace-fold.js │ │ │ │ ├── comment-fold.js │ │ │ │ ├── foldcode.js │ │ │ │ ├── foldgutter.css │ │ │ │ ├── foldgutter.js │ │ │ │ ├── indent-fold.js │ │ │ │ ├── markdown-fold.js │ │ │ │ └── xml-fold.js │ │ │ ├── hint │ │ │ │ ├── anyword-hint.js │ │ │ │ ├── css-hint.js │ │ │ │ ├── html-hint.js │ │ │ │ ├── javascript-hint.js │ │ │ │ ├── show-hint.css │ │ │ │ ├── show-hint.js │ │ │ │ ├── sql-hint.js │ │ │ │ └── xml-hint.js │ │ │ ├── lint │ │ │ │ ├── coffeescript-lint.js │ │ │ │ ├── css-lint.js │ │ │ │ ├── html-lint.js │ │ │ │ ├── javascript-lint.js │ │ │ │ ├── json-lint.js │ │ │ │ ├── lint.css │ │ │ │ ├── lint.js │ │ │ │ └── yaml-lint.js │ │ │ ├── merge │ │ │ │ ├── merge.css │ │ │ │ └── merge.js │ │ │ ├── mode │ │ │ │ ├── loadmode.js │ │ │ │ ├── multiplex.js │ │ │ │ ├── multiplex_test.js │ │ │ │ ├── overlay.js │ │ │ │ └── simple.js │ │ │ ├── runmode │ │ │ │ ├── colorize.js │ │ │ │ ├── runmode-standalone.js │ │ │ │ ├── runmode.js │ │ │ │ └── runmode.node.js │ │ │ ├── scroll │ │ │ │ ├── annotatescrollbar.js │ │ │ │ ├── scrollpastend.js │ │ │ │ ├── simplescrollbars.css │ │ │ │ └── simplescrollbars.js │ │ │ ├── search │ │ │ │ ├── jump-to-line.js │ │ │ │ ├── match-highlighter.js │ │ │ │ ├── matchesonscrollbar.css │ │ │ │ ├── matchesonscrollbar.js │ │ │ │ ├── search.js │ │ │ │ └── searchcursor.js │ │ │ ├── selection │ │ │ │ ├── active-line.js │ │ │ │ ├── mark-selection.js │ │ │ │ └── selection-pointer.js │ │ │ ├── tern │ │ │ │ ├── tern.css │ │ │ │ ├── tern.js │ │ │ │ └── worker.js │ │ │ └── wrap │ │ │ │ └── hardwrap.js │ │ ├── keymap │ │ │ ├── emacs.js │ │ │ ├── sublime.js │ │ │ └── vim.js │ │ ├── lib │ │ │ ├── codemirror.css │ │ │ └── codemirror.js │ │ ├── mode │ │ │ ├── apl │ │ │ │ ├── apl.js │ │ │ │ └── index.html │ │ │ ├── asciiarmor │ │ │ │ ├── asciiarmor.js │ │ │ │ └── index.html │ │ │ ├── asn.1 │ │ │ │ ├── asn.1.js │ │ │ │ └── index.html │ │ │ ├── asterisk │ │ │ │ ├── asterisk.js │ │ │ │ └── index.html │ │ │ ├── brainfuck │ │ │ │ ├── brainfuck.js │ │ │ │ └── index.html │ │ │ ├── clike │ │ │ │ ├── clike.js │ │ │ │ ├── index.html │ │ │ │ ├── scala.html │ │ │ │ └── test.js │ │ │ ├── clojure │ │ │ │ ├── clojure.js │ │ │ │ └── index.html │ │ │ ├── cmake │ │ │ │ ├── cmake.js │ │ │ │ └── index.html │ │ │ ├── cobol │ │ │ │ ├── cobol.js │ │ │ │ └── index.html │ │ │ ├── coffeescript │ │ │ │ ├── coffeescript.js │ │ │ │ └── index.html │ │ │ ├── commonlisp │ │ │ │ ├── commonlisp.js │ │ │ │ └── index.html │ │ │ ├── crystal │ │ │ │ ├── crystal.js │ │ │ │ └── index.html │ │ │ ├── css │ │ │ │ ├── css.js │ │ │ │ ├── gss.html │ │ │ │ ├── gss_test.js │ │ │ │ ├── index.html │ │ │ │ ├── less.html │ │ │ │ ├── less_test.js │ │ │ │ ├── scss.html │ │ │ │ ├── scss_test.js │ │ │ │ └── test.js │ │ │ ├── cypher │ │ │ │ ├── cypher.js │ │ │ │ ├── index.html │ │ │ │ └── test.js │ │ │ ├── d │ │ │ │ ├── d.js │ │ │ │ └── index.html │ │ │ ├── dart │ │ │ │ ├── dart.js │ │ │ │ └── index.html │ │ │ ├── diff │ │ │ │ ├── diff.js │ │ │ │ └── index.html │ │ │ ├── django │ │ │ │ ├── django.js │ │ │ │ └── index.html │ │ │ ├── dockerfile │ │ │ │ ├── dockerfile.js │ │ │ │ └── index.html │ │ │ ├── dtd │ │ │ │ ├── dtd.js │ │ │ │ └── index.html │ │ │ ├── dylan │ │ │ │ ├── dylan.js │ │ │ │ ├── index.html │ │ │ │ └── test.js │ │ │ ├── ebnf │ │ │ │ ├── ebnf.js │ │ │ │ └── index.html │ │ │ ├── ecl │ │ │ │ ├── ecl.js │ │ │ │ └── index.html │ │ │ ├── eiffel │ │ │ │ ├── eiffel.js │ │ │ │ └── index.html │ │ │ ├── elm │ │ │ │ ├── elm.js │ │ │ │ └── index.html │ │ │ ├── erlang │ │ │ │ ├── erlang.js │ │ │ │ └── index.html │ │ │ ├── factor │ │ │ │ ├── factor.js │ │ │ │ └── index.html │ │ │ ├── fcl │ │ │ │ ├── fcl.js │ │ │ │ └── index.html │ │ │ ├── forth │ │ │ │ ├── forth.js │ │ │ │ └── index.html │ │ │ ├── fortran │ │ │ │ ├── fortran.js │ │ │ │ └── index.html │ │ │ ├── gas │ │ │ │ ├── gas.js │ │ │ │ └── index.html │ │ │ ├── gfm │ │ │ │ ├── gfm.js │ │ │ │ ├── index.html │ │ │ │ └── test.js │ │ │ ├── gherkin │ │ │ │ ├── gherkin.js │ │ │ │ └── index.html │ │ │ ├── go │ │ │ │ ├── go.js │ │ │ │ └── index.html │ │ │ ├── groovy │ │ │ │ ├── groovy.js │ │ │ │ └── index.html │ │ │ ├── haml │ │ │ │ ├── haml.js │ │ │ │ ├── index.html │ │ │ │ └── test.js │ │ │ ├── handlebars │ │ │ │ ├── handlebars.js │ │ │ │ └── index.html │ │ │ ├── haskell-literate │ │ │ │ ├── haskell-literate.js │ │ │ │ └── index.html │ │ │ ├── haskell │ │ │ │ ├── haskell.js │ │ │ │ └── index.html │ │ │ ├── haxe │ │ │ │ ├── haxe.js │ │ │ │ └── index.html │ │ │ ├── htmlembedded │ │ │ │ ├── htmlembedded.js │ │ │ │ └── index.html │ │ │ ├── htmlmixed │ │ │ │ ├── htmlmixed.js │ │ │ │ └── index.html │ │ │ ├── http │ │ │ │ ├── http.js │ │ │ │ └── index.html │ │ │ ├── idl │ │ │ │ ├── idl.js │ │ │ │ └── index.html │ │ │ ├── index.html │ │ │ ├── javascript │ │ │ │ ├── index.html │ │ │ │ ├── javascript.js │ │ │ │ ├── json-ld.html │ │ │ │ ├── test.js │ │ │ │ └── typescript.html │ │ │ ├── jinja2 │ │ │ │ ├── index.html │ │ │ │ └── jinja2.js │ │ │ ├── jsx │ │ │ │ ├── index.html │ │ │ │ ├── jsx.js │ │ │ │ └── test.js │ │ │ ├── julia │ │ │ │ ├── index.html │ │ │ │ └── julia.js │ │ │ ├── livescript │ │ │ │ ├── index.html │ │ │ │ └── livescript.js │ │ │ ├── lua │ │ │ │ ├── index.html │ │ │ │ └── lua.js │ │ │ ├── markdown │ │ │ │ ├── index.html │ │ │ │ ├── markdown.js │ │ │ │ └── test.js │ │ │ ├── mathematica │ │ │ │ ├── index.html │ │ │ │ └── mathematica.js │ │ │ ├── mbox │ │ │ │ ├── index.html │ │ │ │ └── mbox.js │ │ │ ├── meta.js │ │ │ ├── mirc │ │ │ │ ├── index.html │ │ │ │ └── mirc.js │ │ │ ├── mllike │ │ │ │ ├── index.html │ │ │ │ └── mllike.js │ │ │ ├── modelica │ │ │ │ ├── index.html │ │ │ │ └── modelica.js │ │ │ ├── mscgen │ │ │ │ ├── index.html │ │ │ │ ├── mscgen.js │ │ │ │ ├── mscgen_test.js │ │ │ │ ├── msgenny_test.js │ │ │ │ └── xu_test.js │ │ │ ├── mumps │ │ │ │ ├── index.html │ │ │ │ └── mumps.js │ │ │ ├── nginx │ │ │ │ ├── index.html │ │ │ │ └── nginx.js │ │ │ ├── nsis │ │ │ │ ├── index.html │ │ │ │ └── nsis.js │ │ │ ├── ntriples │ │ │ │ ├── index.html │ │ │ │ └── ntriples.js │ │ │ ├── octave │ │ │ │ ├── index.html │ │ │ │ └── octave.js │ │ │ ├── oz │ │ │ │ ├── index.html │ │ │ │ └── oz.js │ │ │ ├── pascal │ │ │ │ ├── index.html │ │ │ │ └── pascal.js │ │ │ ├── pegjs │ │ │ │ ├── index.html │ │ │ │ └── pegjs.js │ │ │ ├── perl │ │ │ │ ├── index.html │ │ │ │ └── perl.js │ │ │ ├── php │ │ │ │ ├── index.html │ │ │ │ ├── php.js │ │ │ │ └── test.js │ │ │ ├── pig │ │ │ │ ├── index.html │ │ │ │ └── pig.js │ │ │ ├── powershell │ │ │ │ ├── index.html │ │ │ │ ├── powershell.js │ │ │ │ └── test.js │ │ │ ├── properties │ │ │ │ ├── index.html │ │ │ │ └── properties.js │ │ │ ├── protobuf │ │ │ │ ├── index.html │ │ │ │ └── protobuf.js │ │ │ ├── pug │ │ │ │ ├── index.html │ │ │ │ └── pug.js │ │ │ ├── puppet │ │ │ │ ├── index.html │ │ │ │ └── puppet.js │ │ │ ├── python │ │ │ │ ├── index.html │ │ │ │ ├── python.js │ │ │ │ └── test.js │ │ │ ├── q │ │ │ │ ├── index.html │ │ │ │ └── q.js │ │ │ ├── r │ │ │ │ ├── index.html │ │ │ │ └── r.js │ │ │ ├── rpm │ │ │ │ ├── changes │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ └── rpm.js │ │ │ ├── rst │ │ │ │ ├── index.html │ │ │ │ └── rst.js │ │ │ ├── ruby │ │ │ │ ├── index.html │ │ │ │ ├── ruby.js │ │ │ │ └── test.js │ │ │ ├── rust │ │ │ │ ├── index.html │ │ │ │ ├── rust.js │ │ │ │ └── test.js │ │ │ ├── sas │ │ │ │ ├── index.html │ │ │ │ └── sas.js │ │ │ ├── sass │ │ │ │ ├── index.html │ │ │ │ └── sass.js │ │ │ ├── scheme │ │ │ │ ├── index.html │ │ │ │ └── scheme.js │ │ │ ├── shell │ │ │ │ ├── index.html │ │ │ │ ├── shell.js │ │ │ │ └── test.js │ │ │ ├── sieve │ │ │ │ ├── index.html │ │ │ │ └── sieve.js │ │ │ ├── slim │ │ │ │ ├── index.html │ │ │ │ ├── slim.js │ │ │ │ └── test.js │ │ │ ├── smalltalk │ │ │ │ ├── index.html │ │ │ │ └── smalltalk.js │ │ │ ├── smarty │ │ │ │ ├── index.html │ │ │ │ └── smarty.js │ │ │ ├── solr │ │ │ │ ├── index.html │ │ │ │ └── solr.js │ │ │ ├── soy │ │ │ │ ├── index.html │ │ │ │ ├── soy.js │ │ │ │ └── test.js │ │ │ ├── sparql │ │ │ │ ├── index.html │ │ │ │ └── sparql.js │ │ │ ├── spreadsheet │ │ │ │ ├── index.html │ │ │ │ └── spreadsheet.js │ │ │ ├── sql │ │ │ │ ├── index.html │ │ │ │ └── sql.js │ │ │ ├── stex │ │ │ │ ├── index.html │ │ │ │ ├── stex.js │ │ │ │ └── test.js │ │ │ ├── stylus │ │ │ │ ├── index.html │ │ │ │ └── stylus.js │ │ │ ├── swift │ │ │ │ ├── index.html │ │ │ │ ├── swift.js │ │ │ │ └── test.js │ │ │ ├── tcl │ │ │ │ ├── index.html │ │ │ │ └── tcl.js │ │ │ ├── textile │ │ │ │ ├── index.html │ │ │ │ ├── test.js │ │ │ │ └── textile.js │ │ │ ├── tiddlywiki │ │ │ │ ├── index.html │ │ │ │ ├── tiddlywiki.css │ │ │ │ └── tiddlywiki.js │ │ │ ├── tiki │ │ │ │ ├── index.html │ │ │ │ ├── tiki.css │ │ │ │ └── tiki.js │ │ │ ├── toml │ │ │ │ ├── index.html │ │ │ │ └── toml.js │ │ │ ├── tornado │ │ │ │ ├── index.html │ │ │ │ └── tornado.js │ │ │ ├── troff │ │ │ │ ├── index.html │ │ │ │ └── troff.js │ │ │ ├── ttcn-cfg │ │ │ │ ├── index.html │ │ │ │ └── ttcn-cfg.js │ │ │ ├── ttcn │ │ │ │ ├── index.html │ │ │ │ └── ttcn.js │ │ │ ├── turtle │ │ │ │ ├── index.html │ │ │ │ └── turtle.js │ │ │ ├── twig │ │ │ │ ├── index.html │ │ │ │ └── twig.js │ │ │ ├── vb │ │ │ │ ├── index.html │ │ │ │ └── vb.js │ │ │ ├── vbscript │ │ │ │ ├── index.html │ │ │ │ └── vbscript.js │ │ │ ├── velocity │ │ │ │ ├── index.html │ │ │ │ └── velocity.js │ │ │ ├── verilog │ │ │ │ ├── index.html │ │ │ │ ├── test.js │ │ │ │ └── verilog.js │ │ │ ├── vhdl │ │ │ │ ├── index.html │ │ │ │ └── vhdl.js │ │ │ ├── vue │ │ │ │ ├── index.html │ │ │ │ └── vue.js │ │ │ ├── webidl │ │ │ │ ├── index.html │ │ │ │ └── webidl.js │ │ │ ├── xml │ │ │ │ ├── index.html │ │ │ │ ├── test.js │ │ │ │ └── xml.js │ │ │ ├── xquery │ │ │ │ ├── index.html │ │ │ │ ├── test.js │ │ │ │ └── xquery.js │ │ │ ├── yacas │ │ │ │ ├── index.html │ │ │ │ └── yacas.js │ │ │ ├── yaml-frontmatter │ │ │ │ ├── index.html │ │ │ │ └── yaml-frontmatter.js │ │ │ ├── yaml │ │ │ │ ├── index.html │ │ │ │ └── yaml.js │ │ │ └── z80 │ │ │ │ ├── index.html │ │ │ │ └── z80.js │ │ ├── rollup.config.js │ │ └── theme │ │ │ ├── 3024-day.css │ │ │ ├── 3024-night.css │ │ │ ├── abcdef.css │ │ │ ├── ambiance-mobile.css │ │ │ ├── ambiance.css │ │ │ ├── base16-dark.css │ │ │ ├── base16-light.css │ │ │ ├── bespin.css │ │ │ ├── blackboard.css │ │ │ ├── cobalt.css │ │ │ ├── colorforth.css │ │ │ ├── dracula.css │ │ │ ├── duotone-dark.css │ │ │ ├── duotone-light.css │ │ │ ├── eclipse.css │ │ │ ├── elegant.css │ │ │ ├── erlang-dark.css │ │ │ ├── hopscotch.css │ │ │ ├── icecoder.css │ │ │ ├── isotope.css │ │ │ ├── lesser-dark.css │ │ │ ├── liquibyte.css │ │ │ ├── material.css │ │ │ ├── mbo.css │ │ │ ├── mdn-like.css │ │ │ ├── midnight.css │ │ │ ├── monokai.css │ │ │ ├── neat.css │ │ │ ├── neo.css │ │ │ ├── night.css │ │ │ ├── panda-syntax.css │ │ │ ├── paraiso-dark.css │ │ │ ├── paraiso-light.css │ │ │ ├── pastel-on-dark.css │ │ │ ├── railscasts.css │ │ │ ├── rubyblue.css │ │ │ ├── seti.css │ │ │ ├── solarized.css │ │ │ ├── the-matrix.css │ │ │ ├── tomorrow-night-bright.css │ │ │ ├── tomorrow-night-eighties.css │ │ │ ├── ttcn.css │ │ │ ├── twilight.css │ │ │ ├── vibrant-ink.css │ │ │ ├── xq-dark.css │ │ │ ├── xq-light.css │ │ │ ├── yeti.css │ │ │ └── zenburn.css │ ├── dump.rdb │ ├── echarts.min.js │ ├── info.js │ ├── jquery.js │ ├── layui.js │ ├── verificationNumbers.js │ ├── xadmin.js │ └── xcity.js └── lib │ └── layui │ ├── css │ ├── layui.css │ ├── layui.mobile.css │ └── modules │ │ ├── code.css │ │ ├── laydate │ │ └── default │ │ │ └── laydate.css │ │ └── layer │ │ └── default │ │ ├── icon-ext.png │ │ ├── icon.png │ │ ├── layer.css │ │ ├── loading-0.gif │ │ ├── loading-1.gif │ │ └── loading-2.gif │ ├── font │ ├── iconfont.eot │ ├── iconfont.svg │ ├── iconfont.ttf │ └── iconfont.woff │ ├── images │ └── face │ │ ├── 0.gif │ │ ├── 1.gif │ │ ├── 10.gif │ │ ├── 11.gif │ │ ├── 12.gif │ │ ├── 13.gif │ │ ├── 14.gif │ │ ├── 15.gif │ │ ├── 16.gif │ │ ├── 17.gif │ │ ├── 18.gif │ │ ├── 19.gif │ │ ├── 2.gif │ │ ├── 20.gif │ │ ├── 21.gif │ │ ├── 22.gif │ │ ├── 23.gif │ │ ├── 24.gif │ │ ├── 25.gif │ │ ├── 26.gif │ │ ├── 27.gif │ │ ├── 28.gif │ │ ├── 29.gif │ │ ├── 3.gif │ │ ├── 30.gif │ │ ├── 31.gif │ │ ├── 32.gif │ │ ├── 33.gif │ │ ├── 34.gif │ │ ├── 35.gif │ │ ├── 36.gif │ │ ├── 37.gif │ │ ├── 38.gif │ │ ├── 39.gif │ │ ├── 4.gif │ │ ├── 40.gif │ │ ├── 41.gif │ │ ├── 42.gif │ │ ├── 43.gif │ │ ├── 44.gif │ │ ├── 45.gif │ │ ├── 46.gif │ │ ├── 47.gif │ │ ├── 48.gif │ │ ├── 49.gif │ │ ├── 5.gif │ │ ├── 50.gif │ │ ├── 51.gif │ │ ├── 52.gif │ │ ├── 53.gif │ │ ├── 54.gif │ │ ├── 55.gif │ │ ├── 56.gif │ │ ├── 57.gif │ │ ├── 58.gif │ │ ├── 59.gif │ │ ├── 6.gif │ │ ├── 60.gif │ │ ├── 61.gif │ │ ├── 62.gif │ │ ├── 63.gif │ │ ├── 64.gif │ │ ├── 65.gif │ │ ├── 66.gif │ │ ├── 67.gif │ │ ├── 68.gif │ │ ├── 69.gif │ │ ├── 7.gif │ │ ├── 70.gif │ │ ├── 71.gif │ │ ├── 8.gif │ │ └── 9.gif │ ├── lay │ └── modules │ │ ├── carousel.js │ │ ├── code.js │ │ ├── element.js │ │ ├── flow.js │ │ ├── form.js │ │ ├── jquery.js │ │ ├── laydate.js │ │ ├── layedit.js │ │ ├── layer.js │ │ ├── laypage.js │ │ ├── laytpl.js │ │ ├── mobile.js │ │ ├── table.js │ │ ├── tree.js │ │ ├── upload.js │ │ └── util.js │ ├── layui.all.js │ └── layui.js └── templates ├── asset ├── assetinfo.html ├── ipinfo.html ├── nmap.html └── scan.html ├── audit ├── chandao.html ├── info.html ├── overview.html ├── projects.html ├── scan.html └── settings.html ├── index ├── 403.html ├── base.html ├── index.html ├── login.html └── overview.html └── pentest ├── check_data.html ├── check_filter_data.html ├── check_log.html ├── check_nlog.html ├── overview.html ├── passive_sqli.html ├── pentest_setting.html ├── proxy.html ├── sqlmap.html └── update_auth.html /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | MANIFEST 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *.cover 47 | .hypothesis/ 48 | .pytest_cache/ 49 | 50 | # Translations 51 | *.mo 52 | *.pot 53 | 54 | # Django stuff: 55 | *.log 56 | local_settings.py 57 | db.sqlite3 58 | 59 | # Flask stuff: 60 | instance/ 61 | .webassets-cache 62 | 63 | # Scrapy stuff: 64 | .scrapy 65 | 66 | # Sphinx documentation 67 | docs/_build/ 68 | 69 | # PyBuilder 70 | target/ 71 | 72 | # Jupyter Notebook 73 | .ipynb_checkpoints 74 | 75 | # pyenv 76 | .python-version 77 | 78 | # celery beat schedule file 79 | celerybeat-schedule 80 | 81 | # SageMath parsed files 82 | *.sage.py 83 | 84 | # Environments 85 | .env 86 | .venv 87 | env/ 88 | venv/ 89 | ENV/ 90 | env.bak/ 91 | venv.bak/ 92 | 93 | # Spyder project settings 94 | .spyderproject 95 | .spyproject 96 | 97 | # Rope project settings 98 | .ropeproject 99 | 100 | # mkdocs documentation 101 | /site 102 | 103 | # mypy 104 | .mypy_cache/ 105 | -------------------------------------------------------------------------------- /.idea/banruo.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 29 | 30 | 31 | 33 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM centos:7 2 | COPY fortify_linux /opt/fortify_linux 3 | 4 | 5 | RUN yum update -y 6 | RUN yum install epel-release -y 7 | RUN yum install -y git wget python36 gcc python36-libs python36-tools python36-devel zlib-devel rpm-build openssl-devel python redis 8 | 9 | #django 10 | RUN cd /opt && git clone https://github.com/yingshang/banruo.git 11 | RUN cd /opt/banruo && pip3 install -r requirements.txt 12 | RUN cd /opt/banruo && python3 manage.py makemigrations && python3 manage.py migrate 13 | 14 | #这个是fortify的运行程序 15 | RUN mkdir /data && mkdir /data/fortify && mkdir /data/fortify/report && chmod +x /data -R 16 | RUN chmod +x -R /opt/fortify_linux/ && ln -s /opt/fortify_linux/bin/sourceanalyzer /usr/local/bin/sourceanalyzer && ln -s /opt/fortify_linux/bin/ReportGenerator /usr/local/bin/ReportGenerator 17 | 18 | #sqlmap 19 | RUN mkdir /opt/taskid 20 | RUN cd /opt && git clone https://github.com/sqlmapproject/sqlmap 21 | RUN ln -s /opt/sqlmap/sqlmapapi.py /usr/bin/sqlmapapi && ln -s /opt/sqlmap/sqlmap.py /usr/bin/sqlmap 22 | 23 | 24 | #config.json 25 | COPY config.json /opt/banruo/banruo/ 26 | 27 | #ENTRYPOINT redis-server & && cd /opt/ && python3 manage.py celery -A banruo worker -l info --beat & && python3 manage.py runserver 0.0.0.0:8000 28 | -------------------------------------------------------------------------------- /__pycache__/manage.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/__pycache__/manage.cpython-36.pyc -------------------------------------------------------------------------------- /asset/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/asset/__init__.py -------------------------------------------------------------------------------- /asset/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /asset/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class AssetConfig(AppConfig): 5 | name = 'asset' 6 | -------------------------------------------------------------------------------- /asset/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/asset/migrations/__init__.py -------------------------------------------------------------------------------- /asset/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | 5 | #扫描任务 6 | class scantask(models.Model): 7 | name = models.CharField(max_length=100) 8 | ip = models.CharField(max_length=100) 9 | masscan_status = models.CharField(max_length=100) #扫描状态 10 | scantime = models.DateTimeField() #扫描时间 11 | endtime = models.DateTimeField(null=True)#结束时间 12 | 13 | 14 | 15 | #扫描IP地址 16 | class scanIP(models.Model): 17 | ip = models.CharField(max_length=100) 18 | #name = models.CharField(max_length=100,blank=True,null=True) 19 | scantime = models.DateTimeField() # 扫描时间 20 | rate = models.CharField(max_length=100,default='0.00') #扫描进度 21 | endtime = models.DateTimeField(null=True)#结束时间 22 | task = models.ForeignKey(scantask,on_delete=models.CASCADE) 23 | 24 | #IP端口情况 25 | class scan_ip_info(models.Model): 26 | port = models.CharField(max_length=100) 27 | name = models.CharField(max_length=100) 28 | product = models.CharField(max_length=100) 29 | cpe = models.CharField(max_length=200) 30 | state = models.CharField(max_length=100) 31 | ipfor = models.ForeignKey(scanIP,on_delete=models.CASCADE) 32 | 33 | 34 | 35 | #nmap扫描进度 36 | # class nmapscan(models.Model): 37 | # ip = models.CharField(max_length=100) 38 | # scantime = models.DateTimeField(auto_now=True) # 扫描时间 39 | # rate = models.CharField(max_length=100,default='0.00') #扫描进度 40 | # endtime = models.DateTimeField(null=True)#结束时间 41 | # task = models.ForeignKey(scantask,on_delete=models.CASCADE) 42 | 43 | 44 | 45 | #保存扫描资产列表 46 | class scanlist(models.Model): 47 | ips = models.CharField(max_length=100) 48 | -------------------------------------------------------------------------------- /asset/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /asset/url.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | from .views import * 3 | 4 | urlpatterns = [ 5 | path('asset_info', asset_info, name='asset_info'), 6 | path('ip_info', ip_info, name='ip_info'), 7 | path('asset_info_api', asset_info_api, name='asset_info_api'), 8 | path('ip_info_api', ip_info_api, name='ip_info_api'), 9 | path('asset_scan', asset_scan, name='asset_scan'), 10 | path('asset_scan_api', asset_scan_api, name='asset_scan_api'), 11 | path('get_scan_task', get_scan_task, name='get_scan_task'), 12 | path('check_nmap', check_nmap, name='check_nmap'), 13 | 14 | 15 | 16 | ] 17 | -------------------------------------------------------------------------------- /audit/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/audit/__init__.py -------------------------------------------------------------------------------- /audit/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class AduitConfig(AppConfig): 5 | name = 'audit' 6 | -------------------------------------------------------------------------------- /audit/migrations/0002_auto_20200321_2302.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.1.15 on 2020-03-21 23:02 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('audit', '0001_initial'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterModelOptions( 14 | name='proj_info', 15 | options={'permissions': (('upload_code', '可以上传代码'),)}, 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /audit/migrations/0003_auto_20200321_2311.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.1.15 on 2020-03-21 23:11 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('audit', '0002_auto_20200321_2302'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterModelOptions( 14 | name='proj_info', 15 | options={'permissions': (('upload_code', '可以上传代码'), ('dashboard', '首页仪表盘'))}, 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /audit/migrations/0004_auto_20200322_0028.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.1.15 on 2020-03-22 00:28 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('audit', '0003_auto_20200321_2311'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterModelOptions( 14 | name='proj_info', 15 | options={'permissions': (('upload_code', '可以上传代码'), ('display_projects', '展示所有代码审计项目'), ('display_info', '展示一个项目的详细信息'))}, 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /audit/migrations/0005_auto_20200322_0046.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.1.15 on 2020-03-22 00:46 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('audit', '0004_auto_20200322_0028'), 10 | ] 11 | 12 | operations = [ 13 | migrations.DeleteModel( 14 | name='setting', 15 | ), 16 | migrations.AlterModelOptions( 17 | name='chandao_data', 18 | options={'permissions': (('chandao_index', '展示禅道主页'), ('hidden_vul', '隐藏发送到禅道的漏洞'), ('filter_vul', '过滤发送到禅道的漏洞'), ('send_vul', '发送到禅道的漏洞'))}, 19 | ), 20 | migrations.AlterModelOptions( 21 | name='proj_info', 22 | options={'permissions': (('upload_code_and_scan', '可以上传代码并且进行代码审计扫描'), ('restart_scan', '重新进行代码审计扫描'), ('display_projects', '展示所有代码审计项目'), ('display_info', '展示一个项目的详细信息'), ('delelte_project', '删除代码审计项目'))}, 23 | ), 24 | migrations.AlterModelOptions( 25 | name='vul_info', 26 | options={'permissions': (('vullist', '返回一个项目的漏洞列表'), ('vuldetail', '返回一个项目的漏洞列表具体信息'))}, 27 | ), 28 | ] 29 | -------------------------------------------------------------------------------- /audit/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/audit/migrations/__init__.py -------------------------------------------------------------------------------- /audit/tasks.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/audit/tasks.py -------------------------------------------------------------------------------- /audit/url.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from .views import * 4 | 5 | 6 | urlpatterns = [ 7 | path('projects/',display_project,name='audit_display_project'), 8 | path('info',project_info,name='audit_project_info'), 9 | path('scan', scan,name='audit_scan'), 10 | path('chandao',chandao,name='audit_chandao'), 11 | path('filter_vul', filter_vul,name='audit_filter_vul'), 12 | path('send_chaodao', send_chandao,name='audit_send_chandao'), 13 | path('api/proj_del',api_proj_del,name='audit_proj_del'), 14 | path('api/restart',restart,name='audit_audit_restart'), 15 | path('api/chandao_hidden',api_chandao_hidden,name='audit_chandao_hidden'), 16 | path('api/vullist',vullist,name='audit_vul_list'), 17 | path('api/vuldetail',vuldetail,name='audit_vul_detail'), 18 | 19 | ] -------------------------------------------------------------------------------- /banruo/__init__.py: -------------------------------------------------------------------------------- 1 | import pymysql 2 | pymysql.install_as_MySQLdb() 3 | 4 | 5 | 6 | # This will make sure the app is always imported when 7 | # Django starts so that shared_task will use this app. 8 | from .celery import app as celery_app 9 | 10 | __all__ = ('celery_app',) -------------------------------------------------------------------------------- /banruo/__pycache__/__init__.cpython-34.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/banruo/__pycache__/__init__.cpython-34.pyc -------------------------------------------------------------------------------- /banruo/__pycache__/__init__.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/banruo/__pycache__/__init__.cpython-35.pyc -------------------------------------------------------------------------------- /banruo/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/banruo/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /banruo/__pycache__/celery.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/banruo/__pycache__/celery.cpython-35.pyc -------------------------------------------------------------------------------- /banruo/__pycache__/celery.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/banruo/__pycache__/celery.cpython-36.pyc -------------------------------------------------------------------------------- /banruo/__pycache__/settings.cpython-34.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/banruo/__pycache__/settings.cpython-34.pyc -------------------------------------------------------------------------------- /banruo/__pycache__/settings.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/banruo/__pycache__/settings.cpython-35.pyc -------------------------------------------------------------------------------- /banruo/__pycache__/settings.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/banruo/__pycache__/settings.cpython-36.pyc -------------------------------------------------------------------------------- /banruo/__pycache__/urls.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/banruo/__pycache__/urls.cpython-35.pyc -------------------------------------------------------------------------------- /banruo/__pycache__/urls.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/banruo/__pycache__/urls.cpython-36.pyc -------------------------------------------------------------------------------- /banruo/__pycache__/wsgi.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/banruo/__pycache__/wsgi.cpython-35.pyc -------------------------------------------------------------------------------- /banruo/__pycache__/wsgi.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/banruo/__pycache__/wsgi.cpython-36.pyc -------------------------------------------------------------------------------- /banruo/celery.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import, unicode_literals 2 | import os 3 | from celery import Celery 4 | from django.conf import settings 5 | 6 | # set the default Django settings module for the 'celery' program. 7 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'banruo.settings') 8 | app = Celery('banruo') 9 | 10 | # Using a string here means the worker will not have to 11 | # pickle the object when using Windows. 12 | app.config_from_object('django.conf:settings') 13 | app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) 14 | app.conf.CELERYD_CONCURRENCY = 16 15 | 16 | 17 | @app.task(bind=True) 18 | def debug_task(self): 19 | print('Request: {0!r}'.format(self.request)) 20 | -------------------------------------------------------------------------------- /banruo/urls.py: -------------------------------------------------------------------------------- 1 | """banruo URL Configuration 2 | 3 | The `urlpatterns` list routes URLs to views. For more information please see: 4 | https://docs.djangoproject.com/en/2.0/topics/http/urls/ 5 | Examples: 6 | Function views 7 | 1. Add an import: from my_app import views 8 | 2. Add a URL to urlpatterns: path('', views.home, name='home') 9 | Class-based views 10 | 1. Add an import: from other_app.views import Home 11 | 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') 12 | Including another URLconf 13 | 1. Import the include() function: from django.urls import include, path 14 | 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) 15 | """ 16 | from django.contrib import admin 17 | from django.urls import path,include 18 | 19 | urlpatterns = [ 20 | path('admin/', admin.site.urls), 21 | path('',include('index.url')), 22 | path('audit/', include('audit.url')), 23 | path('pentest/',include('pentest.url')), 24 | #path('asset/',include('asset.url')), 25 | ] 26 | 27 | -------------------------------------------------------------------------------- /banruo/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for banruo project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "banruo.settings") 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | COPY run.sh /opt/run.sh 4 | COPY sources.list /etc/apt/sources.list 5 | 6 | COPY fortify_linux /opt/fortify_linux 7 | 8 | ENV DEBIAN_FRONTEND noninteractive 9 | RUN chmod 777 /opt/run.sh 10 | RUN apt-get update -y \ 11 | && apt-get install -y mysql-server mysql-client libmysqlclient-dev --no-install-recommends \ 12 | && apt-get clean \ 13 | && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 14 | RUN apt-get update -y 15 | RUN apt-get install -y redis-server unzip python3-pip wget vim git libffi-dev libssl-dev libjpeg8-dev zlib1g-dev libxml2-dev libxslt-dev libyaml-cpp-dev 16 | RUN pip3 install django 17 | RUN pip3 install mitmproxy==0.18.2 18 | RUN pip3 install django-celery redis pymysql 19 | RUN pip3 install typing 20 | 21 | RUN cd /opt && git clone https://github.com/yingshang/banruo.git 22 | RUN service mysql start && mysql -e "create database banruo DEFAULT CHARSET utf8 COLLATE utf8_general_ci; " && mysql -e "set password for 'root'@'localhost' =password('123456');" 23 | RUN service mysql start && cd /opt/banruo && python3 manage.py makemigrations && python3 manage.py migrate 24 | RUN mkdir /data && mkdir /data/fortify && mkdir /data/fortify/report && chmod 777 /data -R 25 | #这个是fortify的运行程序 26 | #RUN chmod 777 -R /opt/fortify_linux/ && ln -s /opt/fortify_linux/bin/sourceanalyzer /usr/local/bin/sourceanalyzer && ln -s /opt/fortify_linux/bin/ReportGenerator /usr/local/bin/ReportGenerator 27 | EXPOSE 8000 28 | 29 | ENTRYPOINT /opt/run.sh 30 | 31 | -------------------------------------------------------------------------------- /docker/run.sh: -------------------------------------------------------------------------------- 1 | service mysql start 2 | redis-server & 3 | python3 /opt/banruo/manage.py celery -A banruo worker -l info --beat & 4 | python3 /opt/banruo/manage.py runserver 0.0.0.0:8000 5 | -------------------------------------------------------------------------------- /docker/sources.list: -------------------------------------------------------------------------------- 1 | deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties 2 | deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted 3 | deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties 4 | deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted 5 | deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties 6 | deb http://mirrors.aliyun.com/ubuntu/ xenial universe 7 | deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe 8 | deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse 9 | deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse 10 | deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse 11 | deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties 12 | deb http://archive.canonical.com/ubuntu xenial partner 13 | deb-src http://archive.canonical.com/ubuntu xenial partner 14 | deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted 15 | deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties 16 | deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe 17 | deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse 18 | -------------------------------------------------------------------------------- /dump.rdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/dump.rdb -------------------------------------------------------------------------------- /index/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/index/__init__.py -------------------------------------------------------------------------------- /index/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /index/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class IndexConfig(AppConfig): 5 | name = 'index' 6 | -------------------------------------------------------------------------------- /index/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.1.15 on 2020-03-21 23:42 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | initial = True 9 | 10 | dependencies = [ 11 | ] 12 | 13 | operations = [ 14 | migrations.CreateModel( 15 | name='im', 16 | fields=[ 17 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 18 | ], 19 | options={ 20 | 'permissions': (('upload_code', '可以上传代码'), ('dashboard', '首页仪表盘')), 21 | }, 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /index/migrations/0002_auto_20200322_0028.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.1.15 on 2020-03-22 00:28 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('index', '0001_initial'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterModelOptions( 14 | name='im', 15 | options={'permissions': (('dashboard', '首页仪表盘'),)}, 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /index/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/index/migrations/__init__.py -------------------------------------------------------------------------------- /index/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | 5 | class im(models.Model): 6 | 7 | class Meta: 8 | permissions = ( 9 | 10 | ("dashboard", "首页仪表盘"), 11 | ) 12 | 13 | -------------------------------------------------------------------------------- /index/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /index/url.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from .views import * 4 | 5 | 6 | urlpatterns = [ 7 | path('overview/',overview,name='index_overview'), 8 | path('',base,name='index_base'), 9 | path('login/',login,name='index_login'), 10 | path('logout/',logout,name='index_logout'), 11 | #path('index/',index,name='index_index'), 12 | 13 | ] 14 | 15 | handler403 = permission_denied 16 | -------------------------------------------------------------------------------- /lib/__pycache__/config_json.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/lib/__pycache__/config_json.cpython-36.pyc -------------------------------------------------------------------------------- /lib/__pycache__/send_msg.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/lib/__pycache__/send_msg.cpython-36.pyc -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import sys 4 | 5 | if __name__ == "__main__": 6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "banruo.settings") 7 | try: 8 | from django.core.management import execute_from_command_line 9 | except ImportError as exc: 10 | raise ImportError( 11 | "Couldn't import Django. Are you sure it's installed and " 12 | "available on your PYTHONPATH environment variable? Did you " 13 | "forget to activate a virtual environment?" 14 | ) from exc 15 | execute_from_command_line(sys.argv) 16 | -------------------------------------------------------------------------------- /monitor/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/monitor/__init__.py -------------------------------------------------------------------------------- /monitor/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /monitor/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class MonitorConfig(AppConfig): 5 | name = 'monitor' 6 | -------------------------------------------------------------------------------- /monitor/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/monitor/migrations/__init__.py -------------------------------------------------------------------------------- /monitor/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | -------------------------------------------------------------------------------- /monitor/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /monitor/views.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render 2 | 3 | # Create your views here. 4 | -------------------------------------------------------------------------------- /pentest/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/__init__.py -------------------------------------------------------------------------------- /pentest/__pycache__/__init__.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/__pycache__/__init__.cpython-35.pyc -------------------------------------------------------------------------------- /pentest/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/__pycache__/apps.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/__pycache__/apps.cpython-35.pyc -------------------------------------------------------------------------------- /pentest/__pycache__/apps.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/__pycache__/apps.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/__pycache__/auth.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/__pycache__/auth.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/__pycache__/injection.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/__pycache__/injection.cpython-35.pyc -------------------------------------------------------------------------------- /pentest/__pycache__/injection.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/__pycache__/injection.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/__pycache__/models.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/__pycache__/models.cpython-35.pyc -------------------------------------------------------------------------------- /pentest/__pycache__/models.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/__pycache__/models.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/__pycache__/proxy.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/__pycache__/proxy.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/__pycache__/url.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/__pycache__/url.cpython-35.pyc -------------------------------------------------------------------------------- /pentest/__pycache__/url.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/__pycache__/url.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/__pycache__/views.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/__pycache__/views.cpython-35.pyc -------------------------------------------------------------------------------- /pentest/__pycache__/views.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/__pycache__/views.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class PentestConfig(AppConfig): 5 | name = 'pentest' 6 | 7 | -------------------------------------------------------------------------------- /pentest/migrations/0002_auto_20200104_1740.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.1.15 on 2020-01-04 17:40 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('pentest', '0001_initial'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='scan_ip_info', 15 | name='ipfor', 16 | ), 17 | migrations.DeleteModel( 18 | name='scan_ip_info', 19 | ), 20 | migrations.DeleteModel( 21 | name='scanIP', 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /pentest/migrations/0003_auto_20200322_1730.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.1.15 on 2020-03-22 17:30 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('pentest', '0002_auto_20200104_1740'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterModelOptions( 14 | name='filter_data', 15 | options={'permissions': (('filter_packect', '过滤数据包'),)}, 16 | ), 17 | migrations.AlterModelOptions( 18 | name='inject_data', 19 | options={'permissions': (('display_sqli', '展示被动注入的页面'), ('start_sqlmap', '开始SQLMAP注入'), ('get_inject_data', '获取sqlmap注入的数据'), ('update_auth', '更新cookie的有效性'), ('check_log', '查看sqlmap扫描的实时日志'), ('check_nlog', '查看sqlmap扫描的最终日志'), ('check_data', '查看sqlmap注入的数据包'), ('start_sqlmap_api', '启动SQLMAP的API'), ('resart_injection_api', '对单一数据包重新SQL注入'))}, 20 | ), 21 | migrations.AlterModelOptions( 22 | name='proxy_data', 23 | options={'permissions': (('proxy_index', '展示代理抓包的页面'), ('starting_proxy', '启动mitmproxy进行代理监听'), ('display_proxy_data', '展示全部代理数据包的信息'), ('check_filter_data', '展示过滤之后的数据包'))}, 24 | ), 25 | ] 26 | -------------------------------------------------------------------------------- /pentest/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__init__.py -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0001_initial.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0001_initial.cpython-35.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0001_initial.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0001_initial.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0002_auto_20190508_1112.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0002_auto_20190508_1112.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0002_auto_20191120_0510.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0002_auto_20191120_0510.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0002_remove_target_info_ip.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0002_remove_target_info_ip.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0003_auto_20190427_0910.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0003_auto_20190427_0910.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0003_auto_20190508_1121.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0003_auto_20190508_1121.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0003_auto_20191120_0517.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0003_auto_20191120_0517.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0004_auto_20190508_1123.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0004_auto_20190508_1123.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0004_sqlmap_log.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0004_sqlmap_log.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0005_inject_data_api_address.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0005_inject_data_api_address.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0005_inject_data_log_status.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0005_inject_data_log_status.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0006_auto_20190427_1124.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0006_auto_20190427_1124.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0006_auto_20190508_1343.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0006_auto_20190508_1343.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0007_auto_20190505_1321.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0007_auto_20190505_1321.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0007_auto_20190509_0903.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0007_auto_20190509_0903.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0008_auto_20190509_1516.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0008_auto_20190509_1516.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0008_inject_data_client_ip.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0008_inject_data_client_ip.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0009_auto_20190509_1520.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0009_auto_20190509_1520.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0010_auto_20191031_1230.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0010_auto_20191031_1230.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0011_remove_auth_filter_raw_cookies.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0011_remove_auth_filter_raw_cookies.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0012_auto_20191031_1235.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0012_auto_20191031_1235.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0013_auto_20191031_1238.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0013_auto_20191031_1238.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0014_auto_20191031_1254.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0014_auto_20191031_1254.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0015_authdata_date.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0015_authdata_date.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0016_authdata_leixing.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0016_authdata_leixing.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0017_authresult.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0017_authresult.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0018_authresult_parm.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0018_authresult_parm.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0019_authdata_parm.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0019_authdata_parm.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0020_auto_20191107_1116.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0020_auto_20191107_1116.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0021_auto_20191107_1220.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0021_auto_20191107_1220.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0022_auth_filter_raw_parm.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0022_auth_filter_raw_parm.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0023_auto_20191107_1224.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0023_auto_20191107_1224.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0024_auto_20191107_1318.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0024_auto_20191107_1318.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0025_remove_auth_filter_raw_raw.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0025_remove_auth_filter_raw_raw.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0026_auto_20191107_1325.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0026_auto_20191107_1325.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0027_auto_20191107_1329.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0027_auto_20191107_1329.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0028_remove_proxy_data_port.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0028_remove_proxy_data_port.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0029_auto_20191108_0315.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0029_auto_20191108_0315.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0030_auto_20191108_1515.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0030_auto_20191108_1515.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0031_auto_20191108_1550.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0031_auto_20191108_1550.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0032_auto_20191108_1551.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0032_auto_20191108_1551.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0033_auto_20191108_1552.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0033_auto_20191108_1552.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0034_auto_20191108_1553.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0034_auto_20191108_1553.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0035_auth_filter_raw_cookies_status.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0035_auth_filter_raw_cookies_status.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/0036_auth_filter_raw_get_list.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/0036_auth_filter_raw_get_list.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/__init__.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/__init__.cpython-35.pyc -------------------------------------------------------------------------------- /pentest/migrations/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/pentest/migrations/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /pentest/sqlmap-api.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import json 3 | headers = {'Content-Type': 'application/json'} 4 | r = requests.get(url="http://127.0.0.1:8775/scan/b9272f9a3ddeff7b/log",headers=headers) 5 | logs = r.json()['log'] 6 | log = "" 7 | 8 | 9 | print(logs[-1]['message']) -------------------------------------------------------------------------------- /pentest/url.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | from .views import * 3 | 4 | urlpatterns = [ 5 | path('proxy', proxy, name='proxy'), 6 | path('starting_proxy', starting_proxy, name='starting_proxy'), 7 | path('filter_packect', filter_packect, name='filter_packect'), 8 | path('passive_sqli', passive_sqli, name='passive_sqli'), 9 | path('start_sqlmap_api', start_sqlmap_api, name='start_sqlmap_api'), 10 | path('stop_sqlmap_api', stop_sqlmap_api, name='stop_sqlmap_api'), 11 | path('update_auth', update_auth, name='update_auth'), 12 | path('start_sqlmap', start_sqlmap, name='start_sqlmap'), 13 | path('check_log', check_log, name='check_log'), 14 | path('check_nlog', check_nlog, name='check_nlog'), 15 | path('check_data', check_data, name='check_data'), 16 | path('check_filter_data', check_filter_data, name='check_filter_data'), 17 | path('api/proxy/', display_proxy_data, name='display_proxy_data'), 18 | path('api/get_inject_data/', get_inject_data, name='get_inject_data'), 19 | path('api/resart_injection_api/', resart_injection_api, name='resart_injection_api'), 20 | 21 | 22 | ] 23 | -------------------------------------------------------------------------------- /pentest/xss.py: -------------------------------------------------------------------------------- 1 | import json 2 | import time 3 | import requests 4 | 5 | headers={'Content-Type':'application/json'} 6 | data = { 7 | "url":"http://5.133.109.136:8080/index.php?page=user-info.php&username=1&password=1&user-info-php-submit-button=View+Account+Details" 8 | } 9 | 10 | r = requests.post(url="http://192.168.2.142:2333/xssfork/create_task/fW7rmRje1fPHObw/",data=json.dumps(data),headers=headers) 11 | print(r.text) 12 | 13 | 14 | -------------------------------------------------------------------------------- /readmepic/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/1.jpg -------------------------------------------------------------------------------- /readmepic/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/10.jpg -------------------------------------------------------------------------------- /readmepic/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/11.jpg -------------------------------------------------------------------------------- /readmepic/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/12.jpg -------------------------------------------------------------------------------- /readmepic/13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/13.jpg -------------------------------------------------------------------------------- /readmepic/14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/14.jpg -------------------------------------------------------------------------------- /readmepic/15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/15.jpg -------------------------------------------------------------------------------- /readmepic/16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/16.jpg -------------------------------------------------------------------------------- /readmepic/17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/17.jpg -------------------------------------------------------------------------------- /readmepic/18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/18.jpg -------------------------------------------------------------------------------- /readmepic/19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/19.jpg -------------------------------------------------------------------------------- /readmepic/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/2.jpg -------------------------------------------------------------------------------- /readmepic/20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/20.jpg -------------------------------------------------------------------------------- /readmepic/21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/21.jpg -------------------------------------------------------------------------------- /readmepic/22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/22.jpg -------------------------------------------------------------------------------- /readmepic/23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/23.jpg -------------------------------------------------------------------------------- /readmepic/24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/24.jpg -------------------------------------------------------------------------------- /readmepic/25.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/25.jpg -------------------------------------------------------------------------------- /readmepic/26.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/26.jpg -------------------------------------------------------------------------------- /readmepic/27.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/27.jpg -------------------------------------------------------------------------------- /readmepic/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/3.jpg -------------------------------------------------------------------------------- /readmepic/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/4.jpg -------------------------------------------------------------------------------- /readmepic/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/5.jpg -------------------------------------------------------------------------------- /readmepic/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/6.jpg -------------------------------------------------------------------------------- /readmepic/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/7.jpg -------------------------------------------------------------------------------- /readmepic/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/8.jpg -------------------------------------------------------------------------------- /readmepic/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/readmepic/9.jpg -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | mitmproxy==5.1.1 2 | django==2.1.15 3 | redis==2.10.6 4 | pymysql==0.9.3 5 | django-celery==3.2.2 6 | celery==3.1.26.post2 7 | python_json_config==1.2.1 8 | anyjson==0.3.3 9 | celery-with-redis 10 | psutil 11 | IPy 12 | django_crontab 13 | requests 14 | markdown 15 | jira 16 | pyecharts 17 | -------------------------------------------------------------------------------- /ssl/mitmproxy-ca-cert.cer: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDoTCCAomgAwIBAgIGDeUPZcxAMA0GCSqGSIb3DQEBCwUAMCgxEjAQBgNVBAMM 3 | CW1pdG1wcm94eTESMBAGA1UECgwJbWl0bXByb3h5MB4XDTE4MDUyOTA1NDgyMFoX 4 | DTIxMDUzMDA1NDgyMFowKDESMBAGA1UEAwwJbWl0bXByb3h5MRIwEAYDVQQKDAlt 5 | aXRtcHJveHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKuKugJt4V 6 | XdNythv6or9I+NuA+KEqfef1XcvVvy7KfPJo3RVALd1gt4ReXo7gT7LOKFT7PEBi 7 | t5hFr83O8pTDs77II7KPbrGBILRDBCkyMQuwEAaMq0yYH7gY+OMzkLhfjE9vHrQm 8 | HOgrRTcD7Ck//K4DfAAKuvHcKd6Cq6caebvSg9fCJM88Oy8YDK9mR/f1JU2ckTl3 9 | wz3tbmsPDb6H8r95vdVEjZRDf3KNqQhH3KwAF1zqULM0LRaO+taJ7WK9tHegKQoL 10 | z+AwVswJzH742ZSHHf/TuyKW5EZiLLkgGVwtlifRFldsNxjFW0EWYWArOJX/5a6c 11 | AlThxm169ZizAgMBAAGjgdAwgc0wDwYDVR0TAQH/BAUwAwEB/zARBglghkgBhvhC 12 | AQEEBAMCAgQweAYDVR0lBHEwbwYIKwYBBQUHAwEGCCsGAQUFBwMCBggrBgEFBQcD 13 | BAYIKwYBBQUHAwgGCisGAQQBgjcCARUGCisGAQQBgjcCARYGCisGAQQBgjcKAwEG 14 | CisGAQQBgjcKAwMGCisGAQQBgjcKAwQGCWCGSAGG+EIEATAOBgNVHQ8BAf8EBAMC 15 | AQYwHQYDVR0OBBYEFMnJZ0RcKza/N5OGy7oxkQW7WzExMA0GCSqGSIb3DQEBCwUA 16 | A4IBAQAEf5xB29fDwUmPov5QsE2LjybhITpFctcJPANlA/tdfG3cXhz4W490Q6gN 17 | Lc1yzVdrxDBGghria2EyubChmYKCq3kN5SmfFJoHL/XUCPCKN27bzSXZ+22vRRX8 18 | K1gp+Zj/zvhKYDhnHeFKv5ry+kGCO1U4NxSKXwphCnNKKY2H7y75Ss2jvAOb3Zwv 19 | tc16jU8NyMUT6nM+35GewRQ/ZCkcvD6niFOFtHgJtdODX72InfqAkRxnyPTx6MwU 20 | gvmazVxcfULM2W2HcXk4jMiDZxN3UmOgpZRTfvbRkV9gPdY/XPlqPV8v3qxa19Nw 21 | Im6ZEbjf1LAOu2GdemLru4Sjc6it 22 | -----END CERTIFICATE----- 23 | -------------------------------------------------------------------------------- /ssl/mitmproxy-ca-cert.p12: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/ssl/mitmproxy-ca-cert.p12 -------------------------------------------------------------------------------- /ssl/mitmproxy-ca-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDoTCCAomgAwIBAgIGDeUPZcxAMA0GCSqGSIb3DQEBCwUAMCgxEjAQBgNVBAMM 3 | CW1pdG1wcm94eTESMBAGA1UECgwJbWl0bXByb3h5MB4XDTE4MDUyOTA1NDgyMFoX 4 | DTIxMDUzMDA1NDgyMFowKDESMBAGA1UEAwwJbWl0bXByb3h5MRIwEAYDVQQKDAlt 5 | aXRtcHJveHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKuKugJt4V 6 | XdNythv6or9I+NuA+KEqfef1XcvVvy7KfPJo3RVALd1gt4ReXo7gT7LOKFT7PEBi 7 | t5hFr83O8pTDs77II7KPbrGBILRDBCkyMQuwEAaMq0yYH7gY+OMzkLhfjE9vHrQm 8 | HOgrRTcD7Ck//K4DfAAKuvHcKd6Cq6caebvSg9fCJM88Oy8YDK9mR/f1JU2ckTl3 9 | wz3tbmsPDb6H8r95vdVEjZRDf3KNqQhH3KwAF1zqULM0LRaO+taJ7WK9tHegKQoL 10 | z+AwVswJzH742ZSHHf/TuyKW5EZiLLkgGVwtlifRFldsNxjFW0EWYWArOJX/5a6c 11 | AlThxm169ZizAgMBAAGjgdAwgc0wDwYDVR0TAQH/BAUwAwEB/zARBglghkgBhvhC 12 | AQEEBAMCAgQweAYDVR0lBHEwbwYIKwYBBQUHAwEGCCsGAQUFBwMCBggrBgEFBQcD 13 | BAYIKwYBBQUHAwgGCisGAQQBgjcCARUGCisGAQQBgjcCARYGCisGAQQBgjcKAwEG 14 | CisGAQQBgjcKAwMGCisGAQQBgjcKAwQGCWCGSAGG+EIEATAOBgNVHQ8BAf8EBAMC 15 | AQYwHQYDVR0OBBYEFMnJZ0RcKza/N5OGy7oxkQW7WzExMA0GCSqGSIb3DQEBCwUA 16 | A4IBAQAEf5xB29fDwUmPov5QsE2LjybhITpFctcJPANlA/tdfG3cXhz4W490Q6gN 17 | Lc1yzVdrxDBGghria2EyubChmYKCq3kN5SmfFJoHL/XUCPCKN27bzSXZ+22vRRX8 18 | K1gp+Zj/zvhKYDhnHeFKv5ry+kGCO1U4NxSKXwphCnNKKY2H7y75Ss2jvAOb3Zwv 19 | tc16jU8NyMUT6nM+35GewRQ/ZCkcvD6niFOFtHgJtdODX72InfqAkRxnyPTx6MwU 20 | gvmazVxcfULM2W2HcXk4jMiDZxN3UmOgpZRTfvbRkV9gPdY/XPlqPV8v3qxa19Nw 21 | Im6ZEbjf1LAOu2GdemLru4Sjc6it 22 | -----END CERTIFICATE----- 23 | -------------------------------------------------------------------------------- /ssl/mitmproxy-dhparam.pem: -------------------------------------------------------------------------------- 1 | 2 | -----BEGIN DH PARAMETERS----- 3 | MIICCAKCAgEAyT6LzpwVFS3gryIo29J5icvgxCnCebcdSe/NHMkD8dKJf8suFCg3 4 | O2+dguLakSVif/t6dhImxInJk230HmfC8q93hdcg/j8rLGJYDKu3ik6H//BAHKIv 5 | j5O9yjU3rXCfmVJQic2Nne39sg3CreAepEts2TvYHhVv3TEAzEqCtOuTjgDv0ntJ 6 | Gwpj+BJBRQGG9NvprX1YGJ7WOFBP/hWU7d6tgvE6Xa7T/u9QIKpYHMIkcN/l3ZFB 7 | chZEqVlyrcngtSXCROTPcDOQ6Q8QzhaBJS+Z6rcsd7X+haiQqvoFcmaJ08Ks6LQC 8 | ZIL2EtYJw8V8z7C0igVEBIADZBI6OTbuuhDwRw//zU1uq52Oc48CIZlGxTYG/Evq 9 | o9EWAXUYVzWkDSTeBH1r4z/qLPE2cnhtMxbFxuvK53jGB0emy2y1Ei6IhKshJ5qX 10 | IB/aE7SSHyQ3MDHHkCmQJCsOd4Mo26YX61NZ+n501XjqpCBQ2+DfZCBh8Va2wDyv 11 | A2Ryg9SUz8j0AXViRNMJgJrr446yro/FuJZwnQcO3WQnXeqSBnURqKjmqkeFP+d8 12 | 6mk2tqJaY507lRNqtGlLnj7f5RNoBFJDCLBNurVgfvq9TCVWKDIFD4vZRjCrnl6I 13 | rD693XKIHUCWOjMh1if6omGXKHH40QuME2gNa50+YPn1iYDl88uDbbMCAQI= 14 | -----END DH PARAMETERS----- 15 | -------------------------------------------------------------------------------- /static/css/application.css: -------------------------------------------------------------------------------- 1 | /* global body padding */ 2 | body { 3 | padding-top: 20px; 4 | padding-bottom: 20px; 5 | } 6 | 7 | @media (min-width: 768px) { 8 | body { 9 | padding-top: 50px; 10 | padding-bottom: 50px; 11 | } 12 | } 13 | 14 | /* global spacing overrides */ 15 | h1, h2, h3, h4, h5, h6, 16 | .a, .b, .c, .d, .e, .f { 17 | margin-top: 0; 18 | } 19 | 20 | hr { 21 | margin-top: 30px; 22 | margin-bottom: 30px; 23 | } 24 | 25 | .g, 26 | .h { 27 | border-bottom: 0; 28 | } 29 | 30 | .chart { 31 | background: transparent !important; 32 | } 33 | -------------------------------------------------------------------------------- /static/css/base.css: -------------------------------------------------------------------------------- 1 | @import url("bootstrap.css"); /* Main Bootstrap */ 2 | @import url("animate.min.css"); /* Animate On Page Scroll */ 3 | @import url("style.css"); /* Main theme styles */ 4 | @import url("menu.css"); /* Menu styles */ 5 | @import url("responsive.css"); /* Responsive */ 6 | 7 | /* 8 | How to change colors 9 | 1) uncomment one of the color variation below 10 | 2) rename the color variation logo img inside the img folder to match the default logo file name (logo.png/logo_sticky.png), this avoid to change the logo file name in every page. 11 | 12 | DONE! 13 | */ 14 | 15 | /* @import url("color-aqua.css"); Color variation aqua */ 16 | /* @import url("color-orange.css"); Color variation Orange */ 17 | /* @import url("color-green.css"); Color variation Green */ -------------------------------------------------------------------------------- /static/css/font.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'iconfont'; 3 | src: url('../fonts/iconfont.eot'); 4 | src: url('../fonts/iconfont.eot?#iefix') format('embedded-opentype'), 5 | url('../fonts/iconfont.woff') format('woff'), 6 | url('../fonts/iconfont.ttf') format('truetype'), 7 | url('../fonts/iconfont.svg#iconfont') format('svg'); 8 | } 9 | .iconfont{ 10 | font-family:"iconfont" !important; 11 | font-size:16px;font-style:normal; 12 | -webkit-font-smoothing: antialiased; 13 | -webkit-text-stroke-width: 0.2px; 14 | -moz-osx-font-smoothing: grayscale; 15 | } 16 | 17 | -------------------------------------------------------------------------------- /static/css/skins/square/grey.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Square skin, grey 2 | ----------------------------------- */ 3 | .icheckbox_square-grey, 4 | .iradio_square-grey { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0 10px 0 0; 9 | padding: 0; 10 | width: 22px; 11 | height: 22px; 12 | background: url(grey.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_square-grey { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_square-grey.hover { 21 | background-position: -24px 0; 22 | } 23 | .icheckbox_square-grey.checked { 24 | background-position: -48px 0; 25 | } 26 | .icheckbox_square-grey.disabled { 27 | background-position: -72px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_square-grey.checked.disabled { 31 | background-position: -96px 0; 32 | } 33 | 34 | .iradio_square-grey { 35 | background-position: -120px 0; 36 | } 37 | .iradio_square-grey.hover { 38 | background-position: -144px 0; 39 | } 40 | .iradio_square-grey.checked { 41 | background-position: -168px 0; 42 | } 43 | .iradio_square-grey.disabled { 44 | background-position: -192px 0; 45 | cursor: default; 46 | } 47 | .iradio_square-grey.checked.disabled { 48 | background-position: -216px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { 53 | .icheckbox_square-grey, 54 | .iradio_square-grey { 55 | background-image: url(grey@2x.png); 56 | -webkit-background-size: 240px 24px; 57 | background-size: 240px 24px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/css/skins/square/grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/static/css/skins/square/grey.png -------------------------------------------------------------------------------- /static/fonts/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/static/fonts/iconfont.eot -------------------------------------------------------------------------------- /static/fonts/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/static/fonts/iconfont.ttf -------------------------------------------------------------------------------- /static/fonts/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/static/fonts/iconfont.woff -------------------------------------------------------------------------------- /static/icon/funnel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/static/icon/funnel.png -------------------------------------------------------------------------------- /static/images/aiwrap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/static/images/aiwrap.png -------------------------------------------------------------------------------- /static/images/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/static/images/bg.png -------------------------------------------------------------------------------- /static/js/codemirror/addon/dialog/dialog.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-dialog { 2 | position: absolute; 3 | left: 0; right: 0; 4 | background: inherit; 5 | z-index: 15; 6 | padding: .1em .8em; 7 | overflow: hidden; 8 | color: inherit; 9 | } 10 | 11 | .CodeMirror-dialog-top { 12 | border-bottom: 1px solid #eee; 13 | top: 0; 14 | } 15 | 16 | .CodeMirror-dialog-bottom { 17 | border-top: 1px solid #eee; 18 | bottom: 0; 19 | } 20 | 21 | .CodeMirror-dialog input { 22 | border: none; 23 | outline: none; 24 | background: transparent; 25 | width: 20em; 26 | color: inherit; 27 | font-family: monospace; 28 | } 29 | 30 | .CodeMirror-dialog button { 31 | font-size: 70%; 32 | } 33 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/display/autorefresh.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror")) 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror"], mod) 9 | else // Plain browser env 10 | mod(CodeMirror) 11 | })(function(CodeMirror) { 12 | "use strict" 13 | 14 | CodeMirror.defineOption("autoRefresh", false, function(cm, val) { 15 | if (cm.state.autoRefresh) { 16 | stopListening(cm, cm.state.autoRefresh) 17 | cm.state.autoRefresh = null 18 | } 19 | if (val && cm.display.wrapper.offsetHeight == 0) 20 | startListening(cm, cm.state.autoRefresh = {delay: val.delay || 250}) 21 | }) 22 | 23 | function startListening(cm, state) { 24 | function check() { 25 | if (cm.display.wrapper.offsetHeight) { 26 | stopListening(cm, state) 27 | if (cm.display.lastWrapHeight != cm.display.wrapper.clientHeight) 28 | cm.refresh() 29 | } else { 30 | state.timeout = setTimeout(check, state.delay) 31 | } 32 | } 33 | state.timeout = setTimeout(check, state.delay) 34 | state.hurry = function() { 35 | clearTimeout(state.timeout) 36 | state.timeout = setTimeout(check, 50) 37 | } 38 | CodeMirror.on(window, "mouseup", state.hurry) 39 | CodeMirror.on(window, "keyup", state.hurry) 40 | } 41 | 42 | function stopListening(_cm, state) { 43 | clearTimeout(state.timeout) 44 | CodeMirror.off(window, "mouseup", state.hurry) 45 | CodeMirror.off(window, "keyup", state.hurry) 46 | } 47 | }); 48 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/display/fullscreen.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-fullscreen { 2 | position: fixed; 3 | top: 0; left: 0; right: 0; bottom: 0; 4 | height: auto; 5 | z-index: 9; 6 | } 7 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/display/fullscreen.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | CodeMirror.defineOption("fullScreen", false, function(cm, val, old) { 15 | if (old == CodeMirror.Init) old = false; 16 | if (!old == !val) return; 17 | if (val) setFullscreen(cm); 18 | else setNormal(cm); 19 | }); 20 | 21 | function setFullscreen(cm) { 22 | var wrap = cm.getWrapperElement(); 23 | cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset, 24 | width: wrap.style.width, height: wrap.style.height}; 25 | wrap.style.width = ""; 26 | wrap.style.height = "auto"; 27 | wrap.className += " CodeMirror-fullscreen"; 28 | document.documentElement.style.overflow = "hidden"; 29 | cm.refresh(); 30 | } 31 | 32 | function setNormal(cm) { 33 | var wrap = cm.getWrapperElement(); 34 | wrap.className = wrap.className.replace(/\s*CodeMirror-fullscreen\b/, ""); 35 | document.documentElement.style.overflow = ""; 36 | var info = cm.state.fullScreenRestore; 37 | wrap.style.width = info.width; wrap.style.height = info.height; 38 | window.scrollTo(info.scrollLeft, info.scrollTop); 39 | cm.refresh(); 40 | } 41 | }); 42 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/edit/trailingspace.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | CodeMirror.defineOption("showTrailingSpace", false, function(cm, val, prev) { 13 | if (prev == CodeMirror.Init) prev = false; 14 | if (prev && !val) 15 | cm.removeOverlay("trailingspace"); 16 | else if (!prev && val) 17 | cm.addOverlay({ 18 | token: function(stream) { 19 | for (var l = stream.string.length, i = l; i && /\s/.test(stream.string.charAt(i - 1)); --i) {} 20 | if (i > stream.pos) { stream.pos = i; return null; } 21 | stream.pos = l; 22 | return "trailingspace"; 23 | }, 24 | name: "trailingspace" 25 | }); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/fold/foldgutter.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-foldmarker { 2 | color: blue; 3 | text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px; 4 | font-family: arial; 5 | line-height: .3; 6 | cursor: pointer; 7 | } 8 | .CodeMirror-foldgutter { 9 | width: .7em; 10 | } 11 | .CodeMirror-foldgutter-open, 12 | .CodeMirror-foldgutter-folded { 13 | cursor: pointer; 14 | } 15 | .CodeMirror-foldgutter-open:after { 16 | content: "\25BE"; 17 | } 18 | .CodeMirror-foldgutter-folded:after { 19 | content: "\25B8"; 20 | } 21 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/fold/indent-fold.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | CodeMirror.registerHelper("fold", "indent", function(cm, start) { 15 | var tabSize = cm.getOption("tabSize"), firstLine = cm.getLine(start.line); 16 | if (!/\S/.test(firstLine)) return; 17 | var getIndent = function(line) { 18 | return CodeMirror.countColumn(line, null, tabSize); 19 | }; 20 | var myIndent = getIndent(firstLine); 21 | var lastLineInFold = null; 22 | // Go through lines until we find a line that definitely doesn't belong in 23 | // the block we're folding, or to the end. 24 | for (var i = start.line + 1, end = cm.lastLine(); i <= end; ++i) { 25 | var curLine = cm.getLine(i); 26 | var curIndent = getIndent(curLine); 27 | if (curIndent > myIndent) { 28 | // Lines with a greater indent are considered part of the block. 29 | lastLineInFold = i; 30 | } else if (!/\S/.test(curLine)) { 31 | // Empty lines might be breaks within the block we're trying to fold. 32 | } else { 33 | // A non-empty line at an indent equal to or less than ours marks the 34 | // start of another block. 35 | break; 36 | } 37 | } 38 | if (lastLineInFold) return { 39 | from: CodeMirror.Pos(start.line, firstLine.length), 40 | to: CodeMirror.Pos(lastLineInFold, cm.getLine(lastLineInFold).length) 41 | }; 42 | }); 43 | 44 | }); 45 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/fold/markdown-fold.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | CodeMirror.registerHelper("fold", "markdown", function(cm, start) { 15 | var maxDepth = 100; 16 | 17 | function isHeader(lineNo) { 18 | var tokentype = cm.getTokenTypeAt(CodeMirror.Pos(lineNo, 0)); 19 | return tokentype && /\bheader\b/.test(tokentype); 20 | } 21 | 22 | function headerLevel(lineNo, line, nextLine) { 23 | var match = line && line.match(/^#+/); 24 | if (match && isHeader(lineNo)) return match[0].length; 25 | match = nextLine && nextLine.match(/^[=\-]+\s*$/); 26 | if (match && isHeader(lineNo + 1)) return nextLine[0] == "=" ? 1 : 2; 27 | return maxDepth; 28 | } 29 | 30 | var firstLine = cm.getLine(start.line), nextLine = cm.getLine(start.line + 1); 31 | var level = headerLevel(start.line, firstLine, nextLine); 32 | if (level === maxDepth) return undefined; 33 | 34 | var lastLineNo = cm.lastLine(); 35 | var end = start.line, nextNextLine = cm.getLine(end + 2); 36 | while (end < lastLineNo) { 37 | if (headerLevel(end + 1, nextLine, nextNextLine) <= level) break; 38 | ++end; 39 | nextLine = nextNextLine; 40 | nextNextLine = cm.getLine(end + 2); 41 | } 42 | 43 | return { 44 | from: CodeMirror.Pos(start.line, firstLine.length), 45 | to: CodeMirror.Pos(end, cm.getLine(end).length) 46 | }; 47 | }); 48 | 49 | }); 50 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/hint/anyword-hint.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | var WORD = /[\w$]+/, RANGE = 500; 15 | 16 | CodeMirror.registerHelper("hint", "anyword", function(editor, options) { 17 | var word = options && options.word || WORD; 18 | var range = options && options.range || RANGE; 19 | var cur = editor.getCursor(), curLine = editor.getLine(cur.line); 20 | var end = cur.ch, start = end; 21 | while (start && word.test(curLine.charAt(start - 1))) --start; 22 | var curWord = start != end && curLine.slice(start, end); 23 | 24 | var list = options && options.list || [], seen = {}; 25 | var re = new RegExp(word.source, "g"); 26 | for (var dir = -1; dir <= 1; dir += 2) { 27 | var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir; 28 | for (; line != endLine; line += dir) { 29 | var text = editor.getLine(line), m; 30 | while (m = re.exec(text)) { 31 | if (line == cur.line && m[0] === curWord) continue; 32 | if ((!curWord || m[0].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, m[0])) { 33 | seen[m[0]] = true; 34 | list.push(m[0]); 35 | } 36 | } 37 | } 38 | } 39 | return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)}; 40 | }); 41 | }); 42 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/hint/show-hint.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-hints { 2 | position: absolute; 3 | z-index: 10; 4 | overflow: hidden; 5 | list-style: none; 6 | 7 | margin: 0; 8 | padding: 2px; 9 | 10 | -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 11 | -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 12 | box-shadow: 2px 3px 5px rgba(0,0,0,.2); 13 | border-radius: 3px; 14 | border: 1px solid silver; 15 | 16 | background: white; 17 | font-size: 90%; 18 | font-family: monospace; 19 | 20 | max-height: 20em; 21 | overflow-y: auto; 22 | } 23 | 24 | .CodeMirror-hint { 25 | margin: 0; 26 | padding: 0 4px; 27 | border-radius: 2px; 28 | white-space: pre; 29 | color: black; 30 | cursor: pointer; 31 | } 32 | 33 | li.CodeMirror-hint-active { 34 | background: #08f; 35 | color: white; 36 | } 37 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/lint/coffeescript-lint.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | // Depends on coffeelint.js from http://www.coffeelint.org/js/coffeelint.js 5 | 6 | // declare global: coffeelint 7 | 8 | (function(mod) { 9 | if (typeof exports == "object" && typeof module == "object") // CommonJS 10 | mod(require("../../lib/codemirror")); 11 | else if (typeof define == "function" && define.amd) // AMD 12 | define(["../../lib/codemirror"], mod); 13 | else // Plain browser env 14 | mod(CodeMirror); 15 | })(function(CodeMirror) { 16 | "use strict"; 17 | 18 | CodeMirror.registerHelper("lint", "coffeescript", function(text) { 19 | var found = []; 20 | var parseError = function(err) { 21 | var loc = err.lineNumber; 22 | found.push({from: CodeMirror.Pos(loc-1, 0), 23 | to: CodeMirror.Pos(loc, 0), 24 | severity: err.level, 25 | message: err.message}); 26 | }; 27 | try { 28 | var res = coffeelint.lint(text); 29 | for(var i = 0; i < res.length; i++) { 30 | parseError(res[i]); 31 | } 32 | } catch(e) { 33 | found.push({from: CodeMirror.Pos(e.location.first_line, 0), 34 | to: CodeMirror.Pos(e.location.last_line, e.location.last_column), 35 | severity: 'error', 36 | message: e.message}); 37 | } 38 | return found; 39 | }); 40 | 41 | }); 42 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/lint/css-lint.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | // Depends on csslint.js from https://github.com/stubbornella/csslint 5 | 6 | // declare global: CSSLint 7 | 8 | (function(mod) { 9 | if (typeof exports == "object" && typeof module == "object") // CommonJS 10 | mod(require("../../lib/codemirror")); 11 | else if (typeof define == "function" && define.amd) // AMD 12 | define(["../../lib/codemirror"], mod); 13 | else // Plain browser env 14 | mod(CodeMirror); 15 | })(function(CodeMirror) { 16 | "use strict"; 17 | 18 | CodeMirror.registerHelper("lint", "css", function(text) { 19 | var found = []; 20 | if (!window.CSSLint) return found; 21 | var results = CSSLint.verify(text), messages = results.messages, message = null; 22 | for ( var i = 0; i < messages.length; i++) { 23 | message = messages[i]; 24 | var startLine = message.line -1, endLine = message.line -1, startCol = message.col -1, endCol = message.col; 25 | found.push({ 26 | from: CodeMirror.Pos(startLine, startCol), 27 | to: CodeMirror.Pos(endLine, endCol), 28 | message: message.message, 29 | severity : message.type 30 | }); 31 | } 32 | return found; 33 | }); 34 | 35 | }); 36 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/lint/html-lint.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | // Depends on htmlhint.js from http://htmlhint.com/js/htmlhint.js 5 | 6 | // declare global: HTMLHint 7 | 8 | (function(mod) { 9 | if (typeof exports == "object" && typeof module == "object") // CommonJS 10 | mod(require("../../lib/codemirror"), require("htmlhint")); 11 | else if (typeof define == "function" && define.amd) // AMD 12 | define(["../../lib/codemirror", "htmlhint"], mod); 13 | else // Plain browser env 14 | mod(CodeMirror); 15 | })(function(CodeMirror) { 16 | "use strict"; 17 | 18 | var defaultRules = { 19 | "tagname-lowercase": true, 20 | "attr-lowercase": true, 21 | "attr-value-double-quotes": true, 22 | "doctype-first": false, 23 | "tag-pair": true, 24 | "spec-char-escape": true, 25 | "id-unique": true, 26 | "src-not-empty": true, 27 | "attr-no-duplication": true 28 | }; 29 | 30 | CodeMirror.registerHelper("lint", "html", function(text, options) { 31 | var found = []; 32 | if (!window.HTMLHint) return found; 33 | var messages = HTMLHint.verify(text, options && options.rules || defaultRules); 34 | for (var i = 0; i < messages.length; i++) { 35 | var message = messages[i]; 36 | var startLine = message.line - 1, endLine = message.line - 1, startCol = message.col - 1, endCol = message.col; 37 | found.push({ 38 | from: CodeMirror.Pos(startLine, startCol), 39 | to: CodeMirror.Pos(endLine, endCol), 40 | message: message.message, 41 | severity : message.type 42 | }); 43 | } 44 | return found; 45 | }); 46 | }); 47 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/lint/json-lint.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | // Depends on jsonlint.js from https://github.com/zaach/jsonlint 5 | 6 | // declare global: jsonlint 7 | 8 | (function(mod) { 9 | if (typeof exports == "object" && typeof module == "object") // CommonJS 10 | mod(require("../../lib/codemirror")); 11 | else if (typeof define == "function" && define.amd) // AMD 12 | define(["../../lib/codemirror"], mod); 13 | else // Plain browser env 14 | mod(CodeMirror); 15 | })(function(CodeMirror) { 16 | "use strict"; 17 | 18 | CodeMirror.registerHelper("lint", "json", function(text) { 19 | var found = []; 20 | jsonlint.parseError = function(str, hash) { 21 | var loc = hash.loc; 22 | found.push({from: CodeMirror.Pos(loc.first_line - 1, loc.first_column), 23 | to: CodeMirror.Pos(loc.last_line - 1, loc.last_column), 24 | message: str}); 25 | }; 26 | try { jsonlint.parse(text); } 27 | catch(e) {} 28 | return found; 29 | }); 30 | 31 | }); 32 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/lint/yaml-lint.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | // Depends on js-yaml.js from https://github.com/nodeca/js-yaml 15 | 16 | // declare global: jsyaml 17 | 18 | CodeMirror.registerHelper("lint", "yaml", function(text) { 19 | var found = []; 20 | try { jsyaml.load(text); } 21 | catch(e) { 22 | var loc = e.mark; 23 | found.push({ from: CodeMirror.Pos(loc.line, loc.column), to: CodeMirror.Pos(loc.line, loc.column), message: e.message }); 24 | } 25 | return found; 26 | }); 27 | 28 | }); 29 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/mode/multiplex_test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | CodeMirror.defineMode("markdown_with_stex", function(){ 6 | var inner = CodeMirror.getMode({}, "stex"); 7 | var outer = CodeMirror.getMode({}, "markdown"); 8 | 9 | var innerOptions = { 10 | open: '$', 11 | close: '$', 12 | mode: inner, 13 | delimStyle: 'delim', 14 | innerStyle: 'inner' 15 | }; 16 | 17 | return CodeMirror.multiplexingMode(outer, innerOptions); 18 | }); 19 | 20 | var mode = CodeMirror.getMode({}, "markdown_with_stex"); 21 | 22 | function MT(name) { 23 | test.mode( 24 | name, 25 | mode, 26 | Array.prototype.slice.call(arguments, 1), 27 | 'multiplexing'); 28 | } 29 | 30 | MT( 31 | "stexInsideMarkdown", 32 | "[strong **Equation:**] [delim&delim-open $][inner&tag \\pi][delim&delim-close $]"); 33 | })(); 34 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/runmode/colorize.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror"), require("./runmode")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror", "./runmode"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | var isBlock = /^(p|li|div|h\\d|pre|blockquote|td)$/; 15 | 16 | function textContent(node, out) { 17 | if (node.nodeType == 3) return out.push(node.nodeValue); 18 | for (var ch = node.firstChild; ch; ch = ch.nextSibling) { 19 | textContent(ch, out); 20 | if (isBlock.test(node.nodeType)) out.push("\n"); 21 | } 22 | } 23 | 24 | CodeMirror.colorize = function(collection, defaultMode) { 25 | if (!collection) collection = document.body.getElementsByTagName("pre"); 26 | 27 | for (var i = 0; i < collection.length; ++i) { 28 | var node = collection[i]; 29 | var mode = node.getAttribute("data-lang") || defaultMode; 30 | if (!mode) continue; 31 | 32 | var text = []; 33 | textContent(node, text); 34 | node.innerHTML = ""; 35 | CodeMirror.runMode(text.join(""), mode, node); 36 | 37 | node.className += " cm-s-default"; 38 | } 39 | }; 40 | }); 41 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/scroll/scrollpastend.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | CodeMirror.defineOption("scrollPastEnd", false, function(cm, val, old) { 15 | if (old && old != CodeMirror.Init) { 16 | cm.off("change", onChange); 17 | cm.off("refresh", updateBottomMargin); 18 | cm.display.lineSpace.parentNode.style.paddingBottom = ""; 19 | cm.state.scrollPastEndPadding = null; 20 | } 21 | if (val) { 22 | cm.on("change", onChange); 23 | cm.on("refresh", updateBottomMargin); 24 | updateBottomMargin(cm); 25 | } 26 | }); 27 | 28 | function onChange(cm, change) { 29 | if (CodeMirror.changeEnd(change).line == cm.lastLine()) 30 | updateBottomMargin(cm); 31 | } 32 | 33 | function updateBottomMargin(cm) { 34 | var padding = ""; 35 | if (cm.lineCount() > 1) { 36 | var totalH = cm.display.scroller.clientHeight - 30, 37 | lastLineH = cm.getLineHandle(cm.lastLine()).height; 38 | padding = (totalH - lastLineH) + "px"; 39 | } 40 | if (cm.state.scrollPastEndPadding != padding) { 41 | cm.state.scrollPastEndPadding = padding; 42 | cm.display.lineSpace.parentNode.style.paddingBottom = padding; 43 | cm.off("refresh", updateBottomMargin); 44 | cm.setSize(); 45 | cm.on("refresh", updateBottomMargin); 46 | } 47 | } 48 | }); 49 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/scroll/simplescrollbars.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-simplescroll-horizontal div, .CodeMirror-simplescroll-vertical div { 2 | position: absolute; 3 | background: #ccc; 4 | -moz-box-sizing: border-box; 5 | box-sizing: border-box; 6 | border: 1px solid #bbb; 7 | border-radius: 2px; 8 | } 9 | 10 | .CodeMirror-simplescroll-horizontal, .CodeMirror-simplescroll-vertical { 11 | position: absolute; 12 | z-index: 6; 13 | background: #eee; 14 | } 15 | 16 | .CodeMirror-simplescroll-horizontal { 17 | bottom: 0; left: 0; 18 | height: 8px; 19 | } 20 | .CodeMirror-simplescroll-horizontal div { 21 | bottom: 0; 22 | height: 100%; 23 | } 24 | 25 | .CodeMirror-simplescroll-vertical { 26 | right: 0; top: 0; 27 | width: 8px; 28 | } 29 | .CodeMirror-simplescroll-vertical div { 30 | right: 0; 31 | width: 100%; 32 | } 33 | 34 | 35 | .CodeMirror-overlayscroll .CodeMirror-scrollbar-filler, .CodeMirror-overlayscroll .CodeMirror-gutter-filler { 36 | display: none; 37 | } 38 | 39 | .CodeMirror-overlayscroll-horizontal div, .CodeMirror-overlayscroll-vertical div { 40 | position: absolute; 41 | background: #bcd; 42 | border-radius: 3px; 43 | } 44 | 45 | .CodeMirror-overlayscroll-horizontal, .CodeMirror-overlayscroll-vertical { 46 | position: absolute; 47 | z-index: 6; 48 | } 49 | 50 | .CodeMirror-overlayscroll-horizontal { 51 | bottom: 0; left: 0; 52 | height: 6px; 53 | } 54 | .CodeMirror-overlayscroll-horizontal div { 55 | bottom: 0; 56 | height: 100%; 57 | } 58 | 59 | .CodeMirror-overlayscroll-vertical { 60 | right: 0; top: 0; 61 | width: 6px; 62 | } 63 | .CodeMirror-overlayscroll-vertical div { 64 | right: 0; 65 | width: 100%; 66 | } 67 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/search/matchesonscrollbar.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-search-match { 2 | background: gold; 3 | border-top: 1px solid orange; 4 | border-bottom: 1px solid orange; 5 | -moz-box-sizing: border-box; 6 | box-sizing: border-box; 7 | opacity: .5; 8 | } 9 | -------------------------------------------------------------------------------- /static/js/codemirror/addon/tern/worker.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | // declare global: tern, server 5 | 6 | var server; 7 | 8 | this.onmessage = function(e) { 9 | var data = e.data; 10 | switch (data.type) { 11 | case "init": return startServer(data.defs, data.plugins, data.scripts); 12 | case "add": return server.addFile(data.name, data.text); 13 | case "del": return server.delFile(data.name); 14 | case "req": return server.request(data.body, function(err, reqData) { 15 | postMessage({id: data.id, body: reqData, err: err && String(err)}); 16 | }); 17 | case "getFile": 18 | var c = pending[data.id]; 19 | delete pending[data.id]; 20 | return c(data.err, data.text); 21 | default: throw new Error("Unknown message type: " + data.type); 22 | } 23 | }; 24 | 25 | var nextId = 0, pending = {}; 26 | function getFile(file, c) { 27 | postMessage({type: "getFile", name: file, id: ++nextId}); 28 | pending[nextId] = c; 29 | } 30 | 31 | function startServer(defs, plugins, scripts) { 32 | if (scripts) importScripts.apply(null, scripts); 33 | 34 | server = new tern.Server({ 35 | getFile: getFile, 36 | async: true, 37 | defs: defs, 38 | plugins: plugins 39 | }); 40 | } 41 | 42 | this.console = { 43 | log: function(v) { postMessage({type: "debug", message: v}); } 44 | }; 45 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/asciiarmor/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: ASCII Armor (PGP) mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

ASCII Armor (PGP) mode

27 |
36 | 37 | 42 | 43 |

MIME types 44 | defined: application/pgp, application/pgp-keys, application/pgp-signature

45 | 46 |
47 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/css/gss_test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | "use strict"; 6 | 7 | var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-gss"); 8 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "gss"); } 9 | 10 | MT("atComponent", 11 | "[def @component] {", 12 | "[tag foo] {", 13 | " [property color]: [keyword black];", 14 | "}", 15 | "}"); 16 | 17 | })(); 18 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/cypher/test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | var mode = CodeMirror.getMode({tabSize: 4, indentUnit: 2}, "cypher"); 6 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } 7 | 8 | MT("unbalancedDoubledQuotedString", 9 | "[string \"a'b\"][variable c]"); 10 | 11 | MT("unbalancedSingleQuotedString", 12 | "[string 'a\"b'][variable c]"); 13 | 14 | MT("doubleQuotedString", 15 | "[string \"a\"][variable b]"); 16 | 17 | MT("singleQuotedString", 18 | "[string 'a'][variable b]"); 19 | 20 | MT("single attribute (with content)", 21 | "[node {][atom a:][string 'a'][node }]"); 22 | 23 | MT("multiple attribute, singleQuotedString (with content)", 24 | "[node {][atom a:][string 'a'][node ,][atom b:][string 'b'][node }]"); 25 | 26 | MT("multiple attribute, doubleQuotedString (with content)", 27 | "[node {][atom a:][string \"a\"][node ,][atom b:][string \"b\"][node }]"); 28 | 29 | MT("single attribute (without content)", 30 | "[node {][atom a:][string 'a'][node }]"); 31 | 32 | MT("multiple attribute, singleQuotedString (without content)", 33 | "[node {][atom a:][string ''][node ,][atom b:][string ''][node }]"); 34 | 35 | MT("multiple attribute, doubleQuotedString (without content)", 36 | "[node {][atom a:][string \"\"][node ,][atom b:][string \"\"][node }]"); 37 | })(); 38 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/dart/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Dart mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Dart mode

27 |
28 | 62 |
63 | 64 | 70 | 71 |
72 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/diff/diff.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | CodeMirror.defineMode("diff", function() { 15 | 16 | var TOKEN_NAMES = { 17 | '+': 'positive', 18 | '-': 'negative', 19 | '@': 'meta' 20 | }; 21 | 22 | return { 23 | token: function(stream) { 24 | var tw_pos = stream.string.search(/[\t ]+?$/); 25 | 26 | if (!stream.sol() || tw_pos === 0) { 27 | stream.skipToEnd(); 28 | return ("error " + ( 29 | TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, ''); 30 | } 31 | 32 | var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd(); 33 | 34 | if (tw_pos === -1) { 35 | stream.skipToEnd(); 36 | } else { 37 | stream.pos = tw_pos; 38 | } 39 | 40 | return token_name; 41 | } 42 | }; 43 | }); 44 | 45 | CodeMirror.defineMIME("text/x-diff", "diff"); 46 | 47 | }); 48 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/ecl/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: ECL mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

ECL mode

27 |
45 | 48 | 49 |

Based on CodeMirror's clike mode. For more information see HPCC Systems web site.

50 |

MIME types defined: text/x-ecl.

51 | 52 |
53 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/elm/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Elm mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Elm mode

27 | 28 |
52 | 53 | 59 | 60 |

MIME types defined: text/x-elm.

61 |
62 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/gherkin/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Gherkin mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Gherkin mode

27 |
42 | 45 | 46 |

MIME types defined: text/x-feature.

47 | 48 |
49 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/haskell-literate/haskell-literate.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function (mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror"), require("../haskell/haskell")) 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror", "../haskell/haskell"], mod) 9 | else // Plain browser env 10 | mod(CodeMirror) 11 | })(function (CodeMirror) { 12 | "use strict" 13 | 14 | CodeMirror.defineMode("haskell-literate", function (config, parserConfig) { 15 | var baseMode = CodeMirror.getMode(config, (parserConfig && parserConfig.base) || "haskell") 16 | 17 | return { 18 | startState: function () { 19 | return { 20 | inCode: false, 21 | baseState: CodeMirror.startState(baseMode) 22 | } 23 | }, 24 | token: function (stream, state) { 25 | if (stream.sol()) { 26 | if (state.inCode = stream.eat(">")) 27 | return "meta" 28 | } 29 | if (state.inCode) { 30 | return baseMode.token(stream, state.baseState) 31 | } else { 32 | stream.skipToEnd() 33 | return "comment" 34 | } 35 | }, 36 | innerMode: function (state) { 37 | return state.inCode ? {state: state.baseState, mode: baseMode} : null 38 | } 39 | } 40 | }, "haskell") 41 | 42 | CodeMirror.defineMIME("text/x-literate-haskell", "haskell-literate") 43 | }); 44 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/htmlembedded/htmlembedded.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), 7 | require("../../addon/mode/multiplex")); 8 | else if (typeof define == "function" && define.amd) // AMD 9 | define(["../../lib/codemirror", "../htmlmixed/htmlmixed", 10 | "../../addon/mode/multiplex"], mod); 11 | else // Plain browser env 12 | mod(CodeMirror); 13 | })(function(CodeMirror) { 14 | "use strict"; 15 | 16 | CodeMirror.defineMode("htmlembedded", function(config, parserConfig) { 17 | return CodeMirror.multiplexingMode(CodeMirror.getMode(config, "htmlmixed"), { 18 | open: parserConfig.open || parserConfig.scriptStartRegex || "<%", 19 | close: parserConfig.close || parserConfig.scriptEndRegex || "%>", 20 | mode: CodeMirror.getMode(config, parserConfig.scriptingModeSpec) 21 | }); 22 | }, "htmlmixed"); 23 | 24 | CodeMirror.defineMIME("application/x-ejs", {name: "htmlembedded", scriptingModeSpec:"javascript"}); 25 | CodeMirror.defineMIME("application/x-aspx", {name: "htmlembedded", scriptingModeSpec:"text/x-csharp"}); 26 | CodeMirror.defineMIME("application/x-jsp", {name: "htmlembedded", scriptingModeSpec:"text/x-java"}); 27 | CodeMirror.defineMIME("application/x-erb", {name: "htmlembedded", scriptingModeSpec:"ruby"}); 28 | }); 29 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/http/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: HTTP mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

HTTP mode

27 | 28 | 29 |
39 | 40 | 43 | 44 |

MIME types defined: message/http.

45 |
46 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/idl/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: IDL mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

IDL mode

27 | 28 |
52 | 62 | 63 |

MIME types defined: text/x-idl.

64 |
65 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/javascript/typescript.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: TypeScript mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

TypeScript mode

27 | 28 | 29 |
51 | 52 | 59 | 60 |

This is a specialization of the JavaScript mode.

61 |
62 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/mbox/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: mbox mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

mbox mode

27 |
38 | 41 | 42 |

MIME types defined: application/mbox.

43 | 44 |
45 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/ntriples/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: NTriples mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 28 | 29 |
30 |

NTriples mode

31 |
32 | 39 |
40 | 41 | 44 |

MIME types defined: text/n-triples.

45 |
46 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/oz/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Oz mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 14 | 26 | 27 |
28 |

Oz mode

29 | 50 |

MIME type defined: text/x-oz.

51 | 52 | 59 |
60 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/pascal/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Pascal mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Pascal mode

27 | 28 | 29 |
52 | 53 | 59 | 60 |

MIME types defined: text/x-pascal.

61 |
62 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/perl/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Perl mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Perl mode

27 | 28 | 29 |
67 | 68 | 73 | 74 |

MIME types defined: text/x-perl.

75 |
76 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/pig/index.html: -------------------------------------------------------------------------------- 1 |  2 | CodeMirror: Pig Latin mode 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 23 | 24 |
25 |

Pig Latin mode

26 |
38 | 39 | 46 | 47 |

48 | Simple mode that handles Pig Latin language. 49 |

50 | 51 |

MIME type defined: text/x-pig 52 | (PIG code) 53 |

54 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/properties/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Properties files mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Properties files mode

27 |
46 | 49 | 50 |

MIME types defined: text/x-properties, 51 | text/x-ini.

52 | 53 |
54 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/protobuf/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: ProtoBuf mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

ProtoBuf mode

27 |
58 | 61 | 62 |

MIME types defined: text/x-protobuf.

63 | 64 |
65 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/python/test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | var mode = CodeMirror.getMode({indentUnit: 4}, 6 | {name: "python", 7 | version: 3, 8 | singleLineStringErrors: false}); 9 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } 10 | 11 | // Error, because "foobarhello" is neither a known type or property, but 12 | // property was expected (after "and"), and it should be in parentheses. 13 | MT("decoratorStartOfLine", 14 | "[meta @dec]", 15 | "[keyword def] [def function]():", 16 | " [keyword pass]"); 17 | 18 | MT("decoratorIndented", 19 | "[keyword class] [def Foo]:", 20 | " [meta @dec]", 21 | " [keyword def] [def function]():", 22 | " [keyword pass]"); 23 | 24 | MT("matmulWithSpace:", "[variable a] [operator @] [variable b]"); 25 | MT("matmulWithoutSpace:", "[variable a][operator @][variable b]"); 26 | MT("matmulSpaceBefore:", "[variable a] [operator @][variable b]"); 27 | 28 | MT("fValidStringPrefix", "[string f'this is a {formatted} string']"); 29 | MT("uValidStringPrefix", "[string u'this is an unicode string']"); 30 | })(); 31 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/ruby/test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | var mode = CodeMirror.getMode({indentUnit: 2}, "ruby"); 6 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } 7 | 8 | MT("divide_equal_operator", 9 | "[variable bar] [operator /=] [variable foo]"); 10 | 11 | MT("divide_equal_operator_no_spacing", 12 | "[variable foo][operator /=][number 42]"); 13 | 14 | })(); 15 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/rust/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Rust mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

Rust mode

28 | 29 | 30 |
53 | 54 | 62 | 63 |

MIME types defined: text/x-rustsrc.

64 |
65 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/rust/test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | var mode = CodeMirror.getMode({indentUnit: 4}, "rust"); 6 | function MT(name) {test.mode(name, mode, Array.prototype.slice.call(arguments, 1));} 7 | 8 | MT('integer_test', 9 | '[number 123i32]', 10 | '[number 123u32]', 11 | '[number 123_u32]', 12 | '[number 0xff_u8]', 13 | '[number 0o70_i16]', 14 | '[number 0b1111_1111_1001_0000_i32]', 15 | '[number 0usize]'); 16 | 17 | MT('float_test', 18 | '[number 123.0f64]', 19 | '[number 0.1f64]', 20 | '[number 0.1f32]', 21 | '[number 12E+99_f64]'); 22 | 23 | MT('string-literals-test', 24 | '[string "foo"]', 25 | '[string r"foo"]', 26 | '[string "\\"foo\\""]', 27 | '[string r#""foo""#]', 28 | '[string "foo #\\"# bar"]', 29 | 30 | '[string b"foo"]', 31 | '[string br"foo"]', 32 | '[string b"\\"foo\\""]', 33 | '[string br#""foo""#]', 34 | '[string br##"foo #" bar"##]', 35 | 36 | "[string-2 'h']", 37 | "[string-2 b'h']"); 38 | 39 | })(); 40 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/sass/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Sass mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

Sass mode

28 |
58 | 64 | 65 |

MIME types defined: text/x-sass.

66 |
67 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/solr/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Solr mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 20 | 33 | 34 |
35 |

Solr mode

36 | 37 |
38 | 47 |
48 | 49 | 55 | 56 |

MIME types defined: text/x-solr.

57 |
58 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/spreadsheet/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Spreadsheet mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

Spreadsheet mode

28 |
29 | 30 | 37 | 38 |

MIME types defined: text/x-spreadsheet.

39 | 40 |

The Spreadsheet Mode

41 |

Created by Robert Plummer

42 |
43 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/tiddlywiki/tiddlywiki.css: -------------------------------------------------------------------------------- 1 | span.cm-underlined { 2 | text-decoration: underline; 3 | } 4 | span.cm-strikethrough { 5 | text-decoration: line-through; 6 | } 7 | span.cm-brace { 8 | color: #170; 9 | font-weight: bold; 10 | } 11 | span.cm-table { 12 | color: blue; 13 | font-weight: bold; 14 | } 15 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/tiki/tiki.css: -------------------------------------------------------------------------------- 1 | .cm-tw-syntaxerror { 2 | color: #FFF; 3 | background-color: #900; 4 | } 5 | 6 | .cm-tw-deleted { 7 | text-decoration: line-through; 8 | } 9 | 10 | .cm-tw-header5 { 11 | font-weight: bold; 12 | } 13 | .cm-tw-listitem:first-child { /*Added first child to fix duplicate padding when highlighting*/ 14 | padding-left: 10px; 15 | } 16 | 17 | .cm-tw-box { 18 | border-top-width: 0px !important; 19 | border-style: solid; 20 | border-width: 1px; 21 | border-color: inherit; 22 | } 23 | 24 | .cm-tw-underline { 25 | text-decoration: underline; 26 | } -------------------------------------------------------------------------------- /static/js/codemirror/mode/turtle/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Turtle mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Turtle mode

27 |
41 | 47 | 48 |

MIME types defined: text/turtle.

49 | 50 |
51 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/twig/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Twig mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Twig mode

27 |
40 | 45 |
46 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/vbscript/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: VBScript mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

VBScript mode

27 | 28 | 29 |
46 | 47 | 53 | 54 |

MIME types defined: text/vbscript.

55 |
56 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/xml/test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | var mode = CodeMirror.getMode({indentUnit: 2}, "xml"), mname = "xml"; 6 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), mname); } 7 | 8 | MT("matching", 9 | "[tag&bracket <][tag top][tag&bracket >]", 10 | " text", 11 | " [tag&bracket <][tag inner][tag&bracket />]", 12 | "[tag&bracket ]"); 13 | 14 | MT("nonmatching", 15 | "[tag&bracket <][tag top][tag&bracket >]", 16 | " [tag&bracket <][tag inner][tag&bracket />]", 17 | " [tag&bracket ]"); 18 | 19 | MT("doctype", 20 | "[meta ]", 21 | "[tag&bracket <][tag top][tag&bracket />]"); 22 | 23 | MT("cdata", 24 | "[tag&bracket <][tag top][tag&bracket >]", 25 | " [atom ]", 27 | "[tag&bracket ]"); 28 | 29 | // HTML tests 30 | mode = CodeMirror.getMode({indentUnit: 2}, "text/html"); 31 | 32 | MT("selfclose", 33 | "[tag&bracket <][tag html][tag&bracket >]", 34 | " [tag&bracket <][tag link] [attribute rel]=[string stylesheet] [attribute href]=[string \"/foobar\"][tag&bracket >]", 35 | "[tag&bracket ]"); 36 | 37 | MT("list", 38 | "[tag&bracket <][tag ol][tag&bracket >]", 39 | " [tag&bracket <][tag li][tag&bracket >]one", 40 | " [tag&bracket <][tag li][tag&bracket >]two", 41 | "[tag&bracket ]"); 42 | 43 | MT("valueless", 44 | "[tag&bracket <][tag input] [attribute type]=[string checkbox] [attribute checked][tag&bracket />]"); 45 | 46 | MT("pThenArticle", 47 | "[tag&bracket <][tag p][tag&bracket >]", 48 | " foo", 49 | "[tag&bracket <][tag article][tag&bracket >]bar"); 50 | 51 | })(); 52 | -------------------------------------------------------------------------------- /static/js/codemirror/mode/z80/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Z80 assembly mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Z80 assembly mode

27 | 28 | 29 |
45 | 46 | 51 | 52 |

MIME types defined: text/x-z80, text/x-ez80.

53 |
54 | -------------------------------------------------------------------------------- /static/js/codemirror/rollup.config.js: -------------------------------------------------------------------------------- 1 | import buble from 'rollup-plugin-buble'; 2 | 3 | export default { 4 | banner: `// CodeMirror, copyright (c) by Marijn Haverbeke and others 5 | // Distributed under an MIT license: http://codemirror.net/LICENSE 6 | 7 | // This is CodeMirror (http://codemirror.net), a code editor 8 | // implemented in JavaScript on top of the browser's DOM. 9 | // 10 | // You can find some technical background for some of the code below 11 | // at http://marijnhaverbeke.nl/blog/#cm-internals . 12 | `, 13 | entry: "src/codemirror.js", 14 | format: "umd", 15 | dest: "lib/codemirror.js", 16 | moduleName: "CodeMirror", 17 | plugins: [ buble({namedFunctionExpressions: false}) ] 18 | }; 19 | -------------------------------------------------------------------------------- /static/js/codemirror/theme/ambiance-mobile.css: -------------------------------------------------------------------------------- 1 | .cm-s-ambiance.CodeMirror { 2 | -webkit-box-shadow: none; 3 | -moz-box-shadow: none; 4 | box-shadow: none; 5 | } 6 | -------------------------------------------------------------------------------- /static/js/codemirror/theme/bespin.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: Bespin 4 | Author: Mozilla / Jan T. Sott 5 | 6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) 7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) 8 | 9 | */ 10 | 11 | .cm-s-bespin.CodeMirror {background: #28211c; color: #9d9b97;} 12 | .cm-s-bespin div.CodeMirror-selected {background: #36312e !important;} 13 | .cm-s-bespin .CodeMirror-gutters {background: #28211c; border-right: 0px;} 14 | .cm-s-bespin .CodeMirror-linenumber {color: #666666;} 15 | .cm-s-bespin .CodeMirror-cursor {border-left: 1px solid #797977 !important;} 16 | 17 | .cm-s-bespin span.cm-comment {color: #937121;} 18 | .cm-s-bespin span.cm-atom {color: #9b859d;} 19 | .cm-s-bespin span.cm-number {color: #9b859d;} 20 | 21 | .cm-s-bespin span.cm-property, .cm-s-bespin span.cm-attribute {color: #54be0d;} 22 | .cm-s-bespin span.cm-keyword {color: #cf6a4c;} 23 | .cm-s-bespin span.cm-string {color: #f9ee98;} 24 | 25 | .cm-s-bespin span.cm-variable {color: #54be0d;} 26 | .cm-s-bespin span.cm-variable-2 {color: #5ea6ea;} 27 | .cm-s-bespin span.cm-def {color: #cf7d34;} 28 | .cm-s-bespin span.cm-error {background: #cf6a4c; color: #797977;} 29 | .cm-s-bespin span.cm-bracket {color: #9d9b97;} 30 | .cm-s-bespin span.cm-tag {color: #cf6a4c;} 31 | .cm-s-bespin span.cm-link {color: #9b859d;} 32 | 33 | .cm-s-bespin .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} 34 | .cm-s-bespin .CodeMirror-activeline-background { background: #404040; } 35 | -------------------------------------------------------------------------------- /static/js/codemirror/theme/cobalt.css: -------------------------------------------------------------------------------- 1 | .cm-s-cobalt.CodeMirror { background: #002240; color: white; } 2 | .cm-s-cobalt div.CodeMirror-selected { background: #b36539; } 3 | .cm-s-cobalt .CodeMirror-line::selection, .cm-s-cobalt .CodeMirror-line > span::selection, .cm-s-cobalt .CodeMirror-line > span > span::selection { background: rgba(179, 101, 57, .99); } 4 | .cm-s-cobalt .CodeMirror-line::-moz-selection, .cm-s-cobalt .CodeMirror-line > span::-moz-selection, .cm-s-cobalt .CodeMirror-line > span > span::-moz-selection { background: rgba(179, 101, 57, .99); } 5 | .cm-s-cobalt .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } 6 | .cm-s-cobalt .CodeMirror-guttermarker { color: #ffee80; } 7 | .cm-s-cobalt .CodeMirror-guttermarker-subtle { color: #d0d0d0; } 8 | .cm-s-cobalt .CodeMirror-linenumber { color: #d0d0d0; } 9 | .cm-s-cobalt .CodeMirror-cursor { border-left: 1px solid white; } 10 | 11 | .cm-s-cobalt span.cm-comment { color: #08f; } 12 | .cm-s-cobalt span.cm-atom { color: #845dc4; } 13 | .cm-s-cobalt span.cm-number, .cm-s-cobalt span.cm-attribute { color: #ff80e1; } 14 | .cm-s-cobalt span.cm-keyword { color: #ffee80; } 15 | .cm-s-cobalt span.cm-string { color: #3ad900; } 16 | .cm-s-cobalt span.cm-meta { color: #ff9d00; } 17 | .cm-s-cobalt span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #9effff; } 18 | .cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def { color: white; } 19 | .cm-s-cobalt span.cm-bracket { color: #d8d8d8; } 20 | .cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; } 21 | .cm-s-cobalt span.cm-link { color: #845dc4; } 22 | .cm-s-cobalt span.cm-error { color: #9d1e15; } 23 | 24 | .cm-s-cobalt .CodeMirror-activeline-background { background: #002D57; } 25 | .cm-s-cobalt .CodeMirror-matchingbracket { outline:1px solid grey;color:white !important; } 26 | -------------------------------------------------------------------------------- /static/js/codemirror/theme/colorforth.css: -------------------------------------------------------------------------------- 1 | .cm-s-colorforth.CodeMirror { background: #000000; color: #f8f8f8; } 2 | .cm-s-colorforth .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } 3 | .cm-s-colorforth .CodeMirror-guttermarker { color: #FFBD40; } 4 | .cm-s-colorforth .CodeMirror-guttermarker-subtle { color: #78846f; } 5 | .cm-s-colorforth .CodeMirror-linenumber { color: #bababa; } 6 | .cm-s-colorforth .CodeMirror-cursor { border-left: 1px solid white; } 7 | 8 | .cm-s-colorforth span.cm-comment { color: #ededed; } 9 | .cm-s-colorforth span.cm-def { color: #ff1c1c; font-weight:bold; } 10 | .cm-s-colorforth span.cm-keyword { color: #ffd900; } 11 | .cm-s-colorforth span.cm-builtin { color: #00d95a; } 12 | .cm-s-colorforth span.cm-variable { color: #73ff00; } 13 | .cm-s-colorforth span.cm-string { color: #007bff; } 14 | .cm-s-colorforth span.cm-number { color: #00c4ff; } 15 | .cm-s-colorforth span.cm-atom { color: #606060; } 16 | 17 | .cm-s-colorforth span.cm-variable-2 { color: #EEE; } 18 | .cm-s-colorforth span.cm-variable-3 { color: #DDD; } 19 | .cm-s-colorforth span.cm-property {} 20 | .cm-s-colorforth span.cm-operator {} 21 | 22 | .cm-s-colorforth span.cm-meta { color: yellow; } 23 | .cm-s-colorforth span.cm-qualifier { color: #FFF700; } 24 | .cm-s-colorforth span.cm-bracket { color: #cc7; } 25 | .cm-s-colorforth span.cm-tag { color: #FFBD40; } 26 | .cm-s-colorforth span.cm-attribute { color: #FFF700; } 27 | .cm-s-colorforth span.cm-error { color: #f00; } 28 | 29 | .cm-s-colorforth div.CodeMirror-selected { background: #333d53; } 30 | 31 | .cm-s-colorforth span.cm-compilation { background: rgba(255, 255, 255, 0.12); } 32 | 33 | .cm-s-colorforth .CodeMirror-activeline-background { background: #253540; } 34 | -------------------------------------------------------------------------------- /static/js/codemirror/theme/eclipse.css: -------------------------------------------------------------------------------- 1 | .cm-s-eclipse span.cm-meta { color: #FF1717; } 2 | .cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; } 3 | .cm-s-eclipse span.cm-atom { color: #219; } 4 | .cm-s-eclipse span.cm-number { color: #164; } 5 | .cm-s-eclipse span.cm-def { color: #00f; } 6 | .cm-s-eclipse span.cm-variable { color: black; } 7 | .cm-s-eclipse span.cm-variable-2 { color: #0000C0; } 8 | .cm-s-eclipse span.cm-variable-3 { color: #0000C0; } 9 | .cm-s-eclipse span.cm-property { color: black; } 10 | .cm-s-eclipse span.cm-operator { color: black; } 11 | .cm-s-eclipse span.cm-comment { color: #3F7F5F; } 12 | .cm-s-eclipse span.cm-string { color: #2A00FF; } 13 | .cm-s-eclipse span.cm-string-2 { color: #f50; } 14 | .cm-s-eclipse span.cm-qualifier { color: #555; } 15 | .cm-s-eclipse span.cm-builtin { color: #30a; } 16 | .cm-s-eclipse span.cm-bracket { color: #cc7; } 17 | .cm-s-eclipse span.cm-tag { color: #170; } 18 | .cm-s-eclipse span.cm-attribute { color: #00c; } 19 | .cm-s-eclipse span.cm-link { color: #219; } 20 | .cm-s-eclipse span.cm-error { color: #f00; } 21 | 22 | .cm-s-eclipse .CodeMirror-activeline-background { background: #e8f2ff; } 23 | .cm-s-eclipse .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } 24 | -------------------------------------------------------------------------------- /static/js/codemirror/theme/elegant.css: -------------------------------------------------------------------------------- 1 | .cm-s-elegant span.cm-number, .cm-s-elegant span.cm-string, .cm-s-elegant span.cm-atom { color: #762; } 2 | .cm-s-elegant span.cm-comment { color: #262; font-style: italic; line-height: 1em; } 3 | .cm-s-elegant span.cm-meta { color: #555; font-style: italic; line-height: 1em; } 4 | .cm-s-elegant span.cm-variable { color: black; } 5 | .cm-s-elegant span.cm-variable-2 { color: #b11; } 6 | .cm-s-elegant span.cm-qualifier { color: #555; } 7 | .cm-s-elegant span.cm-keyword { color: #730; } 8 | .cm-s-elegant span.cm-builtin { color: #30a; } 9 | .cm-s-elegant span.cm-link { color: #762; } 10 | .cm-s-elegant span.cm-error { background-color: #fdd; } 11 | 12 | .cm-s-elegant .CodeMirror-activeline-background { background: #e8f2ff; } 13 | .cm-s-elegant .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } 14 | -------------------------------------------------------------------------------- /static/js/codemirror/theme/hopscotch.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: Hopscotch 4 | Author: Jan T. Sott 5 | 6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) 7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) 8 | 9 | */ 10 | 11 | .cm-s-hopscotch.CodeMirror {background: #322931; color: #d5d3d5;} 12 | .cm-s-hopscotch div.CodeMirror-selected {background: #433b42 !important;} 13 | .cm-s-hopscotch .CodeMirror-gutters {background: #322931; border-right: 0px;} 14 | .cm-s-hopscotch .CodeMirror-linenumber {color: #797379;} 15 | .cm-s-hopscotch .CodeMirror-cursor {border-left: 1px solid #989498 !important;} 16 | 17 | .cm-s-hopscotch span.cm-comment {color: #b33508;} 18 | .cm-s-hopscotch span.cm-atom {color: #c85e7c;} 19 | .cm-s-hopscotch span.cm-number {color: #c85e7c;} 20 | 21 | .cm-s-hopscotch span.cm-property, .cm-s-hopscotch span.cm-attribute {color: #8fc13e;} 22 | .cm-s-hopscotch span.cm-keyword {color: #dd464c;} 23 | .cm-s-hopscotch span.cm-string {color: #fdcc59;} 24 | 25 | .cm-s-hopscotch span.cm-variable {color: #8fc13e;} 26 | .cm-s-hopscotch span.cm-variable-2 {color: #1290bf;} 27 | .cm-s-hopscotch span.cm-def {color: #fd8b19;} 28 | .cm-s-hopscotch span.cm-error {background: #dd464c; color: #989498;} 29 | .cm-s-hopscotch span.cm-bracket {color: #d5d3d5;} 30 | .cm-s-hopscotch span.cm-tag {color: #dd464c;} 31 | .cm-s-hopscotch span.cm-link {color: #c85e7c;} 32 | 33 | .cm-s-hopscotch .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} 34 | .cm-s-hopscotch .CodeMirror-activeline-background { background: #302020; } 35 | -------------------------------------------------------------------------------- /static/js/codemirror/theme/isotope.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: Isotope 4 | Author: David Desandro / Jan T. Sott 5 | 6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) 7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) 8 | 9 | */ 10 | 11 | .cm-s-isotope.CodeMirror {background: #000000; color: #e0e0e0;} 12 | .cm-s-isotope div.CodeMirror-selected {background: #404040 !important;} 13 | .cm-s-isotope .CodeMirror-gutters {background: #000000; border-right: 0px;} 14 | .cm-s-isotope .CodeMirror-linenumber {color: #808080;} 15 | .cm-s-isotope .CodeMirror-cursor {border-left: 1px solid #c0c0c0 !important;} 16 | 17 | .cm-s-isotope span.cm-comment {color: #3300ff;} 18 | .cm-s-isotope span.cm-atom {color: #cc00ff;} 19 | .cm-s-isotope span.cm-number {color: #cc00ff;} 20 | 21 | .cm-s-isotope span.cm-property, .cm-s-isotope span.cm-attribute {color: #33ff00;} 22 | .cm-s-isotope span.cm-keyword {color: #ff0000;} 23 | .cm-s-isotope span.cm-string {color: #ff0099;} 24 | 25 | .cm-s-isotope span.cm-variable {color: #33ff00;} 26 | .cm-s-isotope span.cm-variable-2 {color: #0066ff;} 27 | .cm-s-isotope span.cm-def {color: #ff9900;} 28 | .cm-s-isotope span.cm-error {background: #ff0000; color: #c0c0c0;} 29 | .cm-s-isotope span.cm-bracket {color: #e0e0e0;} 30 | .cm-s-isotope span.cm-tag {color: #ff0000;} 31 | .cm-s-isotope span.cm-link {color: #cc00ff;} 32 | 33 | .cm-s-isotope .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} 34 | .cm-s-isotope .CodeMirror-activeline-background { background: #202020; } 35 | -------------------------------------------------------------------------------- /static/js/codemirror/theme/neat.css: -------------------------------------------------------------------------------- 1 | .cm-s-neat span.cm-comment { color: #a86; } 2 | .cm-s-neat span.cm-keyword { line-height: 1em; font-weight: bold; color: blue; } 3 | .cm-s-neat span.cm-string { color: #a22; } 4 | .cm-s-neat span.cm-builtin { line-height: 1em; font-weight: bold; color: #077; } 5 | .cm-s-neat span.cm-special { line-height: 1em; font-weight: bold; color: #0aa; } 6 | .cm-s-neat span.cm-variable { color: black; } 7 | .cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; } 8 | .cm-s-neat span.cm-meta { color: #555; } 9 | .cm-s-neat span.cm-link { color: #3a3; } 10 | 11 | .cm-s-neat .CodeMirror-activeline-background { background: #e8f2ff; } 12 | .cm-s-neat .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } 13 | -------------------------------------------------------------------------------- /static/js/codemirror/theme/neo.css: -------------------------------------------------------------------------------- 1 | /* neo theme for codemirror */ 2 | 3 | /* Color scheme */ 4 | 5 | .cm-s-neo.CodeMirror { 6 | background-color:#ffffff; 7 | color:#2e383c; 8 | line-height:1.4375; 9 | } 10 | .cm-s-neo .cm-comment { color:#75787b; } 11 | .cm-s-neo .cm-keyword, .cm-s-neo .cm-property { color:#1d75b3; } 12 | .cm-s-neo .cm-atom,.cm-s-neo .cm-number { color:#75438a; } 13 | .cm-s-neo .cm-node,.cm-s-neo .cm-tag { color:#9c3328; } 14 | .cm-s-neo .cm-string { color:#b35e14; } 15 | .cm-s-neo .cm-variable,.cm-s-neo .cm-qualifier { color:#047d65; } 16 | 17 | 18 | /* Editor styling */ 19 | 20 | .cm-s-neo pre { 21 | padding:0; 22 | } 23 | 24 | .cm-s-neo .CodeMirror-gutters { 25 | border:none; 26 | border-right:10px solid transparent; 27 | background-color:transparent; 28 | } 29 | 30 | .cm-s-neo .CodeMirror-linenumber { 31 | padding:0; 32 | color:#e0e2e5; 33 | } 34 | 35 | .cm-s-neo .CodeMirror-guttermarker { color: #1d75b3; } 36 | .cm-s-neo .CodeMirror-guttermarker-subtle { color: #e0e2e5; } 37 | 38 | .cm-s-neo .CodeMirror-cursor { 39 | width: auto; 40 | border: 0; 41 | background: rgba(155,157,162,0.37); 42 | z-index: 1; 43 | } 44 | -------------------------------------------------------------------------------- /static/js/codemirror/theme/night.css: -------------------------------------------------------------------------------- 1 | /* Loosely based on the Midnight Textmate theme */ 2 | 3 | .cm-s-night.CodeMirror { background: #0a001f; color: #f8f8f8; } 4 | .cm-s-night div.CodeMirror-selected { background: #447; } 5 | .cm-s-night .CodeMirror-line::selection, .cm-s-night .CodeMirror-line > span::selection, .cm-s-night .CodeMirror-line > span > span::selection { background: rgba(68, 68, 119, .99); } 6 | .cm-s-night .CodeMirror-line::-moz-selection, .cm-s-night .CodeMirror-line > span::-moz-selection, .cm-s-night .CodeMirror-line > span > span::-moz-selection { background: rgba(68, 68, 119, .99); } 7 | .cm-s-night .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } 8 | .cm-s-night .CodeMirror-guttermarker { color: white; } 9 | .cm-s-night .CodeMirror-guttermarker-subtle { color: #bbb; } 10 | .cm-s-night .CodeMirror-linenumber { color: #f8f8f8; } 11 | .cm-s-night .CodeMirror-cursor { border-left: 1px solid white; } 12 | 13 | .cm-s-night span.cm-comment { color: #8900d1; } 14 | .cm-s-night span.cm-atom { color: #845dc4; } 15 | .cm-s-night span.cm-number, .cm-s-night span.cm-attribute { color: #ffd500; } 16 | .cm-s-night span.cm-keyword { color: #599eff; } 17 | .cm-s-night span.cm-string { color: #37f14a; } 18 | .cm-s-night span.cm-meta { color: #7678e2; } 19 | .cm-s-night span.cm-variable-2, .cm-s-night span.cm-tag { color: #99b2ff; } 20 | .cm-s-night span.cm-variable-3, .cm-s-night span.cm-def { color: white; } 21 | .cm-s-night span.cm-bracket { color: #8da6ce; } 22 | .cm-s-night span.cm-builtin, .cm-s-night span.cm-special { color: #ff9e59; } 23 | .cm-s-night span.cm-link { color: #845dc4; } 24 | .cm-s-night span.cm-error { color: #9d1e15; } 25 | 26 | .cm-s-night .CodeMirror-activeline-background { background: #1C005A; } 27 | .cm-s-night .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; } 28 | -------------------------------------------------------------------------------- /static/js/codemirror/theme/railscasts.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: Railscasts 4 | Author: Ryan Bates (http://railscasts.com) 5 | 6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) 7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) 8 | 9 | */ 10 | 11 | .cm-s-railscasts.CodeMirror {background: #2b2b2b; color: #f4f1ed;} 12 | .cm-s-railscasts div.CodeMirror-selected {background: #272935 !important;} 13 | .cm-s-railscasts .CodeMirror-gutters {background: #2b2b2b; border-right: 0px;} 14 | .cm-s-railscasts .CodeMirror-linenumber {color: #5a647e;} 15 | .cm-s-railscasts .CodeMirror-cursor {border-left: 1px solid #d4cfc9 !important;} 16 | 17 | .cm-s-railscasts span.cm-comment {color: #bc9458;} 18 | .cm-s-railscasts span.cm-atom {color: #b6b3eb;} 19 | .cm-s-railscasts span.cm-number {color: #b6b3eb;} 20 | 21 | .cm-s-railscasts span.cm-property, .cm-s-railscasts span.cm-attribute {color: #a5c261;} 22 | .cm-s-railscasts span.cm-keyword {color: #da4939;} 23 | .cm-s-railscasts span.cm-string {color: #ffc66d;} 24 | 25 | .cm-s-railscasts span.cm-variable {color: #a5c261;} 26 | .cm-s-railscasts span.cm-variable-2 {color: #6d9cbe;} 27 | .cm-s-railscasts span.cm-def {color: #cc7833;} 28 | .cm-s-railscasts span.cm-error {background: #da4939; color: #d4cfc9;} 29 | .cm-s-railscasts span.cm-bracket {color: #f4f1ed;} 30 | .cm-s-railscasts span.cm-tag {color: #da4939;} 31 | .cm-s-railscasts span.cm-link {color: #b6b3eb;} 32 | 33 | .cm-s-railscasts .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} 34 | .cm-s-railscasts .CodeMirror-activeline-background { background: #303040; } 35 | -------------------------------------------------------------------------------- /static/js/codemirror/theme/rubyblue.css: -------------------------------------------------------------------------------- 1 | .cm-s-rubyblue.CodeMirror { background: #112435; color: white; } 2 | .cm-s-rubyblue div.CodeMirror-selected { background: #38566F; } 3 | .cm-s-rubyblue .CodeMirror-line::selection, .cm-s-rubyblue .CodeMirror-line > span::selection, .cm-s-rubyblue .CodeMirror-line > span > span::selection { background: rgba(56, 86, 111, 0.99); } 4 | .cm-s-rubyblue .CodeMirror-line::-moz-selection, .cm-s-rubyblue .CodeMirror-line > span::-moz-selection, .cm-s-rubyblue .CodeMirror-line > span > span::-moz-selection { background: rgba(56, 86, 111, 0.99); } 5 | .cm-s-rubyblue .CodeMirror-gutters { background: #1F4661; border-right: 7px solid #3E7087; } 6 | .cm-s-rubyblue .CodeMirror-guttermarker { color: white; } 7 | .cm-s-rubyblue .CodeMirror-guttermarker-subtle { color: #3E7087; } 8 | .cm-s-rubyblue .CodeMirror-linenumber { color: white; } 9 | .cm-s-rubyblue .CodeMirror-cursor { border-left: 1px solid white; } 10 | 11 | .cm-s-rubyblue span.cm-comment { color: #999; font-style:italic; line-height: 1em; } 12 | .cm-s-rubyblue span.cm-atom { color: #F4C20B; } 13 | .cm-s-rubyblue span.cm-number, .cm-s-rubyblue span.cm-attribute { color: #82C6E0; } 14 | .cm-s-rubyblue span.cm-keyword { color: #F0F; } 15 | .cm-s-rubyblue span.cm-string { color: #F08047; } 16 | .cm-s-rubyblue span.cm-meta { color: #F0F; } 17 | .cm-s-rubyblue span.cm-variable-2, .cm-s-rubyblue span.cm-tag { color: #7BD827; } 18 | .cm-s-rubyblue span.cm-variable-3, .cm-s-rubyblue span.cm-def { color: white; } 19 | .cm-s-rubyblue span.cm-bracket { color: #F0F; } 20 | .cm-s-rubyblue span.cm-link { color: #F4C20B; } 21 | .cm-s-rubyblue span.CodeMirror-matchingbracket { color:#F0F !important; } 22 | .cm-s-rubyblue span.cm-builtin, .cm-s-rubyblue span.cm-special { color: #FF9D00; } 23 | .cm-s-rubyblue span.cm-error { color: #AF2018; } 24 | 25 | .cm-s-rubyblue .CodeMirror-activeline-background { background: #173047; } 26 | -------------------------------------------------------------------------------- /static/js/codemirror/theme/tomorrow-night-bright.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: Tomorrow Night - Bright 4 | Author: Chris Kempson 5 | 6 | Port done by Gerard Braad 7 | 8 | */ 9 | 10 | .cm-s-tomorrow-night-bright.CodeMirror { background: #000000; color: #eaeaea; } 11 | .cm-s-tomorrow-night-bright div.CodeMirror-selected { background: #424242; } 12 | .cm-s-tomorrow-night-bright .CodeMirror-gutters { background: #000000; border-right: 0px; } 13 | .cm-s-tomorrow-night-bright .CodeMirror-guttermarker { color: #e78c45; } 14 | .cm-s-tomorrow-night-bright .CodeMirror-guttermarker-subtle { color: #777; } 15 | .cm-s-tomorrow-night-bright .CodeMirror-linenumber { color: #424242; } 16 | .cm-s-tomorrow-night-bright .CodeMirror-cursor { border-left: 1px solid #6A6A6A; } 17 | 18 | .cm-s-tomorrow-night-bright span.cm-comment { color: #d27b53; } 19 | .cm-s-tomorrow-night-bright span.cm-atom { color: #a16a94; } 20 | .cm-s-tomorrow-night-bright span.cm-number { color: #a16a94; } 21 | 22 | .cm-s-tomorrow-night-bright span.cm-property, .cm-s-tomorrow-night-bright span.cm-attribute { color: #99cc99; } 23 | .cm-s-tomorrow-night-bright span.cm-keyword { color: #d54e53; } 24 | .cm-s-tomorrow-night-bright span.cm-string { color: #e7c547; } 25 | 26 | .cm-s-tomorrow-night-bright span.cm-variable { color: #b9ca4a; } 27 | .cm-s-tomorrow-night-bright span.cm-variable-2 { color: #7aa6da; } 28 | .cm-s-tomorrow-night-bright span.cm-def { color: #e78c45; } 29 | .cm-s-tomorrow-night-bright span.cm-bracket { color: #eaeaea; } 30 | .cm-s-tomorrow-night-bright span.cm-tag { color: #d54e53; } 31 | .cm-s-tomorrow-night-bright span.cm-link { color: #a16a94; } 32 | .cm-s-tomorrow-night-bright span.cm-error { background: #d54e53; color: #6A6A6A; } 33 | 34 | .cm-s-tomorrow-night-bright .CodeMirror-activeline-background { background: #2a2a2a; } 35 | .cm-s-tomorrow-night-bright .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } 36 | -------------------------------------------------------------------------------- /static/js/dump.rdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yingshang/banruo/f2163cc5a6aee91d7bc6ac726d43037c480e9925/static/js/dump.rdb -------------------------------------------------------------------------------- /static/js/verificationNumbers.js: -------------------------------------------------------------------------------- 1 | function showCheck(a){ 2 | var c = document.getElementById("myCanvas"); 3 | var ctx = c.getContext("2d"); 4 | ctx.clearRect(0,0,1000,1000); 5 | ctx.font = "80px 'Microsoft Yahei'"; 6 | ctx.fillText(a,0,100); 7 | ctx.fillStyle = "rgba(255,255,255,.9)"; 8 | } 9 | var code ; 10 | function createCode(){ 11 | code = ""; 12 | var codeLength = 4; 13 | var selectChar = new Array(1,2,3,4,5,6,7,8,9,'a','b','c','d','e','f','g','h','j','k','l','m','n','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','U','V','W','X','Y','Z'); 14 | for(var i=0;i/g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('
  1. '+o.replace(/[\r\t\n]+/g,"
  2. ")+"
"),c.find(">.layui-code-h3")[0]||c.prepend('

'+(c.attr("lay-title")||e.title||"code")+(e.about?'layui.code':"")+"

");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss"); -------------------------------------------------------------------------------- /static/lib/layui/lay/modules/flow.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.2.6 MIT License By https://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="加载更多",h=l('");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),i||(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;su)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)}); -------------------------------------------------------------------------------- /static/lib/layui/lay/modules/laytpl.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.2.6 MIT License By https://www.layui.com */ 2 | ;layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error:";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)}); -------------------------------------------------------------------------------- /templates/asset/nmap.html: -------------------------------------------------------------------------------- 1 | {% load static %} 2 | 3 | 4 | 5 | 6 | 7 | 端口情况 8 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 扫描进度 27 |
28 | 29 |
30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | {% for i in rs %} 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | {% endfor %} 58 | 59 | 60 | 61 | 62 | 63 | 64 |
扫描IP扫描进度扫描时间结束时间
{{ i.ip }}{{ i.rate }}%{{ i.scantime | date:"Y-m-d H:i:s" }} {{ i.endtime | date:"Y-m-d H:i:s" }}
65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /templates/index/403.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 403-禁止访问 6 | 7 | 8 | HTTP 403 - 禁止访问 9 | 10 | -------------------------------------------------------------------------------- /templates/index/index.html: -------------------------------------------------------------------------------- 1 |

不知道要弄什么好,待续!!!

-------------------------------------------------------------------------------- /templates/pentest/check_data.html: -------------------------------------------------------------------------------- 1 | {% load static %} 2 | 3 | 4 | 5 | 6 | 7 | 查看数据包 8 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 |
28 | 29 |
30 |
数据包
31 |
{{ data }}
32 |
33 | 34 | 35 | 36 |
37 |
38 | 39 | 40 |
41 | 42 | 43 | -------------------------------------------------------------------------------- /templates/pentest/check_filter_data.html: -------------------------------------------------------------------------------- 1 | {% load static %} 2 | 3 | 4 | 5 | 6 | 7 | 查看数据包 8 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 |
28 | 29 |
30 |
数据包
31 |
{{ data }}
32 | 33 |
34 |
35 | 36 | 37 |
38 | 39 | 40 | -------------------------------------------------------------------------------- /templates/pentest/check_log.html: -------------------------------------------------------------------------------- 1 | {% load static %} 2 | 3 | 4 | 5 | 6 | 7 | 查看日志 8 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 |
28 | 29 |
30 | {% ifequal status 0 %} 31 |
数据包
32 |
{{ data }}
33 |
34 |
SQLMAP运行日志
35 |
{{ log }}
36 | {% else %} 37 |

{{ msg }}

38 | {% endifequal %} 39 |
40 |
41 | 42 | 43 |
44 | 45 | 46 | -------------------------------------------------------------------------------- /templates/pentest/check_nlog.html: -------------------------------------------------------------------------------- 1 | {% load static %} 2 | 3 | 4 | 5 | 6 | 7 | 查看日志 8 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 |
28 | 29 |
30 | {% ifequal status 0 %} 31 |
SQLMAP运行日志
32 |
{{ log }}
33 | {% else %} 34 | {{ msg }} 35 | {% endifequal %} 36 | 37 |
38 |
39 | 40 | 41 |
42 | 43 | 44 | -------------------------------------------------------------------------------- /templates/pentest/overview.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Title 6 | 7 | 8 | 9 | 10 | --------------------------------------------------------------------------------