diff --git a/.gitignore b/.gitignore index 10b5b15..e85b5bb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ venv/* mine_data/* mariadb_data/* +*.pem +*__pycache__* +*.swp diff --git a/cli.py b/cli.py index e33ad77..cb5e056 100644 --- a/cli.py +++ b/cli.py @@ -263,8 +263,10 @@ def opt_view_deck(): msg_array[0] = "You have no cards to view"; return; - for i, card in enumerate(cards): - print(f"{i+1}. Card ID: {card['cardId']}, Page ID: {card['pageId']}"); + msg = "Successfully listed deck.\n" + for card in cards: + msg += f"Card ID: {card['cardId']}, Page ID: {card['pageId']}\n" + msg_array[0] = msg except Exception as e: msg_array[0] = f"Error fetching cards: {str(e)}"; diff --git a/client-requirements.txt b/client-requirements.txt new file mode 100644 index 0000000..e6edb68 --- /dev/null +++ b/client-requirements.txt @@ -0,0 +1,3 @@ +cryptography +dotenv +wikipedia diff --git a/docker-compose.yaml b/docker-compose.yaml index b1658fc..e8ec7c2 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -13,6 +13,7 @@ services: MINE_DB_HOST: mariadb-mine MINE_DB_USER: mine MINE_DB_PASSWORD: 123abc + MINE_LOG_FILE: /tmp/mine.log depends_on: - mariadb-mine ports: diff --git a/wikideck/Mine/Database.py b/wikideck/Mine/Database.py index 3064f6b..11b5e47 100644 --- a/wikideck/Mine/Database.py +++ b/wikideck/Mine/Database.py @@ -1,5 +1,6 @@ import base64 import datetime +import logging import mariadb import os import time @@ -181,6 +182,8 @@ class Database(): """ def __init__(self): + logging.basicConfig(filename=os.getenv('MINE_LOG_FILE', '/var/log/mine.log'), level=logging.INFO) + self.logger = logging.getLogger(__name__) delay = 2 while True: try: @@ -195,6 +198,7 @@ class Database(): for each in self.SQL_CREATE_TABLES: self.conn.cursor().execute(each) except mariadb.Error as e: + self.logger.error(e) time.sleep(delay := delay**2) continue break @@ -239,28 +243,23 @@ class Database(): def get_blocks(self): cur = self.conn.cursor() - cur.execute(self.SQL_GET_LAST_BLOCK) + cur.execute(self.SQL_GET_BLOCKS) blocks = cur.fetchall() - if blocks: - blockCard = self.get_card_by_block_id(lastBlock[0]) - blockTransactions = self.get_transactions_by_block_id(lastBlock[0]) - return [ - Block( - blockId = uuid.UUID(block[0]), - previousHash = block[1], - timestamp = datetime.datetime.strptime( - block[2], - "%Y-%m-%d %H:%M:%S.%f%z" - ), - height = block[3], - difficulty = block[4], - nonce = block[5], - card = blockCard, - transactions = blockTransactions - ) - ] - else: - return None + return [ + Block( + blockId = uuid.UUID(block[0]), + previousHash = block[1], + timestamp = datetime.datetime.strptime( + block[2], + "%Y-%m-%d %H:%M:%S.%f%z" + ), + height = block[3], + difficulty = block[4], + nonce = block[5], + card = self.get_card_by_block_id(block[0]), + transactions = self.get_transactions_by_block_id(block[0]) + ) for block in blocks + ] if blocks else [] def get_last_block(self): cur = self.conn.cursor() diff --git a/wikideck/Mine/Mine.py b/wikideck/Mine/Mine.py index e5e5825..c29aa59 100644 --- a/wikideck/Mine/Mine.py +++ b/wikideck/Mine/Mine.py @@ -50,7 +50,8 @@ def generate_origin_block(): @mine.get('/') def index_get(): try: - return jsonify([each.as_dict() for each in db.get_blocks()]) + blocks = db.get_blocks() + return flask.jsonify([block.as_dict() for block in blocks]) if blocks else flask.jsonify({}) except Exception as e: return flask.jsonify( {'Error': str(e)} @@ -171,6 +172,8 @@ def cards_get(): ) ) return flask.jsonify([card.as_dict() for card in deck] if deck else []) + else: + return flask.jsonify({'Error': "No public key."}), 400 except Exception as e: return flask.jsonify( {'Error': str(e)}