Procházet zdrojové kódy

basic crud rest interface for ansible

David před 10 roky
rodič
revize
3fc0dd4bed
1 změnil soubory, kde provedl 74 přidání a 0 odebrání
  1. 74 0
      web/app.py

+ 74 - 0
web/app.py

@@ -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)