From 267bd9d88864a09bf1432eef003d41773dd722ef Mon Sep 17 00:00:00 2001 From: root Date: Wed, 6 Jan 2021 11:07:44 +0100 Subject: [PATCH] first commit --- .gitignore | 1 + README.md | 8 ++++++ main.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 7 +++++ 4 files changed, 84 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 main.py create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bdaab25 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +env/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..4f231e1 --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# VPN GOLEM + +endpoint | method | body | description +---------+--------+------+------------- +/users | GET | | get list of users +/users | POST | ```{ "name": "johndoe" }``` | create new user + + diff --git a/main.py b/main.py new file mode 100644 index 0000000..ca2ff7c --- /dev/null +++ b/main.py @@ -0,0 +1,68 @@ +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) + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..2f1c9d6 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,7 @@ +click==7.1.2 +Flask==1.1.2 +itsdangerous==1.1.0 +Jinja2==2.11.2 +MarkupSafe==1.1.1 +pkg-resources==0.0.0 +Werkzeug==1.0.1