app.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #!/usr/bin/env python3
  2. from bottle import route, run, request, install, response
  3. from bottle_sqlite import SQLitePlugin
  4. import json
  5. install(SQLitePlugin(dbfile='test.db'))
  6. def turn_me_to_json(cursor,res):
  7. out = []
  8. for row in res:
  9. v = {}
  10. for i, val in enumerate(row):
  11. v[cursor.description[i][0]]=val
  12. out.append(v)
  13. return out
  14. @route('/domain/', method='GET')
  15. def get_domains(db):
  16. c = db.execute('SELECT ip,port,domain,subdomain FROM domains')
  17. out = turn_me_to_json(c,c.fetchall())
  18. return json.dumps(out)
  19. @route('/domain/<ip>', method='PUT')
  20. def put_domain(db, ip="Mystery Domain" ):
  21. if request.json is None or "domain" not in request.json or "subdomain" not in request.json or "port" not in request.json:
  22. response.status=400
  23. return
  24. c = db.execute('UPDATE domains set domain=? and subdomain=? and port=? where ip=?',
  25. (request.json["domain"],request.json["subdomain"],request.json["port"],ip))
  26. if c.rowcount == 0:
  27. c = db.execute('INSERT INTO user_machines (ip,name) values(?,?)', (request.json["ip"],name))
  28. return
  29. @route('/user/', method='GET')
  30. def get_users(db):
  31. c = db.execute('SELECT name, ip FROM user_machines')
  32. out = turn_me_to_json(c,c.fetchall())
  33. return json.dumps(out)
  34. @route('/user/<name>', method='PUT')
  35. def put_users(db, name="Mystery User" ):
  36. if request.json is None or "ip" not in request.json:
  37. response.status=400
  38. return
  39. if len(request.json["ip"]) < 7:
  40. response.status=400
  41. return
  42. c = db.execute('UPDATE user_machines set ip=? where name=?', (request.json["ip"],name))
  43. if c.rowcount == 0:
  44. c = db.execute('INSERT INTO user_machines (ip,name) values(?,?)', (request.json["ip"],name))
  45. return
  46. @route('/nginx/', method='GET')
  47. def get_nginx(db):
  48. c = db.execute('SELECT name, ip FROM nginx')
  49. out = turn_me_to_json(c,c.fetchall())
  50. return json.dumps(out)
  51. @route('/nginx/<name>', method='PUT')
  52. def put_nginx(db, name="Mystery Host" ):
  53. if request.json is None or "ip" not in request.json:
  54. response.status=400
  55. return
  56. if len(request.json["ip"]) < 7:
  57. response.status=400
  58. return
  59. c = db.execute('UPDATE nginx set ip=? where name=?', (request.json["ip"],name))
  60. if c.rowcount == 0:
  61. c = db.execute('INSERT INTO nginx (ip,name) values(?,?)', (request.json["ip"],name))
  62. return
  63. run(host='localhost', port=8080)