Module src.httpapi.miscclientapi.motd

Expand source code
from flask import Blueprint
from flask import Response
import unpaddedbase32

from coredb import blockmetadb
import onionrblocks
from etc import onionrvalues
import config
from onionrutils import bytesconverter

bp = Blueprint('motd', __name__)

signer = config.get("motd.motd_key", onionrvalues.MOTD_SIGN_KEY)

@bp.route('/getmotd')
def get_motd()->Response:
    motds = blockmetadb.get_blocks_by_type("motd")
    newest_time = 0
    message = "No MOTD currently present."
    for x in motds:
        bl = onionrblocks.onionrblockapi.Block(x)
        if not bl.verifySig() or bl.signer != bytesconverter.bytes_to_str(unpaddedbase32.repad(bytesconverter.str_to_bytes(signer))): continue
        if not bl.isSigner(signer): continue
        if bl.claimedTime > newest_time:
            newest_time = bl.claimedTime
            message = bl.bcontent
    return Response(message, headers={"Content-Type": "text/plain"})

Functions

def get_motd()
Expand source code
@bp.route('/getmotd')
def get_motd()->Response:
    motds = blockmetadb.get_blocks_by_type("motd")
    newest_time = 0
    message = "No MOTD currently present."
    for x in motds:
        bl = onionrblocks.onionrblockapi.Block(x)
        if not bl.verifySig() or bl.signer != bytesconverter.bytes_to_str(unpaddedbase32.repad(bytesconverter.str_to_bytes(signer))): continue
        if not bl.isSigner(signer): continue
        if bl.claimedTime > newest_time:
            newest_time = bl.claimedTime
            message = bl.bcontent
    return Response(message, headers={"Content-Type": "text/plain"})