From 18de0e7b855c7011d07cd6c655584e6097b89ebb Mon Sep 17 00:00:00 2001 From: suti7yk5032 Date: Tue, 23 Jul 2024 15:15:24 +0900 Subject: [PATCH] =?UTF-8?q?=E5=81=9C=E6=AD=A2=E5=87=A6=E7=90=86=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dislocker_auth.py | 73 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 62 insertions(+), 11 deletions(-) diff --git a/dislocker_auth.py b/dislocker_auth.py index 7367494..4e46ea8 100644 --- a/dislocker_auth.py +++ b/dislocker_auth.py @@ -34,18 +34,53 @@ class Auth(): self.db = psycopg2.connect(f"host={host} dbname={db} port={port} user={user} password={password}") def check(self, pc_number, password): - cursor = self.db.cursor() - cursor.execute("SELECT * FROM pc_list WHERE pc_number = %s AND password_hash = %s", (pc_number, password)) - pc_info = cursor.fetchall() - if not pc_info: - return 1 - else: - return 0 + try: + cursor = self.db.cursor() + cursor.execute("SELECT * FROM pc_list WHERE pc_number = %s AND password_hash = %s", (pc_number, password)) + pc_info = cursor.fetchall() + if not pc_info: + return 1 + else: + return 0 + finally: + cursor.close() def delete(self, pc_number): - cursor = self.db.cursor() - cursor.execute("UPDATE pc_list SET password_hash = NULL WHERE pc_number = %s", (pc_number,)) - self.db.commit() + try: + cursor = self.db.cursor() + cursor.execute("UPDATE pc_list SET password_hash = NULL WHERE pc_number = %s", (pc_number,)) + self.db.commit() + finally: + cursor.close() + + def stop(self, **kwargs): + try: + pc_number = int(kwargs["pc_number"]) + cursor = self.db.cursor() + cursor.execute("SELECT * FROM pc_list WHERE pc_number = %s", (pc_number,)) + pc_list_record = cursor.fetchall() + if not pc_list_record[0][1] == None: + cursor.execute("UPDATE pc_list SET using_user_id = NULL WHERE pc_number = %s", (pc_number,)) + + if not pc_list_record[0][2] == None: + cursor.execute("UPDATE pc_list SET password_hash = NULL WHERE pc_number = %s", (pc_number,)) + + cursor.execute("SELECT * FROM pc_usage_history WHERE member_id = %s AND pc_number = %s ORDER BY id DESC LIMIT 1", (pc_list_record[0][1], pc_number)) + pc_usage_history_record = cursor.fetchall() + cursor.execute("UPDATE pc_usage_history SET end_use_time = current_timestamp WHERE id = %s", (pc_usage_history_record[0][0],)) + self.db.commit() + result = {"result": "ok"} + + else: + result = {"result": "not_used"} + + except: + result = {"result": "error"} + + finally: + cursor.close() + return result + app = Flask(__name__, static_folder="./resource/") @@ -55,13 +90,29 @@ auth = Auth(server_config["db"]["host"], server_config["db"]["db_name"], server_ def verify(): pc_number = int(request.json.get('pc_number')) password = request.json.get('password') - print(str(pc_number), str(password)) + print(str(pc_number) + "の認証処理を開始...") if auth.check(pc_number, password) == 0: auth.delete(pc_number) + print(str(pc_number) + "の認証処理は成功しました.") return jsonify({'message': 'ok'}), 200 else: + print(str(pc_number) + "の認証処理は失敗しました.") return jsonify({'message': 'damedesu'}), 401 +@app.route('/stop', methods=['POST']) +def stop(): + pc_number = int(request.json.get('pc_number')) + print(str(pc_number) + "の使用停止処理を開始...") + pc_stop = auth.stop(pc_number=pc_number) + if pc_stop["result"] == "ok": + print(str(pc_number) + "の使用停止処理は成功しました.") + return jsonify({'message': 'ok'}), 200 + else: + print(str(pc_number) + "の使用停止処理は失敗しました.") + return jsonify({'message': 'error'}), 500 + + + if __name__ == '__main__': app.run(host="0.0.0.0", port=5000, debug=True) \ No newline at end of file