Beispiel #1
0
def get_diagonalleys_indexers(
        wallet_ids: Union[str, List[str]]) -> List[Indexers]:
    if isinstance(wallet_ids, str):
        wallet_ids = [wallet_ids]

    with open_ext_db("diagonalley") as db:
        q = ",".join(["?"] * len(wallet_ids))
        rows = db.fetchall(f"SELECT * FROM indexers WHERE wallet IN ({q})",
                           (*wallet_ids, ))

        for r in rows:
            try:
                x = requests.get(r["indexeraddress"] + "/" + r["ratingkey"])
                if x.status_code == 200:
                    with open_ext_db("diagonalley") as db:
                        db.execute(
                            "UPDATE indexers SET online = ? WHERE id = ?", (
                                True,
                                r["id"],
                            ))
                else:
                    with open_ext_db("diagonalley") as db:
                        db.execute(
                            "UPDATE indexers SET online = ? WHERE id = ?", (
                                False,
                                r["id"],
                            ))
            except:
                print("An exception occurred")
    with open_ext_db("diagonalley") as db:
        q = ",".join(["?"] * len(wallet_ids))
        rows = db.fetchall(f"SELECT * FROM indexers WHERE wallet IN ({q})",
                           (*wallet_ids, ))
    return [Indexers(**row) for row in rows]
Beispiel #2
0
def get_diagonalleys_orders(wallet_ids: Union[str, List[str]]) -> List[Orders]:
    if isinstance(wallet_ids, str):
        wallet_ids = [wallet_ids]

    with open_ext_db("diagonalley") as db:
        q = ",".join(["?"] * len(wallet_ids))
        rows = db.fetchall(
            f"SELECT * FROM diagonalley.orders WHERE wallet IN ({q})", (*wallet_ids,)
        )
    for r in rows:
        PAID = (await WALLET.get_invoice_status(r["invoiceid"])).paid
        if PAID:
            with open_ext_db("diagonalley") as db:
                db.execute(
                    "UPDATE diagonalley.orders SET paid = ? WHERE id = ?",
                    (
                        True,
                        r["id"],
                    ),
                )
                rows = db.fetchall(
                    f"SELECT * FROM diagonalley.orders WHERE wallet IN ({q})",
                    (*wallet_ids,),
                )
    return [Orders(**row) for row in rows]
Beispiel #3
0
def get_diagonalleys_indexer(indexer_id: str) -> Optional[Indexers]:
    with open_ext_db("diagonalley") as db:
        roww = db.fetchone(
            "SELECT * FROM diagonalley.indexers WHERE id = ?", (indexer_id,)
        )
    try:
        x = httpx.get(roww["indexeraddress"] + "/" + roww["ratingkey"])
        if x.status_code == 200:
            print(x)
            print("poo")
            with open_ext_db("diagonalley") as db:
                db.execute(
                    "UPDATE diagonalley.indexers SET online = ? WHERE id = ?",
                    (
                        True,
                        indexer_id,
                    ),
                )
        else:
            with open_ext_db("diagonalley") as db:
                db.execute(
                    "UPDATE diagonalley.indexers SET online = ? WHERE id = ?",
                    (
                        False,
                        indexer_id,
                    ),
                )
    except:
        print("An exception occurred")
    with open_ext_db("diagonalley") as db:
        row = db.fetchone(
            "SELECT * FROM diagonalley.indexers WHERE id = ?", (indexer_id,)
        )
    return Indexers(**row) if row else None
Beispiel #4
0
def delete_usermanager_user(user_id: str) -> None:
    row = get_usermanager_wallets(user_id)
    print("test")
    with open_ext_db("usermanager") as db:
        db.execute("DELETE FROM users WHERE id = ?", (user_id,))
    row
    for r in row:
        delete_wallet(user_id=user_id, wallet_id=r.id)
    with open_ext_db("usermanager") as dbb:
        dbb.execute("DELETE FROM wallets WHERE user = ?", (user_id,))
Beispiel #5
0
def api_lnurlfetch(parstr, urlstr, rand):
    """Returns LNURL json."""

    if not parstr:
        return jsonify({"status": "FALSE", "ERROR": "NO WALL ID"}), 200

    if not urlstr:
        return jsonify({"status": "FALSE", "ERROR": "NO URL"}), 200

    with open_ext_db("withdraw") as withdraw_ext_db:
        user_fau = withdraw_ext_db.fetchall(
            "SELECT * FROM withdraws WHERE uni = ?", (parstr, ))
        k1str = uuid.uuid4().hex
        withdraw_ext_db.execute(
            "UPDATE withdraws SET withdrawals = ? WHERE uni = ?", (
                k1str,
                parstr,
            ))

    res = LnurlWithdrawResponse(
        callback=url_for("withdraw.api_lnurlwithdraw",
                         _external=True,
                         rand=rand).replace("http://", "https://"),
        k1=k1str,
        min_withdrawable=user_fau[0][8] * 1000,
        max_withdrawable=user_fau[0][7] * 1000,
        default_description="LNbits LNURL withdraw",
    )

    return res.json(), 200
Beispiel #6
0
def api_lnurlencode(urlstr, parstr):
    """Returns encoded LNURL if web url and parameter gieven."""

    if not urlstr:
        return jsonify({"status": "FALSE"}), 200

    with open_ext_db("withdraw") as withdraw_ext_db:
        user_fau = withdraw_ext_db.fetchall(
            "SELECT * FROM withdraws WHERE uni = ?", (parstr, ))
        randar = user_fau[0][15].split(",")
        print(randar)
        # randar = randar[:-1]
        # If "Unique links" selected get correct rand, if not there is only one rand
        if user_fau[0][12] > 0:
            rand = randar[user_fau[0][10] - 1]
        else:
            rand = randar[0]

    url = url_for("withdraw.api_lnurlfetch",
                  _external=True,
                  urlstr=urlstr,
                  parstr=parstr,
                  rand=rand)

    return jsonify({
        "status": "TRUE",
        "lnurl": lnurl_encode(url.replace("http://", "https://"))
    }), 200
Beispiel #7
0
def create_pay_link(
    *,
    wallet_id: str,
    description: str,
    amount: int,
    webhook_url: Optional[str] = None,
    success_text: Optional[str] = None,
    success_url: Optional[str] = None,
) -> Optional[PayLink]:
    with open_ext_db("lnurlp") as db:
        db.execute(
            """
            INSERT INTO pay_links (
                wallet,
                description,
                amount,
                served_meta,
                served_pr,
                webhook_url,
                success_text,
                success_url
            )
            VALUES (?, ?, ?, 0, 0, ?, ?, ?)
            """,
            (wallet_id, description, amount, webhook_url, success_text,
             success_url),
        )
        link_id = db.cursor.lastrowid
    return get_pay_link(link_id)
Beispiel #8
0
def index():
    """Main withdraw link page."""

    usr = request.args.get("usr")

    if usr:
        if not len(usr) > 20:
            return redirect(url_for("home"))

    # Get all the data
    with open_db() as db:
        user_wallets = db.fetchall("SELECT * FROM wallets WHERE user = ?",
                                   (usr, ))
        user_ext = db.fetchall("SELECT * FROM extensions WHERE user = ?",
                               (usr, ))
        user_ext = [v[0] for v in user_ext]

    with open_ext_db("withdraw") as withdraw_ext_db:
        user_fau = withdraw_ext_db.fetchall(
            "SELECT * FROM withdraws WHERE usr = ?", (usr, ))

        # If del is selected by user from withdraw page, the withdraw link is to be deleted
        faudel = request.args.get("del")
        if faudel:
            withdraw_ext_db.execute("DELETE FROM withdraws WHERE uni = ?",
                                    (faudel, ))
            user_fau = withdraw_ext_db.fetchall(
                "SELECT * FROM withdraws WHERE usr = ?", (usr, ))

    return render_template("withdraw/index.html",
                           user_wallets=user_wallets,
                           user=usr,
                           user_ext=user_ext,
                           user_fau=user_fau)
Beispiel #9
0
def create_event(
    *,
    wallet: str,
    name: str,
    info: str,
    closing_date: str,
    event_start_date: str,
    event_end_date: str,
    amount_tickets: int,
    price_per_ticket: int,
) -> Events:
    with open_ext_db("events") as db:
        event_id = urlsafe_short_hash()
        db.execute(
            """
            INSERT INTO events (id, wallet, name, info, closing_date, event_start_date, event_end_date, amount_tickets, price_per_ticket, sold)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
            """,
            (
                event_id,
                wallet,
                name,
                info,
                closing_date,
                event_start_date,
                event_end_date,
                amount_tickets,
                price_per_ticket,
                0,
            ),
        )
        print(event_id)

    return get_event(event_id)
Beispiel #10
0
def update_ticket(paid: bool, checking_id: str) -> Tickets:
    with open_ext_db("events") as db:
        row = db.fetchone("SELECT * FROM ticket WHERE id = ?", (checking_id,))
        if row[6] == True:
            return get_ticket(checking_id)
        db.execute(
            """
            UPDATE ticket
            SET paid = ?
            WHERE id = ?
            """,
            (paid, checking_id),
        )

        eventdata = get_event(row[2])
        sold = eventdata.sold + 1
        amount_tickets = eventdata.amount_tickets - 1
        db.execute(
            """
            UPDATE events
            SET sold = ?, amount_tickets = ?
            WHERE id = ?
            """,
            (sold, amount_tickets, row[2]),
        )
    return get_ticket(checking_id)
Beispiel #11
0
def get_event_tickets(event_id: str, wallet_id: str) -> Tickets:

    with open_ext_db("events") as db:
        rows = db.fetchall("SELECT * FROM ticket WHERE wallet = ? AND event = ?", (wallet_id, event_id))
        print(rows)

    return [Tickets(**row) for row in rows]
Beispiel #12
0
async def api_diagonalley_stall_order(indexer_id):
    product = get_diagonalleys_product(g.data["id"])
    shipping = get_diagonalleys_indexer(indexer_id)

    if g.data["shippingzone"] == 1:
        shippingcost = shipping.zone1cost
    else:
        shippingcost = shipping.zone2cost

    checking_id, payment_request = create_invoice(
        wallet_id=product.wallet, amount=shippingcost + (g.data["quantity"] * product.price), memo=g.data["id"]
    )
    selling_id = urlsafe_b64encode(uuid4().bytes_le).decode("utf-8")
    with open_ext_db("diagonalley") as db:
        db.execute(
            """
            INSERT INTO orders (id, productid, wallet, product, quantity, shippingzone, address, email, invoiceid, paid, shipped)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
            """,
            (
                selling_id,
                g.data["id"],
                product.wallet,
                product.product,
                g.data["quantity"],
                g.data["shippingzone"],
                g.data["address"],
                g.data["email"],
                checking_id,
                False,
                False,
            ),
        )
    return jsonify({"checking_id": checking_id, "payment_request": payment_request}), HTTPStatus.OK
Beispiel #13
0
def get_usermanager_wallets(user_id: str) -> Wallets:

    with open_ext_db("usermanager") as db:
        rows = db.fetchall("SELECT * FROM wallets WHERE admin = ?",
                           (user_id, ))

    return [Wallets(**row) for row in rows]
Beispiel #14
0
def update_ticket(paid: bool, payment_hash: str) -> Tickets:
    with open_ext_db("lnticket") as db:
        row = db.fetchone("SELECT * FROM ticket WHERE id = ?",
                          (payment_hash, ))
        if row[7] == True:
            return get_ticket(payment_hash)
        db.execute(
            """
            UPDATE ticket
            SET paid = ?
            WHERE id = ?
            """,
            (paid, payment_hash),
        )

        formdata = get_form(row[1])
        amount = formdata.amountmade + row[7]
        db.execute(
            """
            UPDATE forms
            SET amountmade = ?
            WHERE id = ?
            """,
            (amount, row[1]),
        )
    return get_ticket(payment_hash)
Beispiel #15
0
def get_diagonalleys_product(product_id: str) -> Optional[Products]:
    with open_ext_db("diagonalley") as db:
        row = db.fetchone(
            "SELECT * FROM diagonalley.products WHERE id = ?", (product_id,)
        )

    return Products(**row) if row else None
Beispiel #16
0
def create_diagonalleys_product(
    *,
    wallet_id: str,
    product: str,
    categories: str,
    description: str,
    image: str,
    price: int,
    quantity: int,
) -> Products:
    with open_ext_db("diagonalley") as db:
        product_id = urlsafe_b64encode(uuid4().bytes_le).decode("utf-8")
        db.execute(
            """
            INSERT INTO diagonalley.products (id, wallet, product, categories, description, image, price, quantity)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?)
            """,
            (
                product_id,
                wallet_id,
                product,
                categories,
                description,
                image,
                price,
                quantity,
            ),
        )

    return get_diagonalleys_product(product_id)
Beispiel #17
0
def create_diagonalleys_order(
    *,
    productid: str,
    wallet: str,
    product: str,
    quantity: int,
    shippingzone: str,
    address: str,
    email: str,
    invoiceid: str,
    paid: bool,
    shipped: bool,
) -> Indexers:
    with open_ext_db("diagonalley") as db:
        order_id = urlsafe_b64encode(uuid4().bytes_le).decode("utf-8")
        db.execute(
            """
            INSERT INTO orders (id, productid, wallet, product, quantity, shippingzone, address, email, invoiceid, paid, shipped)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
            """,
            (order_id, productid, wallet, product, quantity, shippingzone,
             address, email, invoiceid, False, False),
        )

    return get_diagonalleys_order(order_id)
Beispiel #18
0
def api_diagonalleys_order_paid(order_id):
    with open_ext_db("diagonalley") as db:
        db.execute("UPDATE orders SET paid = ? WHERE id = ?", (
            True,
            order_id,
        ))
    return "", Status.OK
Beispiel #19
0
async def api_diagonalleys_stall_checkshipped(checking_id):
    with open_ext_db("diagonalley") as db:
        rows = db.fetchone(
            "SELECT * FROM diagonalley.orders WHERE invoiceid = ?",
            (checking_id, ))

    return jsonify({"shipped": rows["shipped"]}), HTTPStatus.OK
Beispiel #20
0
def update_withdraw_link(link_id: str, **kwargs) -> Optional[WithdrawLink]:
    q = ", ".join([f"{field[0]} = ?" for field in kwargs.items()])
    with open_ext_db("withdraw") as db:
        db.execute(f"UPDATE withdraw_links SET {q} WHERE id = ?", (*kwargs.values(), link_id))
        row = db.fetchone("SELECT * FROM withdraw_links WHERE id = ?", (link_id,))

    return WithdrawLink.from_row(row) if row else None
Beispiel #21
0
def create_diagonalleys_indexer(
    wallet_id: str,
    shopname: str,
    indexeraddress: str,
    shippingzone1: str,
    shippingzone2: str,
    zone1cost: int,
    zone2cost: int,
    email: str,
) -> Indexers:
    with open_ext_db("diagonalley") as db:
        indexer_id = urlsafe_b64encode(uuid4().bytes_le).decode("utf-8")
        db.execute(
            """
            INSERT INTO diagonalley.indexers (id, wallet, shopname, indexeraddress, online, rating, shippingzone1, shippingzone2, zone1cost, zone2cost, email)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
            """,
            (
                indexer_id,
                wallet_id,
                shopname,
                indexeraddress,
                False,
                0,
                shippingzone1,
                shippingzone2,
                zone1cost,
                zone2cost,
                email,
            ),
        )
    return get_diagonalleys_indexer(indexer_id)
Beispiel #22
0
def reg_ticket(ticket_id: str) -> Tickets:
    with open_ext_db("events") as db:
        db.execute("UPDATE ticket SET registered = ? WHERE id = ?", (True, ticket_id))
        ticket = db.fetchone("SELECT * FROM ticket WHERE id = ?", (ticket_id,))
        print(ticket[1])
        rows = db.fetchall("SELECT * FROM ticket WHERE event = ?", (ticket[1],))

    return [Tickets(**row) for row in rows]
Beispiel #23
0
def update_event(event_id: str, **kwargs) -> Events:
    q = ", ".join([f"{field[0]} = ?" for field in kwargs.items()])
    with open_ext_db("events") as db:
        db.execute(f"UPDATE events SET {q} WHERE id = ?", (*kwargs.values(), event_id))

        row = db.fetchone("SELECT * FROM events WHERE id = ?", (event_id,))

    return Events(**row) if row else None
Beispiel #24
0
def update_form(form_id: str, **kwargs) -> Forms:
    q = ", ".join([f"{field[0]} = ?" for field in kwargs.items()])
    with open_ext_db("lnticket") as db:
        db.execute(f"UPDATE forms SET {q} WHERE id = ?",
                   (*kwargs.values(), form_id))
        row = db.fetchone("SELECT * FROM forms WHERE id = ?", (form_id, ))

    return Forms(**row) if row else None
Beispiel #25
0
def get_paywalls(wallet_ids: Union[str, List[str]]) -> List[Paywall]:
    if isinstance(wallet_ids, str):
        wallet_ids = [wallet_ids]

    with open_ext_db("paywall") as db:
        q = ",".join(["?"] * len(wallet_ids))
        rows = db.fetchall(f"SELECT * FROM paywalls WHERE wallet IN ({q})", (*wallet_ids,))

    return [Paywall(**row) for row in rows]
Beispiel #26
0
def mark_webhook_sent(payment_hash: str, status: int) -> None:
    with open_ext_db("lnurlp") as db:
        db.execute(
            """
            UPDATE invoices SET webhook_sent = ?
            WHERE payment_hash = ?
            """,
            (status, payment_hash),
        )
Beispiel #27
0
def get_withdraw_links(wallet_ids: Union[str, List[str]]) -> List[WithdrawLink]:
    if isinstance(wallet_ids, str):
        wallet_ids = [wallet_ids]

    with open_ext_db("withdraw") as db:
        q = ",".join(["?"] * len(wallet_ids))
        rows = db.fetchall(f"SELECT * FROM withdraw_links WHERE wallet IN ({q})", (*wallet_ids,))

    return [WithdrawLink.from_row(row) for row in rows]
Beispiel #28
0
def get_withdraw_link(link_id: str, num=None) -> Optional[WithdrawLink]:
    with open_ext_db("withdraw") as db:
        row = db.fetchone("SELECT * FROM withdraw_links WHERE id = ?", (link_id,))
        link = []
        for item in row:
           link.append(item) 
    tohash = row["id"] + row["unique_hash"] + str(num)
    link.append(shortuuid.uuid(name=tohash))
    return WithdrawLink._make(link)
Beispiel #29
0
def get_withdraw_link(link_id: str, num=0) -> Optional[WithdrawLink]:
    with open_ext_db("withdraw") as db:
        row = db.fetchone("SELECT * FROM withdraw_link WHERE id = ?",
                          (link_id, ))
    link = []
    for item in row:
        link.append(item)
    link.append(num)
    return WithdrawLink._make(link)
Beispiel #30
0
def increment_pay_link(link_id: int, **kwargs) -> Optional[PayLink]:
    q = ", ".join([f"{field[0]} = {field[0]} + ?" for field in kwargs.items()])

    with open_ext_db("lnurlp") as db:
        db.execute(f"UPDATE pay_links SET {q} WHERE id = ?",
                   (*kwargs.values(), link_id))
        row = db.fetchone("SELECT * FROM pay_links WHERE id = ?", (link_id, ))

    return PayLink.from_row(row) if row else None