summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app.py43
-rw-r--r--index.html63
2 files changed, 89 insertions, 17 deletions
diff --git a/app.py b/app.py
index 79b3fa9..cca136c 100644
--- a/app.py
+++ b/app.py
@@ -1,5 +1,6 @@
import re
import logging
+import sqlite3
import subprocess
import tornado.ioloop
import tornado.web
@@ -14,17 +15,49 @@ class MainHandler(tornado.web.RequestHandler):
class ScanHandler(tornado.web.RequestHandler):
+ def initialize(self):
+ conn = sqlite3.connect(":memory:")
+ self.cursor = conn.cursor()
+ self.cursor.execute('CREATE TABLE notes kw text value text')
+
+ def get(self):
+ commands = ('nmap', 'help', '?', '!',)
+
+ out = {'results': list()}
+ cmd = self.get_argument('cmd', '')
+
+ if cmd not in commands or cmd == 'help':
+ out['results'].append({'raw': 'Available commands:'})
+ out['results'].append({'raw': '* nmap - scan your IP'})
+ out['results'].append({'raw': '* ?<keyword> - query keyword'})
+ out['results'].append({'raw': '* !<keyword> definition - learn <keyword>'})
+ out['results'].append({'raw': '* !!<keyword> - forget <keyword>'})
+ out['results'].append({'raw': '* help - shows this help message'})
+
+ if cmd == 'nmap':
+ logging.debug('SCANNING!')
+ result = subprocess.check_output(['nmap', self.request.remote_ip])
+ for r in re.finditer(r'(\d+/[a-z]{3})\s([a-z]+)\s+(.+)', result):
+ t = r.groups()
+ out['results'].append({
+ 'port': t[0],
+ 'state': t[1],
+ 'service': t[2],
+ 'raw': " ".join(r.groups(0))
+ })
+
+ self.write(out)
+
+
+class HelpHandler(tornado.web.RequestHandler):
def get(self):
- logging.debug('SCANNING!')
- result = subprocess.check_output(['nmap', self.request.remote_ip])
- for r in re.finditer(r'(\d+/[a-z]{3})\s([a-z]+)\s+(.+)', result):
- t = r.groups()
- self.write({'port': t[0], 'state': t[1], 'service': t[2]})
+ out = {'results': list()}
application = tornado.web.Application([
(r'/', MainHandler),
(r'/scan/', ScanHandler),
+ (r'/help/', HelpHandler),
])
if __name__ == '__main__':
diff --git a/index.html b/index.html
index 134bbf2..31dfd14 100644
--- a/index.html
+++ b/index.html
@@ -3,25 +3,64 @@
<head>
<title>intercheck 0.001</title>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
- <style type="text/css">
- button {
- width: 100px;
- height: 50px;
- }
- </style>
<script type="text/javascript">
$(function(){
- $('button').click(function(){
- console.log('SCANNING!!!');
- $.getJSON('/scan/', function(r){
- console.log(r);
+ $('.prompt').focus();
+ $('form').submit(function(e){
+ e.preventDefault();
+ var args = $('.prompt').val();
+ $('.prompt').val('');
+ $.getJSON('/scan/', {'cmd': args}, function(r){
+ $(r.results).each(function(i, e){
+ $('<li/>').text(e.raw).appendTo('.output');
+ });
+ $('<li/>').addClass('divider').appendTo('.output');
});
});
});
</script>
+ <style type="text/css">
+ body, html, ul {
+ padding: 0;
+ margin: 0;
+ }
+ body {
+ background-color: #222;
+ font: 12pt "Monaco";
+ color: #fff;
+ }
+ .divider {
+ border: 1px solid #aaa;
+ }
+ .log {
+ width: 100%;
+ }
+ .output {
+ margin: 5px;
+ list-style: none;
+ }
+ .prompt {
+ bottom: 0;
+ height: 30px;
+ width: 100%;
+ border: none;
+ position: fixed;
+ font: 12pt "Monaco";
+ background-color: #fff;
+ }
+ .prompt:focus {
+ outline-width: 0;
+ }
+ </style>
</head>
<body>
- <button type="button">Go!</button>
- <blockquote id="results"></blockquote>
+ <div class="wrapper">
+ <div class="log">
+ <ul class="output"></ul>
+ </div>
+ <form method="post" action="">
+ <input type="text" class="prompt"></input>
+ </form>
+ </div>
</body>
</html>