|
@@ -0,0 +1,74 @@
|
|
|
|
|
+#!/usr/bin/env python3
|
|
|
|
|
+from bottle import route, run, request, install, response
|
|
|
|
|
+from bottle_sqlite import SQLitePlugin
|
|
|
|
|
+import json
|
|
|
|
|
+
|
|
|
|
|
+install(SQLitePlugin(dbfile='test.db'))
|
|
|
|
|
+
|
|
|
|
|
+def turn_me_to_json(cursor,res):
|
|
|
|
|
+ out = []
|
|
|
|
|
+ for row in res:
|
|
|
|
|
+ v = {}
|
|
|
|
|
+ for i, val in enumerate(row):
|
|
|
|
|
+ v[cursor.description[i][0]]=val
|
|
|
|
|
+ out.append(v)
|
|
|
|
|
+ return out
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+@route('/domain/', method='GET')
|
|
|
|
|
+def get_domains(db):
|
|
|
|
|
+ c = db.execute('SELECT ip,port,domain,subdomain FROM domains')
|
|
|
|
|
+ out = turn_me_to_json(c,c.fetchall())
|
|
|
|
|
+ return json.dumps(out)
|
|
|
|
|
+
|
|
|
|
|
+@route('/domain/<ip>', method='PUT')
|
|
|
|
|
+def put_domain(db, ip="Mystery Domain" ):
|
|
|
|
|
+ if request.json is None or "domain" not in request.json or "subdomain" not in request.json or "port" not in request.json:
|
|
|
|
|
+ response.status=400
|
|
|
|
|
+ return
|
|
|
|
|
+ c = db.execute('UPDATE domains set domain=? and subdomain=? and port=? where ip=?',
|
|
|
|
|
+ (request.json["domain"],request.json["subdomain"],request.json["port"],ip))
|
|
|
|
|
+ if c.rowcount == 0:
|
|
|
|
|
+ c = db.execute('INSERT INTO user_machines (ip,name) values(?,?)', (request.json["ip"],name))
|
|
|
|
|
+ return
|
|
|
|
|
+
|
|
|
|
|
+@route('/user/', method='GET')
|
|
|
|
|
+def get_users(db):
|
|
|
|
|
+ c = db.execute('SELECT name, ip FROM user_machines')
|
|
|
|
|
+ out = turn_me_to_json(c,c.fetchall())
|
|
|
|
|
+ return json.dumps(out)
|
|
|
|
|
+
|
|
|
|
|
+@route('/user/<name>', method='PUT')
|
|
|
|
|
+def put_users(db, name="Mystery User" ):
|
|
|
|
|
+ if request.json is None or "ip" not in request.json:
|
|
|
|
|
+ response.status=400
|
|
|
|
|
+ return
|
|
|
|
|
+ if len(request.json["ip"]) < 7:
|
|
|
|
|
+ response.status=400
|
|
|
|
|
+ return
|
|
|
|
|
+ c = db.execute('UPDATE user_machines set ip=? where name=?', (request.json["ip"],name))
|
|
|
|
|
+ if c.rowcount == 0:
|
|
|
|
|
+ c = db.execute('INSERT INTO user_machines (ip,name) values(?,?)', (request.json["ip"],name))
|
|
|
|
|
+ return
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+@route('/nginx/', method='GET')
|
|
|
|
|
+def get_nginx(db):
|
|
|
|
|
+ c = db.execute('SELECT name, ip FROM nginx')
|
|
|
|
|
+ out = turn_me_to_json(c,c.fetchall())
|
|
|
|
|
+ return json.dumps(out)
|
|
|
|
|
+
|
|
|
|
|
+@route('/nginx/<name>', method='PUT')
|
|
|
|
|
+def put_nginx(db, name="Mystery Host" ):
|
|
|
|
|
+ if request.json is None or "ip" not in request.json:
|
|
|
|
|
+ response.status=400
|
|
|
|
|
+ return
|
|
|
|
|
+ if len(request.json["ip"]) < 7:
|
|
|
|
|
+ response.status=400
|
|
|
|
|
+ return
|
|
|
|
|
+ c = db.execute('UPDATE nginx set ip=? where name=?', (request.json["ip"],name))
|
|
|
|
|
+ if c.rowcount == 0:
|
|
|
|
|
+ c = db.execute('INSERT INTO nginx (ip,name) values(?,?)', (request.json["ip"],name))
|
|
|
|
|
+ return
|
|
|
|
|
+
|
|
|
|
|
+run(host='localhost', port=8080)
|