├── .gitignore ├── .htaccess ├── INSTALL.md ├── README.md ├── clients ├── client.tgz └── scanlab │ ├── api_example.py │ ├── config.py │ ├── passwords.txt │ ├── requirements.txt │ ├── scanlab_cli.py │ └── users.txt ├── css └── scanlab.css ├── images ├── bg1.jpg ├── icons │ ├── dislike.png │ └── like.png ├── network.jpg ├── png │ ├── .DS_Store │ ├── a1.png │ ├── a2.png │ ├── ad.png │ ├── ae.png │ ├── af.png │ ├── ag.png │ ├── ai.png │ ├── al.png │ ├── am.png │ ├── an.png │ ├── ao.png │ ├── aq.png │ ├── ar.png │ ├── as.png │ ├── at.png │ ├── au.png │ ├── aw.png │ ├── ax.png │ ├── az.png │ ├── ba.png │ ├── bb.png │ ├── bd.png │ ├── be.png │ ├── bf.png │ ├── bg.png │ ├── bh.png │ ├── bi.png │ ├── bj.png │ ├── bm.png │ ├── bn.png │ ├── bo.png │ ├── br.png │ ├── bs.png │ ├── bt.png │ ├── bv.png │ ├── bw.png │ ├── by.png │ ├── bz.png │ ├── ca.png │ ├── catalonia.png │ ├── cc.png │ ├── cd.png │ ├── cf.png │ ├── cg.png │ ├── ch.png │ ├── ci.png │ ├── ck.png │ ├── cl.png │ ├── cm.png │ ├── cn.png │ ├── co.png │ ├── cr.png │ ├── cs.png │ ├── cu.png │ ├── cv.png │ ├── cx.png │ ├── cy.png │ ├── cz.png │ ├── de.png │ ├── dj.png │ ├── dk.png │ ├── dm.png │ ├── do.png │ ├── dz.png │ ├── ec.png │ ├── ee.png │ ├── eg.png │ ├── eh.png │ ├── england.png │ ├── er.png │ ├── es.png │ ├── et.png │ ├── eu.png │ ├── europeanunion.png │ ├── fam.png │ ├── fi.png │ ├── fj.png │ ├── fk.png │ ├── fm.png │ ├── fo.png │ ├── fr.png │ ├── ga.png │ ├── gb.png │ ├── gd.png │ ├── ge.png │ ├── gf.png │ ├── gh.png │ ├── gi.png │ ├── gl.png │ ├── gm.png │ ├── gn.png │ ├── gp.png │ ├── gq.png │ ├── gr.png │ ├── gs.png │ ├── gt.png │ ├── gu.png │ ├── gw.png │ ├── gy.png │ ├── hk.png │ ├── hm.png │ ├── hn.png │ ├── hr.png │ ├── ht.png │ ├── hu.png │ ├── id.png │ ├── ie.png │ ├── il.png │ ├── im.png │ ├── in.png │ ├── io.png │ ├── iq.png │ ├── ir.png │ ├── is.png │ ├── it.png │ ├── jm.png │ ├── jo.png │ ├── jp.png │ ├── ke.png │ ├── kg.png │ ├── kh.png │ ├── ki.png │ ├── km.png │ ├── kn.png │ ├── kp.png │ ├── kr.png │ ├── kw.png │ ├── ky.png │ ├── kz.png │ ├── la.png │ ├── lb.png │ ├── lc.png │ ├── li.png │ ├── lk.png │ ├── lr.png │ ├── ls.png │ ├── lt.png │ ├── lu.png │ ├── lv.png │ ├── ly.png │ ├── ma.png │ ├── mc.png │ ├── md.png │ ├── me.png │ ├── mg.png │ ├── mh.png │ ├── mk.png │ ├── ml.png │ ├── mm.png │ ├── mn.png │ ├── mo.png │ ├── mp.png │ ├── mq.png │ ├── mr.png │ ├── ms.png │ ├── mt.png │ ├── mu.png │ ├── mv.png │ ├── mw.png │ ├── mx.png │ ├── my.png │ ├── mz.png │ ├── na.png │ ├── nc.png │ ├── ne.png │ ├── nf.png │ ├── ng.png │ ├── ni.png │ ├── nl.png │ ├── no.png │ ├── np.png │ ├── nr.png │ ├── nu.png │ ├── nz.png │ ├── o1.png │ ├── om.png │ ├── pa.png │ ├── pe.png │ ├── pf.png │ ├── pg.png │ ├── ph.png │ ├── pk.png │ ├── pl.png │ ├── pm.png │ ├── pn.png │ ├── pr.png │ ├── ps.png │ ├── pt.png │ ├── pw.png │ ├── py.png │ ├── qa.png │ ├── re.png │ ├── ro.png │ ├── rs.png │ ├── ru.png │ ├── rw.png │ ├── sa.png │ ├── sb.png │ ├── sc.png │ ├── scotland.png │ ├── sd.png │ ├── se.png │ ├── sg.png │ ├── sh.png │ ├── si.png │ ├── sj.png │ ├── sk.png │ ├── sl.png │ ├── sm.png │ ├── sn.png │ ├── so.png │ ├── sr.png │ ├── st.png │ ├── sv.png │ ├── sy.png │ ├── sz.png │ ├── tc.png │ ├── td.png │ ├── tf.png │ ├── tg.png │ ├── th.png │ ├── tj.png │ ├── tk.png │ ├── tl.png │ ├── tm.png │ ├── tn.png │ ├── to.png │ ├── tr.png │ ├── tt.png │ ├── tv.png │ ├── tw.png │ ├── tz.png │ ├── ua.png │ ├── ug.png │ ├── um.png │ ├── us.png │ ├── uy.png │ ├── uz.png │ ├── va.png │ ├── vc.png │ ├── ve.png │ ├── vg.png │ ├── vi.png │ ├── vn.png │ ├── vu.png │ ├── wales.png │ ├── wf.png │ ├── ws.png │ ├── ye.png │ ├── yt.png │ ├── za.png │ ├── zm.png │ └── zw.png ├── readme.txt └── search.png ├── inc ├── base_functions.php ├── classes │ ├── api.php │ ├── auth.php │ ├── overview.php │ ├── report.php │ ├── root.php │ ├── rss.php │ ├── search.php │ ├── static.php │ └── user.php ├── core.php ├── db.php ├── example.settings.php ├── html.php ├── libraries │ ├── Twig │ │ ├── Autoloader.php │ │ ├── Compiler.php │ │ ├── CompilerInterface.php │ │ ├── Environment.php │ │ ├── Error.php │ │ ├── Error │ │ │ ├── Loader.php │ │ │ ├── Runtime.php │ │ │ └── Syntax.php │ │ ├── ExistsLoaderInterface.php │ │ ├── ExpressionParser.php │ │ ├── Extension.php │ │ ├── Extension │ │ │ ├── Core.php │ │ │ ├── Debug.php │ │ │ ├── Escaper.php │ │ │ ├── Optimizer.php │ │ │ ├── Sandbox.php │ │ │ ├── Staging.php │ │ │ └── StringLoader.php │ │ ├── ExtensionInterface.php │ │ ├── Filter.php │ │ ├── Filter │ │ │ ├── Function.php │ │ │ ├── Method.php │ │ │ └── Node.php │ │ ├── FilterCallableInterface.php │ │ ├── FilterInterface.php │ │ ├── Function.php │ │ ├── Function │ │ │ ├── Function.php │ │ │ ├── Method.php │ │ │ └── Node.php │ │ ├── FunctionCallableInterface.php │ │ ├── FunctionInterface.php │ │ ├── Lexer.php │ │ ├── LexerInterface.php │ │ ├── Loader │ │ │ ├── Array.php │ │ │ ├── Chain.php │ │ │ ├── Filesystem.php │ │ │ └── String.php │ │ ├── LoaderInterface.php │ │ ├── Markup.php │ │ ├── Node.php │ │ ├── Node │ │ │ ├── AutoEscape.php │ │ │ ├── Block.php │ │ │ ├── BlockReference.php │ │ │ ├── Body.php │ │ │ ├── Do.php │ │ │ ├── Embed.php │ │ │ ├── Expression.php │ │ │ ├── Expression │ │ │ │ ├── Array.php │ │ │ │ ├── AssignName.php │ │ │ │ ├── Binary.php │ │ │ │ ├── Binary │ │ │ │ │ ├── Add.php │ │ │ │ │ ├── And.php │ │ │ │ │ ├── BitwiseAnd.php │ │ │ │ │ ├── BitwiseOr.php │ │ │ │ │ ├── BitwiseXor.php │ │ │ │ │ ├── Concat.php │ │ │ │ │ ├── Div.php │ │ │ │ │ ├── EndsWith.php │ │ │ │ │ ├── Equal.php │ │ │ │ │ ├── FloorDiv.php │ │ │ │ │ ├── Greater.php │ │ │ │ │ ├── GreaterEqual.php │ │ │ │ │ ├── In.php │ │ │ │ │ ├── Less.php │ │ │ │ │ ├── LessEqual.php │ │ │ │ │ ├── Matches.php │ │ │ │ │ ├── Mod.php │ │ │ │ │ ├── Mul.php │ │ │ │ │ ├── NotEqual.php │ │ │ │ │ ├── NotIn.php │ │ │ │ │ ├── Or.php │ │ │ │ │ ├── Power.php │ │ │ │ │ ├── Range.php │ │ │ │ │ ├── StartsWith.php │ │ │ │ │ └── Sub.php │ │ │ │ ├── BlockReference.php │ │ │ │ ├── Call.php │ │ │ │ ├── Conditional.php │ │ │ │ ├── Constant.php │ │ │ │ ├── ExtensionReference.php │ │ │ │ ├── Filter.php │ │ │ │ ├── Filter │ │ │ │ │ └── Default.php │ │ │ │ ├── Function.php │ │ │ │ ├── GetAttr.php │ │ │ │ ├── MethodCall.php │ │ │ │ ├── Name.php │ │ │ │ ├── Parent.php │ │ │ │ ├── TempName.php │ │ │ │ ├── Test.php │ │ │ │ ├── Test │ │ │ │ │ ├── Constant.php │ │ │ │ │ ├── Defined.php │ │ │ │ │ ├── Divisibleby.php │ │ │ │ │ ├── Even.php │ │ │ │ │ ├── Null.php │ │ │ │ │ ├── Odd.php │ │ │ │ │ └── Sameas.php │ │ │ │ ├── Unary.php │ │ │ │ └── Unary │ │ │ │ │ ├── Neg.php │ │ │ │ │ ├── Not.php │ │ │ │ │ └── Pos.php │ │ │ ├── Flush.php │ │ │ ├── For.php │ │ │ ├── ForLoop.php │ │ │ ├── If.php │ │ │ ├── Import.php │ │ │ ├── Include.php │ │ │ ├── Macro.php │ │ │ ├── Module.php │ │ │ ├── Print.php │ │ │ ├── Sandbox.php │ │ │ ├── SandboxedModule.php │ │ │ ├── SandboxedPrint.php │ │ │ ├── Set.php │ │ │ ├── SetTemp.php │ │ │ ├── Spaceless.php │ │ │ └── Text.php │ │ ├── NodeInterface.php │ │ ├── NodeOutputInterface.php │ │ ├── NodeTraverser.php │ │ ├── NodeVisitor │ │ │ ├── Escaper.php │ │ │ ├── Optimizer.php │ │ │ ├── SafeAnalysis.php │ │ │ └── Sandbox.php │ │ ├── NodeVisitorInterface.php │ │ ├── Parser.php │ │ ├── ParserInterface.php │ │ ├── Sandbox │ │ │ ├── SecurityError.php │ │ │ ├── SecurityPolicy.php │ │ │ └── SecurityPolicyInterface.php │ │ ├── SimpleFilter.php │ │ ├── SimpleFunction.php │ │ ├── SimpleTest.php │ │ ├── Template.php │ │ ├── TemplateInterface.php │ │ ├── Test.php │ │ ├── Test │ │ │ ├── Function.php │ │ │ ├── IntegrationTestCase.php │ │ │ ├── Method.php │ │ │ ├── Node.php │ │ │ └── NodeTestCase.php │ │ ├── TestCallableInterface.php │ │ ├── TestInterface.php │ │ ├── Token.php │ │ ├── TokenParser.php │ │ ├── TokenParser │ │ │ ├── AutoEscape.php │ │ │ ├── Block.php │ │ │ ├── Do.php │ │ │ ├── Embed.php │ │ │ ├── Extends.php │ │ │ ├── Filter.php │ │ │ ├── Flush.php │ │ │ ├── For.php │ │ │ ├── From.php │ │ │ ├── If.php │ │ │ ├── Import.php │ │ │ ├── Include.php │ │ │ ├── Macro.php │ │ │ ├── Sandbox.php │ │ │ ├── Set.php │ │ │ ├── Spaceless.php │ │ │ └── Use.php │ │ ├── TokenParserBroker.php │ │ ├── TokenParserBrokerInterface.php │ │ ├── TokenParserInterface.php │ │ └── TokenStream.php │ ├── captcha │ │ ├── LICENSE.txt │ │ ├── captcha.php │ │ └── resources │ │ │ ├── fonts │ │ │ ├── AntykwaBold.ttf │ │ │ ├── Candice.ttf │ │ │ ├── Ding-DongDaddyO.ttf │ │ │ ├── Duality.ttf │ │ │ ├── Heineken.ttf │ │ │ ├── Jura.ttf │ │ │ ├── StayPuft.ttf │ │ │ ├── TimesNewRomanBold.ttf │ │ │ └── VeraSansBold.ttf │ │ │ ├── tools │ │ │ └── dictionary-import │ │ │ │ ├── README.txt │ │ │ │ ├── importwords.php │ │ │ │ ├── sample-words-en.txt │ │ │ │ └── sample-words-es.txt │ │ │ └── words │ │ │ ├── en.php │ │ │ └── es.php │ └── glue.php ├── scanlab.php ├── search_functions.php ├── templates │ ├── auth │ │ ├── login.html │ │ └── register.html │ ├── error.html │ ├── error_page.php │ ├── footer.html │ ├── header.html │ ├── home.html │ ├── navi.html │ ├── overview.html │ ├── report.html │ ├── results.html │ ├── root │ │ ├── stats.html │ │ └── users.html │ ├── rss.html │ ├── search_form.html │ ├── statique │ │ └── js.html │ └── user │ │ ├── favorites.html │ │ └── panel.html └── urls.php ├── index.php ├── install.php ├── js ├── jquery.cookie.js ├── jquery.js ├── root.js └── scanlab.js ├── license.txt ├── other └── scanlab.nginx.conf └── worker.php /.gitignore: -------------------------------------------------------------------------------- 1 | inc/settings.php 2 | -------------------------------------------------------------------------------- /.htaccess: -------------------------------------------------------------------------------- 1 | 2 | RewriteEngine On 3 | RewriteCond %{REQUEST_FILENAME} !-d 4 | RewriteCond %{REQUEST_FILENAME} !-f 5 | RewriteRule ^(.*)$ index.php [L,QSA] 6 | 7 | 8 | php_value upload_max_filesize 10M 9 | php_value post_max_size 10M 10 | php_value memory_limit 32M 11 | -------------------------------------------------------------------------------- /INSTALL.md: -------------------------------------------------------------------------------- 1 | # Server installation guide. 2 | 3 | ## Easy way using Apache: 4 | 5 | 1) On debian/ubuntu/kali run this commands as root: 6 | 7 | apt-get install apache2 mongodb libapache2-mod-php5 php5-cli php5-mongodb php5-gd php5-geoip 8 | 9 | a2enmod rewrite && php5enmod mongo && service apache2 restart 10 | 11 | See IMPORTANT NOTES if you have any troubles. 12 | 13 | 2) You need to configure your apache server. Make sure you set "AllowOverride" option to "All". 14 | 15 | 3) Upload or "git clone" Scanlab sources to your prefered folder. 16 | 17 | 4) Edit file 'inc/example.settings.php' and move it to 'inc/settings.php'. 18 | 19 | 5) Go to http://your.scanlab.domain.com/install.php and set password for your ROOT user. 20 | 21 | 22 | ## Using nginx for better performance (for advanced users): 23 | 24 | Install these packages: 25 | 26 | nginx-full mongodb php5-fpm php5-cli 27 | php5-mongodb php5-gd php5-geoip 28 | 29 | Example nginx configuration file can be found in 'other' folder. 30 | 31 | Then see instructions for apache and do your best. 32 | 33 | ## IMPORTANT NOTES: 34 | 35 | **Debian Wheezy/Kali Linux** users can find php5-mongodb package in backports repository. 36 | 37 | deb http://http.debian.net/debian wheezy-backports main 38 | 39 | If you are using newest version of **Ubuntu**, you will also **need to install**: 40 | 41 | php5-json -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Scanlab - deep web search engine 2 | 3 | Create your own deep web search engine from [nmap](http://nmap.org/) XML reports! 4 | 5 | Project home at [scanlab.info.tm](http://scanlab.info.tm) 6 | 7 | [Contact developer](mailto:icarus@network.stalker.fi) 8 | -------------------------------------------------------------------------------- /clients/client.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/clients/client.tgz -------------------------------------------------------------------------------- /clients/scanlab/requirements.txt: -------------------------------------------------------------------------------- 1 | PySocks==1.5.0 2 | argparse==1.2.1 3 | pygeoip==0.3.1 4 | sleekxmpp==1.3.1 5 | wsgiref==0.1.2 6 | -------------------------------------------------------------------------------- /clients/scanlab/users.txt: -------------------------------------------------------------------------------- 1 | root 2 | admin 3 | administrator 4 | webadmin 5 | sysadmin 6 | netadmin 7 | guest 8 | user 9 | web 10 | test 11 | -------------------------------------------------------------------------------- /images/bg1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/bg1.jpg -------------------------------------------------------------------------------- /images/icons/dislike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/icons/dislike.png -------------------------------------------------------------------------------- /images/icons/like.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/icons/like.png -------------------------------------------------------------------------------- /images/network.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/network.jpg -------------------------------------------------------------------------------- /images/png/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/.DS_Store -------------------------------------------------------------------------------- /images/png/a1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/a1.png -------------------------------------------------------------------------------- /images/png/a2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/a2.png -------------------------------------------------------------------------------- /images/png/ad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ad.png -------------------------------------------------------------------------------- /images/png/ae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ae.png -------------------------------------------------------------------------------- /images/png/af.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/af.png -------------------------------------------------------------------------------- /images/png/ag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ag.png -------------------------------------------------------------------------------- /images/png/ai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ai.png -------------------------------------------------------------------------------- /images/png/al.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/al.png -------------------------------------------------------------------------------- /images/png/am.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/am.png -------------------------------------------------------------------------------- /images/png/an.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/an.png -------------------------------------------------------------------------------- /images/png/ao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ao.png -------------------------------------------------------------------------------- /images/png/aq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/aq.png -------------------------------------------------------------------------------- /images/png/ar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ar.png -------------------------------------------------------------------------------- /images/png/as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/as.png -------------------------------------------------------------------------------- /images/png/at.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/at.png -------------------------------------------------------------------------------- /images/png/au.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/au.png -------------------------------------------------------------------------------- /images/png/aw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/aw.png -------------------------------------------------------------------------------- /images/png/ax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ax.png -------------------------------------------------------------------------------- /images/png/az.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/az.png -------------------------------------------------------------------------------- /images/png/ba.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ba.png -------------------------------------------------------------------------------- /images/png/bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bb.png -------------------------------------------------------------------------------- /images/png/bd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bd.png -------------------------------------------------------------------------------- /images/png/be.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/be.png -------------------------------------------------------------------------------- /images/png/bf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bf.png -------------------------------------------------------------------------------- /images/png/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bg.png -------------------------------------------------------------------------------- /images/png/bh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bh.png -------------------------------------------------------------------------------- /images/png/bi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bi.png -------------------------------------------------------------------------------- /images/png/bj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bj.png -------------------------------------------------------------------------------- /images/png/bm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bm.png -------------------------------------------------------------------------------- /images/png/bn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bn.png -------------------------------------------------------------------------------- /images/png/bo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bo.png -------------------------------------------------------------------------------- /images/png/br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/br.png -------------------------------------------------------------------------------- /images/png/bs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bs.png -------------------------------------------------------------------------------- /images/png/bt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bt.png -------------------------------------------------------------------------------- /images/png/bv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bv.png -------------------------------------------------------------------------------- /images/png/bw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bw.png -------------------------------------------------------------------------------- /images/png/by.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/by.png -------------------------------------------------------------------------------- /images/png/bz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bz.png -------------------------------------------------------------------------------- /images/png/ca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ca.png -------------------------------------------------------------------------------- /images/png/catalonia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/catalonia.png -------------------------------------------------------------------------------- /images/png/cc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cc.png -------------------------------------------------------------------------------- /images/png/cd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cd.png -------------------------------------------------------------------------------- /images/png/cf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cf.png -------------------------------------------------------------------------------- /images/png/cg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cg.png -------------------------------------------------------------------------------- /images/png/ch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ch.png -------------------------------------------------------------------------------- /images/png/ci.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ci.png -------------------------------------------------------------------------------- /images/png/ck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ck.png -------------------------------------------------------------------------------- /images/png/cl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cl.png -------------------------------------------------------------------------------- /images/png/cm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cm.png -------------------------------------------------------------------------------- /images/png/cn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cn.png -------------------------------------------------------------------------------- /images/png/co.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/co.png -------------------------------------------------------------------------------- /images/png/cr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cr.png -------------------------------------------------------------------------------- /images/png/cs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cs.png -------------------------------------------------------------------------------- /images/png/cu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cu.png -------------------------------------------------------------------------------- /images/png/cv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cv.png -------------------------------------------------------------------------------- /images/png/cx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cx.png -------------------------------------------------------------------------------- /images/png/cy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cy.png -------------------------------------------------------------------------------- /images/png/cz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cz.png -------------------------------------------------------------------------------- /images/png/de.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/de.png -------------------------------------------------------------------------------- /images/png/dj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/dj.png -------------------------------------------------------------------------------- /images/png/dk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/dk.png -------------------------------------------------------------------------------- /images/png/dm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/dm.png -------------------------------------------------------------------------------- /images/png/do.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/do.png -------------------------------------------------------------------------------- /images/png/dz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/dz.png -------------------------------------------------------------------------------- /images/png/ec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ec.png -------------------------------------------------------------------------------- /images/png/ee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ee.png -------------------------------------------------------------------------------- /images/png/eg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/eg.png -------------------------------------------------------------------------------- /images/png/eh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/eh.png -------------------------------------------------------------------------------- /images/png/england.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/england.png -------------------------------------------------------------------------------- /images/png/er.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/er.png -------------------------------------------------------------------------------- /images/png/es.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/es.png -------------------------------------------------------------------------------- /images/png/et.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/et.png -------------------------------------------------------------------------------- /images/png/eu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/eu.png -------------------------------------------------------------------------------- /images/png/europeanunion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/europeanunion.png -------------------------------------------------------------------------------- /images/png/fam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/fam.png -------------------------------------------------------------------------------- /images/png/fi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/fi.png -------------------------------------------------------------------------------- /images/png/fj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/fj.png -------------------------------------------------------------------------------- /images/png/fk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/fk.png -------------------------------------------------------------------------------- /images/png/fm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/fm.png -------------------------------------------------------------------------------- /images/png/fo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/fo.png -------------------------------------------------------------------------------- /images/png/fr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/fr.png -------------------------------------------------------------------------------- /images/png/ga.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ga.png -------------------------------------------------------------------------------- /images/png/gb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gb.png -------------------------------------------------------------------------------- /images/png/gd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gd.png -------------------------------------------------------------------------------- /images/png/ge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ge.png -------------------------------------------------------------------------------- /images/png/gf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gf.png -------------------------------------------------------------------------------- /images/png/gh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gh.png -------------------------------------------------------------------------------- /images/png/gi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gi.png -------------------------------------------------------------------------------- /images/png/gl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gl.png -------------------------------------------------------------------------------- /images/png/gm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gm.png -------------------------------------------------------------------------------- /images/png/gn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gn.png -------------------------------------------------------------------------------- /images/png/gp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gp.png -------------------------------------------------------------------------------- /images/png/gq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gq.png -------------------------------------------------------------------------------- /images/png/gr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gr.png -------------------------------------------------------------------------------- /images/png/gs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gs.png -------------------------------------------------------------------------------- /images/png/gt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gt.png -------------------------------------------------------------------------------- /images/png/gu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gu.png -------------------------------------------------------------------------------- /images/png/gw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gw.png -------------------------------------------------------------------------------- /images/png/gy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gy.png -------------------------------------------------------------------------------- /images/png/hk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/hk.png -------------------------------------------------------------------------------- /images/png/hm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/hm.png -------------------------------------------------------------------------------- /images/png/hn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/hn.png -------------------------------------------------------------------------------- /images/png/hr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/hr.png -------------------------------------------------------------------------------- /images/png/ht.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ht.png -------------------------------------------------------------------------------- /images/png/hu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/hu.png -------------------------------------------------------------------------------- /images/png/id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/id.png -------------------------------------------------------------------------------- /images/png/ie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ie.png -------------------------------------------------------------------------------- /images/png/il.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/il.png -------------------------------------------------------------------------------- /images/png/im.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/im.png -------------------------------------------------------------------------------- /images/png/in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/in.png -------------------------------------------------------------------------------- /images/png/io.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/io.png -------------------------------------------------------------------------------- /images/png/iq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/iq.png -------------------------------------------------------------------------------- /images/png/ir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ir.png -------------------------------------------------------------------------------- /images/png/is.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/is.png -------------------------------------------------------------------------------- /images/png/it.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/it.png -------------------------------------------------------------------------------- /images/png/jm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/jm.png -------------------------------------------------------------------------------- /images/png/jo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/jo.png -------------------------------------------------------------------------------- /images/png/jp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/jp.png -------------------------------------------------------------------------------- /images/png/ke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ke.png -------------------------------------------------------------------------------- /images/png/kg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/kg.png -------------------------------------------------------------------------------- /images/png/kh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/kh.png -------------------------------------------------------------------------------- /images/png/ki.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ki.png -------------------------------------------------------------------------------- /images/png/km.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/km.png -------------------------------------------------------------------------------- /images/png/kn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/kn.png -------------------------------------------------------------------------------- /images/png/kp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/kp.png -------------------------------------------------------------------------------- /images/png/kr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/kr.png -------------------------------------------------------------------------------- /images/png/kw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/kw.png -------------------------------------------------------------------------------- /images/png/ky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ky.png -------------------------------------------------------------------------------- /images/png/kz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/kz.png -------------------------------------------------------------------------------- /images/png/la.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/la.png -------------------------------------------------------------------------------- /images/png/lb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/lb.png -------------------------------------------------------------------------------- /images/png/lc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/lc.png -------------------------------------------------------------------------------- /images/png/li.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/li.png -------------------------------------------------------------------------------- /images/png/lk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/lk.png -------------------------------------------------------------------------------- /images/png/lr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/lr.png -------------------------------------------------------------------------------- /images/png/ls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ls.png -------------------------------------------------------------------------------- /images/png/lt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/lt.png -------------------------------------------------------------------------------- /images/png/lu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/lu.png -------------------------------------------------------------------------------- /images/png/lv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/lv.png -------------------------------------------------------------------------------- /images/png/ly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ly.png -------------------------------------------------------------------------------- /images/png/ma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ma.png -------------------------------------------------------------------------------- /images/png/mc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mc.png -------------------------------------------------------------------------------- /images/png/md.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/md.png -------------------------------------------------------------------------------- /images/png/me.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/me.png -------------------------------------------------------------------------------- /images/png/mg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mg.png -------------------------------------------------------------------------------- /images/png/mh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mh.png -------------------------------------------------------------------------------- /images/png/mk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mk.png -------------------------------------------------------------------------------- /images/png/ml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ml.png -------------------------------------------------------------------------------- /images/png/mm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mm.png -------------------------------------------------------------------------------- /images/png/mn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mn.png -------------------------------------------------------------------------------- /images/png/mo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mo.png -------------------------------------------------------------------------------- /images/png/mp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mp.png -------------------------------------------------------------------------------- /images/png/mq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mq.png -------------------------------------------------------------------------------- /images/png/mr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mr.png -------------------------------------------------------------------------------- /images/png/ms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ms.png -------------------------------------------------------------------------------- /images/png/mt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mt.png -------------------------------------------------------------------------------- /images/png/mu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mu.png -------------------------------------------------------------------------------- /images/png/mv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mv.png -------------------------------------------------------------------------------- /images/png/mw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mw.png -------------------------------------------------------------------------------- /images/png/mx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mx.png -------------------------------------------------------------------------------- /images/png/my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/my.png -------------------------------------------------------------------------------- /images/png/mz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mz.png -------------------------------------------------------------------------------- /images/png/na.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/na.png -------------------------------------------------------------------------------- /images/png/nc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/nc.png -------------------------------------------------------------------------------- /images/png/ne.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ne.png -------------------------------------------------------------------------------- /images/png/nf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/nf.png -------------------------------------------------------------------------------- /images/png/ng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ng.png -------------------------------------------------------------------------------- /images/png/ni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ni.png -------------------------------------------------------------------------------- /images/png/nl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/nl.png -------------------------------------------------------------------------------- /images/png/no.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/no.png -------------------------------------------------------------------------------- /images/png/np.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/np.png -------------------------------------------------------------------------------- /images/png/nr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/nr.png -------------------------------------------------------------------------------- /images/png/nu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/nu.png -------------------------------------------------------------------------------- /images/png/nz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/nz.png -------------------------------------------------------------------------------- /images/png/o1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/o1.png -------------------------------------------------------------------------------- /images/png/om.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/om.png -------------------------------------------------------------------------------- /images/png/pa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pa.png -------------------------------------------------------------------------------- /images/png/pe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pe.png -------------------------------------------------------------------------------- /images/png/pf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pf.png -------------------------------------------------------------------------------- /images/png/pg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pg.png -------------------------------------------------------------------------------- /images/png/ph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ph.png -------------------------------------------------------------------------------- /images/png/pk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pk.png -------------------------------------------------------------------------------- /images/png/pl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pl.png -------------------------------------------------------------------------------- /images/png/pm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pm.png -------------------------------------------------------------------------------- /images/png/pn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pn.png -------------------------------------------------------------------------------- /images/png/pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pr.png -------------------------------------------------------------------------------- /images/png/ps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ps.png -------------------------------------------------------------------------------- /images/png/pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pt.png -------------------------------------------------------------------------------- /images/png/pw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pw.png -------------------------------------------------------------------------------- /images/png/py.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/py.png -------------------------------------------------------------------------------- /images/png/qa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/qa.png -------------------------------------------------------------------------------- /images/png/re.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/re.png -------------------------------------------------------------------------------- /images/png/ro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ro.png -------------------------------------------------------------------------------- /images/png/rs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/rs.png -------------------------------------------------------------------------------- /images/png/ru.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ru.png -------------------------------------------------------------------------------- /images/png/rw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/rw.png -------------------------------------------------------------------------------- /images/png/sa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sa.png -------------------------------------------------------------------------------- /images/png/sb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sb.png -------------------------------------------------------------------------------- /images/png/sc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sc.png -------------------------------------------------------------------------------- /images/png/scotland.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/scotland.png -------------------------------------------------------------------------------- /images/png/sd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sd.png -------------------------------------------------------------------------------- /images/png/se.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/se.png -------------------------------------------------------------------------------- /images/png/sg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sg.png -------------------------------------------------------------------------------- /images/png/sh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sh.png -------------------------------------------------------------------------------- /images/png/si.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/si.png -------------------------------------------------------------------------------- /images/png/sj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sj.png -------------------------------------------------------------------------------- /images/png/sk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sk.png -------------------------------------------------------------------------------- /images/png/sl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sl.png -------------------------------------------------------------------------------- /images/png/sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sm.png -------------------------------------------------------------------------------- /images/png/sn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sn.png -------------------------------------------------------------------------------- /images/png/so.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/so.png -------------------------------------------------------------------------------- /images/png/sr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sr.png -------------------------------------------------------------------------------- /images/png/st.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/st.png -------------------------------------------------------------------------------- /images/png/sv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sv.png -------------------------------------------------------------------------------- /images/png/sy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sy.png -------------------------------------------------------------------------------- /images/png/sz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sz.png -------------------------------------------------------------------------------- /images/png/tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tc.png -------------------------------------------------------------------------------- /images/png/td.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/td.png -------------------------------------------------------------------------------- /images/png/tf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tf.png -------------------------------------------------------------------------------- /images/png/tg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tg.png -------------------------------------------------------------------------------- /images/png/th.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/th.png -------------------------------------------------------------------------------- /images/png/tj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tj.png -------------------------------------------------------------------------------- /images/png/tk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tk.png -------------------------------------------------------------------------------- /images/png/tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tl.png -------------------------------------------------------------------------------- /images/png/tm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tm.png -------------------------------------------------------------------------------- /images/png/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tn.png -------------------------------------------------------------------------------- /images/png/to.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/to.png -------------------------------------------------------------------------------- /images/png/tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tr.png -------------------------------------------------------------------------------- /images/png/tt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tt.png -------------------------------------------------------------------------------- /images/png/tv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tv.png -------------------------------------------------------------------------------- /images/png/tw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tw.png -------------------------------------------------------------------------------- /images/png/tz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tz.png -------------------------------------------------------------------------------- /images/png/ua.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ua.png -------------------------------------------------------------------------------- /images/png/ug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ug.png -------------------------------------------------------------------------------- /images/png/um.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/um.png -------------------------------------------------------------------------------- /images/png/us.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/us.png -------------------------------------------------------------------------------- /images/png/uy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/uy.png -------------------------------------------------------------------------------- /images/png/uz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/uz.png -------------------------------------------------------------------------------- /images/png/va.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/va.png -------------------------------------------------------------------------------- /images/png/vc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/vc.png -------------------------------------------------------------------------------- /images/png/ve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ve.png -------------------------------------------------------------------------------- /images/png/vg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/vg.png -------------------------------------------------------------------------------- /images/png/vi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/vi.png -------------------------------------------------------------------------------- /images/png/vn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/vn.png -------------------------------------------------------------------------------- /images/png/vu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/vu.png -------------------------------------------------------------------------------- /images/png/wales.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/wales.png -------------------------------------------------------------------------------- /images/png/wf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/wf.png -------------------------------------------------------------------------------- /images/png/ws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ws.png -------------------------------------------------------------------------------- /images/png/ye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ye.png -------------------------------------------------------------------------------- /images/png/yt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/yt.png -------------------------------------------------------------------------------- /images/png/za.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/za.png -------------------------------------------------------------------------------- /images/png/zm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/zm.png -------------------------------------------------------------------------------- /images/png/zw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/zw.png -------------------------------------------------------------------------------- /images/readme.txt: -------------------------------------------------------------------------------- 1 | Flag icons - http://www.famfamfam.com 2 | 3 | These icons are public domain, and as such are free for any use (attribution appreciated but not required). 4 | 5 | Note that these flags are named using the ISO3166-1 alpha-2 country codes where appropriate. A list of codes can be found at http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 6 | 7 | If you find these icons useful, please donate via paypal to mjames@gmail.com (or click the donate button available at http://www.famfamfam.com/lab/icons/silk) 8 | 9 | Contact: mjames@gmail.com -------------------------------------------------------------------------------- /images/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/search.png -------------------------------------------------------------------------------- /inc/classes/overview.php: -------------------------------------------------------------------------------- 1 | user) redirect(REL_URL."auth/login"); 11 | } 12 | } 13 | 14 | function GET($matches) { 15 | if (USE_WORKER === true) { 16 | $distinct = $this->db->cache->findOne(array("key" => "distinct_cache")); 17 | if ($distinct == NULL) { 18 | if ($this->user === ROOT_USER) { 19 | $this->renderError("No cached version available. You can manually update cache at root panel."); 20 | } 21 | $this->renderError("No cached version available."); 22 | } 23 | $distinct = unserialize($distinct["value"]); 24 | } else { 25 | $distinct = getDistinct($this->db); 26 | } 27 | 28 | function cmp($a, $b){ 29 | return $b['count'] - $a['count']; 30 | } 31 | 32 | usort($distinct['ports'], 'cmp'); 33 | usort($distinct['services'], 'cmp'); 34 | usort($distinct['countries'], 'cmp'); 35 | usort($distinct['tags'], 'cmp'); 36 | $distinct["total_count"] = $this->db->reports->count(); 37 | $this->view('overview.html', $distinct); 38 | } 39 | 40 | } 41 | 42 | ?> 43 | -------------------------------------------------------------------------------- /inc/classes/report.php: -------------------------------------------------------------------------------- 1 | checkLogin() && IS_PRIVATE === true) { 11 | redirect(REL_URL.'auth/login'); 12 | } 13 | 14 | // ID variable 15 | if (isset($matches[1]) && !empty($matches[1])) { 16 | $id = (string) $matches[1]; 17 | } else { 18 | showError("no id set"); 19 | } 20 | 21 | $result = $this->checkReportId($id); 22 | libxml_use_internal_errors(true); 23 | libxml_disable_entity_loader(true); // disable doctype injections 24 | if (preg_match('/renderError('invalid xml in this entry'); 29 | //variables to pass to the template 30 | $vars = array( 31 | "id" => $id, 32 | "result" => $result, 33 | "host" => $host 34 | ); 35 | 36 | $this->view("report.html", $vars); 37 | } 38 | } 39 | 40 | 41 | ?> 42 | -------------------------------------------------------------------------------- /inc/classes/rss.php: -------------------------------------------------------------------------------- 1 | user = $this->checkAuth($user, $hash, true); 16 | if (!$this->user) { 17 | showError("Wrong details"); 18 | } 19 | if ($this->user["api_key"] != "1") { 20 | showError("You are not API user"); 21 | } 22 | } 23 | 24 | $this->server_name = $_SERVER["SERVER_NAME"]; 25 | if (!empty($_SERVER["HTTPS"])) { 26 | $this->protocol = "https"; 27 | } else { 28 | $this->protocol = "http"; 29 | } 30 | } 31 | 32 | public function GET($matches) { 33 | if (isset($matches[1]) && !empty($matches[1]) ) { 34 | $mode = (string) $matches[1]; 35 | switch ($mode) { 36 | case "search": 37 | $q = getSearchQuery(); 38 | $db_query = queryFromSearchArray(queryToArray($q)); 39 | $vars["results"] = $this->db->reports->find($db_query) 40 | ->sort(array("timestamp" => -1))->limit(20); 41 | $vars["description"] = "search feed"; 42 | $vars["server_name"] = $this->server_name; 43 | $vars["protocol"] = $this->protocol; 44 | 45 | $this->output('application/xml'); 46 | $this->view("rss.html", $vars); 47 | break; 48 | default: 49 | die("wrong mode"); 50 | } 51 | } 52 | } 53 | 54 | } 55 | 56 | ?> 57 | -------------------------------------------------------------------------------- /inc/classes/static.php: -------------------------------------------------------------------------------- 1 | view('statique/js.html'); 14 | break; 15 | case "captcha": 16 | $captcha = new SimpleCaptcha(); 17 | $captcha->wordsFile = ''; 18 | $captcha->resourcesPath = getcwd(). "/inc/libraries/captcha/resources"; 19 | $captcha->CreateImage(); 20 | break; 21 | default: 22 | die(); 23 | 24 | } 25 | } 26 | 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /inc/core.php: -------------------------------------------------------------------------------- 1 | 38 | -------------------------------------------------------------------------------- /inc/example.settings.php: -------------------------------------------------------------------------------- 1 | 62 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Autoloader.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class Twig_Autoloader 18 | { 19 | /** 20 | * Registers Twig_Autoloader as an SPL autoloader. 21 | * 22 | * @param bool $prepend Whether to prepend the autoloader or not. 23 | */ 24 | public static function register($prepend = false) 25 | { 26 | if (version_compare(phpversion(), '5.3.0', '>=')) { 27 | spl_autoload_register(array(__CLASS__, 'autoload'), true, $prepend); 28 | } else { 29 | spl_autoload_register(array(__CLASS__, 'autoload')); 30 | } 31 | } 32 | 33 | /** 34 | * Handles autoloading of classes. 35 | * 36 | * @param string $class A class name. 37 | */ 38 | public static function autoload($class) 39 | { 40 | if (0 !== strpos($class, 'Twig')) { 41 | return; 42 | } 43 | 44 | if (is_file($file = dirname(__FILE__).'/../'.str_replace(array('_', "\0"), array('/', ''), $class).'.php')) { 45 | require $file; 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /inc/libraries/Twig/CompilerInterface.php: -------------------------------------------------------------------------------- 1 | 16 | * 17 | * @deprecated since 1.12 (to be removed in 3.0) 18 | */ 19 | interface Twig_CompilerInterface 20 | { 21 | /** 22 | * Compiles a node. 23 | * 24 | * @param Twig_NodeInterface $node The node to compile 25 | * 26 | * @return Twig_CompilerInterface The current compiler instance 27 | */ 28 | public function compile(Twig_NodeInterface $node); 29 | 30 | /** 31 | * Gets the current PHP code after compilation. 32 | * 33 | * @return string The PHP code 34 | */ 35 | public function getSource(); 36 | } 37 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Error/Loader.php: -------------------------------------------------------------------------------- 1 | 24 | */ 25 | class Twig_Error_Loader extends Twig_Error 26 | { 27 | public function __construct($message, $lineno = -1, $filename = null, Exception $previous = null) 28 | { 29 | parent::__construct($message, false, false, $previous); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Error/Runtime.php: -------------------------------------------------------------------------------- 1 | 17 | */ 18 | class Twig_Error_Runtime extends Twig_Error 19 | { 20 | } 21 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Error/Syntax.php: -------------------------------------------------------------------------------- 1 | 17 | */ 18 | class Twig_Error_Syntax extends Twig_Error 19 | { 20 | } 21 | -------------------------------------------------------------------------------- /inc/libraries/Twig/ExistsLoaderInterface.php: -------------------------------------------------------------------------------- 1 | 16 | * 17 | * @deprecated since 1.12 (to be removed in 3.0) 18 | */ 19 | interface Twig_ExistsLoaderInterface 20 | { 21 | /** 22 | * Check if we have the source code of a template, given its name. 23 | * 24 | * @param string $name The name of the template to check if we can load 25 | * 26 | * @return bool If the template source code is handled by this loader or not 27 | */ 28 | public function exists($name); 29 | } 30 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Extension/Optimizer.php: -------------------------------------------------------------------------------- 1 | optimizers = $optimizers; 18 | } 19 | 20 | /** 21 | * {@inheritdoc} 22 | */ 23 | public function getNodeVisitors() 24 | { 25 | return array(new Twig_NodeVisitor_Optimizer($this->optimizers)); 26 | } 27 | 28 | /** 29 | * {@inheritdoc} 30 | */ 31 | public function getName() 32 | { 33 | return 'optimizer'; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Extension/StringLoader.php: -------------------------------------------------------------------------------- 1 | true)), 20 | ); 21 | } 22 | 23 | /** 24 | * {@inheritdoc} 25 | */ 26 | public function getName() 27 | { 28 | return 'string_loader'; 29 | } 30 | } 31 | 32 | /** 33 | * Loads a template from a string. 34 | * 35 | *
36 |  * {{ include(template_from_string("Hello {{ name }}")) }}
37 |  * 
38 | * 39 | * @param Twig_Environment $env A Twig_Environment instance 40 | * @param string $template A template as a string 41 | * 42 | * @return Twig_Template A Twig_Template instance 43 | */ 44 | function twig_template_from_string(Twig_Environment $env, $template) 45 | { 46 | $name = sprintf('__string_template__%s', hash('sha256', uniqid(mt_rand(), true), false)); 47 | 48 | $loader = new Twig_Loader_Chain(array( 49 | new Twig_Loader_Array(array($name => $template)), 50 | $current = $env->getLoader(), 51 | )); 52 | 53 | $env->setLoader($loader); 54 | try { 55 | $template = $env->loadTemplate($name); 56 | } catch (Exception $e) { 57 | $env->setLoader($current); 58 | 59 | throw $e; 60 | } 61 | $env->setLoader($current); 62 | 63 | return $template; 64 | } 65 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Filter/Function.php: -------------------------------------------------------------------------------- 1 | 18 | * @deprecated since 1.12 (to be removed in 2.0) 19 | */ 20 | class Twig_Filter_Function extends Twig_Filter 21 | { 22 | protected $function; 23 | 24 | public function __construct($function, array $options = array()) 25 | { 26 | $options['callable'] = $function; 27 | 28 | parent::__construct($options); 29 | 30 | $this->function = $function; 31 | } 32 | 33 | public function compile() 34 | { 35 | return $this->function; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Filter/Method.php: -------------------------------------------------------------------------------- 1 | 18 | * @deprecated since 1.12 (to be removed in 2.0) 19 | */ 20 | class Twig_Filter_Method extends Twig_Filter 21 | { 22 | protected $extension; 23 | protected $method; 24 | 25 | public function __construct(Twig_ExtensionInterface $extension, $method, array $options = array()) 26 | { 27 | $options['callable'] = array($extension, $method); 28 | 29 | parent::__construct($options); 30 | 31 | $this->extension = $extension; 32 | $this->method = $method; 33 | } 34 | 35 | public function compile() 36 | { 37 | return sprintf('$this->env->getExtension(\'%s\')->%s', $this->extension->getName(), $this->method); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Filter/Node.php: -------------------------------------------------------------------------------- 1 | 18 | * @deprecated since 1.12 (to be removed in 2.0) 19 | */ 20 | class Twig_Filter_Node extends Twig_Filter 21 | { 22 | protected $class; 23 | 24 | public function __construct($class, array $options = array()) 25 | { 26 | parent::__construct($options); 27 | 28 | $this->class = $class; 29 | } 30 | 31 | public function getClass() 32 | { 33 | return $this->class; 34 | } 35 | 36 | public function compile() 37 | { 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /inc/libraries/Twig/FilterCallableInterface.php: -------------------------------------------------------------------------------- 1 | 18 | * @deprecated since 1.12 (to be removed in 2.0) 19 | */ 20 | interface Twig_FilterCallableInterface 21 | { 22 | public function getCallable(); 23 | } 24 | -------------------------------------------------------------------------------- /inc/libraries/Twig/FilterInterface.php: -------------------------------------------------------------------------------- 1 | 18 | * @deprecated since 1.12 (to be removed in 2.0) 19 | */ 20 | interface Twig_FilterInterface 21 | { 22 | /** 23 | * Compiles a filter. 24 | * 25 | * @return string The PHP code for the filter 26 | */ 27 | public function compile(); 28 | 29 | public function needsEnvironment(); 30 | 31 | public function needsContext(); 32 | 33 | public function getSafe(Twig_Node $filterArgs); 34 | 35 | public function getPreservesSafety(); 36 | 37 | public function getPreEscape(); 38 | 39 | public function setArguments($arguments); 40 | 41 | public function getArguments(); 42 | } 43 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Function.php: -------------------------------------------------------------------------------- 1 | 18 | * @deprecated since 1.12 (to be removed in 2.0) 19 | */ 20 | abstract class Twig_Function implements Twig_FunctionInterface, Twig_FunctionCallableInterface 21 | { 22 | protected $options; 23 | protected $arguments = array(); 24 | 25 | public function __construct(array $options = array()) 26 | { 27 | $this->options = array_merge(array( 28 | 'needs_environment' => false, 29 | 'needs_context' => false, 30 | 'callable' => null, 31 | ), $options); 32 | } 33 | 34 | public function setArguments($arguments) 35 | { 36 | $this->arguments = $arguments; 37 | } 38 | 39 | public function getArguments() 40 | { 41 | return $this->arguments; 42 | } 43 | 44 | public function needsEnvironment() 45 | { 46 | return $this->options['needs_environment']; 47 | } 48 | 49 | public function needsContext() 50 | { 51 | return $this->options['needs_context']; 52 | } 53 | 54 | public function getSafe(Twig_Node $functionArgs) 55 | { 56 | if (isset($this->options['is_safe'])) { 57 | return $this->options['is_safe']; 58 | } 59 | 60 | if (isset($this->options['is_safe_callback'])) { 61 | return call_user_func($this->options['is_safe_callback'], $functionArgs); 62 | } 63 | 64 | return array(); 65 | } 66 | 67 | public function getCallable() 68 | { 69 | return $this->options['callable']; 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Function/Function.php: -------------------------------------------------------------------------------- 1 | 19 | * @deprecated since 1.12 (to be removed in 2.0) 20 | */ 21 | class Twig_Function_Function extends Twig_Function 22 | { 23 | protected $function; 24 | 25 | public function __construct($function, array $options = array()) 26 | { 27 | $options['callable'] = $function; 28 | 29 | parent::__construct($options); 30 | 31 | $this->function = $function; 32 | } 33 | 34 | public function compile() 35 | { 36 | return $this->function; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Function/Method.php: -------------------------------------------------------------------------------- 1 | 19 | * @deprecated since 1.12 (to be removed in 2.0) 20 | */ 21 | class Twig_Function_Method extends Twig_Function 22 | { 23 | protected $extension; 24 | protected $method; 25 | 26 | public function __construct(Twig_ExtensionInterface $extension, $method, array $options = array()) 27 | { 28 | $options['callable'] = array($extension, $method); 29 | 30 | parent::__construct($options); 31 | 32 | $this->extension = $extension; 33 | $this->method = $method; 34 | } 35 | 36 | public function compile() 37 | { 38 | return sprintf('$this->env->getExtension(\'%s\')->%s', $this->extension->getName(), $this->method); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Function/Node.php: -------------------------------------------------------------------------------- 1 | 18 | * @deprecated since 1.12 (to be removed in 2.0) 19 | */ 20 | class Twig_Function_Node extends Twig_Function 21 | { 22 | protected $class; 23 | 24 | public function __construct($class, array $options = array()) 25 | { 26 | parent::__construct($options); 27 | 28 | $this->class = $class; 29 | } 30 | 31 | public function getClass() 32 | { 33 | return $this->class; 34 | } 35 | 36 | public function compile() 37 | { 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /inc/libraries/Twig/FunctionCallableInterface.php: -------------------------------------------------------------------------------- 1 | 18 | * @deprecated since 1.12 (to be removed in 2.0) 19 | */ 20 | interface Twig_FunctionCallableInterface 21 | { 22 | public function getCallable(); 23 | } 24 | -------------------------------------------------------------------------------- /inc/libraries/Twig/FunctionInterface.php: -------------------------------------------------------------------------------- 1 | 19 | * @deprecated since 1.12 (to be removed in 2.0) 20 | */ 21 | interface Twig_FunctionInterface 22 | { 23 | /** 24 | * Compiles a function. 25 | * 26 | * @return string The PHP code for the function 27 | */ 28 | public function compile(); 29 | 30 | public function needsEnvironment(); 31 | 32 | public function needsContext(); 33 | 34 | public function getSafe(Twig_Node $filterArgs); 35 | 36 | public function setArguments($arguments); 37 | 38 | public function getArguments(); 39 | } 40 | -------------------------------------------------------------------------------- /inc/libraries/Twig/LexerInterface.php: -------------------------------------------------------------------------------- 1 | 16 | * 17 | * @deprecated since 1.12 (to be removed in 3.0) 18 | */ 19 | interface Twig_LexerInterface 20 | { 21 | /** 22 | * Tokenizes a source code. 23 | * 24 | * @param string $code The source code 25 | * @param string $filename A unique identifier for the source code 26 | * 27 | * @return Twig_TokenStream A token stream instance 28 | * 29 | * @throws Twig_Error_Syntax When the code is syntactically wrong 30 | */ 31 | public function tokenize($code, $filename = null); 32 | } 33 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Loader/String.php: -------------------------------------------------------------------------------- 1 | 25 | */ 26 | class Twig_Loader_String implements Twig_LoaderInterface, Twig_ExistsLoaderInterface 27 | { 28 | /** 29 | * {@inheritdoc} 30 | */ 31 | public function getSource($name) 32 | { 33 | return $name; 34 | } 35 | 36 | /** 37 | * {@inheritdoc} 38 | */ 39 | public function exists($name) 40 | { 41 | return true; 42 | } 43 | 44 | /** 45 | * {@inheritdoc} 46 | */ 47 | public function getCacheKey($name) 48 | { 49 | return $name; 50 | } 51 | 52 | /** 53 | * {@inheritdoc} 54 | */ 55 | public function isFresh($name, $time) 56 | { 57 | return true; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /inc/libraries/Twig/LoaderInterface.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | interface Twig_LoaderInterface 18 | { 19 | /** 20 | * Gets the source code of a template, given its name. 21 | * 22 | * @param string $name The name of the template to load 23 | * 24 | * @return string The template source code 25 | * 26 | * @throws Twig_Error_Loader When $name is not found 27 | */ 28 | public function getSource($name); 29 | 30 | /** 31 | * Gets the cache key to use for the cache for a given template name. 32 | * 33 | * @param string $name The name of the template to load 34 | * 35 | * @return string The cache key 36 | * 37 | * @throws Twig_Error_Loader When $name is not found 38 | */ 39 | public function getCacheKey($name); 40 | 41 | /** 42 | * Returns true if the template is still fresh. 43 | * 44 | * @param string $name The template name 45 | * @param timestamp $time The last modification time of the cached template 46 | * 47 | * @return bool true if the template is fresh, false otherwise 48 | * 49 | * @throws Twig_Error_Loader When $name is not found 50 | */ 51 | public function isFresh($name, $time); 52 | } 53 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Markup.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class Twig_Markup implements Countable 18 | { 19 | protected $content; 20 | protected $charset; 21 | 22 | public function __construct($content, $charset) 23 | { 24 | $this->content = (string) $content; 25 | $this->charset = $charset; 26 | } 27 | 28 | public function __toString() 29 | { 30 | return $this->content; 31 | } 32 | 33 | public function count() 34 | { 35 | return function_exists('mb_get_info') ? mb_strlen($this->content, $this->charset) : strlen($this->content); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/AutoEscape.php: -------------------------------------------------------------------------------- 1 | 22 | */ 23 | class Twig_Node_AutoEscape extends Twig_Node 24 | { 25 | public function __construct($value, Twig_NodeInterface $body, $lineno, $tag = 'autoescape') 26 | { 27 | parent::__construct(array('body' => $body), array('value' => $value), $lineno, $tag); 28 | } 29 | 30 | /** 31 | * Compiles the node to PHP. 32 | * 33 | * @param Twig_Compiler A Twig_Compiler instance 34 | */ 35 | public function compile(Twig_Compiler $compiler) 36 | { 37 | $compiler->subcompile($this->getNode('body')); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Block.php: -------------------------------------------------------------------------------- 1 | 17 | */ 18 | class Twig_Node_Block extends Twig_Node 19 | { 20 | public function __construct($name, Twig_NodeInterface $body, $lineno, $tag = null) 21 | { 22 | parent::__construct(array('body' => $body), array('name' => $name), $lineno, $tag); 23 | } 24 | 25 | /** 26 | * Compiles the node to PHP. 27 | * 28 | * @param Twig_Compiler A Twig_Compiler instance 29 | */ 30 | public function compile(Twig_Compiler $compiler) 31 | { 32 | $compiler 33 | ->addDebugInfo($this) 34 | ->write(sprintf("public function block_%s(\$context, array \$blocks = array())\n", $this->getAttribute('name')), "{\n") 35 | ->indent() 36 | ; 37 | 38 | $compiler 39 | ->subcompile($this->getNode('body')) 40 | ->outdent() 41 | ->write("}\n\n") 42 | ; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/BlockReference.php: -------------------------------------------------------------------------------- 1 | 17 | */ 18 | class Twig_Node_BlockReference extends Twig_Node implements Twig_NodeOutputInterface 19 | { 20 | public function __construct($name, $lineno, $tag = null) 21 | { 22 | parent::__construct(array(), array('name' => $name), $lineno, $tag); 23 | } 24 | 25 | /** 26 | * Compiles the node to PHP. 27 | * 28 | * @param Twig_Compiler A Twig_Compiler instance 29 | */ 30 | public function compile(Twig_Compiler $compiler) 31 | { 32 | $compiler 33 | ->addDebugInfo($this) 34 | ->write(sprintf("\$this->displayBlock('%s', \$context, \$blocks);\n", $this->getAttribute('name'))) 35 | ; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Body.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class Twig_Node_Body extends Twig_Node 18 | { 19 | } 20 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Do.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class Twig_Node_Do extends Twig_Node 18 | { 19 | public function __construct(Twig_Node_Expression $expr, $lineno, $tag = null) 20 | { 21 | parent::__construct(array('expr' => $expr), array(), $lineno, $tag); 22 | } 23 | 24 | /** 25 | * Compiles the node to PHP. 26 | * 27 | * @param Twig_Compiler A Twig_Compiler instance 28 | */ 29 | public function compile(Twig_Compiler $compiler) 30 | { 31 | $compiler 32 | ->addDebugInfo($this) 33 | ->write('') 34 | ->subcompile($this->getNode('expr')) 35 | ->raw(";\n") 36 | ; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Embed.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class Twig_Node_Embed extends Twig_Node_Include 18 | { 19 | // we don't inject the module to avoid node visitors to traverse it twice (as it will be already visited in the main module) 20 | public function __construct($filename, $index, Twig_Node_Expression $variables = null, $only = false, $ignoreMissing = false, $lineno, $tag = null) 21 | { 22 | parent::__construct(new Twig_Node_Expression_Constant('not_used', $lineno), $variables, $only, $ignoreMissing, $lineno, $tag); 23 | 24 | $this->setAttribute('filename', $filename); 25 | $this->setAttribute('index', $index); 26 | } 27 | 28 | protected function addGetTemplate(Twig_Compiler $compiler) 29 | { 30 | $compiler 31 | ->write("\$this->env->loadTemplate(") 32 | ->string($this->getAttribute('filename')) 33 | ->raw(', ') 34 | ->string($this->getAttribute('index')) 35 | ->raw(")") 36 | ; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression.php: -------------------------------------------------------------------------------- 1 | 17 | */ 18 | abstract class Twig_Node_Expression extends Twig_Node 19 | { 20 | } 21 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/AssignName.php: -------------------------------------------------------------------------------- 1 | raw('$context[') 24 | ->string($this->getAttribute('name')) 25 | ->raw(']') 26 | ; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary.php: -------------------------------------------------------------------------------- 1 | $left, 'right' => $right), array(), $lineno); 17 | } 18 | 19 | /** 20 | * Compiles the node to PHP. 21 | * 22 | * @param Twig_Compiler A Twig_Compiler instance 23 | */ 24 | public function compile(Twig_Compiler $compiler) 25 | { 26 | $compiler 27 | ->raw('(') 28 | ->subcompile($this->getNode('left')) 29 | ->raw(' ') 30 | ; 31 | $this->operator($compiler); 32 | $compiler 33 | ->raw(' ') 34 | ->subcompile($this->getNode('right')) 35 | ->raw(')') 36 | ; 37 | } 38 | 39 | abstract public function operator(Twig_Compiler $compiler); 40 | } 41 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/Add.php: -------------------------------------------------------------------------------- 1 | raw('+'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/And.php: -------------------------------------------------------------------------------- 1 | raw('&&'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/BitwiseAnd.php: -------------------------------------------------------------------------------- 1 | raw('&'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/BitwiseOr.php: -------------------------------------------------------------------------------- 1 | raw('|'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/BitwiseXor.php: -------------------------------------------------------------------------------- 1 | raw('^'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/Concat.php: -------------------------------------------------------------------------------- 1 | raw('.'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/Div.php: -------------------------------------------------------------------------------- 1 | raw('/'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/EndsWith.php: -------------------------------------------------------------------------------- 1 | raw('(0 === substr_compare(') 17 | ->subcompile($this->getNode('left')) 18 | ->raw(', ') 19 | ->subcompile($this->getNode('right')) 20 | ->raw(', -strlen(') 21 | ->subcompile($this->getNode('right')) 22 | ->raw(')))') 23 | ; 24 | } 25 | 26 | public function operator(Twig_Compiler $compiler) 27 | { 28 | return $compiler->raw(''); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/Equal.php: -------------------------------------------------------------------------------- 1 | raw('=='); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/FloorDiv.php: -------------------------------------------------------------------------------- 1 | raw('intval(floor('); 21 | parent::compile($compiler); 22 | $compiler->raw('))'); 23 | } 24 | 25 | public function operator(Twig_Compiler $compiler) 26 | { 27 | return $compiler->raw('/'); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/Greater.php: -------------------------------------------------------------------------------- 1 | raw('>'); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/GreaterEqual.php: -------------------------------------------------------------------------------- 1 | raw('>='); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/In.php: -------------------------------------------------------------------------------- 1 | raw('twig_in_filter(') 22 | ->subcompile($this->getNode('left')) 23 | ->raw(', ') 24 | ->subcompile($this->getNode('right')) 25 | ->raw(')') 26 | ; 27 | } 28 | 29 | public function operator(Twig_Compiler $compiler) 30 | { 31 | return $compiler->raw('in'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/Less.php: -------------------------------------------------------------------------------- 1 | raw('<'); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/LessEqual.php: -------------------------------------------------------------------------------- 1 | raw('<='); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/Matches.php: -------------------------------------------------------------------------------- 1 | raw('preg_match(') 17 | ->subcompile($this->getNode('right')) 18 | ->raw(', ') 19 | ->subcompile($this->getNode('left')) 20 | ->raw(')') 21 | ; 22 | } 23 | 24 | public function operator(Twig_Compiler $compiler) 25 | { 26 | return $compiler->raw(''); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/Mod.php: -------------------------------------------------------------------------------- 1 | raw('%'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/Mul.php: -------------------------------------------------------------------------------- 1 | raw('*'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/NotEqual.php: -------------------------------------------------------------------------------- 1 | raw('!='); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/NotIn.php: -------------------------------------------------------------------------------- 1 | raw('!twig_in_filter(') 22 | ->subcompile($this->getNode('left')) 23 | ->raw(', ') 24 | ->subcompile($this->getNode('right')) 25 | ->raw(')') 26 | ; 27 | } 28 | 29 | public function operator(Twig_Compiler $compiler) 30 | { 31 | return $compiler->raw('not in'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/Or.php: -------------------------------------------------------------------------------- 1 | raw('||'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/Power.php: -------------------------------------------------------------------------------- 1 | raw('pow(') 22 | ->subcompile($this->getNode('left')) 23 | ->raw(', ') 24 | ->subcompile($this->getNode('right')) 25 | ->raw(')') 26 | ; 27 | } 28 | 29 | public function operator(Twig_Compiler $compiler) 30 | { 31 | return $compiler->raw('**'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/Range.php: -------------------------------------------------------------------------------- 1 | raw('range(') 22 | ->subcompile($this->getNode('left')) 23 | ->raw(', ') 24 | ->subcompile($this->getNode('right')) 25 | ->raw(')') 26 | ; 27 | } 28 | 29 | public function operator(Twig_Compiler $compiler) 30 | { 31 | return $compiler->raw('..'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/StartsWith.php: -------------------------------------------------------------------------------- 1 | raw('(0 === strpos(') 17 | ->subcompile($this->getNode('left')) 18 | ->raw(', ') 19 | ->subcompile($this->getNode('right')) 20 | ->raw('))') 21 | ; 22 | } 23 | 24 | public function operator(Twig_Compiler $compiler) 25 | { 26 | return $compiler->raw(''); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Binary/Sub.php: -------------------------------------------------------------------------------- 1 | raw('-'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/BlockReference.php: -------------------------------------------------------------------------------- 1 | 17 | */ 18 | class Twig_Node_Expression_BlockReference extends Twig_Node_Expression 19 | { 20 | public function __construct(Twig_NodeInterface $name, $asString = false, $lineno, $tag = null) 21 | { 22 | parent::__construct(array('name' => $name), array('as_string' => $asString, 'output' => false), $lineno, $tag); 23 | } 24 | 25 | /** 26 | * Compiles the node to PHP. 27 | * 28 | * @param Twig_Compiler A Twig_Compiler instance 29 | */ 30 | public function compile(Twig_Compiler $compiler) 31 | { 32 | if ($this->getAttribute('as_string')) { 33 | $compiler->raw('(string) '); 34 | } 35 | 36 | if ($this->getAttribute('output')) { 37 | $compiler 38 | ->addDebugInfo($this) 39 | ->write("\$this->displayBlock(") 40 | ->subcompile($this->getNode('name')) 41 | ->raw(", \$context, \$blocks);\n") 42 | ; 43 | } else { 44 | $compiler 45 | ->raw("\$this->renderBlock(") 46 | ->subcompile($this->getNode('name')) 47 | ->raw(", \$context, \$blocks)") 48 | ; 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Conditional.php: -------------------------------------------------------------------------------- 1 | $expr1, 'expr2' => $expr2, 'expr3' => $expr3), array(), $lineno); 17 | } 18 | 19 | public function compile(Twig_Compiler $compiler) 20 | { 21 | $compiler 22 | ->raw('((') 23 | ->subcompile($this->getNode('expr1')) 24 | ->raw(') ? (') 25 | ->subcompile($this->getNode('expr2')) 26 | ->raw(') : (') 27 | ->subcompile($this->getNode('expr3')) 28 | ->raw('))') 29 | ; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Constant.php: -------------------------------------------------------------------------------- 1 | $value), $lineno); 17 | } 18 | 19 | public function compile(Twig_Compiler $compiler) 20 | { 21 | $compiler->repr($this->getAttribute('value')); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/ExtensionReference.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class Twig_Node_Expression_ExtensionReference extends Twig_Node_Expression 18 | { 19 | public function __construct($name, $lineno, $tag = null) 20 | { 21 | parent::__construct(array(), array('name' => $name), $lineno, $tag); 22 | } 23 | 24 | /** 25 | * Compiles the node to PHP. 26 | * 27 | * @param Twig_Compiler A Twig_Compiler instance 28 | */ 29 | public function compile(Twig_Compiler $compiler) 30 | { 31 | $compiler->raw(sprintf("\$this->env->getExtension('%s')", $this->getAttribute('name'))); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Filter.php: -------------------------------------------------------------------------------- 1 | $node, 'filter' => $filterName, 'arguments' => $arguments), array(), $lineno, $tag); 17 | } 18 | 19 | public function compile(Twig_Compiler $compiler) 20 | { 21 | $name = $this->getNode('filter')->getAttribute('value'); 22 | $filter = $compiler->getEnvironment()->getFilter($name); 23 | 24 | $this->setAttribute('name', $name); 25 | $this->setAttribute('type', 'filter'); 26 | $this->setAttribute('thing', $filter); 27 | $this->setAttribute('needs_environment', $filter->needsEnvironment()); 28 | $this->setAttribute('needs_context', $filter->needsContext()); 29 | $this->setAttribute('arguments', $filter->getArguments()); 30 | if ($filter instanceof Twig_FilterCallableInterface || $filter instanceof Twig_SimpleFilter) { 31 | $this->setAttribute('callable', $filter->getCallable()); 32 | } 33 | 34 | $this->compileCallable($compiler); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Filter/Default.php: -------------------------------------------------------------------------------- 1 | 16 | * {{ var.foo|default('foo item on var is not defined') }} 17 | * 18 | * 19 | * @author Fabien Potencier 20 | */ 21 | class Twig_Node_Expression_Filter_Default extends Twig_Node_Expression_Filter 22 | { 23 | public function __construct(Twig_NodeInterface $node, Twig_Node_Expression_Constant $filterName, Twig_NodeInterface $arguments, $lineno, $tag = null) 24 | { 25 | $default = new Twig_Node_Expression_Filter($node, new Twig_Node_Expression_Constant('default', $node->getLine()), $arguments, $node->getLine()); 26 | 27 | if ('default' === $filterName->getAttribute('value') && ($node instanceof Twig_Node_Expression_Name || $node instanceof Twig_Node_Expression_GetAttr)) { 28 | $test = new Twig_Node_Expression_Test_Defined(clone $node, 'defined', new Twig_Node(), $node->getLine()); 29 | $false = count($arguments) ? $arguments->getNode(0) : new Twig_Node_Expression_Constant('', $node->getLine()); 30 | 31 | $node = new Twig_Node_Expression_Conditional($test, $default, $false, $node->getLine()); 32 | } else { 33 | $node = $default; 34 | } 35 | 36 | parent::__construct($node, $filterName, $arguments, $lineno, $tag); 37 | } 38 | 39 | public function compile(Twig_Compiler $compiler) 40 | { 41 | $compiler->subcompile($this->getNode('node')); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Function.php: -------------------------------------------------------------------------------- 1 | $arguments), array('name' => $name), $lineno); 16 | } 17 | 18 | public function compile(Twig_Compiler $compiler) 19 | { 20 | $name = $this->getAttribute('name'); 21 | $function = $compiler->getEnvironment()->getFunction($name); 22 | 23 | $this->setAttribute('name', $name); 24 | $this->setAttribute('type', 'function'); 25 | $this->setAttribute('thing', $function); 26 | $this->setAttribute('needs_environment', $function->needsEnvironment()); 27 | $this->setAttribute('needs_context', $function->needsContext()); 28 | $this->setAttribute('arguments', $function->getArguments()); 29 | if ($function instanceof Twig_FunctionCallableInterface || $function instanceof Twig_SimpleFunction) { 30 | $this->setAttribute('callable', $function->getCallable()); 31 | } 32 | 33 | $this->compileCallable($compiler); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/MethodCall.php: -------------------------------------------------------------------------------- 1 | $node, 'arguments' => $arguments), array('method' => $method, 'safe' => false), $lineno); 16 | 17 | if ($node instanceof Twig_Node_Expression_Name) { 18 | $node->setAttribute('always_defined', true); 19 | } 20 | } 21 | 22 | public function compile(Twig_Compiler $compiler) 23 | { 24 | $compiler 25 | ->subcompile($this->getNode('node')) 26 | ->raw('->') 27 | ->raw($this->getAttribute('method')) 28 | ->raw('(') 29 | ; 30 | $first = true; 31 | foreach ($this->getNode('arguments')->getKeyValuePairs() as $pair) { 32 | if (!$first) { 33 | $compiler->raw(', '); 34 | } 35 | $first = false; 36 | 37 | $compiler->subcompile($pair['value']); 38 | } 39 | $compiler->raw(')'); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Parent.php: -------------------------------------------------------------------------------- 1 | 17 | */ 18 | class Twig_Node_Expression_Parent extends Twig_Node_Expression 19 | { 20 | public function __construct($name, $lineno, $tag = null) 21 | { 22 | parent::__construct(array(), array('output' => false, 'name' => $name), $lineno, $tag); 23 | } 24 | 25 | /** 26 | * Compiles the node to PHP. 27 | * 28 | * @param Twig_Compiler A Twig_Compiler instance 29 | */ 30 | public function compile(Twig_Compiler $compiler) 31 | { 32 | if ($this->getAttribute('output')) { 33 | $compiler 34 | ->addDebugInfo($this) 35 | ->write("\$this->displayParentBlock(") 36 | ->string($this->getAttribute('name')) 37 | ->raw(", \$context, \$blocks);\n") 38 | ; 39 | } else { 40 | $compiler 41 | ->raw("\$this->renderParentBlock(") 42 | ->string($this->getAttribute('name')) 43 | ->raw(", \$context, \$blocks)") 44 | ; 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/TempName.php: -------------------------------------------------------------------------------- 1 | $name), $lineno); 16 | } 17 | 18 | public function compile(Twig_Compiler $compiler) 19 | { 20 | $compiler 21 | ->raw('$_') 22 | ->raw($this->getAttribute('name')) 23 | ->raw('_') 24 | ; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Test.php: -------------------------------------------------------------------------------- 1 | $node, 'arguments' => $arguments), array('name' => $name), $lineno); 16 | } 17 | 18 | public function compile(Twig_Compiler $compiler) 19 | { 20 | $name = $this->getAttribute('name'); 21 | $test = $compiler->getEnvironment()->getTest($name); 22 | 23 | $this->setAttribute('name', $name); 24 | $this->setAttribute('type', 'test'); 25 | $this->setAttribute('thing', $test); 26 | if ($test instanceof Twig_TestCallableInterface || $test instanceof Twig_SimpleTest) { 27 | $this->setAttribute('callable', $test->getCallable()); 28 | } 29 | 30 | $this->compileCallable($compiler); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Test/Constant.php: -------------------------------------------------------------------------------- 1 | 16 | * {% if post.status is constant('Post::PUBLISHED') %} 17 | * the status attribute is exactly the same as Post::PUBLISHED 18 | * {% endif %} 19 | * 20 | * 21 | * @author Fabien Potencier 22 | */ 23 | class Twig_Node_Expression_Test_Constant extends Twig_Node_Expression_Test 24 | { 25 | public function compile(Twig_Compiler $compiler) 26 | { 27 | $compiler 28 | ->raw('(') 29 | ->subcompile($this->getNode('node')) 30 | ->raw(' === constant(') 31 | ; 32 | 33 | if ($this->getNode('arguments')->hasNode(1)) { 34 | $compiler 35 | ->raw('get_class(') 36 | ->subcompile($this->getNode('arguments')->getNode(1)) 37 | ->raw(')."::".') 38 | ; 39 | } 40 | 41 | $compiler 42 | ->subcompile($this->getNode('arguments')->getNode(0)) 43 | ->raw('))') 44 | ; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Test/Defined.php: -------------------------------------------------------------------------------- 1 | 16 | * {# defined works with variable names and variable attributes #} 17 | * {% if foo is defined %} 18 | * {# ... #} 19 | * {% endif %} 20 | * 21 | * 22 | * @author Fabien Potencier 23 | */ 24 | class Twig_Node_Expression_Test_Defined extends Twig_Node_Expression_Test 25 | { 26 | public function __construct(Twig_NodeInterface $node, $name, Twig_NodeInterface $arguments = null, $lineno) 27 | { 28 | parent::__construct($node, $name, $arguments, $lineno); 29 | 30 | if ($node instanceof Twig_Node_Expression_Name) { 31 | $node->setAttribute('is_defined_test', true); 32 | } elseif ($node instanceof Twig_Node_Expression_GetAttr) { 33 | $node->setAttribute('is_defined_test', true); 34 | 35 | $this->changeIgnoreStrictCheck($node); 36 | } else { 37 | throw new Twig_Error_Syntax('The "defined" test only works with simple variables', $this->getLine()); 38 | } 39 | } 40 | 41 | protected function changeIgnoreStrictCheck(Twig_Node_Expression_GetAttr $node) 42 | { 43 | $node->setAttribute('ignore_strict_check', true); 44 | 45 | if ($node->getNode('node') instanceof Twig_Node_Expression_GetAttr) { 46 | $this->changeIgnoreStrictCheck($node->getNode('node')); 47 | } 48 | } 49 | 50 | public function compile(Twig_Compiler $compiler) 51 | { 52 | $compiler->subcompile($this->getNode('node')); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Test/Divisibleby.php: -------------------------------------------------------------------------------- 1 | 16 | * {% if loop.index is divisible by(3) %} 17 | * 18 | * 19 | * @author Fabien Potencier 20 | */ 21 | class Twig_Node_Expression_Test_Divisibleby extends Twig_Node_Expression_Test 22 | { 23 | public function compile(Twig_Compiler $compiler) 24 | { 25 | $compiler 26 | ->raw('(0 == ') 27 | ->subcompile($this->getNode('node')) 28 | ->raw(' % ') 29 | ->subcompile($this->getNode('arguments')->getNode(0)) 30 | ->raw(')') 31 | ; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Test/Even.php: -------------------------------------------------------------------------------- 1 | 16 | * {{ var is even }} 17 | * 18 | * 19 | * @author Fabien Potencier 20 | */ 21 | class Twig_Node_Expression_Test_Even extends Twig_Node_Expression_Test 22 | { 23 | public function compile(Twig_Compiler $compiler) 24 | { 25 | $compiler 26 | ->raw('(') 27 | ->subcompile($this->getNode('node')) 28 | ->raw(' % 2 == 0') 29 | ->raw(')') 30 | ; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Test/Null.php: -------------------------------------------------------------------------------- 1 | 16 | * {{ var is none }} 17 | * 18 | * 19 | * @author Fabien Potencier 20 | */ 21 | class Twig_Node_Expression_Test_Null extends Twig_Node_Expression_Test 22 | { 23 | public function compile(Twig_Compiler $compiler) 24 | { 25 | $compiler 26 | ->raw('(null === ') 27 | ->subcompile($this->getNode('node')) 28 | ->raw(')') 29 | ; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Test/Odd.php: -------------------------------------------------------------------------------- 1 | 16 | * {{ var is odd }} 17 | * 18 | * 19 | * @author Fabien Potencier 20 | */ 21 | class Twig_Node_Expression_Test_Odd extends Twig_Node_Expression_Test 22 | { 23 | public function compile(Twig_Compiler $compiler) 24 | { 25 | $compiler 26 | ->raw('(') 27 | ->subcompile($this->getNode('node')) 28 | ->raw(' % 2 == 1') 29 | ->raw(')') 30 | ; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Test/Sameas.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class Twig_Node_Expression_Test_Sameas extends Twig_Node_Expression_Test 18 | { 19 | public function compile(Twig_Compiler $compiler) 20 | { 21 | $compiler 22 | ->raw('(') 23 | ->subcompile($this->getNode('node')) 24 | ->raw(' === ') 25 | ->subcompile($this->getNode('arguments')->getNode(0)) 26 | ->raw(')') 27 | ; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Unary.php: -------------------------------------------------------------------------------- 1 | $node), array(), $lineno); 17 | } 18 | 19 | public function compile(Twig_Compiler $compiler) 20 | { 21 | $compiler->raw('('); 22 | $this->operator($compiler); 23 | $compiler 24 | ->subcompile($this->getNode('node')) 25 | ->raw(')') 26 | ; 27 | } 28 | 29 | abstract public function operator(Twig_Compiler $compiler); 30 | } 31 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Unary/Neg.php: -------------------------------------------------------------------------------- 1 | raw('-'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Unary/Not.php: -------------------------------------------------------------------------------- 1 | raw('!'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Expression/Unary/Pos.php: -------------------------------------------------------------------------------- 1 | raw('+'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Flush.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class Twig_Node_Flush extends Twig_Node 18 | { 19 | public function __construct($lineno, $tag) 20 | { 21 | parent::__construct(array(), array(), $lineno, $tag); 22 | } 23 | 24 | /** 25 | * Compiles the node to PHP. 26 | * 27 | * @param Twig_Compiler A Twig_Compiler instance 28 | */ 29 | public function compile(Twig_Compiler $compiler) 30 | { 31 | $compiler 32 | ->addDebugInfo($this) 33 | ->write("flush();\n") 34 | ; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/ForLoop.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class Twig_Node_ForLoop extends Twig_Node 18 | { 19 | public function __construct($lineno, $tag = null) 20 | { 21 | parent::__construct(array(), array('with_loop' => false, 'ifexpr' => false, 'else' => false), $lineno, $tag); 22 | } 23 | 24 | /** 25 | * Compiles the node to PHP. 26 | * 27 | * @param Twig_Compiler A Twig_Compiler instance 28 | */ 29 | public function compile(Twig_Compiler $compiler) 30 | { 31 | if ($this->getAttribute('else')) { 32 | $compiler->write("\$context['_iterated'] = true;\n"); 33 | } 34 | 35 | if ($this->getAttribute('with_loop')) { 36 | $compiler 37 | ->write("++\$context['loop']['index0'];\n") 38 | ->write("++\$context['loop']['index'];\n") 39 | ->write("\$context['loop']['first'] = false;\n") 40 | ; 41 | 42 | if (!$this->getAttribute('ifexpr')) { 43 | $compiler 44 | ->write("if (isset(\$context['loop']['length'])) {\n") 45 | ->indent() 46 | ->write("--\$context['loop']['revindex0'];\n") 47 | ->write("--\$context['loop']['revindex'];\n") 48 | ->write("\$context['loop']['last'] = 0 === \$context['loop']['revindex0'];\n") 49 | ->outdent() 50 | ->write("}\n") 51 | ; 52 | } 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Import.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class Twig_Node_Import extends Twig_Node 18 | { 19 | public function __construct(Twig_Node_Expression $expr, Twig_Node_Expression $var, $lineno, $tag = null) 20 | { 21 | parent::__construct(array('expr' => $expr, 'var' => $var), array(), $lineno, $tag); 22 | } 23 | 24 | /** 25 | * Compiles the node to PHP. 26 | * 27 | * @param Twig_Compiler A Twig_Compiler instance 28 | */ 29 | public function compile(Twig_Compiler $compiler) 30 | { 31 | $compiler 32 | ->addDebugInfo($this) 33 | ->write('') 34 | ->subcompile($this->getNode('var')) 35 | ->raw(' = ') 36 | ; 37 | 38 | if ($this->getNode('expr') instanceof Twig_Node_Expression_Name && '_self' === $this->getNode('expr')->getAttribute('name')) { 39 | $compiler->raw("\$this"); 40 | } else { 41 | $compiler 42 | ->raw('$this->env->loadTemplate(') 43 | ->subcompile($this->getNode('expr')) 44 | ->raw(")") 45 | ; 46 | } 47 | 48 | $compiler->raw(";\n"); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Print.php: -------------------------------------------------------------------------------- 1 | 17 | */ 18 | class Twig_Node_Print extends Twig_Node implements Twig_NodeOutputInterface 19 | { 20 | public function __construct(Twig_Node_Expression $expr, $lineno, $tag = null) 21 | { 22 | parent::__construct(array('expr' => $expr), array(), $lineno, $tag); 23 | } 24 | 25 | /** 26 | * Compiles the node to PHP. 27 | * 28 | * @param Twig_Compiler A Twig_Compiler instance 29 | */ 30 | public function compile(Twig_Compiler $compiler) 31 | { 32 | $compiler 33 | ->addDebugInfo($this) 34 | ->write('echo ') 35 | ->subcompile($this->getNode('expr')) 36 | ->raw(";\n") 37 | ; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Sandbox.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class Twig_Node_Sandbox extends Twig_Node 18 | { 19 | public function __construct(Twig_NodeInterface $body, $lineno, $tag = null) 20 | { 21 | parent::__construct(array('body' => $body), array(), $lineno, $tag); 22 | } 23 | 24 | /** 25 | * Compiles the node to PHP. 26 | * 27 | * @param Twig_Compiler A Twig_Compiler instance 28 | */ 29 | public function compile(Twig_Compiler $compiler) 30 | { 31 | $compiler 32 | ->addDebugInfo($this) 33 | ->write("\$sandbox = \$this->env->getExtension('sandbox');\n") 34 | ->write("if (!\$alreadySandboxed = \$sandbox->isSandboxed()) {\n") 35 | ->indent() 36 | ->write("\$sandbox->enableSandbox();\n") 37 | ->outdent() 38 | ->write("}\n") 39 | ->subcompile($this->getNode('body')) 40 | ->write("if (!\$alreadySandboxed) {\n") 41 | ->indent() 42 | ->write("\$sandbox->disableSandbox();\n") 43 | ->outdent() 44 | ->write("}\n") 45 | ; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/SandboxedPrint.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | class Twig_Node_SandboxedPrint extends Twig_Node_Print 23 | { 24 | public function __construct(Twig_Node_Expression $expr, $lineno, $tag = null) 25 | { 26 | parent::__construct($expr, $lineno, $tag); 27 | } 28 | 29 | /** 30 | * Compiles the node to PHP. 31 | * 32 | * @param Twig_Compiler A Twig_Compiler instance 33 | */ 34 | public function compile(Twig_Compiler $compiler) 35 | { 36 | $compiler 37 | ->addDebugInfo($this) 38 | ->write('echo $this->env->getExtension(\'sandbox\')->ensureToStringAllowed(') 39 | ->subcompile($this->getNode('expr')) 40 | ->raw(");\n") 41 | ; 42 | } 43 | 44 | /** 45 | * Removes node filters. 46 | * 47 | * This is mostly needed when another visitor adds filters (like the escaper one). 48 | * 49 | * @param Twig_Node $node A Node 50 | */ 51 | protected function removeNodeFilter($node) 52 | { 53 | if ($node instanceof Twig_Node_Expression_Filter) { 54 | return $this->removeNodeFilter($node->getNode('node')); 55 | } 56 | 57 | return $node; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/SetTemp.php: -------------------------------------------------------------------------------- 1 | $name), $lineno); 17 | } 18 | 19 | public function compile(Twig_Compiler $compiler) 20 | { 21 | $name = $this->getAttribute('name'); 22 | $compiler 23 | ->addDebugInfo($this) 24 | ->write('if (isset($context[') 25 | ->string($name) 26 | ->raw('])) { $_') 27 | ->raw($name) 28 | ->raw('_ = $context[') 29 | ->repr($name) 30 | ->raw(']; } else { $_') 31 | ->raw($name) 32 | ->raw("_ = null; }\n") 33 | ; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Spaceless.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | class Twig_Node_Spaceless extends Twig_Node 20 | { 21 | public function __construct(Twig_NodeInterface $body, $lineno, $tag = 'spaceless') 22 | { 23 | parent::__construct(array('body' => $body), array(), $lineno, $tag); 24 | } 25 | 26 | /** 27 | * Compiles the node to PHP. 28 | * 29 | * @param Twig_Compiler A Twig_Compiler instance 30 | */ 31 | public function compile(Twig_Compiler $compiler) 32 | { 33 | $compiler 34 | ->addDebugInfo($this) 35 | ->write("ob_start();\n") 36 | ->subcompile($this->getNode('body')) 37 | ->write("echo trim(preg_replace('/>\s+<', ob_get_clean()));\n") 38 | ; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Node/Text.php: -------------------------------------------------------------------------------- 1 | 17 | */ 18 | class Twig_Node_Text extends Twig_Node implements Twig_NodeOutputInterface 19 | { 20 | public function __construct($data, $lineno) 21 | { 22 | parent::__construct(array(), array('data' => $data), $lineno); 23 | } 24 | 25 | /** 26 | * Compiles the node to PHP. 27 | * 28 | * @param Twig_Compiler A Twig_Compiler instance 29 | */ 30 | public function compile(Twig_Compiler $compiler) 31 | { 32 | $compiler 33 | ->addDebugInfo($this) 34 | ->write('echo ') 35 | ->string($this->getAttribute('data')) 36 | ->raw(";\n") 37 | ; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /inc/libraries/Twig/NodeInterface.php: -------------------------------------------------------------------------------- 1 | 16 | * 17 | * @deprecated since 1.12 (to be removed in 3.0) 18 | */ 19 | interface Twig_NodeInterface extends Countable, IteratorAggregate 20 | { 21 | /** 22 | * Compiles the node to PHP. 23 | * 24 | * @param Twig_Compiler A Twig_Compiler instance 25 | */ 26 | public function compile(Twig_Compiler $compiler); 27 | 28 | public function getLine(); 29 | 30 | public function getNodeTag(); 31 | } 32 | -------------------------------------------------------------------------------- /inc/libraries/Twig/NodeOutputInterface.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | interface Twig_NodeOutputInterface 18 | { 19 | } 20 | -------------------------------------------------------------------------------- /inc/libraries/Twig/NodeVisitorInterface.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | interface Twig_NodeVisitorInterface 18 | { 19 | /** 20 | * Called before child nodes are visited. 21 | * 22 | * @param Twig_NodeInterface $node The node to visit 23 | * @param Twig_Environment $env The Twig environment instance 24 | * 25 | * @return Twig_NodeInterface The modified node 26 | */ 27 | public function enterNode(Twig_NodeInterface $node, Twig_Environment $env); 28 | 29 | /** 30 | * Called after child nodes are visited. 31 | * 32 | * @param Twig_NodeInterface $node The node to visit 33 | * @param Twig_Environment $env The Twig environment instance 34 | * 35 | * @return Twig_NodeInterface|false The modified node or false if the node must be removed 36 | */ 37 | public function leaveNode(Twig_NodeInterface $node, Twig_Environment $env); 38 | 39 | /** 40 | * Returns the priority for this visitor. 41 | * 42 | * Priority should be between -10 and 10 (0 is the default). 43 | * 44 | * @return int The priority level 45 | */ 46 | public function getPriority(); 47 | } 48 | -------------------------------------------------------------------------------- /inc/libraries/Twig/ParserInterface.php: -------------------------------------------------------------------------------- 1 | 16 | * 17 | * @deprecated since 1.12 (to be removed in 3.0) 18 | */ 19 | interface Twig_ParserInterface 20 | { 21 | /** 22 | * Converts a token stream to a node tree. 23 | * 24 | * @param Twig_TokenStream $stream A token stream instance 25 | * 26 | * @return Twig_Node_Module A node tree 27 | * 28 | * @throws Twig_Error_Syntax When the token stream is syntactically or semantically wrong 29 | */ 30 | public function parse(Twig_TokenStream $stream); 31 | } 32 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Sandbox/SecurityError.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class Twig_Sandbox_SecurityError extends Twig_Error 18 | { 19 | } 20 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Sandbox/SecurityPolicyInterface.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | interface Twig_Sandbox_SecurityPolicyInterface 18 | { 19 | public function checkSecurity($tags, $filters, $functions); 20 | 21 | public function checkMethodAllowed($obj, $method); 22 | 23 | public function checkPropertyAllowed($obj, $method); 24 | } 25 | -------------------------------------------------------------------------------- /inc/libraries/Twig/SimpleTest.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class Twig_SimpleTest 18 | { 19 | protected $name; 20 | protected $callable; 21 | protected $options; 22 | 23 | public function __construct($name, $callable, array $options = array()) 24 | { 25 | $this->name = $name; 26 | $this->callable = $callable; 27 | $this->options = array_merge(array( 28 | 'node_class' => 'Twig_Node_Expression_Test', 29 | ), $options); 30 | } 31 | 32 | public function getName() 33 | { 34 | return $this->name; 35 | } 36 | 37 | public function getCallable() 38 | { 39 | return $this->callable; 40 | } 41 | 42 | public function getNodeClass() 43 | { 44 | return $this->options['node_class']; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /inc/libraries/Twig/TemplateInterface.php: -------------------------------------------------------------------------------- 1 | 16 | * 17 | * @deprecated since 1.12 (to be removed in 3.0) 18 | */ 19 | interface Twig_TemplateInterface 20 | { 21 | const ANY_CALL = 'any'; 22 | const ARRAY_CALL = 'array'; 23 | const METHOD_CALL = 'method'; 24 | 25 | /** 26 | * Renders the template with the given context and returns it as string. 27 | * 28 | * @param array $context An array of parameters to pass to the template 29 | * 30 | * @return string The rendered template 31 | */ 32 | public function render(array $context); 33 | 34 | /** 35 | * Displays the template with the given context. 36 | * 37 | * @param array $context An array of parameters to pass to the template 38 | * @param array $blocks An array of blocks to pass to the template 39 | */ 40 | public function display(array $context, array $blocks = array()); 41 | 42 | /** 43 | * Returns the bound environment for this template. 44 | * 45 | * @return Twig_Environment The current environment 46 | */ 47 | public function getEnvironment(); 48 | } 49 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Test.php: -------------------------------------------------------------------------------- 1 | 16 | * @deprecated since 1.12 (to be removed in 2.0) 17 | */ 18 | abstract class Twig_Test implements Twig_TestInterface, Twig_TestCallableInterface 19 | { 20 | protected $options; 21 | protected $arguments = array(); 22 | 23 | public function __construct(array $options = array()) 24 | { 25 | $this->options = array_merge(array( 26 | 'callable' => null, 27 | ), $options); 28 | } 29 | 30 | public function getCallable() 31 | { 32 | return $this->options['callable']; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Test/Function.php: -------------------------------------------------------------------------------- 1 | 16 | * @deprecated since 1.12 (to be removed in 2.0) 17 | */ 18 | class Twig_Test_Function extends Twig_Test 19 | { 20 | protected $function; 21 | 22 | public function __construct($function, array $options = array()) 23 | { 24 | $options['callable'] = $function; 25 | 26 | parent::__construct($options); 27 | 28 | $this->function = $function; 29 | } 30 | 31 | public function compile() 32 | { 33 | return $this->function; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Test/Method.php: -------------------------------------------------------------------------------- 1 | 16 | * @deprecated since 1.12 (to be removed in 2.0) 17 | */ 18 | class Twig_Test_Method extends Twig_Test 19 | { 20 | protected $extension; 21 | protected $method; 22 | 23 | public function __construct(Twig_ExtensionInterface $extension, $method, array $options = array()) 24 | { 25 | $options['callable'] = array($extension, $method); 26 | 27 | parent::__construct($options); 28 | 29 | $this->extension = $extension; 30 | $this->method = $method; 31 | } 32 | 33 | public function compile() 34 | { 35 | return sprintf('$this->env->getExtension(\'%s\')->%s', $this->extension->getName(), $this->method); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Test/Node.php: -------------------------------------------------------------------------------- 1 | 16 | * @deprecated since 1.12 (to be removed in 2.0) 17 | */ 18 | class Twig_Test_Node extends Twig_Test 19 | { 20 | protected $class; 21 | 22 | public function __construct($class, array $options = array()) 23 | { 24 | parent::__construct($options); 25 | 26 | $this->class = $class; 27 | } 28 | 29 | public function getClass() 30 | { 31 | return $this->class; 32 | } 33 | 34 | public function compile() 35 | { 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /inc/libraries/Twig/Test/NodeTestCase.php: -------------------------------------------------------------------------------- 1 | assertNodeCompilation($source, $node, $environment); 21 | } 22 | 23 | public function assertNodeCompilation($source, Twig_Node $node, Twig_Environment $environment = null) 24 | { 25 | $compiler = $this->getCompiler($environment); 26 | $compiler->compile($node); 27 | 28 | $this->assertEquals($source, trim($compiler->getSource())); 29 | } 30 | 31 | protected function getCompiler(Twig_Environment $environment = null) 32 | { 33 | return new Twig_Compiler(null === $environment ? $this->getEnvironment() : $environment); 34 | } 35 | 36 | protected function getEnvironment() 37 | { 38 | return new Twig_Environment(); 39 | } 40 | 41 | protected function getVariableGetter($name) 42 | { 43 | if (version_compare(phpversion(), '5.4.0RC1', '>=')) { 44 | return sprintf('(isset($context["%s"]) ? $context["%s"] : null)', $name, $name); 45 | } 46 | 47 | return sprintf('$this->getContext($context, "%s")', $name); 48 | } 49 | 50 | protected function getAttributeGetter() 51 | { 52 | if (function_exists('twig_template_get_attributes')) { 53 | return 'twig_template_get_attributes($this, '; 54 | } 55 | 56 | return '$this->getAttribute('; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /inc/libraries/Twig/TestCallableInterface.php: -------------------------------------------------------------------------------- 1 | 16 | * @deprecated since 1.12 (to be removed in 2.0) 17 | */ 18 | interface Twig_TestCallableInterface 19 | { 20 | public function getCallable(); 21 | } 22 | -------------------------------------------------------------------------------- /inc/libraries/Twig/TestInterface.php: -------------------------------------------------------------------------------- 1 | 16 | * @deprecated since 1.12 (to be removed in 2.0) 17 | */ 18 | interface Twig_TestInterface 19 | { 20 | /** 21 | * Compiles a test. 22 | * 23 | * @return string The PHP code for the test 24 | */ 25 | public function compile(); 26 | } 27 | -------------------------------------------------------------------------------- /inc/libraries/Twig/TokenParser.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | abstract class Twig_TokenParser implements Twig_TokenParserInterface 18 | { 19 | /** 20 | * @var Twig_Parser 21 | */ 22 | protected $parser; 23 | 24 | /** 25 | * Sets the parser associated with this token parser 26 | * 27 | * @param $parser A Twig_Parser instance 28 | */ 29 | public function setParser(Twig_Parser $parser) 30 | { 31 | $this->parser = $parser; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /inc/libraries/Twig/TokenParser/Do.php: -------------------------------------------------------------------------------- 1 | parser->getExpressionParser()->parseExpression(); 27 | 28 | $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); 29 | 30 | return new Twig_Node_Do($expr, $token->getLine(), $this->getTag()); 31 | } 32 | 33 | /** 34 | * Gets the tag name associated with this token parser. 35 | * 36 | * @return string The tag name 37 | */ 38 | public function getTag() 39 | { 40 | return 'do'; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /inc/libraries/Twig/TokenParser/Extends.php: -------------------------------------------------------------------------------- 1 | 17 | * {% extends "base.html" %} 18 | * 19 | */ 20 | class Twig_TokenParser_Extends extends Twig_TokenParser 21 | { 22 | /** 23 | * Parses a token and returns a node. 24 | * 25 | * @param Twig_Token $token A Twig_Token instance 26 | * 27 | * @return Twig_NodeInterface A Twig_NodeInterface instance 28 | */ 29 | public function parse(Twig_Token $token) 30 | { 31 | if (!$this->parser->isMainScope()) { 32 | throw new Twig_Error_Syntax('Cannot extend from a block', $token->getLine(), $this->parser->getFilename()); 33 | } 34 | 35 | if (null !== $this->parser->getParent()) { 36 | throw new Twig_Error_Syntax('Multiple extends tags are forbidden', $token->getLine(), $this->parser->getFilename()); 37 | } 38 | $this->parser->setParent($this->parser->getExpressionParser()->parseExpression()); 39 | 40 | $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); 41 | } 42 | 43 | /** 44 | * Gets the tag name associated with this token parser. 45 | * 46 | * @return string The tag name 47 | */ 48 | public function getTag() 49 | { 50 | return 'extends'; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /inc/libraries/Twig/TokenParser/Filter.php: -------------------------------------------------------------------------------- 1 | 16 | * {% filter upper %} 17 | * This text becomes uppercase 18 | * {% endfilter %} 19 | * 20 | */ 21 | class Twig_TokenParser_Filter extends Twig_TokenParser 22 | { 23 | /** 24 | * Parses a token and returns a node. 25 | * 26 | * @param Twig_Token $token A Twig_Token instance 27 | * 28 | * @return Twig_NodeInterface A Twig_NodeInterface instance 29 | */ 30 | public function parse(Twig_Token $token) 31 | { 32 | $name = $this->parser->getVarName(); 33 | $ref = new Twig_Node_Expression_BlockReference(new Twig_Node_Expression_Constant($name, $token->getLine()), true, $token->getLine(), $this->getTag()); 34 | 35 | $filter = $this->parser->getExpressionParser()->parseFilterExpressionRaw($ref, $this->getTag()); 36 | $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); 37 | 38 | $body = $this->parser->subparse(array($this, 'decideBlockEnd'), true); 39 | $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); 40 | 41 | $block = new Twig_Node_Block($name, $body, $token->getLine()); 42 | $this->parser->setBlock($name, $block); 43 | 44 | return new Twig_Node_Print($filter, $token->getLine(), $this->getTag()); 45 | } 46 | 47 | public function decideBlockEnd(Twig_Token $token) 48 | { 49 | return $token->test('endfilter'); 50 | } 51 | 52 | /** 53 | * Gets the tag name associated with this token parser. 54 | * 55 | * @return string The tag name 56 | */ 57 | public function getTag() 58 | { 59 | return 'filter'; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /inc/libraries/Twig/TokenParser/Flush.php: -------------------------------------------------------------------------------- 1 | parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); 29 | 30 | return new Twig_Node_Flush($token->getLine(), $this->getTag()); 31 | } 32 | 33 | /** 34 | * Gets the tag name associated with this token parser. 35 | * 36 | * @return string The tag name 37 | */ 38 | public function getTag() 39 | { 40 | return 'flush'; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /inc/libraries/Twig/TokenParser/Import.php: -------------------------------------------------------------------------------- 1 | 16 | * {% import 'forms.html' as forms %} 17 | * 18 | */ 19 | class Twig_TokenParser_Import extends Twig_TokenParser 20 | { 21 | /** 22 | * Parses a token and returns a node. 23 | * 24 | * @param Twig_Token $token A Twig_Token instance 25 | * 26 | * @return Twig_NodeInterface A Twig_NodeInterface instance 27 | */ 28 | public function parse(Twig_Token $token) 29 | { 30 | $macro = $this->parser->getExpressionParser()->parseExpression(); 31 | $this->parser->getStream()->expect('as'); 32 | $var = new Twig_Node_Expression_AssignName($this->parser->getStream()->expect(Twig_Token::NAME_TYPE)->getValue(), $token->getLine()); 33 | $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); 34 | 35 | $this->parser->addImportedSymbol('template', $var->getAttribute('name')); 36 | 37 | return new Twig_Node_Import($macro, $var, $token->getLine(), $this->getTag()); 38 | } 39 | 40 | /** 41 | * Gets the tag name associated with this token parser. 42 | * 43 | * @return string The tag name 44 | */ 45 | public function getTag() 46 | { 47 | return 'import'; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /inc/libraries/Twig/TokenParser/Spaceless.php: -------------------------------------------------------------------------------- 1 | 16 | * {% spaceless %} 17 | *
18 | * foo 19 | *
20 | * {% endspaceless %} 21 | * 22 | * {# output will be
foo
#} 23 | * 24 | */ 25 | class Twig_TokenParser_Spaceless extends Twig_TokenParser 26 | { 27 | /** 28 | * Parses a token and returns a node. 29 | * 30 | * @param Twig_Token $token A Twig_Token instance 31 | * 32 | * @return Twig_NodeInterface A Twig_NodeInterface instance 33 | */ 34 | public function parse(Twig_Token $token) 35 | { 36 | $lineno = $token->getLine(); 37 | 38 | $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); 39 | $body = $this->parser->subparse(array($this, 'decideSpacelessEnd'), true); 40 | $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); 41 | 42 | return new Twig_Node_Spaceless($body, $lineno, $this->getTag()); 43 | } 44 | 45 | public function decideSpacelessEnd(Twig_Token $token) 46 | { 47 | return $token->test('endspaceless'); 48 | } 49 | 50 | /** 51 | * Gets the tag name associated with this token parser. 52 | * 53 | * @return string The tag name 54 | */ 55 | public function getTag() 56 | { 57 | return 'spaceless'; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /inc/libraries/Twig/TokenParserBrokerInterface.php: -------------------------------------------------------------------------------- 1 | 19 | * @deprecated since 1.12 (to be removed in 2.0) 20 | */ 21 | interface Twig_TokenParserBrokerInterface 22 | { 23 | /** 24 | * Gets a TokenParser suitable for a tag. 25 | * 26 | * @param string $tag A tag name 27 | * 28 | * @return null|Twig_TokenParserInterface A Twig_TokenParserInterface or null if no suitable TokenParser was found 29 | */ 30 | public function getTokenParser($tag); 31 | 32 | /** 33 | * Calls Twig_TokenParserInterface::setParser on all parsers the implementation knows of. 34 | * 35 | * @param Twig_ParserInterface $parser A Twig_ParserInterface interface 36 | */ 37 | public function setParser(Twig_ParserInterface $parser); 38 | 39 | /** 40 | * Gets the Twig_ParserInterface. 41 | * 42 | * @return null|Twig_ParserInterface A Twig_ParserInterface instance or null 43 | */ 44 | public function getParser(); 45 | } 46 | -------------------------------------------------------------------------------- /inc/libraries/Twig/TokenParserInterface.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | interface Twig_TokenParserInterface 18 | { 19 | /** 20 | * Sets the parser associated with this token parser 21 | * 22 | * @param $parser A Twig_Parser instance 23 | */ 24 | public function setParser(Twig_Parser $parser); 25 | 26 | /** 27 | * Parses a token and returns a node. 28 | * 29 | * @param Twig_Token $token A Twig_Token instance 30 | * 31 | * @return Twig_NodeInterface A Twig_NodeInterface instance 32 | * 33 | * @throws Twig_Error_Syntax 34 | */ 35 | public function parse(Twig_Token $token); 36 | 37 | /** 38 | * Gets the tag name associated with this token parser. 39 | * 40 | * @return string The tag name 41 | */ 42 | public function getTag(); 43 | } 44 | -------------------------------------------------------------------------------- /inc/libraries/captcha/captcha.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/captcha.php -------------------------------------------------------------------------------- /inc/libraries/captcha/resources/fonts/AntykwaBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/resources/fonts/AntykwaBold.ttf -------------------------------------------------------------------------------- /inc/libraries/captcha/resources/fonts/Candice.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/resources/fonts/Candice.ttf -------------------------------------------------------------------------------- /inc/libraries/captcha/resources/fonts/Ding-DongDaddyO.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/resources/fonts/Ding-DongDaddyO.ttf -------------------------------------------------------------------------------- /inc/libraries/captcha/resources/fonts/Duality.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/resources/fonts/Duality.ttf -------------------------------------------------------------------------------- /inc/libraries/captcha/resources/fonts/Heineken.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/resources/fonts/Heineken.ttf -------------------------------------------------------------------------------- /inc/libraries/captcha/resources/fonts/Jura.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/resources/fonts/Jura.ttf -------------------------------------------------------------------------------- /inc/libraries/captcha/resources/fonts/StayPuft.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/resources/fonts/StayPuft.ttf -------------------------------------------------------------------------------- /inc/libraries/captcha/resources/fonts/TimesNewRomanBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/resources/fonts/TimesNewRomanBold.ttf -------------------------------------------------------------------------------- /inc/libraries/captcha/resources/fonts/VeraSansBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/resources/fonts/VeraSansBold.ttf -------------------------------------------------------------------------------- /inc/libraries/captcha/resources/tools/dictionary-import/README.txt: -------------------------------------------------------------------------------- 1 | This script reads an standard words file (one word per line) and saves 2 | a new word file with the format needed by the cool-php-capcha script. 3 | 4 | For prevent remote web access, the output file will be a PHP script 5 | and must have the .php extension 6 | 7 | Usage: importwords.php 8 | 9 | Example: importwords.php english.txt en.php 10 | 11 | 12 | -------------------------------------------------------------------------------- /inc/libraries/captcha/resources/tools/dictionary-import/importwords.php: -------------------------------------------------------------------------------- 1 | 7 | * @license GPLv3 8 | * @link http://code.google.com/p/cool-php-captcha 9 | * @package captcha 10 | * 11 | */ 12 | 13 | 14 | /** Word lengths */ 15 | $minLength = 5; 16 | $maxLength = 8; 17 | 18 | 19 | 20 | 21 | 22 | if ($argc < 3) { 23 | die("Usage: $argv[0] infile outfile\n"); 24 | } 25 | 26 | 27 | 28 | 29 | 30 | if (!file_exists($argv[1])) { 31 | die("File '$argv[1]' doesn't exists\n"); 32 | } 33 | 34 | 35 | 36 | $fp = fopen($argv[1], "r"); 37 | $fp2 = fopen($argv[2], "w"); 38 | fwrite($fp2, "=$minLength && $strlen<=$maxLength && preg_match("/^[a-z]+$/", $lin)) { 44 | $lin = str_pad($lin, $maxLength); 45 | fwrite($fp2, "$lin\n"); 46 | } 47 | } 48 | fwrite($fp2, "*/ ?>\n"); 49 | 50 | fclose($fp); 51 | fclose($fp2); 52 | 53 | 54 | 55 | ?> 56 | -------------------------------------------------------------------------------- /inc/templates/auth/login.html: -------------------------------------------------------------------------------- 1 | {% include "header.html" %} 2 | {% include "navi.html" %} 3 | 4 | 16 | 17 | {% include "footer.html" %} 18 | 19 | -------------------------------------------------------------------------------- /inc/templates/auth/register.html: -------------------------------------------------------------------------------- 1 | {% include "header.html" %} 2 | {% include "navi.html" %} 3 | 4 |
5 |
6 |
7 | Registration 8 |

9 | Registration allows you to save interesting reports into favorites. 10 | Please, contact admin if you want to use all advanced features of Scanlab. 11 |

12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 |
20 | 21 | {% include "footer.html" %} 22 | 23 | -------------------------------------------------------------------------------- /inc/templates/error.html: -------------------------------------------------------------------------------- 1 | {% include 'header.html' %} 2 | {% include 'navi.html' %} 3 |
4 |
5 | {{ error_message }} 6 |
7 |
8 | {% include 'footer.html' %} 9 | -------------------------------------------------------------------------------- /inc/templates/error_page.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ERROR 5 | 17 | 18 | 19 | 20 | 21 | 22 |
23 |

I am error

24 |

25 | go back | to index 26 |
27 | 28 | 29 | -------------------------------------------------------------------------------- /inc/templates/footer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /inc/templates/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 18 | ++ ScanLab: deepweb search engine 19 | 20 | 21 | 22 | 23 |
24 | -------------------------------------------------------------------------------- /inc/templates/home.html: -------------------------------------------------------------------------------- 1 | {% include 'header.html' %} 2 | {% include 'navi.html' %} 3 | 4 |
{{ total }} reports in database
5 | 6 |
7 |
Scanlab is...
8 |

your personal deep web search engine.

9 |
10 |
11 | 12 | {% include 'footer.html' %} 13 | -------------------------------------------------------------------------------- /inc/templates/navi.html: -------------------------------------------------------------------------------- 1 | 2 |
deep web research on steroids
3 | {% if SL_ADVERT != false %} 4 | 9 | {% endif %} 10 | 21 | {% include 'search_form.html' %} 22 | -------------------------------------------------------------------------------- /inc/templates/root/stats.html: -------------------------------------------------------------------------------- 1 | {% include "header.html" %} 2 | {% include "navi.html" %} 3 | 4 |
5 |

Database

6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
Collection nameDocumentsSizeAction
Users{{db.users.count}}{{db.users.size }} MBView
Reports{{db.reports.count}}{{db.reports.size }} MB
26 |
27 | 28 | 29 | 30 |
31 |
32 |
33 |

System

34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 48 | 49 | 50 |
ParameterTotalUsedFree
Disk{{disk.total}} MB 45 | {{disk.total - disk.free}} MB 46 | ({{(((disk.total - disk.free) / disk.total) * 100)|round}}%) 47 | {{disk.free}} MB
51 |
52 | 53 | {% include "footer.html" %} 54 | -------------------------------------------------------------------------------- /inc/templates/rss.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Scanlab RSS - {{ description }} 5 | {{ protocol }}://{{ server_name }}{{ REL_URL }} 6 | Scanlab RSS - {{ description }} 7 | {% for row in results %} 8 | 9 | {{ row.report.address }}, {{row.report.geoip.country}} 10 | {{ protocol }}://{{ server_name }}{{ REL_URL }}id/{{ attribute(row, '_id')}} 11 | {{ row.report.address }} {% for tag in row.tags %} [{{tag}}]{% endfor %} 12 | {{ row.timestamp|date("c")}} 13 | 14 | {% endfor %} 15 | 16 | 17 | -------------------------------------------------------------------------------- /inc/templates/search_form.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {% if search_query %} 4 | {% set val = search_query %} 5 | {% else %} 6 | {% set val = "" %} 7 | {% endif %} 8 |
9 | 11 | 12 |
13 |
14 |
15 |
search syntax
16 |
17 |

apache nginx - find all records with words apache and nginx (search in xml).

18 |

"Netwave IP Camera" - find exact phrase Netwave IP Camera in xml.

19 |

-apache "-Test page" - no not include documents with apache and Test page in xml.

20 |

port:21,8080 - find all records with open ports 21 and 8080.

21 |

service:http,ftp - find all records with open http and ftp services.

22 |

country:US,CN - find all records from United States and China.

23 |

tag:camera,linux - find all records with tags camera and linux.

24 |

rated:yes or rated:no - find only rated or unrated records.

25 |
26 |
27 |
28 | -------------------------------------------------------------------------------- /inc/templates/statique/js.html: -------------------------------------------------------------------------------- 1 | rel_url = "{{REL_URL}}" 2 | {% if session.token %} 3 | token = "{{session.token}}" 4 | {% endif %} -------------------------------------------------------------------------------- /inc/templates/user/favorites.html: -------------------------------------------------------------------------------- 1 | {% include 'header.html' %} 2 | {% include 'navi.html' %} 3 |
4 |

{{ user }}'s choice:

5 | {% for fav in favs %} 6 |

7 | {{ fav }} 8 |

9 | {% endfor %} 10 |
11 | {% include 'footer.html' %} 12 | -------------------------------------------------------------------------------- /inc/urls.php: -------------------------------------------------------------------------------- 1 | "Overview", 7 | "api/(login|insert|delete|iplist|get_target|json_overview|json_export|xml_export|xml_id|upload_xml)(.*)" => "Api", 8 | "id/([0-9a-zA-Z]+)" => "Report", 9 | "search\?(.*)" => "Search", 10 | "auth(|/([a-z]+))" => "Auth", 11 | "root(|/([a-z]+))" => "Root", 12 | "user(|/([a-z_]+)(|\?p=([0-9]+)))" => "User", 13 | "rss/(search)?(.*)" => "Rss", 14 | "statique/(js|captcha|)" => "Statique" 15 | ); 16 | 17 | 18 | ## 19 | # Relative URL support 20 | ## 21 | $urls = array(); 22 | foreach ( array_keys($conf_urls) as $key ) { 23 | $urls[REL_URL.$key] = $conf_urls[$key]; 24 | } 25 | 26 | ?> 27 | -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /js/root.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | $('.enable-api').click(function(){ 3 | $.post(rel_url+"root", {action:"enable_api", username:this.title, token:token}).done(function(data){ 4 | if (data == "1") { location.reload();} else { alert("something went wrong"); } 5 | }); 6 | }); 7 | $('.disable-api').click(function(){ 8 | $.post(rel_url+"root", {action:"disable_api", username:this.title, token:token}).done(function(data){ 9 | if (data == "1") { location.reload();} else { alert("something went wrong"); } 10 | }); 11 | }); 12 | $('.del-user').click(function(){ 13 | $.post(rel_url+"root", {action:"del_user", username:this.title, token:token}).done(function(data){ 14 | if (data == "1") { location.reload();} else { alert("something went wrong"); } 15 | }); 16 | }); 17 | $('.del-reports').click(function(){ 18 | $.post(rel_url+"root", {action:"del_reports", username:this.title, token:token}).done(function(data){ 19 | if (data == "1") { location.reload();} else { alert("something went wrong"); } 20 | }); 21 | }); 22 | $('.count-reports').click(function(){ 23 | $.post(rel_url+"root", {action:"count_reports", username:this.title, token:token}).done(function(data){ 24 | if (data == "1") { location.reload();} else { alert("something went wrong"); } 25 | }); 26 | }); 27 | 28 | }); 29 | -------------------------------------------------------------------------------- /other/scanlab.nginx.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 127.0.0.1:80; ## only listen locally 3 | 4 | root /home/user/public_html/scanlab; ## folder with scripts 5 | index index.php; 6 | 7 | client_max_body_size 10m; 8 | server_name scanlab.crypt0.org; ## your server domain name 9 | access_log /dev/null; 10 | error_log /dev/null; 11 | 12 | location / { 13 | if (!-e $request_filename) { 14 | rewrite ^/(.*)$ /index.php?/$1 last; 15 | break; 16 | } 17 | } 18 | 19 | location ~ /inc/* { 20 | return 404; 21 | } 22 | 23 | location ~ \.php$ { 24 | fastcgi_split_path_info ^(.+\.php)(/.+)$; 25 | fastcgi_pass unix:/var/run/php5-fpm.sock; 26 | fastcgi_index index.php; 27 | include fastcgi_params; 28 | } 29 | 30 | } 31 | 32 | 33 | 34 | --------------------------------------------------------------------------------