vpnunit/main.py

69 lines
1.8 KiB
Python

import sqlite3
import sys
from flask import Flask, request, jsonify
app = Flask(__name__)
DATABASE='/data/database.sqlite3'
db = sqlite3.connect(DATABASE)
cu = db.cursor()
db.execute('SELECT name FROM sqlite_master')
if len(cu.fetchall()) == 0:
print('creating database schema...')
db.execute('CREATE TABLE IF NOT EXISTS user (id INTEGER PRIMARY KEY, name TEXT UNIQUE)')
db.execute('CREATE TABLE IF NOT EXISTS gateway (id INTEGER PRIMARY KEY, name TEXT UNIQUE, user INTEGER REFERENCES user(id))')
db.commit()
cu.close()
db.close()
@app.route('/')
def hello_world():
return 'It works!'
@app.route('/users', methods=['GET'])
def get_users():
db = sqlite3.connect(DATABASE)
cu = db.cursor()
users = []
for row in cu.execute('SELECT id, name FROM user'):
users.append({'id': row[0], 'name': row[1]})
cu.close()
db.close()
return jsonify(users)
@app.route('/users', methods=['POST'])
def post_users():
db = sqlite3.connect(DATABASE)
cu = db.cursor()
name = request.json['name']
print('creating ' + str(name))
try:
cu.execute('INSERT INTO user (name) VALUES (?)', (name,))
return jsonify({'status': 'ok'})
except sqlite3.Error as e:
return jsonify({'status': 'error', 'message': str(e)}), 409
finally:
db.commit()
cu.close()
db.close()
@app.route('/gateways', methods=['GET'])
def get_gateway():
db = sqlite3.connect(DATABASE)
cu = db.cursor()
gateways = []
for row in cu.execute('SELECT id, name, user FROM gateway'):
gateways.append({'id': row[0], 'name': row[1], 'user': row[2], 'network': row[3]})
cu.close()
db.close()
return jsonify(gateways)
if __name__ == '__main__':
app.run(host="::", port=5000, debug=True)