diff --git a/main.py b/main.py index facadab..6a2bf38 100644 --- a/main.py +++ b/main.py @@ -146,6 +146,10 @@ def playground(): if __name__ == '__main__': env_path = Path('.env') + if not env_path.is_file(): + with open('.env', 'w') as f: + print("Wrting new .env file") + f.write('') if env_path.is_file(): print(f'loading environment from {env_path.resolve()}') dotenv.load_dotenv(env_path, verbose=True, override=True) diff --git a/nostr_dvm/backends/nova_server/utils.py b/nostr_dvm/backends/nova_server/utils.py index 613032e..2796cc8 100644 --- a/nostr_dvm/backends/nova_server/utils.py +++ b/nostr_dvm/backends/nova_server/utils.py @@ -43,9 +43,6 @@ def send_file_to_server(filepath, address): return result - # headers = {'Content-type': 'application/x-www-form-urlencoded'} - - """ check_n_server_status(request_form, address) Function that requests the status of the current process with the jobID (we use the Nostr event as jobID). diff --git a/nostr_dvm/utils/zap_utils.py b/nostr_dvm/utils/zap_utils.py index ed85ced..c9d8680 100644 --- a/nostr_dvm/utils/zap_utils.py +++ b/nostr_dvm/utils/zap_utils.py @@ -9,12 +9,12 @@ from Crypto.Cipher import AES from Crypto.Util.Padding import pad from bech32 import bech32_decode, convertbits, bech32_encode from nostr_sdk import nostr_sdk, PublicKey, SecretKey, Event, EventBuilder, Tag, Keys + from nostr_dvm.utils.nostr_utils import get_event_by_id, check_and_decrypt_own_tags import lnurl from hashlib import sha256 import dotenv - # TODO tor connection to lnbits # proxies = { # 'http': 'socks5h://127.0.0.1:9050', @@ -23,6 +23,7 @@ import dotenv proxies = {} + def parse_zap_event_tags(zap_event, keys, name, client, config): zapped_event = None invoice_amount = 0 @@ -126,10 +127,11 @@ def create_bolt11_lud16(lud16, amount): except: return None + def create_lnbits_account(name): if os.getenv("LNBITS_ADMIN_ID") is None or os.getenv("LNBITS_ADMIN_ID") == "": print("No admin id set, no wallet created.") - return + return "","","","", "failed" data = { 'admin_id': os.getenv("LNBITS_ADMIN_ID"), 'wallet_name': name, @@ -144,9 +146,11 @@ def create_lnbits_account(name): walletjson = json.loads(r.text) print(walletjson) if walletjson.get("wallets"): - return walletjson['wallets'][0]['inkey'], walletjson['wallets'][0]['adminkey'], walletjson['wallets'][0]['id'], walletjson['id'], "success" + return walletjson['wallets'][0]['inkey'], walletjson['wallets'][0]['adminkey'], walletjson['wallets'][0][ + 'id'], walletjson['id'], "success" except: print("error creating wallet") + return "", "", "", "", "failed" def check_bolt11_ln_bits_is_paid(payment_hash: str, config): @@ -278,9 +282,6 @@ def zap(lud16: str, amount: int, content, zapped_event: Event, keys, dvm_config, return None - - - def get_price_per_sat(currency): import requests @@ -298,13 +299,11 @@ def get_price_per_sat(currency): return price_currency_per_sat - def make_ln_address_nostdress(identifier, npub, pin, nostdressdomain): - #env_path = Path('.env') - #if env_path.is_file(): + # env_path = Path('.env') + # if env_path.is_file(): # dotenv.load_dotenv(env_path, verbose=True, override=True) - print(os.getenv("LNBITS_INVOICE_KEY_" + identifier.upper())) data = { 'name': identifier, @@ -314,10 +313,9 @@ def make_ln_address_nostdress(identifier, npub, pin, nostdressdomain): 'key': os.getenv("LNBITS_INVOICE_KEY_" + identifier.upper()), 'pin': pin, 'npub': npub, - 'currentname': " " + 'currentname': " " } - try: url = "https://" + nostdressdomain + "/api/easy/" res = requests.post(url, data=data) @@ -330,8 +328,8 @@ def make_ln_address_nostdress(identifier, npub, pin, nostdressdomain): print(e) return "", "" -def check_and_set_ln_bits_keys(identifier, npub): +def check_and_set_ln_bits_keys(identifier, npub): if not os.getenv("LNBITS_INVOICE_KEY_" + identifier.upper()): invoicekey, adminkey, walletid, userid, success = create_lnbits_account(identifier) add_key_to_env_file("LNBITS_INVOICE_KEY_" + identifier.upper(), invoicekey) @@ -341,7 +339,7 @@ def check_and_set_ln_bits_keys(identifier, npub): lnaddress = "" pin = "" - if os.getenv("NOSTDRESS_DOMAIN"): + if os.getenv("NOSTDRESS_DOMAIN") and success != "failed": print(os.getenv("NOSTDRESS_DOMAIN")) lnaddress, pin = make_ln_address_nostdress(identifier, npub, " ", os.getenv("NOSTDRESS_DOMAIN")) add_key_to_env_file("LNADDRESS_" + identifier.upper(), lnaddress) @@ -356,14 +354,8 @@ def check_and_set_ln_bits_keys(identifier, npub): os.getenv("LNADDRESS_" + identifier.upper())) - - - - def add_key_to_env_file(value, oskey): env_path = Path('.env') if env_path.is_file(): dotenv.load_dotenv(env_path, verbose=True, override=True) - dotenv.set_key(env_path, value, oskey) - - + dotenv.set_key(env_path, value, oskey) \ No newline at end of file diff --git a/setup.py b/setup.py index 2ad52c7..abdd287 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ from setuptools import setup, find_packages -VERSION = '0.0.7' +VERSION = '0.0.8' DESCRIPTION = 'A framework to build and run Nostr NIP90 Data Vending Machines' LONG_DESCRIPTION = ('A framework to build and run Nostr NIP90 Data Vending Machines. ' 'This is an early stage release. Interfaces might change/brick')