From f561ec112f07df2dc0e0b43e2e1fb71bf061f99c Mon Sep 17 00:00:00 2001 From: rootzoll Date: Mon, 25 May 2020 20:42:29 +0200 Subject: [PATCH 001/126] fix result info --- home.admin/config.scripts/blitz.ip2tor.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.ip2tor.py b/home.admin/config.scripts/blitz.ip2tor.py index 10fa2cfd8..fce8d2962 100644 --- a/home.admin/config.scripts/blitz.ip2tor.py +++ b/home.admin/config.scripts/blitz.ip2tor.py @@ -610,7 +610,14 @@ Your service '{3}' should now publicly be reachable under: Please test now if the service is performing as promised. If not - dont forget to cancel the subscription under: MAIN MENU > SUBSCRIPTIONS > MY SUBSCRIPTIONS - '''.format(be.errorShort),title="Subscription Active") + '''.format( + host['tor_bridge_price_initial_sats'], + host['tor_bridge_duration_hours'], + host['tor_bridge_price_extension_sats'], + blitzServiceName, + host['ip'], + host['port']) + ,title="Subscription Active") ####### COMMANDS ######### From 3af7e0ba04a402c8c364bd3dfc06a949980780b3 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Mon, 25 May 2020 20:45:09 +0200 Subject: [PATCH 002/126] fix port info --- home.admin/config.scripts/blitz.ip2tor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.ip2tor.py b/home.admin/config.scripts/blitz.ip2tor.py index fce8d2962..43878e15d 100644 --- a/home.admin/config.scripts/blitz.ip2tor.py +++ b/home.admin/config.scripts/blitz.ip2tor.py @@ -616,7 +616,7 @@ MAIN MENU > SUBSCRIPTIONS > MY SUBSCRIPTIONS host['tor_bridge_price_extension_sats'], blitzServiceName, host['ip'], - host['port']) + bridge['port']) ,title="Subscription Active") From 189120b77ae5f7c26c3c0959b024d2fda3f4d4c0 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 02:32:21 +0200 Subject: [PATCH 003/126] subscriptions persist and renew --- build_sdcard.sh | 4 +- home.admin/config.scripts/blitz.ip2tor.py | 223 ++++++++++++++++------ 2 files changed, 170 insertions(+), 57 deletions(-) diff --git a/build_sdcard.sh b/build_sdcard.sh index 77a51327c..4fe63f7a3 100644 --- a/build_sdcard.sh +++ b/build_sdcard.sh @@ -587,10 +587,10 @@ echo "*** Python DEFAULT libs & depenedencies ***" # for setup schell scripts sudo apt-get -y install dialog bc python3-dialog -# libs +# libs (for global python scripts) sudo pip3 install -I grpcio==1.29.0 sudo pip3 install -I googleapis-common-protos==1.51.0 - +sudo pip3 install -I toml==0.10.1 echo "" echo "*** RASPIBLITZ EXTRAS ***" diff --git a/home.admin/config.scripts/blitz.ip2tor.py b/home.admin/config.scripts/blitz.ip2tor.py index 43878e15d..c15b87103 100644 --- a/home.admin/config.scripts/blitz.ip2tor.py +++ b/home.admin/config.scripts/blitz.ip2tor.py @@ -9,6 +9,7 @@ import time import datetime, time import codecs, grpc, os from pathlib import Path +import toml from blitzpy import RaspiBlitzConfig @@ -22,7 +23,7 @@ if len(sys.argv) <= 1 or sys.argv[1] == "-h" or sys.argv[1] == "help": print("# manage ip2tor subscriptions for raspiblitz") print("# blitz.ip2tor.py menu") print("# blitz.ip2tor.py shop-list [shopurl]") - print("# blitz.ip2tor.py shop-order [shopurl] [hostid] [toraddress:port] [duration] [msats]") + print("# blitz.ip2tor.py shop-order [shopurl] [servicename] [hostid] [toraddress:port] [duration] [msats]") print("# blitz.ip2tor.py subscriptions-list") print("# blitz.ip2tor.py subscriptions-renew [secondsBeforeSuspend]") print("# blitz.ip2tor.py subscription-cancel [id]") @@ -42,12 +43,14 @@ if Path("/mnt/hdd/raspiblitz.conf").is_file(): LND_TLS_PATH="/mnt/hdd/app-data/lnd/tls.cert" # make sure to make requests thru TOR 127.0.0.1:9050 session.proxies = {'http': 'socks5h://127.0.0.1:9050', 'https': 'socks5h://127.0.0.1:9050'} + SUBSCRIPTIONS_FILE="/mnt/hdd/app-data/subscriptions.toml" else: print("# blitz.ip2tor.py (development env)") DEFAULT_SHOPURL="shop.ip2t.org" LND_IP="192.168.178.95" LND_ADMIN_MACAROON_PATH="/Users/rotzoll/Downloads/RaspiBlitzCredentials/admin.macaroon" LND_TLS_PATH="/Users/rotzoll/Downloads/RaspiBlitzCredentials/tls.cert" + SUBSCRIPTIONS_FILE="/Users/rotzoll/Downloads/RaspiBlitzCredentials/subscriptions.toml" ####### HELPER CLASSES ######### @@ -201,6 +204,7 @@ def apiPlaceOrderExtension(session, shopurl, bridgeid): raise BlitzError("failed HTTP code",response.status_code) # parse & validate data + print("# parse") try: jData = json.loads(response.content) if len(jData['po_id']) == 0: @@ -315,7 +319,7 @@ def shopList(shopUrl): shopUrl=normalizeShopUrl(shopUrl) return apiGetHosts(session, shopUrl) -def shopOrder(shopUrl, hostid, torTarget, duration, msatsFirst): +def shopOrder(shopUrl, hostid, servicename, torTarget, duration, msatsFirst, msatsNext): print("#### Placeing order ...") shopUrl=normalizeShopUrl(shopUrl) @@ -346,7 +350,7 @@ def shopOrder(shopUrl, hostid, torTarget, duration, msatsFirst): print("# amount as advertised: {0}".format(msatsFirst)) print("# amount in invoice is: {0}".format(paymentRequestDecoded.num_msat)) if int(msatsFirst) < int(paymentRequestDecoded.num_msat): - raise BlitzError("invoice other amount than advertised", "advertised({0}) invoice({1})".format(msatsFirst, paymentRequestDecoded.num_msat)) + raise BlitzError("invoice bigger amount than advertised", "advertised({0}) invoice({1})".format(msatsFirst, paymentRequestDecoded.num_msat)) print("#### Paying invoice ...") payedInvoice = lndPayInvoice(paymentRequestStr) @@ -364,23 +368,62 @@ def shopOrder(shopUrl, hostid, torTarget, duration, msatsFirst): if loopCount > 60: raise BlitzError("timeout bridge not getting ready", bridge) - # get data from ready bride - bridge_suspendafter = bridge['suspend_after'] - bridge_port = bridge['port'] - print("#### Check if duration delivered is as advertised ...") - secondsDelivered=secondsLeft(parseDate(bridge_suspendafter)) + contract_breached = False + warning_text = "" + secondsDelivered=secondsLeft(parseDate(bridge['suspend_after'])) print("# delivered({0}) promised({1})".format(secondsDelivered, duration)) if (secondsDelivered + 600) < int(duration): - bridge['contract_breached'] = True - bridge['warning'] = "delivered duration shorter than advertised" - else: - bridge['contract_breached'] = False + contract_breached = True + warning_text = "delivered duration shorter than advertised" - print("# OK - BRIDGE READY: {0}:{1} -> {2}".format(bridge_ip, bridge_port, torTarget)) - return bridge + # create subscription data for storage + subscription = {} + subscription['type'] = "ip2tor" + subscription['id'] = bridge['id'] + subscription['blitz_service'] = servicename + subscription['shop'] = shopUrl + subscription['active'] = 1 + subscription['ip'] = bridge_ip + subscription['port'] = bridge['port'] + subscription['duration'] = int(duration) + subscription['price_initial'] = int(msatsFirst) + subscription['price_extension'] = int(msatsNext) + subscription['price_total'] = int(paymentRequestDecoded.num_msat) + subscription['time_created'] = str(datetime.datetime.now()) + subscription['time_lastupdate'] = str(datetime.datetime.now()) + subscription['suspend_after'] = bridge['suspend_after'] + subscription['contract_breached'] = contract_breached + subscription['warning'] = warning_text + subscription['tor'] = torTarget + + # load, add and store subscriptions + try: + #f = open(SUBSCRIPTIONS_FILE,"w") + if Path(SUBSCRIPTIONS_FILE).is_file(): + print("# load toml file") + subscriptions = toml.load(SUBSCRIPTIONS_FILE) + else: + print("# new toml file") + subscriptions = {} + subscriptions['list'] = [] + subscriptions['list'].append(subscription) + subscriptions['shopurl'] = shopUrl + with open(SUBSCRIPTIONS_FILE, 'w') as writer: + writer.write(toml.dumps(subscriptions)) + writer.close() -def subscriptionExtend(shopUrl, bridgeid, durationAdvertised, msatsFirst): + except Exception as e: + eprint(e) + raise BlitzError("fail on subscription storage",subscription, e) + + print("# OK - BRIDGE READY: {0}:{1} -> {2}".format(bridge_ip, subscription['port'], torTarget)) + return subscription + +def subscriptionExtend(shopUrl, bridgeid, durationAdvertised, msatsNext, bridge_suspendafter): + + warningTXT="" + contract_breached=False print("#### Placing extension order ...") shopUrl=normalizeShopUrl(shopUrl) @@ -413,31 +456,57 @@ def subscriptionExtend(shopUrl, bridgeid, durationAdvertised, msatsFirst): print("#### Paying invoice ...") payedInvoice = lndPayInvoice(paymentRequestStr) - print("#### Check if bride was extended ...") + print("#### Check if bridge was extended ...") loopCount=0 while True: time.sleep(3) loopCount+=1 print("## Loop {0}".format(loopCount)) - bridge = apiGetBridgeStatus(session, shopUrl, bridgeid) - if bridge['suspend_after'] != bridge_suspendafter: + try: + bridge = apiGetBridgeStatus(session, shopUrl, bridgeid) + if bridge['suspend_after'] != bridge_suspendafter: + break + except Exception as e: + eprint(e) + print("# EXCEPTION on apiGetBridgeStatus") + if loopCount > 60: + warningTXT="timeout on last payed extension" + contract_breached=True break - if loopCount > 60: - raise BlitzError("timeout on waiting for extending bridge", bridge) - print("#### Check if extension duration is as advertised ...") - secondsLeftOld = secondsLeft(parseDate(bridge_suspendafter)) - secondsLeftNew = secondsLeft(parseDate(bridge['suspend_after'])) - secondsExtended = secondsLeftNew - secondsLeftOld - print("# secondsExtended({0}) promised({1})".format(secondsExtended, durationAdvertised)) - if secondsExtended < int(durationAdvertised): - bridge['contract_breached'] = True - bridge['warning'] = "delivered duration shorter than advertised" - else: - bridge['contract_breached'] = False + if not contract_breached: + print("#### Check if extension duration is as advertised ...") + secondsLeftOld = secondsLeft(parseDate(bridge_suspendafter)) + secondsLeftNew = secondsLeft(parseDate(bridge['suspend_after'])) + secondsExtended = secondsLeftNew - secondsLeftOld + print("# secondsExtended({0}) promised({1})".format(secondsExtended, durationAdvertised)) + if secondsExtended < int(durationAdvertised): + contract_breached = True + warningTXT = "delivered duration shorter than advertised" + + # load, update and store subscriptions + try: + print("# load toml file") + subscriptions = toml.load(SUBSCRIPTIONS_FILE) + for idx, subscription in enumerate(subscriptions['list']): + if subscription['id'] == bridgeid: + subscription['suspend_after'] = str(bridge['suspend_after']) + subscription['time_lastupdate'] = str(datetime.datetime.now()) + subscription['price_total'] += int(paymentRequestDecoded.num_msat) + subscription['contract_breached'] = contract_breached + subscription['warning'] = warningTXT + if contract_breached: + subscription['active'] = 0 + with open(SUBSCRIPTIONS_FILE, 'w') as writer: + writer.write(toml.dumps(subscriptions)) + writer.close() + break + except Exception as e: + eprint(e) + raise BlitzError("fail on subscription storage",subscription, e) + print("# BRIDGE GOT EXTENDED: {0} -> {1}".format(bridge_suspendafter, bridge['suspend_after'])) - return bridge def menuMakeSubscription(blitzServiceName, torAddress, torPort): @@ -446,7 +515,14 @@ def menuMakeSubscription(blitzServiceName, torAddress, torPort): ############################ # PHASE 1: Enter Shop URL + # see if user had before entered another shop of preference shopurl = DEFAULT_SHOPURL + if Path(SUBSCRIPTIONS_FILE).is_file(): + print("# load toml file - to check for default shop") + subscriptions = toml.load(SUBSCRIPTIONS_FILE) + if "shopurl" in subscriptions: + shopurl = subscriptions['shopurl'] + while True: # input shop url @@ -553,11 +629,12 @@ More information on the service you can find under: try: os.system('clear') - bridge = shopOrder(shopurl, host['id'], torTarget, host['tor_bridge_duration'], host['tor_bridge_price_initial']) + subscription = shopOrder(shopurl, host['id'], blitzServiceName, torTarget, host['tor_bridge_duration'], host['tor_bridge_price_initial'],host['tor_bridge_price_extension']) except BlitzError as be: - if be.errorShort == "timeout on waiting for extending bridge": + if (be.errorShort == "timeout on waiting for extending bridge" or + be.errorShort == "fail on subscription storage") : # error happend after payment Dialog(dialog="dialog",autowidgetsize=True).msgbox(''' @@ -588,12 +665,12 @@ Unkown Error happend - please report to developers: sys.exit(1) # warn user if not delivered as advertised - if bridge['contract_breached']: + if subscription['contract_breached']: Dialog(dialog="dialog",autowidgetsize=True).msgbox(''' The service was payed & delivered, but RaspiBlitz detected: {0} You may want to consider to cancel the subscription later. - '''.format(bridge['warning'],title="Warning")) + '''.format(subscription['warning'],title="Warning")) # TODO: persist subscription in list @@ -602,7 +679,7 @@ You may want to consider to cancel the subscription later. OK your service is ready & your subscription is active. You payed {0} sats for the first {1} hours. -Next AUTOMATED PAYMENT will be {2} sats. +Next AUTOMATED PAYMENTS will be {2} sats each. Your service '{3}' should now publicly be reachable under: {4}:{5} @@ -615,8 +692,8 @@ MAIN MENU > SUBSCRIPTIONS > MY SUBSCRIPTIONS host['tor_bridge_duration_hours'], host['tor_bridge_price_extension_sats'], blitzServiceName, - host['ip'], - bridge['port']) + subscription['ip'], + subscription['port']) ,title="Subscription Active") @@ -669,23 +746,23 @@ if sys.argv[1] == "shop-order": # check parameters try: shopurl = sys.argv[2] - hostid = sys.argv[3] - toraddress = sys.argv[4] - duration = sys.argv[5] - msats = sys.argv[6] + servicename = sys.argv[3] + hostid = sys.argv[4] + toraddress = sys.argv[5] + duration = sys.argv[6] + msatsFirst = sys.argv[7] + msatsNext = sys.argv[8] except Exception as e: handleException(e) # get data try: - bridge = shopOrder(shopurl, hostid, toraddress, duration, msats) + subscription = shopOrder(shopurl, hostid, servicename, toraddress, duration, msatsFirst, msatsNext) except Exception as e: handleException(e) - # TODO: persist subscription - # output json ordered bridge - print(json.dumps(bridge, indent=2)) + print(json.dumps(subscription, indent=2)) sys.exit() ####################### @@ -714,25 +791,61 @@ if sys.argv[1] == "subscriptions-renew": # check parameters try: - secondsBeforeSuspend = sys.argv[2] + secondsBeforeSuspend = int(sys.argv[2]) if secondsBeforeSuspend < 0: secondsBeforeSuspend = 0 except Exception as e: handleException(e) - # TODO: check if any active subscrpitions are below the secondsBeforeSuspend - if yes extend - print("TODO: implement") - sys.exit(1) - - # get date + # check if any active subscrpitions are below the secondsBeforeSuspend - if yes extend + print("# RUNNING subscriptions-renew") try: - bridge = subscriptionExtend(shopUrl, bridgeid, durationAdvertised, msatsFirst) + + if not Path(SUBSCRIPTIONS_FILE).is_file(): + print("# no subscriptions") + sys.exit(0) + + subscriptions = toml.load(SUBSCRIPTIONS_FILE) + for idx, subscription in enumerate(subscriptions['list']): + + try: + + if subscription['active'] and subscription['type'] == "ip2tor": + secondsToRun = secondsLeft(parseDate(subscription['suspend_after'])) + if secondsToRun < secondsBeforeSuspend: + print("# RENEW: subscription {0} with {1} seconds to run".format(subscription['id'],secondsToRun)) + subscriptionExtend( + subscription['shop'], + subscription['id'], + subscription['duration'], + subscription['price_extension'], + subscription['suspend_after'] + ) + else: + print("# GOOD: subscription {0} with {1} seconds to run".format(subscription['id'],secondsToRun)) + + except BlitzError as be: + # write error into subscription warning + subs = toml.load(SUBSCRIPTIONS_FILE) + for idx, sub in enumerate(subs['list']): + if sub['id'] == subscription['id']: + sub['warning'] = "Exception on Renew: {0}".format(be.errorShort) + with open(SUBSCRIPTIONS_FILE, 'w') as writer: + writer.write(toml.dumps(subs)) + writer.close() + break + print("# BLITZERROR on subscriptions-renew of subscription index {0}: {1}".format(idx, be.errorShort)) + print("# {0}".format(be.errorShort)) + + except Exception as e: + print("# EXCEPTION on subscriptions-renew of subscription index {0}".format(idx)) + eprint(e) + except Exception as e: handleException(e) - # TODO: persist subscription - # output - not needed only for debug logs print("# DONE subscriptions-renew") + sys.exit(1) ####################### # SUBSCRIPTION CANCEL From cf485c5d07b3f07bc689783d77a09e9dd9ca7d6c Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 02:39:32 +0200 Subject: [PATCH 004/126] list und cancel subscription --- home.admin/config.scripts/blitz.ip2tor.py | 34 ++++++++++++++++++----- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/home.admin/config.scripts/blitz.ip2tor.py b/home.admin/config.scripts/blitz.ip2tor.py index c15b87103..5a545416c 100644 --- a/home.admin/config.scripts/blitz.ip2tor.py +++ b/home.admin/config.scripts/blitz.ip2tor.py @@ -399,7 +399,6 @@ def shopOrder(shopUrl, hostid, servicename, torTarget, duration, msatsFirst, msa # load, add and store subscriptions try: - #f = open(SUBSCRIPTIONS_FILE,"w") if Path(SUBSCRIPTIONS_FILE).is_file(): print("# load toml file") subscriptions = toml.load(SUBSCRIPTIONS_FILE) @@ -774,8 +773,12 @@ if sys.argv[1] == "subscriptions-list": try: - # TODO: JSON output of list with all subscrptions - print("TODO: implement") + if Path(SUBSCRIPTIONS_FILE).is_file(): + subs = toml.load(SUBSCRIPTIONS_FILE) + else: + subs = {} + subs['list'] = [] + print(json.dumps(subs, indent=2)) except Exception as e: handleException(e) @@ -854,11 +857,28 @@ if sys.argv[1] == "subscriptions-renew": if sys.argv[1] == "subscription-cancel": + # check parameters try: - - # TODO: JSON output of list with all subscrptions - print("TODO: implement") - + subscriptionID = sys.argv[2] + except Exception as e: + handleException(e) + + try: + + subs = toml.load(SUBSCRIPTIONS_FILE) + newList = [] + for idx, sub in enumerate(subs['list']): + if sub['id'] != subscriptionID: + newList.append(sub) + subs['list'] = newList + + # persist change + with open(SUBSCRIPTIONS_FILE, 'w') as writer: + writer.write(toml.dumps(subs)) + writer.close() + + print(json.dumps(subs, indent=2)) + except Exception as e: handleException(e) From 333b6a51d3b1742fdbf454e82765e0aaae47082a Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 02:48:05 +0200 Subject: [PATCH 005/126] impriove contract breach detection --- home.admin/config.scripts/blitz.ip2tor.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/home.admin/config.scripts/blitz.ip2tor.py b/home.admin/config.scripts/blitz.ip2tor.py index 5a545416c..0ca9e92f1 100644 --- a/home.admin/config.scripts/blitz.ip2tor.py +++ b/home.admin/config.scripts/blitz.ip2tor.py @@ -383,7 +383,7 @@ def shopOrder(shopUrl, hostid, servicename, torTarget, duration, msatsFirst, msa subscription['id'] = bridge['id'] subscription['blitz_service'] = servicename subscription['shop'] = shopUrl - subscription['active'] = 1 + subscription['active'] = True subscription['ip'] = bridge_ip subscription['port'] = bridge['port'] subscription['duration'] = int(duration) @@ -450,7 +450,7 @@ def subscriptionExtend(shopUrl, bridgeid, durationAdvertised, msatsNext, bridge_ print("# amount as advertised: {0}".format(msatsNext)) print("# amount in invoice is: {0}".format(paymentRequestDecoded.num_msat)) if int(msatsNext) < int(paymentRequestDecoded.num_msat): - raise BlitzError("invoice other amount than advertised", "advertised({0}) invoice({1})".format(msatsNext, paymentRequestDecoded.num_msat)) + raise BlitzError("invoice bigger amount than advertised", "advertised({0}) invoice({1})".format(msatsNext, paymentRequestDecoded.num_msat)) print("#### Paying invoice ...") payedInvoice = lndPayInvoice(paymentRequestStr) @@ -495,7 +495,7 @@ def subscriptionExtend(shopUrl, bridgeid, durationAdvertised, msatsNext, bridge_ subscription['contract_breached'] = contract_breached subscription['warning'] = warningTXT if contract_breached: - subscription['active'] = 0 + subscription['active'] = False with open(SUBSCRIPTIONS_FILE, 'w') as writer: writer.write(toml.dumps(subscriptions)) writer.close() @@ -772,7 +772,7 @@ if sys.argv[1] == "shop-order": if sys.argv[1] == "subscriptions-list": try: - + if Path(SUBSCRIPTIONS_FILE).is_file(): subs = toml.load(SUBSCRIPTIONS_FILE) else: @@ -832,6 +832,9 @@ if sys.argv[1] == "subscriptions-renew": for idx, sub in enumerate(subs['list']): if sub['id'] == subscription['id']: sub['warning'] = "Exception on Renew: {0}".format(be.errorShort) + if be.errorShort == "invoice bigger amount than advertised": + sub['contract_breached'] = True + sub['active'] = False with open(SUBSCRIPTIONS_FILE, 'w') as writer: writer.write(toml.dumps(subs)) writer.close() From 368d8d95e1a626f6e76401eff958811c56d226f5 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 14:22:27 +0200 Subject: [PATCH 006/126] optimize subscriptions format --- home.admin/config.scripts/blitz.ip2tor.py | 41 ++++++++++++++--------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/home.admin/config.scripts/blitz.ip2tor.py b/home.admin/config.scripts/blitz.ip2tor.py index 0ca9e92f1..e681dcffa 100644 --- a/home.admin/config.scripts/blitz.ip2tor.py +++ b/home.admin/config.scripts/blitz.ip2tor.py @@ -34,8 +34,12 @@ if len(sys.argv) <= 1 or sys.argv[1] == "-h" or sys.argv[1] == "help": cfg = RaspiBlitzConfig() session = requests.session() if Path("/mnt/hdd/raspiblitz.conf").is_file(): + print("# blitz.ip2tor.py") cfg.reload() + if not cfg.run_behind_tor: + print("error=''") + sys.exit(1) #DEFAULT_SHOPURL="shopdeu2vdhazvmllyfagdcvlpflzdyt5gwftmn4hjj3zw2oyelksaid.onion" DEFAULT_SHOPURL="shop.ip2t.org" LND_IP="127.0.0.1" @@ -319,7 +323,7 @@ def shopList(shopUrl): shopUrl=normalizeShopUrl(shopUrl) return apiGetHosts(session, shopUrl) -def shopOrder(shopUrl, hostid, servicename, torTarget, duration, msatsFirst, msatsNext): +def shopOrder(shopUrl, hostid, servicename, torTarget, duration, msatsFirst, msatsNext, description=""): print("#### Placeing order ...") shopUrl=normalizeShopUrl(shopUrl) @@ -379,7 +383,7 @@ def shopOrder(shopUrl, hostid, servicename, torTarget, duration, msatsFirst, msa # create subscription data for storage subscription = {} - subscription['type'] = "ip2tor" + subscription['type'] = "ip2tor-v1" subscription['id'] = bridge['id'] subscription['blitz_service'] = servicename subscription['shop'] = shopUrl @@ -393,6 +397,7 @@ def shopOrder(shopUrl, hostid, servicename, torTarget, duration, msatsFirst, msa subscription['time_created'] = str(datetime.datetime.now()) subscription['time_lastupdate'] = str(datetime.datetime.now()) subscription['suspend_after'] = bridge['suspend_after'] + subscription['description'] = str(description) subscription['contract_breached'] = contract_breached subscription['warning'] = warning_text subscription['tor'] = torTarget @@ -405,9 +410,9 @@ def shopOrder(shopUrl, hostid, servicename, torTarget, duration, msatsFirst, msa else: print("# new toml file") subscriptions = {} - subscriptions['list'] = [] - subscriptions['list'].append(subscription) - subscriptions['shopurl'] = shopUrl + subscriptions['subscriptions_ip2tor'] = [] + subscriptions['subscriptions_ip2tor'].append(subscription) + subscriptions['shop_ip2tor'] = shopUrl with open(SUBSCRIPTIONS_FILE, 'w') as writer: writer.write(toml.dumps(subscriptions)) writer.close() @@ -487,7 +492,7 @@ def subscriptionExtend(shopUrl, bridgeid, durationAdvertised, msatsNext, bridge_ try: print("# load toml file") subscriptions = toml.load(SUBSCRIPTIONS_FILE) - for idx, subscription in enumerate(subscriptions['list']): + for idx, subscription in enumerate(subscriptions['subscriptions_ip2tor']): if subscription['id'] == bridgeid: subscription['suspend_after'] = str(bridge['suspend_after']) subscription['time_lastupdate'] = str(datetime.datetime.now()) @@ -520,7 +525,7 @@ def menuMakeSubscription(blitzServiceName, torAddress, torPort): print("# load toml file - to check for default shop") subscriptions = toml.load(SUBSCRIPTIONS_FILE) if "shopurl" in subscriptions: - shopurl = subscriptions['shopurl'] + shopurl = subscriptions['shop_ip2tor'] while True: @@ -625,10 +630,12 @@ More information on the service you can find under: ############################ # PHASE 3: Make Subscription + description = "{0} / {1} / {2}".format(host['name'], host['terms_of_service'], host['terms_of_service_url']) + try: os.system('clear') - subscription = shopOrder(shopurl, host['id'], blitzServiceName, torTarget, host['tor_bridge_duration'], host['tor_bridge_price_initial'],host['tor_bridge_price_extension']) + subscription = shopOrder(shopurl, host['id'], blitzServiceName, torTarget, host['tor_bridge_duration'], host['tor_bridge_price_initial'],host['tor_bridge_price_extension'],description) except BlitzError as be: @@ -751,12 +758,16 @@ if sys.argv[1] == "shop-order": duration = sys.argv[6] msatsFirst = sys.argv[7] msatsNext = sys.argv[8] + if len(sys.argv) >=9: + description = sys.argv[9] + else: + description = "" except Exception as e: handleException(e) # get data try: - subscription = shopOrder(shopurl, hostid, servicename, toraddress, duration, msatsFirst, msatsNext) + subscription = shopOrder(shopurl, hostid, servicename, toraddress, duration, msatsFirst, msatsNext, description) except Exception as e: handleException(e) @@ -777,7 +788,7 @@ if sys.argv[1] == "subscriptions-list": subs = toml.load(SUBSCRIPTIONS_FILE) else: subs = {} - subs['list'] = [] + subs['subscriptions_ip2tor'] = [] print(json.dumps(subs, indent=2)) except Exception as e: @@ -808,11 +819,11 @@ if sys.argv[1] == "subscriptions-renew": sys.exit(0) subscriptions = toml.load(SUBSCRIPTIONS_FILE) - for idx, subscription in enumerate(subscriptions['list']): + for idx, subscription in enumerate(subscriptions['subscriptions_ip2tor']): try: - if subscription['active'] and subscription['type'] == "ip2tor": + if subscription['active'] and subscription['type'] == "ip2tor-v1": secondsToRun = secondsLeft(parseDate(subscription['suspend_after'])) if secondsToRun < secondsBeforeSuspend: print("# RENEW: subscription {0} with {1} seconds to run".format(subscription['id'],secondsToRun)) @@ -829,7 +840,7 @@ if sys.argv[1] == "subscriptions-renew": except BlitzError as be: # write error into subscription warning subs = toml.load(SUBSCRIPTIONS_FILE) - for idx, sub in enumerate(subs['list']): + for idx, sub in enumerate(subs['subscriptions_ip2tor']): if sub['id'] == subscription['id']: sub['warning'] = "Exception on Renew: {0}".format(be.errorShort) if be.errorShort == "invoice bigger amount than advertised": @@ -870,10 +881,10 @@ if sys.argv[1] == "subscription-cancel": subs = toml.load(SUBSCRIPTIONS_FILE) newList = [] - for idx, sub in enumerate(subs['list']): + for idx, sub in enumerate(subs['subscriptions_ip2tor']): if sub['id'] != subscriptionID: newList.append(sub) - subs['list'] = newList + subs['subscriptions_ip2tor'] = newList # persist change with open(SUBSCRIPTIONS_FILE, 'w') as writer: From 45d5f5e4b3a9007bf3675dd5d21e68b6472b678c Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 15:22:46 +0200 Subject: [PATCH 007/126] get subscription by service name --- home.admin/config.scripts/blitz.ip2tor.py | 35 ++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.ip2tor.py b/home.admin/config.scripts/blitz.ip2tor.py index e681dcffa..144f74d05 100644 --- a/home.admin/config.scripts/blitz.ip2tor.py +++ b/home.admin/config.scripts/blitz.ip2tor.py @@ -27,6 +27,7 @@ if len(sys.argv) <= 1 or sys.argv[1] == "-h" or sys.argv[1] == "help": print("# blitz.ip2tor.py subscriptions-list") print("# blitz.ip2tor.py subscriptions-renew [secondsBeforeSuspend]") print("# blitz.ip2tor.py subscription-cancel [id]") + print("# blitz.ip2tor.py subscription-by-service [servicename]") sys.exit(1) ####### BASIC SETTINGS ######### @@ -868,7 +869,6 @@ if sys.argv[1] == "subscriptions-renew": # SUBSCRIPTION CANCEL # call in intervalls from background process ####################### - if sys.argv[1] == "subscription-cancel": # check parameters @@ -898,5 +898,38 @@ if sys.argv[1] == "subscription-cancel": sys.exit(0) +####################### +# GET ADDRESS BY SERVICENAME +# gets called by other scripts to check if service has a ip2tor bridge address +# output is bash key/value style so that it can be imported with source +####################### +if sys.argv[1] == "subscription-by-service": + + # check parameters + try: + servicenname = sys.argv[2] + except Exception as e: + handleException(e) + + try: + + subs = toml.load(SUBSCRIPTIONS_FILE) + newList = [] + for idx, sub in enumerate(subs['subscriptions_ip2tor']): + if sub['active'] and sub['blitz_service'] == servicenname: + print("type='{0}'".format(sub['type'])) + print("ip='{0}'".format(sub['ip'])) + print("port='{0}'".format(sub['port'])) + print("tor='{0}'".format(sub['tor'])) + sys.exit(0) + + print("error='not found'") + sys.exit(0) + + except Exception as e: + handleException(e) + + sys.exit(1) + # unkown command print("# unkown command") \ No newline at end of file From 4d9acedc564d29e5c100ec0267b8944ccd3cd73c Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 15:37:43 +0200 Subject: [PATCH 008/126] prepare ssh dialog --- home.admin/config.scripts/blitz.ip2tor.py | 27 +++++++++++++---------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/home.admin/config.scripts/blitz.ip2tor.py b/home.admin/config.scripts/blitz.ip2tor.py index 144f74d05..394eae709 100644 --- a/home.admin/config.scripts/blitz.ip2tor.py +++ b/home.admin/config.scripts/blitz.ip2tor.py @@ -21,7 +21,7 @@ from lndlibs import rpc_pb2_grpc as rpcstub # display config script info if len(sys.argv) <= 1 or sys.argv[1] == "-h" or sys.argv[1] == "help": print("# manage ip2tor subscriptions for raspiblitz") - print("# blitz.ip2tor.py menu") + print("# blitz.ip2tor.py create-ssh-dialog [servicename] [toraddress] [torport]") print("# blitz.ip2tor.py shop-list [shopurl]") print("# blitz.ip2tor.py shop-order [shopurl] [servicename] [hostid] [toraddress:port] [duration] [msats]") print("# blitz.ip2tor.py subscriptions-list") @@ -35,12 +35,7 @@ if len(sys.argv) <= 1 or sys.argv[1] == "-h" or sys.argv[1] == "help": cfg = RaspiBlitzConfig() session = requests.session() if Path("/mnt/hdd/raspiblitz.conf").is_file(): - - print("# blitz.ip2tor.py") - cfg.reload() - if not cfg.run_behind_tor: - print("error=''") - sys.exit(1) + ENV="PROD" #DEFAULT_SHOPURL="shopdeu2vdhazvmllyfagdcvlpflzdyt5gwftmn4hjj3zw2oyelksaid.onion" DEFAULT_SHOPURL="shop.ip2t.org" LND_IP="127.0.0.1" @@ -50,6 +45,7 @@ if Path("/mnt/hdd/raspiblitz.conf").is_file(): session.proxies = {'http': 'socks5h://127.0.0.1:9050', 'https': 'socks5h://127.0.0.1:9050'} SUBSCRIPTIONS_FILE="/mnt/hdd/app-data/subscriptions.toml" else: + ENV="DEV" print("# blitz.ip2tor.py (development env)") DEFAULT_SHOPURL="shop.ip2t.org" LND_IP="192.168.178.95" @@ -707,23 +703,30 @@ MAIN MENU > SUBSCRIPTIONS > MY SUBSCRIPTIONS ####### COMMANDS ######### ############### -# MENU +# CREATE SSH DIALOG # use for ssh shell menu ############### -if sys.argv[1] == "menu": +if sys.argv[1] == "create-ssh-dialog": + + # check parameters + try: + servicename = sys.argv[2] + toraddress = sys.argv[3] + port = sys.argv[4] + except Exception as e: + handleException(e) # late imports - so that rest of script can run also if dependency is not available from dialog import Dialog - - menuMakeSubscription("RTL", "s7foqiwcstnxmlesfsjt7nlhwb2o6w44hc7glv474n7sbyckf76wn6id.onion", "80") + menuMakeSubscription(servicename, toraddress, port) sys.exit() ############### # SHOP LIST # call from web interface -############### +############### if sys.argv[1] == "shop-list": From f4f38ae26ddebaff507bcee1ddcbfd791dff639e Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 17:24:29 +0200 Subject: [PATCH 009/126] basic subscription management --- home.admin/config.scripts/blitz.ip2tor.py | 4 +- .../config.scripts/blitz.subscriptions.py | 119 ++++++++++++++++++ 2 files changed, 120 insertions(+), 3 deletions(-) create mode 100644 home.admin/config.scripts/blitz.subscriptions.py diff --git a/home.admin/config.scripts/blitz.ip2tor.py b/home.admin/config.scripts/blitz.ip2tor.py index 394eae709..9211cc3c9 100644 --- a/home.admin/config.scripts/blitz.ip2tor.py +++ b/home.admin/config.scripts/blitz.ip2tor.py @@ -561,7 +561,7 @@ Try again later, enter another address or cancel. ############################### # PHASE 2: SELECT SUBSCRIPTION - # create menu to select shop - TODO: also while loop list & detail until cancel or subscription + # create menu to select shop host=None choices = [] for idx, hostEntry in enumerate(hosts): @@ -675,8 +675,6 @@ The service was payed & delivered, but RaspiBlitz detected: You may want to consider to cancel the subscription later. '''.format(subscription['warning'],title="Warning")) - # TODO: persist subscription in list - # Give final result feedback to user Dialog(dialog="dialog",autowidgetsize=True).msgbox(''' OK your service is ready & your subscription is active. diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py new file mode 100644 index 000000000..55acfdaa4 --- /dev/null +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -0,0 +1,119 @@ +#!/usr/bin/python3 + +######################################################## +# SSH Dialogs to manage Subscriptions on the RaspiBlitz +######################################################## + +import sys +import math +import time +import toml + +from blitzpy import RaspiBlitzConfig + +# load config +cfg = RaspiBlitzConfig() +session = requests.session() + + +# basic cvalues +SUBSCRIPTIONS_FILE="/mnt/hdd/app-data/subscriptions.toml" + +####### HELPER FUNCTIONS ######### + +def eprint(*args, **kwargs): + print(*args, file=sys.stderr, **kwargs) + +def parseDateIP2TORSERVER(datestr): + return datetime.datetime.strptime(datestr,"%Y-%m-%dT%H:%M:%S.%fZ") + +def secondsLeft(dateObj): + return round((dateObj - datetime.datetime.utcnow()).total_seconds()) + +####### SSH MENU FUNCTIONS ######### + +def mySubscriptions(): + + while True: + + # load subscriptions and make dialog choices out of it + choices = [] + lookup = {} + lookupIndex=0 + subs = toml.load(SUBSCRIPTIONS_FILE) + + # list ip2tor subscriptions + for sub in subs['subscriptions_ip2tor']: + # remember subscription under lookupindex + lookupIndex = += 1 + lookup[str(lookupIndex)]=sub + # add to dialog choices + if sub['active']: + activeState="on" + else: + activeState="off" + name="IP2TOR brigde for {0}".format(sub['blitz_service']) + choices.append( ("{0}".format(lookupIndex), "{0} ({1})".format(name.ljust(20), activeState)) ) + + # show menu with options + d = Dialog(dialog="dialog",autowidgetsize=True) + d.set_background_title("RaspiBlitz Subscriptions" + code, tag = d.menu( + "You have the following subscriptions (active & inactive). Select for details:", + choices=choices, title="My Subscriptions") + + # if user cancels + if code != d.OK: return + + # get data of selected subscrption + selectedSub = lookup[str(tag)] + + # show details of selected + d = Dialog(dialog="dialog",autowidgetsize=True) + d.set_background_title("My Subscriptions") + if selectedSub['type'] == "ip2tor-v1": + if len(selectedSub['warning']) > 0: + selectedSub['warning'] = "\n{0}".formart(selectedSub['warning']) + text=''' +This is a IP2TOR subscription bought on {initdate} at +{shop} + +It forwards from the public address {publicaddress} to +{toraddress} +for the RaspiBlitz service: {service} + +It will renew every {renewhours} hours for {renewsats} sats. +Total payed so far: {totalsats} sats + +The state of the subscription is: {active} {warning} + +The following additional information is available: +{description} +'''.format( initdate=selectedSub'time_created'], + shop=selectedSub['shop'], + publicaddress="{0}:{1}".format(selectedSub['ip'],selectedSub['port']), + toraddress=selectedSub['tor'], + renewhours=(round(int(selectedSub['duration'])/3600)), + renewsats=(round(int(selectedSub['price_extension'])/1000)), + totalsats=(round(int(selectedSub['price_extension'])/1000)), + active= "active" if selectedSub['active'] else "inactive", + warning=selectedSub['warning'], + description=selectedSub['description'], + service=selectedSub['blitz_service'] + ) + + if selectedSub['active']: + extraLable = "CANCEL" + else + extraLable = "DELETE" + code = d.msgbox(text, title="Subscription Detail", ok_label="Back", extra_button=True, extra_label=extraLable ,width=70, height=30) + + # user wants to delete this subscription + if code == "extra": + if selectedSub['type'] == "ip2tor-v1": + # TODO: make call to blitz.ip2tor to cancel/delete subscription + pass + +####### SSH MENU ######### + +mySubscriptions() \ No newline at end of file From c6e3fda8dd9c13f103443db15f961625190bf63f Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 17:27:47 +0200 Subject: [PATCH 010/126] fix syntax errors --- home.admin/config.scripts/blitz.subscriptions.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 55acfdaa4..ead830a09 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -9,12 +9,13 @@ import math import time import toml +from dialog import Dialog + from blitzpy import RaspiBlitzConfig # load config cfg = RaspiBlitzConfig() -session = requests.session() - +cfg.reload() # basic cvalues SUBSCRIPTIONS_FILE="/mnt/hdd/app-data/subscriptions.toml" @@ -45,7 +46,7 @@ def mySubscriptions(): # list ip2tor subscriptions for sub in subs['subscriptions_ip2tor']: # remember subscription under lookupindex - lookupIndex = += 1 + lookupIndex += 1 lookup[str(lookupIndex)]=sub # add to dialog choices if sub['active']: @@ -57,7 +58,7 @@ def mySubscriptions(): # show menu with options d = Dialog(dialog="dialog",autowidgetsize=True) - d.set_background_title("RaspiBlitz Subscriptions" + d.set_background_title("RaspiBlitz Subscriptions") code, tag = d.menu( "You have the following subscriptions (active & inactive). Select for details:", choices=choices, title="My Subscriptions") @@ -89,7 +90,7 @@ The state of the subscription is: {active} {warning} The following additional information is available: {description} -'''.format( initdate=selectedSub'time_created'], +'''.format( initdate=selectedSub['time_created'], shop=selectedSub['shop'], publicaddress="{0}:{1}".format(selectedSub['ip'],selectedSub['port']), toraddress=selectedSub['tor'], @@ -104,7 +105,7 @@ The following additional information is available: if selectedSub['active']: extraLable = "CANCEL" - else + else: extraLable = "DELETE" code = d.msgbox(text, title="Subscription Detail", ok_label="Back", extra_button=True, extra_label=extraLable ,width=70, height=30) From f93659089eee146562ef8a8fd6ff6417327002c0 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 17:40:35 +0200 Subject: [PATCH 011/126] detect no subscriptions --- home.admin/config.scripts/blitz.subscriptions.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index ead830a09..811718fda 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -35,6 +35,18 @@ def secondsLeft(dateObj): def mySubscriptions(): + # check if any subscriptions are available + countSubscriptions=0 + try: + subs = toml.load(SUBSCRIPTIONS_FILE) + countSubscriptions += len(subs['subscriptions_ip2tor']) + except Exception as e: pass + if countSubscriptions == 0: + Dialog(dialog="dialog",autowidgetsize=True).msgbox(''' +You have no active or inactive subscriptions at the moment. + ''',title="Info") + return + while True: # load subscriptions and make dialog choices out of it From fe39635fa5172fdf364b9ace2a8dd9bd0d69161c Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 17:43:59 +0200 Subject: [PATCH 012/126] detect no subscriptions --- .../config.scripts/blitz.subscriptions.py | 95 ++++++++++--------- 1 file changed, 48 insertions(+), 47 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 811718fda..0d014b252 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -47,47 +47,45 @@ You have no active or inactive subscriptions at the moment. ''',title="Info") return - while True: - - # load subscriptions and make dialog choices out of it - choices = [] - lookup = {} - lookupIndex=0 - subs = toml.load(SUBSCRIPTIONS_FILE) + # load subscriptions and make dialog choices out of it + choices = [] + lookup = {} + lookupIndex=0 + subs = toml.load(SUBSCRIPTIONS_FILE) - # list ip2tor subscriptions - for sub in subs['subscriptions_ip2tor']: - # remember subscription under lookupindex - lookupIndex += 1 - lookup[str(lookupIndex)]=sub - # add to dialog choices - if sub['active']: - activeState="on" - else: - activeState="off" - name="IP2TOR brigde for {0}".format(sub['blitz_service']) - choices.append( ("{0}".format(lookupIndex), "{0} ({1})".format(name.ljust(20), activeState)) ) + # list ip2tor subscriptions + for sub in subs['subscriptions_ip2tor']: + # remember subscription under lookupindex + lookupIndex += 1 + lookup[str(lookupIndex)]=sub + # add to dialog choices + if sub['active']: + activeState="on" + else: + activeState="off" + name="IP2TOR brigde for {0}".format(sub['blitz_service']) + choices.append( ("{0}".format(lookupIndex), "{0} ({1})".format(name.ljust(20), activeState)) ) - # show menu with options - d = Dialog(dialog="dialog",autowidgetsize=True) - d.set_background_title("RaspiBlitz Subscriptions") - code, tag = d.menu( - "You have the following subscriptions (active & inactive). Select for details:", - choices=choices, title="My Subscriptions") + # show menu with options + d = Dialog(dialog="dialog",autowidgetsize=True) + d.set_background_title("RaspiBlitz Subscriptions") + code, tag = d.menu( + "You have the following subscriptions (active & inactive). Select for details:", + choices=choices, title="My Subscriptions") - # if user cancels - if code != d.OK: return + # if user chosses CANCEL + if code != d.OK: return - # get data of selected subscrption - selectedSub = lookup[str(tag)] + # get data of selected subscrption + selectedSub = lookup[str(tag)] - # show details of selected - d = Dialog(dialog="dialog",autowidgetsize=True) - d.set_background_title("My Subscriptions") - if selectedSub['type'] == "ip2tor-v1": - if len(selectedSub['warning']) > 0: - selectedSub['warning'] = "\n{0}".formart(selectedSub['warning']) - text=''' + # show details of selected + d = Dialog(dialog="dialog",autowidgetsize=True) + d.set_background_title("My Subscriptions") + if selectedSub['type'] == "ip2tor-v1": + if len(selectedSub['warning']) > 0: + selectedSub['warning'] = "\n{0}".formart(selectedSub['warning']) + text=''' This is a IP2TOR subscription bought on {initdate} at {shop} @@ -113,19 +111,22 @@ The following additional information is available: warning=selectedSub['warning'], description=selectedSub['description'], service=selectedSub['blitz_service'] - ) + ) - if selectedSub['active']: - extraLable = "CANCEL" - else: - extraLable = "DELETE" - code = d.msgbox(text, title="Subscription Detail", ok_label="Back", extra_button=True, extra_label=extraLable ,width=70, height=30) + if selectedSub['active']: + extraLable = "CANCEL" + else: + extraLable = "DELETE" + code = d.msgbox(text, title="Subscription Detail", ok_label="Back", extra_button=True, extra_label=extraLable ,width=70, height=30) - # user wants to delete this subscription - if code == "extra": - if selectedSub['type'] == "ip2tor-v1": - # TODO: make call to blitz.ip2tor to cancel/delete subscription - pass + # user wants to delete this subscription + if code == "extra": + if selectedSub['type'] == "ip2tor-v1": + # TODO: make call to blitz.ip2tor to cancel/delete subscription + pass + + # loop until no more subscriptions or user chooses CANCEL on subscription list + mySubscriptions() ####### SSH MENU ######### From e9a6df9f047d9817385d0790f7cf598e9ca4d452 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 17:47:56 +0200 Subject: [PATCH 013/126] change naming --- ...itz.ip2tor.py => blitz.subscriptions.ip2tor.py} | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) rename home.admin/config.scripts/{blitz.ip2tor.py => blitz.subscriptions.ip2tor.py} (98%) diff --git a/home.admin/config.scripts/blitz.ip2tor.py b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py similarity index 98% rename from home.admin/config.scripts/blitz.ip2tor.py rename to home.admin/config.scripts/blitz.subscriptions.ip2tor.py index 9211cc3c9..af977ed16 100644 --- a/home.admin/config.scripts/blitz.ip2tor.py +++ b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py @@ -21,13 +21,13 @@ from lndlibs import rpc_pb2_grpc as rpcstub # display config script info if len(sys.argv) <= 1 or sys.argv[1] == "-h" or sys.argv[1] == "help": print("# manage ip2tor subscriptions for raspiblitz") - print("# blitz.ip2tor.py create-ssh-dialog [servicename] [toraddress] [torport]") - print("# blitz.ip2tor.py shop-list [shopurl]") - print("# blitz.ip2tor.py shop-order [shopurl] [servicename] [hostid] [toraddress:port] [duration] [msats]") - print("# blitz.ip2tor.py subscriptions-list") - print("# blitz.ip2tor.py subscriptions-renew [secondsBeforeSuspend]") - print("# blitz.ip2tor.py subscription-cancel [id]") - print("# blitz.ip2tor.py subscription-by-service [servicename]") + print("# blitz.subscriptions.ip2tor.py create-ssh-dialog [servicename] [toraddress] [torport]") + print("# blitz.subscriptions.ip2tor.py shop-list [shopurl]") + print("# blitz.subscriptions.ip2tor.py shop-order [shopurl] [servicename] [hostid] [toraddress:port] [duration] [msats]") + print("# blitz.subscriptions.ip2tor.py subscriptions-list") + print("# blitz.subscriptions.ip2tor.py subscriptions-renew [secondsBeforeSuspend]") + print("# blitz.subscriptions.ip2tor.py subscription-cancel [id]") + print("# blitz.subscriptions.ip2tor.py subscription-by-service [servicename]") sys.exit(1) ####### BASIC SETTINGS ######### From d9da11ef5add0648be221996f3f5f96637f529e1 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 18:33:46 +0200 Subject: [PATCH 014/126] fix raspiconfig loading --- home.admin/config.scripts/blitz.subscriptions.ip2tor.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py index af977ed16..279e7b0a8 100644 --- a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py +++ b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py @@ -32,9 +32,10 @@ if len(sys.argv) <= 1 or sys.argv[1] == "-h" or sys.argv[1] == "help": ####### BASIC SETTINGS ######### -cfg = RaspiBlitzConfig() session = requests.session() if Path("/mnt/hdd/raspiblitz.conf").is_file(): + cfg = RaspiBlitzConfig() + cfg.reload() ENV="PROD" #DEFAULT_SHOPURL="shopdeu2vdhazvmllyfagdcvlpflzdyt5gwftmn4hjj3zw2oyelksaid.onion" DEFAULT_SHOPURL="shop.ip2t.org" From dc37bf26b96d24929242f8eb52717f6a66e43b06 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 19:07:40 +0200 Subject: [PATCH 015/126] fix subscription storage --- home.admin/_bootstrap.sh | 12 ++++++++++++ .../config.scripts/blitz.subscriptions.ip2tor.py | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/home.admin/_bootstrap.sh b/home.admin/_bootstrap.sh index d7db73194..64fe64eb4 100644 --- a/home.admin/_bootstrap.sh +++ b/home.admin/_bootstrap.sh @@ -506,6 +506,18 @@ else echo "OK: Temp cleaned" >> $logFile fi +###################################### +# PREPARE SUBSCRIPTIONS DATA DIRECTORY +###################################### + +if [ -d "/mnt/hdd/app-data/subscrptions" ]; then + echo "OK: subscription data directory exists" +else + echo "CREATE: subscription data directory" + sudo mkdir /mnt/hdd/app-data/subscriptions + sudo chown admin:admin /mnt/hdd/app-data/subscriptions +fi + ################################ # IDENTIFY BASEIMAGE ################################ diff --git a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py index 279e7b0a8..74ef50297 100644 --- a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py +++ b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py @@ -44,7 +44,7 @@ if Path("/mnt/hdd/raspiblitz.conf").is_file(): LND_TLS_PATH="/mnt/hdd/app-data/lnd/tls.cert" # make sure to make requests thru TOR 127.0.0.1:9050 session.proxies = {'http': 'socks5h://127.0.0.1:9050', 'https': 'socks5h://127.0.0.1:9050'} - SUBSCRIPTIONS_FILE="/mnt/hdd/app-data/subscriptions.toml" + SUBSCRIPTIONS_FILE="/mnt/hdd/app-data/subscriptions/subscriptions.toml" else: ENV="DEV" print("# blitz.ip2tor.py (development env)") From aa80c60d622aa594f9e214cf8107b40160b73f25 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 19:15:03 +0200 Subject: [PATCH 016/126] fix path --- home.admin/config.scripts/blitz.subscriptions.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 0d014b252..462aaddf2 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -17,8 +17,8 @@ from blitzpy import RaspiBlitzConfig cfg = RaspiBlitzConfig() cfg.reload() -# basic cvalues -SUBSCRIPTIONS_FILE="/mnt/hdd/app-data/subscriptions.toml" +# basic values +SUBSCRIPTIONS_FILE="/mnt/hdd/app-data/subscriptions/subscriptions.toml" ####### HELPER FUNCTIONS ######### From 9da453825e758387dd3b333cf36940a5ae04746f Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 19:43:31 +0200 Subject: [PATCH 017/126] fix ssh ui --- home.admin/config.scripts/blitz.subscriptions.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 462aaddf2..e0baf3276 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -60,18 +60,18 @@ You have no active or inactive subscriptions at the moment. lookup[str(lookupIndex)]=sub # add to dialog choices if sub['active']: - activeState="on" + activeState="active" else: - activeState="off" + activeState="in-active" name="IP2TOR brigde for {0}".format(sub['blitz_service']) - choices.append( ("{0}".format(lookupIndex), "{0} ({1})".format(name.ljust(20), activeState)) ) + choices.append( ("{0}".format(lookupIndex), "{0} ({1})".format(name.ljust(30), activeState)) ) # show menu with options d = Dialog(dialog="dialog",autowidgetsize=True) d.set_background_title("RaspiBlitz Subscriptions") code, tag = d.menu( - "You have the following subscriptions (active & inactive). Select for details:", - choices=choices, title="My Subscriptions") + "\nYou have the following subscriptions - select for details:", + choices=choices, width=65, height=15, title="My Subscriptions") # if user chosses CANCEL if code != d.OK: return From 8b66a09d4e41cad86b5ab4d2d747c5473e903ba8 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 19:58:27 +0200 Subject: [PATCH 018/126] delete subscription --- home.admin/config.scripts/blitz.subscriptions.ip2tor.py | 6 +++--- home.admin/config.scripts/blitz.subscriptions.py | 9 +++++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py index 74ef50297..a4896d254 100644 --- a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py +++ b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py @@ -392,8 +392,8 @@ def shopOrder(shopUrl, hostid, servicename, torTarget, duration, msatsFirst, msa subscription['price_initial'] = int(msatsFirst) subscription['price_extension'] = int(msatsNext) subscription['price_total'] = int(paymentRequestDecoded.num_msat) - subscription['time_created'] = str(datetime.datetime.now()) - subscription['time_lastupdate'] = str(datetime.datetime.now()) + subscription['time_created'] = str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M")) + subscription['time_lastupdate'] = str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M")) subscription['suspend_after'] = bridge['suspend_after'] subscription['description'] = str(description) subscription['contract_breached'] = contract_breached @@ -493,7 +493,7 @@ def subscriptionExtend(shopUrl, bridgeid, durationAdvertised, msatsNext, bridge_ for idx, subscription in enumerate(subscriptions['subscriptions_ip2tor']): if subscription['id'] == bridgeid: subscription['suspend_after'] = str(bridge['suspend_after']) - subscription['time_lastupdate'] = str(datetime.datetime.now()) + subscription['time_lastupdate'] = str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M")) subscription['price_total'] += int(paymentRequestDecoded.num_msat) subscription['contract_breached'] = contract_breached subscription['warning'] = warningTXT diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index e0baf3276..3de52b04e 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -8,6 +8,7 @@ import sys import math import time import toml +import subprocess from dialog import Dialog @@ -63,7 +64,7 @@ You have no active or inactive subscriptions at the moment. activeState="active" else: activeState="in-active" - name="IP2TOR brigde for {0}".format(sub['blitz_service']) + name="IP2TOR Bridge for {0}".format(sub['blitz_service']) choices.append( ("{0}".format(lookupIndex), "{0} ({1})".format(name.ljust(30), activeState)) ) # show menu with options @@ -123,7 +124,11 @@ The following additional information is available: if code == "extra": if selectedSub['type'] == "ip2tor-v1": # TODO: make call to blitz.ip2tor to cancel/delete subscription - pass + cmd="/home/admin/config.scripts/blitz.subscriptions.ip2tor.py subscription-cancel {0}".format(selectedSub['id']) + print("# running: {0}".format(cmd)) + result = subprocess.check_output(cmd) + print("# result: {0}".format(result)) + sys.exit() # loop until no more subscriptions or user chooses CANCEL on subscription list mySubscriptions() From 55631396e3e8121db4bed7982a6445ad13ff429a Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 20:02:37 +0200 Subject: [PATCH 019/126] run python command --- home.admin/config.scripts/blitz.subscriptions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 3de52b04e..dfbc7645b 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -124,7 +124,7 @@ The following additional information is available: if code == "extra": if selectedSub['type'] == "ip2tor-v1": # TODO: make call to blitz.ip2tor to cancel/delete subscription - cmd="/home/admin/config.scripts/blitz.subscriptions.ip2tor.py subscription-cancel {0}".format(selectedSub['id']) + cmd="python /home/admin/config.scripts/blitz.subscriptions.ip2tor.py subscription-cancel {0}".format(selectedSub['id']) print("# running: {0}".format(cmd)) result = subprocess.check_output(cmd) print("# result: {0}".format(result)) From 2405e44d2e7ab0bfd038743bbba0500b26f31105 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 20:08:32 +0200 Subject: [PATCH 020/126] fixing delete subscription --- home.admin/config.scripts/blitz.subscriptions.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index dfbc7645b..0565cab73 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -8,6 +8,7 @@ import sys import math import time import toml +import os import subprocess from dialog import Dialog @@ -123,13 +124,12 @@ The following additional information is available: # user wants to delete this subscription if code == "extra": if selectedSub['type'] == "ip2tor-v1": - # TODO: make call to blitz.ip2tor to cancel/delete subscription + os.system("clear") cmd="python /home/admin/config.scripts/blitz.subscriptions.ip2tor.py subscription-cancel {0}".format(selectedSub['id']) print("# running: {0}".format(cmd)) - result = subprocess.check_output(cmd) - print("# result: {0}".format(result)) - sys.exit() - + os.system(cmd) + time.sleep(2) + # loop until no more subscriptions or user chooses CANCEL on subscription list mySubscriptions() From 2046c38643feff281016088b7bbd0c1828c4bcc7 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 20:09:35 +0200 Subject: [PATCH 021/126] add comments --- home.admin/config.scripts/blitz.subscriptions.py | 1 + 1 file changed, 1 insertion(+) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 0565cab73..e2b657ffc 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -122,6 +122,7 @@ The following additional information is available: code = d.msgbox(text, title="Subscription Detail", ok_label="Back", extra_button=True, extra_label=extraLable ,width=70, height=30) # user wants to delete this subscription + # call the responsible sub script for deletion just in case any subscription needs to do some extra api calls when canceling if code == "extra": if selectedSub['type'] == "ip2tor-v1": os.system("clear") From 546c19293f217a113143fc0b2c1c6c62fe253a9a Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 20:10:34 +0200 Subject: [PATCH 022/126] added debug case --- home.admin/config.scripts/blitz.subscriptions.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index e2b657ffc..3e9180ca1 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -124,12 +124,15 @@ The following additional information is available: # user wants to delete this subscription # call the responsible sub script for deletion just in case any subscription needs to do some extra api calls when canceling if code == "extra": + os.system("clear") if selectedSub['type'] == "ip2tor-v1": - os.system("clear") cmd="python /home/admin/config.scripts/blitz.subscriptions.ip2tor.py subscription-cancel {0}".format(selectedSub['id']) print("# running: {0}".format(cmd)) os.system(cmd) time.sleep(2) + else: + print("# FAIL: unknown subscription type") + time.sleep(3) # loop until no more subscriptions or user chooses CANCEL on subscription list mySubscriptions() From 8614821d453685b969e2a150c068a4c9d1b7aa3a Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 20:13:40 +0200 Subject: [PATCH 023/126] better button text --- home.admin/config.scripts/blitz.subscriptions.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 3e9180ca1..b63e9886c 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -116,9 +116,9 @@ The following additional information is available: ) if selectedSub['active']: - extraLable = "CANCEL" + extraLable = "CANCEL SUBSCRIPTION" else: - extraLable = "DELETE" + extraLable = "DELETE SUBSCRIPTION" code = d.msgbox(text, title="Subscription Detail", ok_label="Back", extra_button=True, extra_label=extraLable ,width=70, height=30) # user wants to delete this subscription From 9c49fb320c8ce6c35271f07c431aa82b00a42459 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 20:14:58 +0200 Subject: [PATCH 024/126] shorter text --- home.admin/config.scripts/blitz.subscriptions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index b63e9886c..9be3bdd7d 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -45,7 +45,7 @@ def mySubscriptions(): except Exception as e: pass if countSubscriptions == 0: Dialog(dialog="dialog",autowidgetsize=True).msgbox(''' -You have no active or inactive subscriptions at the moment. +You have no active or inactive subscriptions. ''',title="Info") return From fe48ab65fb986462c66836c9c64ade50313ac107 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 20:25:34 +0200 Subject: [PATCH 025/126] change shop url --- home.admin/config.scripts/blitz.subscriptions.ip2tor.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py index a4896d254..136db54f2 100644 --- a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py +++ b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py @@ -519,11 +519,12 @@ def menuMakeSubscription(blitzServiceName, torAddress, torPort): # see if user had before entered another shop of preference shopurl = DEFAULT_SHOPURL - if Path(SUBSCRIPTIONS_FILE).is_file(): - print("# load toml file - to check for default shop") + try: subscriptions = toml.load(SUBSCRIPTIONS_FILE) - if "shopurl" in subscriptions: - shopurl = subscriptions['shop_ip2tor'] + shopurl = subscriptions['shop_ip2tor'] + print("# using last shop url set in subscriptions.toml") + except Exception as e: + print("# using default shop url") while True: From 9c810f8de4fbfcf735551f153f3b9971aa643413 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 20:28:49 +0200 Subject: [PATCH 026/126] bigger ui --- home.admin/config.scripts/blitz.subscriptions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 9be3bdd7d..7aea8678b 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -119,7 +119,7 @@ The following additional information is available: extraLable = "CANCEL SUBSCRIPTION" else: extraLable = "DELETE SUBSCRIPTION" - code = d.msgbox(text, title="Subscription Detail", ok_label="Back", extra_button=True, extra_label=extraLable ,width=70, height=30) + code = d.msgbox(text, title="Subscription Detail", ok_label="Back", extra_button=True, extra_label=extraLable ,width=75, height=30) # user wants to delete this subscription # call the responsible sub script for deletion just in case any subscription needs to do some extra api calls when canceling From e876d22f1d7a1edb54a0d935afeb17b46f493620 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 20:41:01 +0200 Subject: [PATCH 027/126] Subscription management --- .../config.scripts/blitz.subscriptions.py | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 7aea8678b..f9b8881d4 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -109,7 +109,7 @@ The following additional information is available: renewhours=(round(int(selectedSub['duration'])/3600)), renewsats=(round(int(selectedSub['price_extension'])/1000)), totalsats=(round(int(selectedSub['price_extension'])/1000)), - active= "active" if selectedSub['active'] else "inactive", + active= "ACTIVE" if selectedSub['active'] else "NOT ACTIVE", warning=selectedSub['warning'], description=selectedSub['description'], service=selectedSub['blitz_service'] @@ -139,4 +139,25 @@ The following additional information is available: ####### SSH MENU ######### -mySubscriptions() \ No newline at end of file + + choices = [] + choices.append( ("LIST","My Subscriptions") ) + choices.append( ("NEW1","+ new IP2TOR Bridge") ) + + d = Dialog(dialog="dialog",autowidgetsize=True) + d.set_background_title("RaspiBlitz Subscriptions") + code, tag = d.menu( + "\nCheck your existing subscriptions or create new:", + choices=choices, width=40, height=10, title="Subscription Management") + + # if user chosses CANCEL + if code != d.OK: return + + if tag == "LIST": + mySubscriptions() + sys.exit(0) + + if tag == "NEW1": + cmd="python /home/admin/config.scripts/blitz.subscriptions.ip2tor.py blitz.subscriptions.ip2tor.py create-ssh-dialog {0} {1} {2}".format("RTL","s7foqiwcstnxmlesfsjt7nlhwb2o6w44hc7glv474n7sbyckf76wn6id.onion"."80") + print("# running: {0}".format(cmd)) + os.system(cmd) \ No newline at end of file From 59ba05c31f2d6fc267e4f762d02ae660d03b9dce Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 20:42:07 +0200 Subject: [PATCH 028/126] fix syntax --- home.admin/config.scripts/blitz.subscriptions.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index f9b8881d4..131c7b630 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -149,7 +149,7 @@ The following additional information is available: code, tag = d.menu( "\nCheck your existing subscriptions or create new:", choices=choices, width=40, height=10, title="Subscription Management") - + # if user chosses CANCEL if code != d.OK: return @@ -158,6 +158,6 @@ The following additional information is available: sys.exit(0) if tag == "NEW1": - cmd="python /home/admin/config.scripts/blitz.subscriptions.ip2tor.py blitz.subscriptions.ip2tor.py create-ssh-dialog {0} {1} {2}".format("RTL","s7foqiwcstnxmlesfsjt7nlhwb2o6w44hc7glv474n7sbyckf76wn6id.onion"."80") - print("# running: {0}".format(cmd)) + cmd="python /home/admin/config.scripts/blitz.subscriptions.ip2tor.py blitz.subscriptions.ip2tor.py create-ssh-dialog {0} {1} {2}".format("RTL","s7foqiwcstnxmlesfsjt7nlhwb2o6w44hc7glv474n7sbyckf76wn6id.onion","80") + print("# running: {0}".format(cmd)) os.system(cmd) \ No newline at end of file From b7eeafbf8092a6b9307265a8546258eed86a8cce Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 21:05:56 +0200 Subject: [PATCH 029/126] correct indent --- .../config.scripts/blitz.subscriptions.py | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 131c7b630..7b2a3e04e 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -139,25 +139,24 @@ The following additional information is available: ####### SSH MENU ######### +choices = [] +choices.append( ("LIST","My Subscriptions") ) +choices.append( ("NEW1","+ new IP2TOR Bridge") ) - choices = [] - choices.append( ("LIST","My Subscriptions") ) - choices.append( ("NEW1","+ new IP2TOR Bridge") ) +d = Dialog(dialog="dialog",autowidgetsize=True) +d.set_background_title("RaspiBlitz Subscriptions") +code, tag = d.menu( + "\nCheck your existing subscriptions or create new:", + choices=choices, width=40, height=10, title="Subscription Management") - d = Dialog(dialog="dialog",autowidgetsize=True) - d.set_background_title("RaspiBlitz Subscriptions") - code, tag = d.menu( - "\nCheck your existing subscriptions or create new:", - choices=choices, width=40, height=10, title="Subscription Management") +# if user chosses CANCEL +if code != d.OK: return - # if user chosses CANCEL - if code != d.OK: return +if tag == "LIST": + mySubscriptions() + sys.exit(0) - if tag == "LIST": - mySubscriptions() - sys.exit(0) - - if tag == "NEW1": - cmd="python /home/admin/config.scripts/blitz.subscriptions.ip2tor.py blitz.subscriptions.ip2tor.py create-ssh-dialog {0} {1} {2}".format("RTL","s7foqiwcstnxmlesfsjt7nlhwb2o6w44hc7glv474n7sbyckf76wn6id.onion","80") - print("# running: {0}".format(cmd)) - os.system(cmd) \ No newline at end of file +if tag == "NEW1": + cmd="python /home/admin/config.scripts/blitz.subscriptions.ip2tor.py blitz.subscriptions.ip2tor.py create-ssh-dialog {0} {1} {2}".format("RTL","s7foqiwcstnxmlesfsjt7nlhwb2o6w44hc7glv474n7sbyckf76wn6id.onion","80") + print("# running: {0}".format(cmd)) + os.system(cmd) \ No newline at end of file From 54d6a4fbd8967497741d0e003b3272e74e167f73 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 21:07:28 +0200 Subject: [PATCH 030/126] fix cancel --- home.admin/config.scripts/blitz.subscriptions.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 7b2a3e04e..9663d17f1 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -150,7 +150,8 @@ code, tag = d.menu( choices=choices, width=40, height=10, title="Subscription Management") # if user chosses CANCEL -if code != d.OK: return +if code != d.OK: + sys.exit(0) if tag == "LIST": mySubscriptions() @@ -159,4 +160,5 @@ if tag == "LIST": if tag == "NEW1": cmd="python /home/admin/config.scripts/blitz.subscriptions.ip2tor.py blitz.subscriptions.ip2tor.py create-ssh-dialog {0} {1} {2}".format("RTL","s7foqiwcstnxmlesfsjt7nlhwb2o6w44hc7glv474n7sbyckf76wn6id.onion","80") print("# running: {0}".format(cmd)) - os.system(cmd) \ No newline at end of file + os.system(cmd) + sys.exit(0) \ No newline at end of file From 5ce4bef5c1da0dcfa329eae74a3c68c762d88420 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 21:10:43 +0200 Subject: [PATCH 031/126] fix command --- home.admin/config.scripts/blitz.subscriptions.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 9663d17f1..3007419e2 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -146,8 +146,8 @@ choices.append( ("NEW1","+ new IP2TOR Bridge") ) d = Dialog(dialog="dialog",autowidgetsize=True) d.set_background_title("RaspiBlitz Subscriptions") code, tag = d.menu( - "\nCheck your existing subscriptions or create new:", - choices=choices, width=40, height=10, title="Subscription Management") + "\nCheck existing subscriptions or create new:", + choices=choices, width=50, height=10, title="Subscription Management") # if user chosses CANCEL if code != d.OK: @@ -158,7 +158,7 @@ if tag == "LIST": sys.exit(0) if tag == "NEW1": - cmd="python /home/admin/config.scripts/blitz.subscriptions.ip2tor.py blitz.subscriptions.ip2tor.py create-ssh-dialog {0} {1} {2}".format("RTL","s7foqiwcstnxmlesfsjt7nlhwb2o6w44hc7glv474n7sbyckf76wn6id.onion","80") + cmd="python /home/admin/config.scripts/blitz.subscriptions.ip2tor.py create-ssh-dialog {0} {1} {2}".format("RTL","s7foqiwcstnxmlesfsjt7nlhwb2o6w44hc7glv474n7sbyckf76wn6id.onion","80") print("# running: {0}".format(cmd)) os.system(cmd) sys.exit(0) \ No newline at end of file From 13400d67fb8fc558303a6c307e7c78c57ade4193 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 21:16:35 +0200 Subject: [PATCH 032/126] check run behind TOR --- home.admin/config.scripts/blitz.subscriptions.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 3007419e2..da31ae4a3 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -158,6 +158,18 @@ if tag == "LIST": sys.exit(0) if tag == "NEW1": + + # check if Blitz is running behind TOR + cfg.reload() + if cfg.run_behind_tor: + Dialog(dialog="dialog",autowidgetsize=True).msgbox(''' +The IP2TOR service just makes sense if you run +your RaspiBlitz behind TOR. + ''',title="Info") + sys.exit(1) + + # run creating a new IP2TOR subscription + os.system("clear") cmd="python /home/admin/config.scripts/blitz.subscriptions.ip2tor.py create-ssh-dialog {0} {1} {2}".format("RTL","s7foqiwcstnxmlesfsjt7nlhwb2o6w44hc7glv474n7sbyckf76wn6id.onion","80") print("# running: {0}".format(cmd)) os.system(cmd) From 38d16bf25d220e7bd22d6a83cd9ce762e94890b4 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 21:17:22 +0200 Subject: [PATCH 033/126] correct check --- home.admin/config.scripts/blitz.subscriptions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index da31ae4a3..04199a9b9 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -161,7 +161,7 @@ if tag == "NEW1": # check if Blitz is running behind TOR cfg.reload() - if cfg.run_behind_tor: + if not cfg.run_behind_tor: Dialog(dialog="dialog",autowidgetsize=True).msgbox(''' The IP2TOR service just makes sense if you run your RaspiBlitz behind TOR. From e407f1e49d680fc229d91213f3065134401c184b Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 22:56:06 +0200 Subject: [PATCH 034/126] allow custom bridge --- .../config.scripts/blitz.subscriptions.py | 82 ++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 04199a9b9..0b24fc438 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -15,6 +15,11 @@ from dialog import Dialog from blitzpy import RaspiBlitzConfig + +# constants for standard services +LND_REST_API = "LND-REST-API" +LND_REST_API = "LND-GRPC-API" + # load config cfg = RaspiBlitzConfig() cfg.reload() @@ -153,10 +158,14 @@ code, tag = d.menu( if code != d.OK: sys.exit(0) +####### MANAGE SUBSCRIPTIONS ######### + if tag == "LIST": mySubscriptions() sys.exit(0) +####### NEW IP2TOR BRIDGE ######### + if tag == "NEW1": # check if Blitz is running behind TOR @@ -168,9 +177,80 @@ your RaspiBlitz behind TOR. ''',title="Info") sys.exit(1) + # check for which standard services already a active bridge exists + lnd_rest_api=False + lnd_grpc_api=False + try: + subs = toml.load(SUBSCRIPTIONS_FILE) + for sub in subs['subscriptions_ip2tor']: + if not subs['active']: next + if subs['active'] and subs['blitz_service'] == LND_REST_API: lnd_rest_api=True + if subs['active'] and subs['blitz_service'] == LND_GRPC_API: lnd_grpc_api=True + except Exception as e: + pass + + # ask user for which RaspiBlitz service the bridge should be used + choices = [] + choices.append( ("REST","LND REST API {0}".format("--> ALREADY BRIDGED" if lnd_rest_api else "")) ) + choices.append( ("GRPC","LND GRPC API {0}".format("--> ALREADY BRIDGED" if lnd_grpc_api else "")) ) + choices.append( ("SELF","Create a custom IP2TOR Bridge") ) + + d = Dialog(dialog="dialog",autowidgetsize=True) + d.set_background_title("RaspiBlitz Subscriptions") + code, tag = d.menu( + "\nChoose RaspiBlitz Service to create Bridge for:", + choices=choices, width=50, height=10, title="Select Service") + + # if user chosses CANCEL + if code != d.OK: + sys.exit(0) + + torAddress=None + torPort=None + if tag == "REST": + # get TOR address for REST + if tag == "GRPC": + # get TOR address for REST + if tag == "SELF": + try: + # get custom TOR address + code, text = d.inputbox( + "Enter TOR Onion-Address:", + height=10, width=60, init="", + title="IP2TOR Bridge Target") + text = text.strip() + os.system("clear") + if code != d.OK: sys.exit(0) + if len(text) == 0: sys.exit(0) + if text.find('.onion') < 0 or text.find(' ') > 0 : + print("Not a TOR Onion Address") + time.sleep(3) + sys.exit(0) + torAddress = text + # get custom TOR port + code, text = d.inputbox( + "Enter TOR Port Number:", + height=10, width=40, init="80", + title="IP2TOR Bridge Target") + text = text.strip() + os.system("clear") + if code != d.OK: sys.exit(0) + if len(text) == 0: sys.exit(0) + torPort = int(text) + except Exception as e: + print(e) + time.sleep(3) + sys.exit(1) + + print(torAddress) + print(torPort) + sys.exit() + # run creating a new IP2TOR subscription os.system("clear") cmd="python /home/admin/config.scripts/blitz.subscriptions.ip2tor.py create-ssh-dialog {0} {1} {2}".format("RTL","s7foqiwcstnxmlesfsjt7nlhwb2o6w44hc7glv474n7sbyckf76wn6id.onion","80") print("# running: {0}".format(cmd)) os.system(cmd) - sys.exit(0) \ No newline at end of file + sys.exit(0) + + # result = subprocess.run(['python', '/home/admin/config.scripts/blitz.subscriptions.ip2tor.py', 'subscriptions-list'], stdout=subprocess.PIPE).stdout.decode('utf-8') \ No newline at end of file From e8799c8d5b1d603eac744d5aff9d022d9457869c Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 22:58:21 +0200 Subject: [PATCH 035/126] fix syntax errors --- home.admin/config.scripts/blitz.subscriptions.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 0b24fc438..06f140e2f 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -203,14 +203,16 @@ your RaspiBlitz behind TOR. # if user chosses CANCEL if code != d.OK: - sys.exit(0) + sys.exit(0) torAddress=None torPort=None if tag == "REST": # get TOR address for REST + pass if tag == "GRPC": - # get TOR address for REST + # get TOR address for GRPC + pass if tag == "SELF": try: # get custom TOR address From e0d0ba847c42a4ce7becd7c5466b865b94222860 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 23:12:55 +0200 Subject: [PATCH 036/126] get tor addresses --- home.admin/config.scripts/blitz.subscriptions.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 06f140e2f..2624839b5 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -199,7 +199,7 @@ your RaspiBlitz behind TOR. d.set_background_title("RaspiBlitz Subscriptions") code, tag = d.menu( "\nChoose RaspiBlitz Service to create Bridge for:", - choices=choices, width=50, height=10, title="Select Service") + choices=choices, width=60, height=10, title="Select Service") # if user chosses CANCEL if code != d.OK: @@ -209,10 +209,12 @@ your RaspiBlitz behind TOR. torPort=None if tag == "REST": # get TOR address for REST - pass + torAddress = subprocess.run(['sudo', 'cat', '/mnt/hdd/tor/lndrest8080/hostname'], stdout=subprocess.PIPE).stdout.decode('utf-8') + torPort=8080 if tag == "GRPC": # get TOR address for GRPC - pass + torAddress = subprocess.run(['sudo', 'cat', '/mnt/hdd/tor/lndrpc10009/hostname'], stdout=subprocess.PIPE).stdout.decode('utf-8') + torPort=10009 if tag == "SELF": try: # get custom TOR address @@ -253,6 +255,4 @@ your RaspiBlitz behind TOR. cmd="python /home/admin/config.scripts/blitz.subscriptions.ip2tor.py create-ssh-dialog {0} {1} {2}".format("RTL","s7foqiwcstnxmlesfsjt7nlhwb2o6w44hc7glv474n7sbyckf76wn6id.onion","80") print("# running: {0}".format(cmd)) os.system(cmd) - sys.exit(0) - - # result = subprocess.run(['python', '/home/admin/config.scripts/blitz.subscriptions.ip2tor.py', 'subscriptions-list'], stdout=subprocess.PIPE).stdout.decode('utf-8') \ No newline at end of file + sys.exit(0) \ No newline at end of file From c66feed568b233c15d7a6d01815a061cbdebb141 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 23:14:35 +0200 Subject: [PATCH 037/126] normalize addresses --- home.admin/config.scripts/blitz.subscriptions.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 2624839b5..99ea71737 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -209,11 +209,11 @@ your RaspiBlitz behind TOR. torPort=None if tag == "REST": # get TOR address for REST - torAddress = subprocess.run(['sudo', 'cat', '/mnt/hdd/tor/lndrest8080/hostname'], stdout=subprocess.PIPE).stdout.decode('utf-8') + torAddress = subprocess.run(['sudo', 'cat', '/mnt/hdd/tor/lndrest8080/hostname'], stdout=subprocess.PIPE).stdout.decode('utf-8').strip() torPort=8080 if tag == "GRPC": # get TOR address for GRPC - torAddress = subprocess.run(['sudo', 'cat', '/mnt/hdd/tor/lndrpc10009/hostname'], stdout=subprocess.PIPE).stdout.decode('utf-8') + torAddress = subprocess.run(['sudo', 'cat', '/mnt/hdd/tor/lndrpc10009/hostname'], stdout=subprocess.PIPE).stdout.decode('utf-8').strip() torPort=10009 if tag == "SELF": try: From 2233c0457c6ca05f2348f0c68ede48470f2eb711 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 23:16:50 +0200 Subject: [PATCH 038/126] finish create new bidge --- home.admin/config.scripts/blitz.subscriptions.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 99ea71737..f2095136a 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -192,7 +192,7 @@ your RaspiBlitz behind TOR. # ask user for which RaspiBlitz service the bridge should be used choices = [] choices.append( ("REST","LND REST API {0}".format("--> ALREADY BRIDGED" if lnd_rest_api else "")) ) - choices.append( ("GRPC","LND GRPC API {0}".format("--> ALREADY BRIDGED" if lnd_grpc_api else "")) ) + choices.append( ("GRPC","LND gRPC API {0}".format("--> ALREADY BRIDGED" if lnd_grpc_api else "")) ) choices.append( ("SELF","Create a custom IP2TOR Bridge") ) d = Dialog(dialog="dialog",autowidgetsize=True) @@ -246,10 +246,6 @@ your RaspiBlitz behind TOR. time.sleep(3) sys.exit(1) - print(torAddress) - print(torPort) - sys.exit() - # run creating a new IP2TOR subscription os.system("clear") cmd="python /home/admin/config.scripts/blitz.subscriptions.ip2tor.py create-ssh-dialog {0} {1} {2}".format("RTL","s7foqiwcstnxmlesfsjt7nlhwb2o6w44hc7glv474n7sbyckf76wn6id.onion","80") From 4101b9478a3dd7742dd4c4fb54a1e615489f5f1b Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 23:19:38 +0200 Subject: [PATCH 039/126] final create bridge --- home.admin/config.scripts/blitz.subscriptions.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index f2095136a..d9cc05a5e 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -18,7 +18,7 @@ from blitzpy import RaspiBlitzConfig # constants for standard services LND_REST_API = "LND-REST-API" -LND_REST_API = "LND-GRPC-API" +LND_GRPC_API = "LND-GRPC-API" # load config cfg = RaspiBlitzConfig() @@ -205,17 +205,21 @@ your RaspiBlitz behind TOR. if code != d.OK: sys.exit(0) + servicename=None torAddress=None torPort=None if tag == "REST": # get TOR address for REST + servicename=LND_REST_API torAddress = subprocess.run(['sudo', 'cat', '/mnt/hdd/tor/lndrest8080/hostname'], stdout=subprocess.PIPE).stdout.decode('utf-8').strip() torPort=8080 if tag == "GRPC": # get TOR address for GRPC + servicename=LND_GRPC_API torAddress = subprocess.run(['sudo', 'cat', '/mnt/hdd/tor/lndrpc10009/hostname'], stdout=subprocess.PIPE).stdout.decode('utf-8').strip() torPort=10009 if tag == "SELF": + servicename="CUSTOM" try: # get custom TOR address code, text = d.inputbox( @@ -248,7 +252,7 @@ your RaspiBlitz behind TOR. # run creating a new IP2TOR subscription os.system("clear") - cmd="python /home/admin/config.scripts/blitz.subscriptions.ip2tor.py create-ssh-dialog {0} {1} {2}".format("RTL","s7foqiwcstnxmlesfsjt7nlhwb2o6w44hc7glv474n7sbyckf76wn6id.onion","80") + cmd="python /home/admin/config.scripts/blitz.subscriptions.ip2tor.py create-ssh-dialog {0} {1} {2}".format(servicename,torAddress,torPort) print("# running: {0}".format(cmd)) os.system(cmd) sys.exit(0) \ No newline at end of file From 491b27722a11ea32c0d4cffa13dc47adf2930aac Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 23:29:17 +0200 Subject: [PATCH 040/126] rename data field --- home.admin/config.scripts/blitz.subscriptions.ip2tor.py | 4 ++-- home.admin/config.scripts/blitz.subscriptions.py | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py index 136db54f2..471ca6872 100644 --- a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py +++ b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py @@ -383,7 +383,7 @@ def shopOrder(shopUrl, hostid, servicename, torTarget, duration, msatsFirst, msa subscription = {} subscription['type'] = "ip2tor-v1" subscription['id'] = bridge['id'] - subscription['blitz_service'] = servicename + subscription['name'] = servicename subscription['shop'] = shopUrl subscription['active'] = True subscription['ip'] = bridge_ip @@ -919,7 +919,7 @@ if sys.argv[1] == "subscription-by-service": subs = toml.load(SUBSCRIPTIONS_FILE) newList = [] for idx, sub in enumerate(subs['subscriptions_ip2tor']): - if sub['active'] and sub['blitz_service'] == servicenname: + if sub['active'] and sub['name'] == servicenname: print("type='{0}'".format(sub['type'])) print("ip='{0}'".format(sub['ip'])) print("port='{0}'".format(sub['port'])) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index d9cc05a5e..44853bf5b 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -70,7 +70,7 @@ You have no active or inactive subscriptions. activeState="active" else: activeState="in-active" - name="IP2TOR Bridge for {0}".format(sub['blitz_service']) + name="IP2TOR Bridge for {0}".format(sub['name']) choices.append( ("{0}".format(lookupIndex), "{0} ({1})".format(name.ljust(30), activeState)) ) # show menu with options @@ -117,7 +117,7 @@ The following additional information is available: active= "ACTIVE" if selectedSub['active'] else "NOT ACTIVE", warning=selectedSub['warning'], description=selectedSub['description'], - service=selectedSub['blitz_service'] + service=selectedSub['name'] ) if selectedSub['active']: @@ -184,8 +184,8 @@ your RaspiBlitz behind TOR. subs = toml.load(SUBSCRIPTIONS_FILE) for sub in subs['subscriptions_ip2tor']: if not subs['active']: next - if subs['active'] and subs['blitz_service'] == LND_REST_API: lnd_rest_api=True - if subs['active'] and subs['blitz_service'] == LND_GRPC_API: lnd_grpc_api=True + if subs['active'] and subs['name'] == LND_REST_API: lnd_rest_api=True + if subs['active'] and subs['name'] == LND_GRPC_API: lnd_grpc_api=True except Exception as e: pass From c3e151b9fafcb32d5100b38b9fd14b4e0ca5dca5 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 23:37:37 +0200 Subject: [PATCH 041/126] better info --- home.admin/config.scripts/blitz.subscriptions.ip2tor.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py index 471ca6872..7fbeba37f 100644 --- a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py +++ b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py @@ -599,7 +599,7 @@ Every next time it would cost: {2} sats If you AGREE you will subscribe to this service. You will get a port on the IP {3} that will -forward to your RaspiBlitz TOR address: +forward to your RaspiBlitz TOR address for '{7}': {4} You can cancel the subscription anytime under @@ -619,9 +619,11 @@ More information on the service you can find under: host['ip'], torTarget, host['terms_of_service'], - host['terms_of_service_url']) + host['terms_of_service_url'], + blitzServiceName + ) - code = d.msgbox(text, title=host['name'], ok_label="Back", extra_button=True, extra_label="AGREE" ,width=70, height=30) + code = d.msgbox(text, title=host['name'], ok_label="Back", extra_button=True, extra_label="AGREE" ,width=75, height=30) # if user AGREED break loop and continue with selected host if code == "extra": break From 57230c7b4fde85af8b2893859c28bf2eb1c327b1 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 23:41:59 +0200 Subject: [PATCH 042/126] fix detect already existing bridges --- home.admin/config.scripts/blitz.subscriptions.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 44853bf5b..d7aa9c37b 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -184,8 +184,8 @@ your RaspiBlitz behind TOR. subs = toml.load(SUBSCRIPTIONS_FILE) for sub in subs['subscriptions_ip2tor']: if not subs['active']: next - if subs['active'] and subs['name'] == LND_REST_API: lnd_rest_api=True - if subs['active'] and subs['name'] == LND_GRPC_API: lnd_grpc_api=True + if sub['active'] and sub['name'] == LND_REST_API: lnd_rest_api=True + if sub['active'] and sub['name'] == LND_GRPC_API: lnd_grpc_api=True except Exception as e: pass From 33d08181c96675c3e415a43ad6af4709f24afbc5 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 26 May 2020 23:45:09 +0200 Subject: [PATCH 043/126] fix running bridges --- home.admin/config.scripts/blitz.subscriptions.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index d7aa9c37b..a78cb7ff8 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -183,10 +183,12 @@ your RaspiBlitz behind TOR. try: subs = toml.load(SUBSCRIPTIONS_FILE) for sub in subs['subscriptions_ip2tor']: - if not subs['active']: next + if not sub['active']: next if sub['active'] and sub['name'] == LND_REST_API: lnd_rest_api=True if sub['active'] and sub['name'] == LND_GRPC_API: lnd_grpc_api=True except Exception as e: + print(e) + time.sleep(4) pass # ask user for which RaspiBlitz service the bridge should be used From 99299b2ee58828072d499e765650a6048ee364e3 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Wed, 27 May 2020 00:15:02 +0200 Subject: [PATCH 044/126] Background Renew Subscriptions --- home.admin/_background.sh | 13 ++++++++++++- home.admin/config.scripts/blitz.subscriptions.py | 2 -- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/home.admin/_background.sh b/home.admin/_background.sh index 28a5b1d19..327c43fc0 100644 --- a/home.admin/_background.sh +++ b/home.admin/_background.sh @@ -247,13 +247,24 @@ do fi fi + ############################### + # SUBSCRIPTION RENWES + ############################### + + # check every 10min + recheckSubscription=$((($counter % 600)+1)) + if [ ${recheckSubscription} -eq 1 ]; then + # IP2TOR subscriptions (that will need renew in next 20min = 1200 secs) + /home/admin/config.scripts/blitz.subscriptions.ip2tor.py subscriptions-renew 1200 + fi + ############################### # RAID data check (BRTFS) ############################### # see https://github.com/rootzoll/raspiblitz/issues/360#issuecomment-467698260 # check every hour - recheckRAID=$((($counter % 360)+1)) + recheckRAID=$((($counter % 3600)+1)) if [ ${recheckRAID} -eq 1 ]; then # check if raid is active diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index a78cb7ff8..9df58a458 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -188,8 +188,6 @@ your RaspiBlitz behind TOR. if sub['active'] and sub['name'] == LND_GRPC_API: lnd_grpc_api=True except Exception as e: print(e) - time.sleep(4) - pass # ask user for which RaspiBlitz service the bridge should be used choices = [] From 68cac4298c3e0df5866b86b3de7d41fa476a5725 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Wed, 27 May 2020 00:36:11 +0200 Subject: [PATCH 045/126] add subscriptions to main menu --- home.admin/00mainMenu.sh | 4 ++++ home.admin/config.scripts/blitz.subscriptions.ip2tor.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/home.admin/00mainMenu.sh b/home.admin/00mainMenu.sh index da0a6f0c1..75bef0fb7 100755 --- a/home.admin/00mainMenu.sh +++ b/home.admin/00mainMenu.sh @@ -92,6 +92,7 @@ if [ "${chain}" = "main" ]; then fi OPTIONS+=(SERVICES "Activate/Deactivate Services") +OPTIONS+=(SUBSCRIBE "Manage Subscriptions") OPTIONS+=(MOBILE "Connect Mobile Wallet") OPTIONS+=(LNDCREDS "Manage LND Credentials") OPTIONS+=(NAME "Change Name/Alias of Node") @@ -173,6 +174,9 @@ case $CHOICE in BOS) sudo /home/admin/config.scripts/bonus.bos.sh menu ;; + SUBSCRIBE) + /home/admin/config.scripts/blitz.subscriptions.py + ;; lnbalance) clear echo "*** YOUR SATOSHI BALANCES ***" diff --git a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py index 7fbeba37f..480a646bb 100644 --- a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py +++ b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py @@ -691,7 +691,7 @@ Your service '{3}' should now publicly be reachable under: Please test now if the service is performing as promised. If not - dont forget to cancel the subscription under: -MAIN MENU > SUBSCRIPTIONS > MY SUBSCRIPTIONS +MAIN MENU > Manage Subscriptions > My Subscriptions '''.format( host['tor_bridge_price_initial_sats'], host['tor_bridge_duration_hours'], From d9ed0900268850cf82b9286f913840e95861fb67 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Wed, 27 May 2020 01:00:26 +0200 Subject: [PATCH 046/126] test ip2tor detection --- home.admin/config.scripts/bonus.lndconnect.sh | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/home.admin/config.scripts/bonus.lndconnect.sh b/home.admin/config.scripts/bonus.lndconnect.sh index 567e6e0c3..23d2244a0 100644 --- a/home.admin/config.scripts/bonus.lndconnect.sh +++ b/home.admin/config.scripts/bonus.lndconnect.sh @@ -45,6 +45,28 @@ else echo "# lndconnect is already installed" fi +#### CHECK IF IP2TOR BRIDGES ARE AVAILABLE +ip2torREST_IP="" +ip2torREST_PORT="" +error="" +source <(/home/admin/config.scripts/blitz.subscriptions.ip2tor.py subscription-by-service LND-REST-API) +if [ ${#error} -eq 0 ]; then + ip2torREST_IP="${ip}" + ip2torREST_PORT="${port}" +fi +ip2torGRPC_IP="" +ip2torGRPC_PORT="" +error="" +source <(/home/admin/config.scripts/blitz.subscriptions.ip2tor.py subscription-by-service LND-GRPC-API) +if [ ${#error} -eq 0 ]; then + ip2torGRPC_IP="${ip}" + ip2torGRPC_PORT="${port}" +fi + +echo "${ip2torREST_IP}" +echo "${ip2torREST_PORT}" +exit + #### ADAPT PARAMETERS BASED TARGETWALLET # defaults From a7ccc7a8272a367784b1c3e1b3359636adc5bb51 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Wed, 27 May 2020 01:18:55 +0200 Subject: [PATCH 047/126] test IP2TOR for zap-android --- home.admin/config.scripts/bonus.lndconnect.sh | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/home.admin/config.scripts/bonus.lndconnect.sh b/home.admin/config.scripts/bonus.lndconnect.sh index 23d2244a0..61437ff4c 100644 --- a/home.admin/config.scripts/bonus.lndconnect.sh +++ b/home.admin/config.scripts/bonus.lndconnect.sh @@ -63,10 +63,6 @@ if [ ${#error} -eq 0 ]; then ip2torGRPC_PORT="${port}" fi -echo "${ip2torREST_IP}" -echo "${ip2torREST_PORT}" -exit - #### ADAPT PARAMETERS BASED TARGETWALLET # defaults @@ -97,6 +93,12 @@ elif [ "${targetWallet}" = "zap-android" ]; then # normal ZAP uses gRPC ports port="10009" fi + if [ ${#ip2torGRPC_IP} -gt 0 ]; then + # when IP2TOR bridge is available - force using that + forceTOR=0 + host="${ip2torGRPC_IP}" + port="${ip2torGRPC_PORT}" + fi elif [ "${targetWallet}" = "zeus-ios" ]; then @@ -152,7 +154,9 @@ fi #### ADAPT PARAMETERS BASED RASPIBLITZ CONFIG # get the local IP as default host -host=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/') +if [ ${#host} -eq 0 ]; then + host=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/') +fi # change host to dynDNS if set if [ ${#dynDomain} -gt 0 ]; then From 26dc41e898c9ad92e38184170e432c7689051019 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Wed, 27 May 2020 01:28:33 +0200 Subject: [PATCH 048/126] Signal use of IP2TOR --- home.admin/config.scripts/bonus.lndconnect.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/home.admin/config.scripts/bonus.lndconnect.sh b/home.admin/config.scripts/bonus.lndconnect.sh index 61437ff4c..9f2476d35 100644 --- a/home.admin/config.scripts/bonus.lndconnect.sh +++ b/home.admin/config.scripts/bonus.lndconnect.sh @@ -71,6 +71,7 @@ host="" port="" extraparameter="" supportsTOR=0 +usingIP2TOR=0 if [ "${targetWallet}" = "zap-ios" ]; then connector="lndconnect" @@ -95,7 +96,9 @@ elif [ "${targetWallet}" = "zap-android" ]; then fi if [ ${#ip2torGRPC_IP} -gt 0 ]; then # when IP2TOR bridge is available - force using that + usingIP2TOR=1 forceTOR=0 + extraparameter="" host="${ip2torGRPC_IP}" port="${ip2torGRPC_PORT}" fi @@ -237,6 +240,9 @@ msg="" if [ $(echo "${host}" | grep -c '192.168') -gt 0 ]; then msg="Make sure you are on the same local network.\n(WLAN same as LAN - use WIFI not cell network on phone).\n\n" fi +if [ ${usingIP2TOR} -eq 1 ]; then + msg="Your IP2TOR bridge is used for this connection.\n\n" +fi msg="You should now see the pairing QR code on the RaspiBlitz LCD.\n\n${msg}When you start the App choose to connect to your own node.\n(DIY / Remote-Node / lndconnect)\n\nClick on the 'Scan QR' button. Scan the QR on the LCD and or to see it in this window." whiptail --backtitle "Connecting Mobile Wallet" \ --title "Pairing by QR code" \ From e5b584a7066db48c48864bfb85c8e766e57df5f9 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Wed, 27 May 2020 01:47:06 +0200 Subject: [PATCH 049/126] try zeus android REST --- home.admin/config.scripts/bonus.lndconnect.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/home.admin/config.scripts/bonus.lndconnect.sh b/home.admin/config.scripts/bonus.lndconnect.sh index 9f2476d35..5aa1184b3 100644 --- a/home.admin/config.scripts/bonus.lndconnect.sh +++ b/home.admin/config.scripts/bonus.lndconnect.sh @@ -116,6 +116,14 @@ elif [ "${targetWallet}" = "zeus-android" ]; then connector="lndconnect" port="8080" + if [ ${#ip2torREST_IP} -gt 0 ]; then + # when IP2TOR bridge is available - force using that + usingIP2TOR=1 + forceTOR=0 + extraparameter="" + host="${ip2torREST_IP}" + port="${ip2torREST_PORT}" + fi elif [ "${targetWallet}" = "sendmany-android" ]; then From f14de857eaadee87fb3c842999ca2800936b92a6 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Wed, 27 May 2020 01:55:03 +0200 Subject: [PATCH 050/126] add ip2tor to all mobiles --- home.admin/config.scripts/bonus.lndconnect.sh | 58 ++++++++++++++++--- 1 file changed, 49 insertions(+), 9 deletions(-) diff --git a/home.admin/config.scripts/bonus.lndconnect.sh b/home.admin/config.scripts/bonus.lndconnect.sh index 5aa1184b3..09694bdd0 100644 --- a/home.admin/config.scripts/bonus.lndconnect.sh +++ b/home.admin/config.scripts/bonus.lndconnect.sh @@ -71,7 +71,7 @@ host="" port="" extraparameter="" supportsTOR=0 -usingIP2TOR=0 +usingIP2TOR="" if [ "${targetWallet}" = "zap-ios" ]; then connector="lndconnect" @@ -83,6 +83,14 @@ if [ "${targetWallet}" = "zap-ios" ]; then # normal ZAP uses gRPC ports port="10009" fi + if [ ${#ip2torGRPC_IP} -gt 0 ]; then + # when IP2TOR bridge is available - force using that + usingIP2TOR="LND-GRPC-API" + forceTOR=0 + extraparameter="" + host="${ip2torGRPC_IP}" + port="${ip2torGRPC_PORT}" + fi elif [ "${targetWallet}" = "zap-android" ]; then connector="lndconnect" @@ -96,7 +104,7 @@ elif [ "${targetWallet}" = "zap-android" ]; then fi if [ ${#ip2torGRPC_IP} -gt 0 ]; then # when IP2TOR bridge is available - force using that - usingIP2TOR=1 + usingIP2TOR="LND-GRPC-API" forceTOR=0 extraparameter="" host="${ip2torGRPC_IP}" @@ -106,11 +114,19 @@ elif [ "${targetWallet}" = "zap-android" ]; then elif [ "${targetWallet}" = "zeus-ios" ]; then connector="lndconnect" + port="8080" + if [ ${#ip2torREST_IP} -gt 0 ]; then + # when IP2TOR bridge is available - force using that + usingIP2TOR="LND-REST-API" + forceTOR=0 + extraparameter="" + host="${ip2torREST_IP}" + port="${ip2torREST_PORT}" + fi if [ ${forceTOR} -eq 1 ]; then echo "error='no tor support'" exit 1 fi - port="8080" elif [ "${targetWallet}" = "zeus-android" ]; then @@ -118,7 +134,7 @@ elif [ "${targetWallet}" = "zeus-android" ]; then port="8080" if [ ${#ip2torREST_IP} -gt 0 ]; then # when IP2TOR bridge is available - force using that - usingIP2TOR=1 + usingIP2TOR="LND-REST-API" forceTOR=0 extraparameter="" host="${ip2torREST_IP}" @@ -138,25 +154,49 @@ elif [ "${targetWallet}" = "sendmany-android" ]; then forceTOR=0 fi port="10009" + if [ ${#ip2torGRPC_IP} -gt 0 ]; then + # when IP2TOR bridge is available - force using that + usingIP2TOR="LND-GRPC-API" + forceTOR=0 + extraparameter="" + host="${ip2torGRPC_IP}" + port="${ip2torGRPC_PORT}" + fi elif [ "${targetWallet}" = "shango-ios" ]; then connector="shango" + port="10009" + if [ ${#ip2torGRPC_IP} -gt 0 ]; then + # when IP2TOR bridge is available - force using that + usingIP2TOR="LND-GRPC-API" + forceTOR=0 + extraparameter="" + host="${ip2torGRPC_IP}" + port="${ip2torGRPC_PORT}" + fi if [ ${forceTOR} -eq 1 ]; then echo "error='no tor support'" exit 1 fi - port="10009" elif [ "${targetWallet}" = "shango-android" ]; then connector="shango" + port="10009" + if [ ${#ip2torGRPC_IP} -gt 0 ]; then + # when IP2TOR bridge is available - force using that + usingIP2TOR="LND-GRPC-API" + forceTOR=0 + extraparameter="" + host="${ip2torGRPC_IP}" + port="${ip2torGRPC_PORT}" + fi if [ ${forceTOR} -eq 1 ]; then echo "error='no tor support'" exit 1 fi - port="10009" - + else echo "error='unknown target wallet'" exit 1 @@ -248,8 +288,8 @@ msg="" if [ $(echo "${host}" | grep -c '192.168') -gt 0 ]; then msg="Make sure you are on the same local network.\n(WLAN same as LAN - use WIFI not cell network on phone).\n\n" fi -if [ ${usingIP2TOR} -eq 1 ]; then - msg="Your IP2TOR bridge is used for this connection.\n\n" +if [ ${#usingIP2TOR} -gt 0 ]; then + msg="Your IP2TOR bridge '${usingIP2TOR}' is used for this connection.\n\n" fi msg="You should now see the pairing QR code on the RaspiBlitz LCD.\n\n${msg}When you start the App choose to connect to your own node.\n(DIY / Remote-Node / lndconnect)\n\nClick on the 'Scan QR' button. Scan the QR on the LCD and or to see it in this window." whiptail --backtitle "Connecting Mobile Wallet" \ From 4195e5f14f2f82d83fbf06c88ee1afd2a3b42a77 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Wed, 27 May 2020 02:36:27 +0200 Subject: [PATCH 051/126] test IP2TOR question --- home.admin/97addMobileWallet.sh | 71 ++++++++++++++++++++++++++++----- 1 file changed, 61 insertions(+), 10 deletions(-) diff --git a/home.admin/97addMobileWallet.sh b/home.admin/97addMobileWallet.sh index f10992165..181133ca7 100755 --- a/home.admin/97addMobileWallet.sh +++ b/home.admin/97addMobileWallet.sh @@ -5,25 +5,30 @@ source /home/admin/raspiblitz.info source /mnt/hdd/raspiblitz.conf justLocal=1 +aks4IP2TOR=0 + +# if TOR is activated then outside reach is possible (no notice) +if [ "${runBehindTor}" = "on" ]; then + justLocal=0 + aks4IP2TOR=1 +fi # if dynDomain is set connect from outside is possible (no notice) if [ ${#dynDomain} -gt 0 ]; then justLocal=0 + aks4IP2TOR=0 fi # if sshtunnel to 10009/8080 then outside reach is possible (no notice) isForwarded=$(echo ${sshtunnel} | grep -c "10009<") if [ ${isForwarded} -gt 0 ]; then justLocal=0 + aks4IP2TOR=0 fi isForwarded=$(echo ${sshtunnel} | grep -c "8080<") if [ ${isForwarded} -gt 0 ]; then justLocal=0 -fi - -# if TOR is activated then outside reach is possible (no notice) -if [ "${runBehindTor}" = "on" ]; then - justLocal=0 + aks4IP2TOR=0 fi # check if dynamic domain is set @@ -67,6 +72,50 @@ choose_IP_or_TOR() fi } +# fuction to if already activated or user wants to activate IP2TOR +# needs parameter: #1 "LND-REST-API" or "LND-GRPC-API" +ip2tor="" +checkIP2TOR() +{ + + echo "checkIP2TOR" + echo "$1" + exit + + # check if IP2TOR service is already available + error="" + source <(/home/admin/config.scripts/blitz.subscriptions.ip2tor.py subscription-by-service $1) + if [ ${#error} -eq 0 ]; then + ip2tor=$1 + fi + + # if IP2TOR is not already available: + # and the checks from avove showed there is SSH forwarding / dynDNS + # then ask user if IP2TOR subscription is wanted + if [ ${#ip2tor} -eq 0 ] && [ ${aks4IP2TOR} -eq 1 ]; then + whiptail --title " Want to use a IP2TOR Bridge? " \ + --yes-button "Go To Shop" \ + --no-button "No Thanks" \ + --yesno "It can be hard to configure your router or phone to connect to your RaspiBlitz at home.\n\nDo you like to subscribe to a IP2TOR bridge service that will make it easy to connect your mobile wallet?" 12 60 + if [ $? -eq 0 ]; then + echo "# yes-button -> Send To Shop" + port="10009" + toraddress=$(sudo cat /mnt/hdd/tor/lndrpc10009/hostname) + if [ "$1" == "LND-REST-API" ]; then + port="8080" + toraddress=$(sudo cat /mnt/hdd/tor/lndrest8080/hostname) + fi + /home/admin/config.scripts/blitz.subscriptions.ip2tor.py create-ssh-dialog $1 ${toraddress} ${port} + fi + + # check again if IP2TOR service is now already available + error="" + source <(/home/admin/config.scripts/blitz.subscriptions.ip2tor.py subscription-by-service $1) + if [ ${#error} -eq 0 ]; then + ip2tor=$1 + fi +} + # Options OPTIONS=(ZAP_IOS "Zap Wallet (iOS)" \ ZAP_ANDROID "Zap Wallet (Android)" \ @@ -81,10 +130,8 @@ if [ "${runBehindTor}" = "on" ]; then OPTIONS+=(FULLY_NODED "Fully Noded (IOS+TOR)") fi -# Additinal Options with no TOR -#if [ "${runBehindTor}" != "on" ]; then - OPTIONS+=(SENDMANY_ANDROID "SendMany (Android)") -#fi +# add SEND MANY APP +OPTIONS+=(SENDMANY_ANDROID "SendMany (Android)") CHOICE=$(whiptail --clear --title "Choose Mobile Wallet" --menu "" 14 50 8 "${OPTIONS[@]}" 2>&1 >/dev/tty) @@ -125,6 +172,7 @@ case $CHOICE in exit 1; ;; ZAP_IOS) + # choose IP or TOR --> function call choose_IP_or_TOR appstoreLink="https://apps.apple.com/us/app/zap-bitcoin-lightning-wallet/id1406311960" /home/admin/config.scripts/blitz.lcd.sh qr ${appstoreLink} @@ -196,8 +244,11 @@ Please go to MAINMENU > SERVICES and activate KEYSEND first. exit 1; ;; ZEUS_ANDROID) + checkIP2TOR "LND-REST-API" # choose IP or TOR --> function call - choose_IP_or_TOR + if [ ${#ip2tor} -eq 0 ]; then + choose_IP_or_TOR + fi appstoreLink="https://play.google.com/store/apps/details?id=com.zeusln.zeus" /home/admin/config.scripts/blitz.lcd.sh qr ${appstoreLink} whiptail --title "Install Zeus on your Android Phone" \ From 78c44f55fa51cc4fecef5b282a5a498f7b580257 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Wed, 27 May 2020 02:38:50 +0200 Subject: [PATCH 052/126] test function --- home.admin/97addMobileWallet.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/home.admin/97addMobileWallet.sh b/home.admin/97addMobileWallet.sh index 181133ca7..a9ed7b5c0 100755 --- a/home.admin/97addMobileWallet.sh +++ b/home.admin/97addMobileWallet.sh @@ -80,6 +80,7 @@ checkIP2TOR() echo "checkIP2TOR" echo "$1" + sleep 10 exit # check if IP2TOR service is already available @@ -244,7 +245,7 @@ Please go to MAINMENU > SERVICES and activate KEYSEND first. exit 1; ;; ZEUS_ANDROID) - checkIP2TOR "LND-REST-API" + checkIP2TOR LND-REST-API # choose IP or TOR --> function call if [ ${#ip2tor} -eq 0 ]; then choose_IP_or_TOR From 73ba8313e7c8e51603ab66f5c106f383949b3313 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Wed, 27 May 2020 02:42:50 +0200 Subject: [PATCH 053/126] debug --- home.admin/97addMobileWallet.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/home.admin/97addMobileWallet.sh b/home.admin/97addMobileWallet.sh index a9ed7b5c0..dba7b41cb 100755 --- a/home.admin/97addMobileWallet.sh +++ b/home.admin/97addMobileWallet.sh @@ -79,9 +79,8 @@ checkIP2TOR() { echo "checkIP2TOR" - echo "$1" + echo $1 sleep 10 - exit # check if IP2TOR service is already available error="" @@ -94,7 +93,7 @@ checkIP2TOR() # and the checks from avove showed there is SSH forwarding / dynDNS # then ask user if IP2TOR subscription is wanted if [ ${#ip2tor} -eq 0 ] && [ ${aks4IP2TOR} -eq 1 ]; then - whiptail --title " Want to use a IP2TOR Bridge? " \ + whiptail --title " Want to use a IP2TOR Bridge? " \ --yes-button "Go To Shop" \ --no-button "No Thanks" \ --yesno "It can be hard to configure your router or phone to connect to your RaspiBlitz at home.\n\nDo you like to subscribe to a IP2TOR bridge service that will make it easy to connect your mobile wallet?" 12 60 @@ -106,7 +105,7 @@ checkIP2TOR() port="8080" toraddress=$(sudo cat /mnt/hdd/tor/lndrest8080/hostname) fi - /home/admin/config.scripts/blitz.subscriptions.ip2tor.py create-ssh-dialog $1 ${toraddress} ${port} + /home/admin/config.scripts/blitz.subscriptions.ip2tor.py create-ssh-dialog $1 $toraddress $port fi # check again if IP2TOR service is now already available From c8aa290e66aa3767b4ad7de9b45f069a8a25ef32 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Wed, 27 May 2020 02:49:07 +0200 Subject: [PATCH 054/126] debug --- home.admin/97addMobileWallet.sh | 47 +++++++++++++++------------------ 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/home.admin/97addMobileWallet.sh b/home.admin/97addMobileWallet.sh index dba7b41cb..0ec61fafa 100755 --- a/home.admin/97addMobileWallet.sh +++ b/home.admin/97addMobileWallet.sh @@ -83,37 +83,34 @@ checkIP2TOR() sleep 10 # check if IP2TOR service is already available - error="" - source <(/home/admin/config.scripts/blitz.subscriptions.ip2tor.py subscription-by-service $1) - if [ ${#error} -eq 0 ]; then - ip2tor=$1 - fi + #error="" + #source <(/home/admin/config.scripts/blitz.subscriptions.ip2tor.py subscription-by-service $1) + #if [ ${#error} -eq 0 ]; then + # ip2tor=$1 + #fi # if IP2TOR is not already available: # and the checks from avove showed there is SSH forwarding / dynDNS # then ask user if IP2TOR subscription is wanted - if [ ${#ip2tor} -eq 0 ] && [ ${aks4IP2TOR} -eq 1 ]; then - whiptail --title " Want to use a IP2TOR Bridge? " \ - --yes-button "Go To Shop" \ - --no-button "No Thanks" \ - --yesno "It can be hard to configure your router or phone to connect to your RaspiBlitz at home.\n\nDo you like to subscribe to a IP2TOR bridge service that will make it easy to connect your mobile wallet?" 12 60 - if [ $? -eq 0 ]; then - echo "# yes-button -> Send To Shop" - port="10009" - toraddress=$(sudo cat /mnt/hdd/tor/lndrpc10009/hostname) - if [ "$1" == "LND-REST-API" ]; then - port="8080" - toraddress=$(sudo cat /mnt/hdd/tor/lndrest8080/hostname) - fi - /home/admin/config.scripts/blitz.subscriptions.ip2tor.py create-ssh-dialog $1 $toraddress $port - fi + #if [ ${#ip2tor} -eq 0 ] && [ ${aks4IP2TOR} -eq 1 ]; then + # whiptail --title " Want to use a IP2TOR Bridge? " --yes-button "Go To Shop" --no-button "No Thanks" --yesno "It can be hard to configure your router or phone to connect to your RaspiBlitz at home.\n\nDo you like to subscribe to a IP2TOR bridge service that will make it easy to connect your mobile wallet?" 12 60 + # if [ $? -eq 0 ]; then + # echo "# yes-button -> Send To Shop" +# port="10009" +# toraddress=$(sudo cat /mnt/hdd/tor/lndrpc10009/hostname) +# if [ "$1" == "LND-REST-API" ]; then +# port="8080" +# toraddress=$(sudo cat /mnt/hdd/tor/lndrest8080/hostname) +# fi +# /home/admin/config.scripts/blitz.subscriptions.ip2tor.py create-ssh-dialog $1 $toraddress $port +# fi # check again if IP2TOR service is now already available - error="" - source <(/home/admin/config.scripts/blitz.subscriptions.ip2tor.py subscription-by-service $1) - if [ ${#error} -eq 0 ]; then - ip2tor=$1 - fi + #error="" + #source <(/home/admin/config.scripts/blitz.subscriptions.ip2tor.py subscription-by-service $1) + #if [ ${#error} -eq 0 ]; then + # ip2tor=$1 + #fi } # Options From 2f57fd632842ac025a5ba925b83a9bd26ca6d2b2 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Wed, 27 May 2020 02:50:47 +0200 Subject: [PATCH 055/126] debug --- home.admin/97addMobileWallet.sh | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/home.admin/97addMobileWallet.sh b/home.admin/97addMobileWallet.sh index 0ec61fafa..f82855e72 100755 --- a/home.admin/97addMobileWallet.sh +++ b/home.admin/97addMobileWallet.sh @@ -78,16 +78,12 @@ ip2tor="" checkIP2TOR() { - echo "checkIP2TOR" - echo $1 - sleep 10 - # check if IP2TOR service is already available - #error="" - #source <(/home/admin/config.scripts/blitz.subscriptions.ip2tor.py subscription-by-service $1) - #if [ ${#error} -eq 0 ]; then - # ip2tor=$1 - #fi + error="" + source <(/home/admin/config.scripts/blitz.subscriptions.ip2tor.py subscription-by-service $1) + if [ ${#error} -eq 0 ]; then + ip2tor="$1" + fi # if IP2TOR is not already available: # and the checks from avove showed there is SSH forwarding / dynDNS @@ -102,15 +98,17 @@ checkIP2TOR() # port="8080" # toraddress=$(sudo cat /mnt/hdd/tor/lndrest8080/hostname) # fi -# /home/admin/config.scripts/blitz.subscriptions.ip2tor.py create-ssh-dialog $1 $toraddress $port +# /home/admin/config.scripts/blitz.subscriptions.ip2tor.py create-ssh-dialog "$1" "$toraddress" "$port" # fi # check again if IP2TOR service is now already available - #error="" - #source <(/home/admin/config.scripts/blitz.subscriptions.ip2tor.py subscription-by-service $1) - #if [ ${#error} -eq 0 ]; then - # ip2tor=$1 - #fi + error="" + source <(/home/admin/config.scripts/blitz.subscriptions.ip2tor.py subscription-by-service "$1") + if [ ${#error} -eq 0 ]; then + ip2tor="$1" + fi + + sleep 10 } # Options From bc643e85dffc25903a07da37d745a29678ed01e5 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Wed, 27 May 2020 02:51:57 +0200 Subject: [PATCH 056/126] debug --- home.admin/97addMobileWallet.sh | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/home.admin/97addMobileWallet.sh b/home.admin/97addMobileWallet.sh index f82855e72..d53d11122 100755 --- a/home.admin/97addMobileWallet.sh +++ b/home.admin/97addMobileWallet.sh @@ -88,18 +88,19 @@ checkIP2TOR() # if IP2TOR is not already available: # and the checks from avove showed there is SSH forwarding / dynDNS # then ask user if IP2TOR subscription is wanted - #if [ ${#ip2tor} -eq 0 ] && [ ${aks4IP2TOR} -eq 1 ]; then - # whiptail --title " Want to use a IP2TOR Bridge? " --yes-button "Go To Shop" --no-button "No Thanks" --yesno "It can be hard to configure your router or phone to connect to your RaspiBlitz at home.\n\nDo you like to subscribe to a IP2TOR bridge service that will make it easy to connect your mobile wallet?" 12 60 - # if [ $? -eq 0 ]; then - # echo "# yes-button -> Send To Shop" -# port="10009" -# toraddress=$(sudo cat /mnt/hdd/tor/lndrpc10009/hostname) -# if [ "$1" == "LND-REST-API" ]; then -# port="8080" -# toraddress=$(sudo cat /mnt/hdd/tor/lndrest8080/hostname) -# fi -# /home/admin/config.scripts/blitz.subscriptions.ip2tor.py create-ssh-dialog "$1" "$toraddress" "$port" -# fi + if [ ${#ip2tor} -eq 0 ] && [ ${aks4IP2TOR} -eq 1 ]; then + whiptail --title " Want to use a IP2TOR Bridge? " --yes-button "Go To Shop" --no-button "No Thanks" --yesno "It can be hard to configure your router or phone to connect to your RaspiBlitz at home.\n\nDo you like to subscribe to a IP2TOR bridge service that will make it easy to connect your mobile wallet?" 12 60 + if [ $? -eq 0 ]; then + echo "# yes-button -> Send To Shop" + port="10009" + toraddress=$(sudo cat /mnt/hdd/tor/lndrpc10009/hostname) + if [ "$1" == "LND-REST-API" ]; then + port="8080" + toraddress=$(sudo cat /mnt/hdd/tor/lndrest8080/hostname) + fi + /home/admin/config.scripts/blitz.subscriptions.ip2tor.py create-ssh-dialog "$1" "$toraddress" "$port" + fi + fi # check again if IP2TOR service is now already available error="" @@ -108,6 +109,7 @@ checkIP2TOR() ip2tor="$1" fi + echo $ip2tor sleep 10 } From 8a5358676a169518e71f4a07dddacc7bdcb59c44 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Wed, 27 May 2020 02:55:37 +0200 Subject: [PATCH 057/126] ask for zeaus android --- home.admin/97addMobileWallet.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/home.admin/97addMobileWallet.sh b/home.admin/97addMobileWallet.sh index d53d11122..74e31009d 100755 --- a/home.admin/97addMobileWallet.sh +++ b/home.admin/97addMobileWallet.sh @@ -99,6 +99,7 @@ checkIP2TOR() toraddress=$(sudo cat /mnt/hdd/tor/lndrest8080/hostname) fi /home/admin/config.scripts/blitz.subscriptions.ip2tor.py create-ssh-dialog "$1" "$toraddress" "$port" + clear fi fi @@ -108,9 +109,6 @@ checkIP2TOR() if [ ${#error} -eq 0 ]; then ip2tor="$1" fi - - echo $ip2tor - sleep 10 } # Options From aae4719c5fcded99fb972369b7319d3f2dbdb319 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Wed, 27 May 2020 03:08:50 +0200 Subject: [PATCH 058/126] add ip2tor too all mobile wallets --- home.admin/97addMobileWallet.sh | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/home.admin/97addMobileWallet.sh b/home.admin/97addMobileWallet.sh index 74e31009d..322dfb576 100755 --- a/home.admin/97addMobileWallet.sh +++ b/home.admin/97addMobileWallet.sh @@ -89,7 +89,7 @@ checkIP2TOR() # and the checks from avove showed there is SSH forwarding / dynDNS # then ask user if IP2TOR subscription is wanted if [ ${#ip2tor} -eq 0 ] && [ ${aks4IP2TOR} -eq 1 ]; then - whiptail --title " Want to use a IP2TOR Bridge? " --yes-button "Go To Shop" --no-button "No Thanks" --yesno "It can be hard to configure your router or phone to connect to your RaspiBlitz at home.\n\nDo you like to subscribe to a IP2TOR bridge service that will make it easy to connect your mobile wallet?" 12 60 + whiptail --title " Want to use a IP2TOR Bridge? " --yes-button "Go To Shop" --no-button "No Thanks" --yesno "It can be hard to configure your router or phone to connect to your RaspiBlitz at home.\n\nDo you like to subscribe to a IP2TOR bridge service (that will give you a public IP while hidden behind TOR) and make it more easy to connect your mobile wallet?" 12 60 if [ $? -eq 0 ]; then echo "# yes-button -> Send To Shop" port="10009" @@ -148,6 +148,7 @@ case $CHOICE in if [ $? -eq 1 ]; then /home/admin/config.scripts/blitz.lcd.sh qr-console ${appstoreLink} fi + checkIP2TOR LND-GRPC-API /home/admin/config.scripts/blitz.lcd.sh hide /home/admin/config.scripts/bonus.lndconnect.sh shango-ios ${connect} exit 1; @@ -162,13 +163,12 @@ case $CHOICE in if [ $? -eq 1 ]; then /home/admin/config.scripts/blitz.lcd.sh qr-console ${appstoreLink} fi + checkIP2TOR LND-GRPC-API /home/admin/config.scripts/blitz.lcd.sh hide /home/admin/config.scripts/bonus.lndconnect.sh shango-android ${connect} exit 1; ;; ZAP_IOS) - # choose IP or TOR --> function call - choose_IP_or_TOR appstoreLink="https://apps.apple.com/us/app/zap-bitcoin-lightning-wallet/id1406311960" /home/admin/config.scripts/blitz.lcd.sh qr ${appstoreLink} whiptail --title "Install Testflight and Zap on your iOS device" \ @@ -178,13 +178,15 @@ case $CHOICE in if [ $? -eq 1 ]; then /home/admin/config.scripts/blitz.lcd.sh qr-console ${appstoreLink} fi + checkIP2TOR LND-GRPC-API + if [ ${#ip2tor} -eq 0 ]; then + choose_IP_or_TOR + fi /home/admin/config.scripts/blitz.lcd.sh hide /home/admin/config.scripts/bonus.lndconnect.sh zap-ios ${connect} exit 1; ;; ZAP_ANDROID) - # choose IP or TOR --> function call - choose_IP_or_TOR appstoreLink="https://play.google.com/store/apps/details?id=zapsolutions.zap" /home/admin/config.scripts/blitz.lcd.sh qr ${appstoreLink} whiptail --title "Install Zap from PlayStore on your Android device" \ @@ -194,6 +196,10 @@ case $CHOICE in if [ $? -eq 1 ]; then /home/admin/config.scripts/blitz.lcd.sh qr-console ${appstoreLink} fi + checkIP2TOR LND-GRPC-API + if [ ${#ip2tor} -eq 0 ]; then + choose_IP_or_TOR + fi /home/admin/config.scripts/blitz.lcd.sh hide /home/admin/config.scripts/bonus.lndconnect.sh zap-android ${connect} exit 1; @@ -220,6 +226,7 @@ Please go to MAINMENU > SERVICES and activate KEYSEND first. if [ $? -eq 1 ]; then /home/admin/config.scripts/blitz.lcd.sh qr-console ${appstoreLink} fi + checkIP2TOR LND-GRPC-API /home/admin/config.scripts/blitz.lcd.sh hide /home/admin/config.scripts/bonus.lndconnect.sh sendmany-android ${connect} exit 1; @@ -234,16 +241,12 @@ Please go to MAINMENU > SERVICES and activate KEYSEND first. if [ $? -eq 1 ]; then /home/admin/config.scripts/blitz.lcd.sh qr-console ${appstoreLink} fi + checkIP2TOR LND-REST-API /home/admin/config.scripts/blitz.lcd.sh hide /home/admin/config.scripts/bonus.lndconnect.sh zeus-ios ${connect} exit 1; ;; ZEUS_ANDROID) - checkIP2TOR LND-REST-API - # choose IP or TOR --> function call - if [ ${#ip2tor} -eq 0 ]; then - choose_IP_or_TOR - fi appstoreLink="https://play.google.com/store/apps/details?id=com.zeusln.zeus" /home/admin/config.scripts/blitz.lcd.sh qr ${appstoreLink} whiptail --title "Install Zeus on your Android Phone" \ @@ -253,6 +256,10 @@ Please go to MAINMENU > SERVICES and activate KEYSEND first. if [ $? -eq 1 ]; then /home/admin/config.scripts/blitz.lcd.sh qr-console ${appstoreLink} fi + checkIP2TOR LND-REST-API + if [ ${#ip2tor} -eq 0 ]; then + choose_IP_or_TOR + fi /home/admin/config.scripts/blitz.lcd.sh hide /home/admin/config.scripts/bonus.lndconnect.sh zeus-android ${connect} exit 1; From fe6d3e40d9ea6100fddc8c6a2af2ff4b29927a4f Mon Sep 17 00:00:00 2001 From: rootzoll Date: Wed, 27 May 2020 12:49:33 +0200 Subject: [PATCH 059/126] #1001 remove TOR option for ZAP --- home.admin/97addMobileWallet.sh | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/home.admin/97addMobileWallet.sh b/home.admin/97addMobileWallet.sh index 322dfb576..96cd1a887 100755 --- a/home.admin/97addMobileWallet.sh +++ b/home.admin/97addMobileWallet.sh @@ -179,9 +179,10 @@ case $CHOICE in /home/admin/config.scripts/blitz.lcd.sh qr-console ${appstoreLink} fi checkIP2TOR LND-GRPC-API - if [ ${#ip2tor} -eq 0 ]; then - choose_IP_or_TOR - fi + # see https://github.com/rootzoll/raspiblitz/issues/1001#issuecomment-634580257 + #if [ ${#ip2tor} -eq 0 ]; then + # choose_IP_or_TOR + #fi /home/admin/config.scripts/blitz.lcd.sh hide /home/admin/config.scripts/bonus.lndconnect.sh zap-ios ${connect} exit 1; @@ -197,9 +198,10 @@ case $CHOICE in /home/admin/config.scripts/blitz.lcd.sh qr-console ${appstoreLink} fi checkIP2TOR LND-GRPC-API - if [ ${#ip2tor} -eq 0 ]; then - choose_IP_or_TOR - fi + # see https://github.com/rootzoll/raspiblitz/issues/1001#issuecomment-634580257 + #if [ ${#ip2tor} -eq 0 ]; then + # choose_IP_or_TOR + #fi /home/admin/config.scripts/blitz.lcd.sh hide /home/admin/config.scripts/bonus.lndconnect.sh zap-android ${connect} exit 1; From 432a213b6dd520e65d8566c3251262c4d6576c1f Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 01:15:47 +0200 Subject: [PATCH 060/126] new lnd unlock script with dialog --- home.admin/config.scripts/lnd.unlock.sh | 83 +++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 home.admin/config.scripts/lnd.unlock.sh diff --git a/home.admin/config.scripts/lnd.unlock.sh b/home.admin/config.scripts/lnd.unlock.sh new file mode 100644 index 000000000..58503fdee --- /dev/null +++ b/home.admin/config.scripts/lnd.unlock.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +if [ $# -eq 0 ]; then + echo "script to unlock LND wallet" + echo "lnd.unlock.sh [passwordC]" + exit 1 +fi + +# 1. parameter +passwordC="$1" + +# if no password check if stored for auto-unlock +if [ ${#passwordC} -eq 0 ]; then + autoUnlockExists=$(sudo ls /root/lnd.autounlock.pwd 2>/dev/null | grep -c "lnd.autounlock.pwd") + if [ ${autoUnlockExists} -eq 1 ]; then + echo "# using auto-unlock" + passwordC=$(sudo cat /root/lnd.autounlock.pwd) + fi +fi + +# if still no password get from user +manualEntry=0 +if [ ${#passwordC} -eq 0 ]; then + manualEntry=1 + passwordC=$(whiptail --passwordbox "\nEnter Password C to unlock wallet:\n" 9 52 "" --title " LND Wallet " --backtitle "RaspiBlitz" 3>&1 1>&2 2>&3) +fi + +loopCount=0 +while : + do + + # TRY TO UNLOCK ... + + loopCount=$(($loopCount +1)) + echo "# calling: lncli unlock" + result=$(echo "${passwordC}" | sudo -u bitcoin lncli unlock --recovery_window=5000 --stdin 3>&1 1>&2 2>&3) + sleep 4 + + + if [ $(echo "${result} | grep -c 'successfully unlocked'") -gt 0 ]; then + + # SUCCESS UNLOCK + + echo "# OK LND wallet unlocked" + exit(0) + + elif [ $(echo "${result} | grep -c 'invalid passphrase'") -gt 0 ]; then + + # WRONG PASSWORD + + echo "# wrong password" + if [ ${manualEntry} -eq 1 ]; then + passwordC=$(whiptail --passwordbox "\nEnter Password C again:\n" 9 52 "" --title " Password was Wrong " --backtitle "RaspiBlitz - LND Wallet" 3>&1 1>&2 2>&3) + else + print("error='wrong password'") + exit(1) + fi + + else + + # UNKOWN RESULT + + echo "# unkown error" + if [ ${manualEntry} -eq 1 ]; then + clear + echo "#################################" + echo "# LND ERROR on unlocking wallet" + echo "#################################" + echo + echo "${result}" + echo + echo "PRES ENTER to retry .." + else + # maybe lncli is waiting to get ready (wait and loop) + if [ ${loopCount} -gt 10 ]; then + echo "error='failed to unlock'" + exit(1) + fi + sleep 2 + fi + fi + + done \ No newline at end of file From e59013e297437933c7de32d8b3ecb7cf67556e84 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 01:29:52 +0200 Subject: [PATCH 061/126] improved unlock script --- home.admin/config.scripts/lnd.unlock.sh | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/home.admin/config.scripts/lnd.unlock.sh b/home.admin/config.scripts/lnd.unlock.sh index 58503fdee..77ce834dc 100644 --- a/home.admin/config.scripts/lnd.unlock.sh +++ b/home.admin/config.scripts/lnd.unlock.sh @@ -6,6 +6,13 @@ if [ $# -eq 0 ]; then exit 1 fi +# check if wallet is already unlocked +walletUnlocked=$(echo "" | sudo -u bitcoin lncli unlock --stdin 3>&1 1>&2 2>&3 | grep -c "already unlocked") +if [ ${walletUnlocked} -eq 1 ]; then + echo "# OK LND wallet was already unlocked" + exit(0) +fi + # 1. parameter passwordC="$1" @@ -60,16 +67,17 @@ while : # UNKOWN RESULT + # check if wallet was unlocked anyway + walletUnlocked=$(echo "" | sudo -u bitcoin lncli unlock --stdin 3>&1 1>&2 2>&3 | grep -c "already unlocked") + if [ ${walletUnlocked} -eq 1 ]; then + echo "# OK LND wallet unlocked" + exit(0) + fi + echo "# unkown error" if [ ${manualEntry} -eq 1 ]; then - clear - echo "#################################" - echo "# LND ERROR on unlocking wallet" - echo "#################################" - echo - echo "${result}" - echo - echo "PRES ENTER to retry .." + whiptail --title " LND ERROR " --msgbox "${result}" --ok-button "Try Again" 8 60 + sleep 4 else # maybe lncli is waiting to get ready (wait and loop) if [ ${loopCount} -gt 10 ]; then From e2a3375a91a08391126e4f5c8ee51dc3f1e7b58f Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 01:34:09 +0200 Subject: [PATCH 062/126] unlock help --- home.admin/config.scripts/lnd.unlock.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/lnd.unlock.sh b/home.admin/config.scripts/lnd.unlock.sh index 77ce834dc..7533db360 100644 --- a/home.admin/config.scripts/lnd.unlock.sh +++ b/home.admin/config.scripts/lnd.unlock.sh @@ -1,6 +1,6 @@ #!/bin/bash -if [ $# -eq 0 ]; then +if [ "$1" == "-h" ] || [ "$1" == "help" ]; then echo "script to unlock LND wallet" echo "lnd.unlock.sh [passwordC]" exit 1 From a0801c02bb4f495bea4adfa45a3d860515bbf5d2 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 01:35:24 +0200 Subject: [PATCH 063/126] fix exit --- home.admin/config.scripts/lnd.unlock.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/home.admin/config.scripts/lnd.unlock.sh b/home.admin/config.scripts/lnd.unlock.sh index 7533db360..3e76be2f5 100644 --- a/home.admin/config.scripts/lnd.unlock.sh +++ b/home.admin/config.scripts/lnd.unlock.sh @@ -10,7 +10,7 @@ fi walletUnlocked=$(echo "" | sudo -u bitcoin lncli unlock --stdin 3>&1 1>&2 2>&3 | grep -c "already unlocked") if [ ${walletUnlocked} -eq 1 ]; then echo "# OK LND wallet was already unlocked" - exit(0) + exit0 fi # 1. parameter @@ -49,7 +49,7 @@ while : # SUCCESS UNLOCK echo "# OK LND wallet unlocked" - exit(0) + exit 0 elif [ $(echo "${result} | grep -c 'invalid passphrase'") -gt 0 ]; then @@ -60,7 +60,7 @@ while : passwordC=$(whiptail --passwordbox "\nEnter Password C again:\n" 9 52 "" --title " Password was Wrong " --backtitle "RaspiBlitz - LND Wallet" 3>&1 1>&2 2>&3) else print("error='wrong password'") - exit(1) + exit 1 fi else @@ -71,7 +71,7 @@ while : walletUnlocked=$(echo "" | sudo -u bitcoin lncli unlock --stdin 3>&1 1>&2 2>&3 | grep -c "already unlocked") if [ ${walletUnlocked} -eq 1 ]; then echo "# OK LND wallet unlocked" - exit(0) + exit 0 fi echo "# unkown error" @@ -82,7 +82,7 @@ while : # maybe lncli is waiting to get ready (wait and loop) if [ ${loopCount} -gt 10 ]; then echo "error='failed to unlock'" - exit(1) + exit 1 fi sleep 2 fi From 629dbc02f64b038731342cd9c8f9dc96060ed9e8 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 01:36:35 +0200 Subject: [PATCH 064/126] fix echo --- home.admin/config.scripts/lnd.unlock.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home.admin/config.scripts/lnd.unlock.sh b/home.admin/config.scripts/lnd.unlock.sh index 3e76be2f5..630eebc74 100644 --- a/home.admin/config.scripts/lnd.unlock.sh +++ b/home.admin/config.scripts/lnd.unlock.sh @@ -10,7 +10,7 @@ fi walletUnlocked=$(echo "" | sudo -u bitcoin lncli unlock --stdin 3>&1 1>&2 2>&3 | grep -c "already unlocked") if [ ${walletUnlocked} -eq 1 ]; then echo "# OK LND wallet was already unlocked" - exit0 + exit 0 fi # 1. parameter @@ -59,7 +59,7 @@ while : if [ ${manualEntry} -eq 1 ]; then passwordC=$(whiptail --passwordbox "\nEnter Password C again:\n" 9 52 "" --title " Password was Wrong " --backtitle "RaspiBlitz - LND Wallet" 3>&1 1>&2 2>&3) else - print("error='wrong password'") + echo "error='wrong password'" exit 1 fi From 80c3f2579dcf9b951c1b619efd4ab95d761e13da Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 01:39:33 +0200 Subject: [PATCH 065/126] check result fix --- home.admin/config.scripts/lnd.unlock.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/home.admin/config.scripts/lnd.unlock.sh b/home.admin/config.scripts/lnd.unlock.sh index 630eebc74..5605bb01e 100644 --- a/home.admin/config.scripts/lnd.unlock.sh +++ b/home.admin/config.scripts/lnd.unlock.sh @@ -43,15 +43,16 @@ while : result=$(echo "${passwordC}" | sudo -u bitcoin lncli unlock --recovery_window=5000 --stdin 3>&1 1>&2 2>&3) sleep 4 - - if [ $(echo "${result} | grep -c 'successfully unlocked'") -gt 0 ]; then + wasUnlocked=$(echo "${result} | grep -c 'successfully unlocked'") + wrongPassword=$(echo "${result} | grep -c 'invalid passphrase'") + if [ ${wasUnlocked} -gt 0 ]; then # SUCCESS UNLOCK echo "# OK LND wallet unlocked" exit 0 - elif [ $(echo "${result} | grep -c 'invalid passphrase'") -gt 0 ]; then + elif [ ${wrongPassword} -gt 0 ]; then # WRONG PASSWORD From 9bd1d6c2bd2e566b77d2fd34dc5bb95be0f84e63 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 01:41:45 +0200 Subject: [PATCH 066/126] fix commands --- home.admin/config.scripts/lnd.unlock.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/home.admin/config.scripts/lnd.unlock.sh b/home.admin/config.scripts/lnd.unlock.sh index 5605bb01e..b44e0212e 100644 --- a/home.admin/config.scripts/lnd.unlock.sh +++ b/home.admin/config.scripts/lnd.unlock.sh @@ -7,6 +7,7 @@ if [ "$1" == "-h" ] || [ "$1" == "help" ]; then fi # check if wallet is already unlocked +echo "# checking LND wallet ... (can take some time)" walletUnlocked=$(echo "" | sudo -u bitcoin lncli unlock --stdin 3>&1 1>&2 2>&3 | grep -c "already unlocked") if [ ${walletUnlocked} -eq 1 ]; then echo "# OK LND wallet was already unlocked" @@ -43,8 +44,8 @@ while : result=$(echo "${passwordC}" | sudo -u bitcoin lncli unlock --recovery_window=5000 --stdin 3>&1 1>&2 2>&3) sleep 4 - wasUnlocked=$(echo "${result} | grep -c 'successfully unlocked'") - wrongPassword=$(echo "${result} | grep -c 'invalid passphrase'") + wasUnlocked=$(echo "${result}" | grep -c 'successfully unlocked') + wrongPassword=$(echo "${result}" | grep -c 'invalid passphrase') if [ ${wasUnlocked} -gt 0 ]; then # SUCCESS UNLOCK From f3d305329d0b69ff5d6256ffad5d62809d681305 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 01:52:05 +0200 Subject: [PATCH 067/126] autounlock rewrite --- home.admin/_background.sh | 6 +----- home.admin/config.scripts/lnd.autounlock.sh | 6 +++--- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/home.admin/_background.sh b/home.admin/_background.sh index 327c43fc0..1f720dc2b 100644 --- a/home.admin/_background.sh +++ b/home.admin/_background.sh @@ -296,11 +296,7 @@ do if [ ${locked} -gt 0 ]; then echo "STARTING AUTO-UNLOCK ..." - - # building REST command - passwordC=$(sudo cat /root/lnd.autounlock.pwd) - command="sudo python3 /home/admin/config.scripts/lnd.unlock.py '${passwordC}'" - bash -c "${command}" + sudo /home/admin/config.scripts/lnd.unlock.sh '${passwordC}' fi fi diff --git a/home.admin/config.scripts/lnd.autounlock.sh b/home.admin/config.scripts/lnd.autounlock.sh index e120565e3..09a71f055 100755 --- a/home.admin/config.scripts/lnd.autounlock.sh +++ b/home.admin/config.scripts/lnd.autounlock.sh @@ -49,9 +49,9 @@ Password C will be stored on the device. echo "SYSTEMD RESTART LOG: lightning (LND)" > /home/admin/systemd.lightning.log sudo systemctl restart lnd sleep 4 - result=$(sudo python /home/admin/config.scripts/lnd.unlock.py ${passwordC}) - invalid=$(echo "${result}" | grep -c 'invalid') - if [ ${invalid} -gt 0 ];then + error="" + source <(sudo /home/admin/config.scripts/lnd.unlock.sh '${passwordC}') + if [ ${error} -gt 0 ];then echo "# PASSWORD C is wrong - try again or cancel" sleep 3 sudo /home/admin/config.scripts/lnd.autounlock.sh on From 0c25cca3c622d2efb63be7de0c1d0b53a67101cd Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 02:19:12 +0200 Subject: [PATCH 068/126] improve unlock --- home.admin/config.scripts/lnd.unlock.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/home.admin/config.scripts/lnd.unlock.sh b/home.admin/config.scripts/lnd.unlock.sh index b44e0212e..c3e2feb9c 100644 --- a/home.admin/config.scripts/lnd.unlock.sh +++ b/home.admin/config.scripts/lnd.unlock.sh @@ -44,6 +44,7 @@ while : result=$(echo "${passwordC}" | sudo -u bitcoin lncli unlock --recovery_window=5000 --stdin 3>&1 1>&2 2>&3) sleep 4 + echo "# checking results" wasUnlocked=$(echo "${result}" | grep -c 'successfully unlocked') wrongPassword=$(echo "${result}" | grep -c 'invalid passphrase') if [ ${wasUnlocked} -gt 0 ]; then From 1de5ba190e70404cb7c17f57586bddc4e2c04a73 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 02:25:34 +0200 Subject: [PATCH 069/126] try fix unlock --- home.admin/config.scripts/lnd.unlock.sh | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/home.admin/config.scripts/lnd.unlock.sh b/home.admin/config.scripts/lnd.unlock.sh index c3e2feb9c..08320a947 100644 --- a/home.admin/config.scripts/lnd.unlock.sh +++ b/home.admin/config.scripts/lnd.unlock.sh @@ -41,10 +41,7 @@ while : loopCount=$(($loopCount +1)) echo "# calling: lncli unlock" - result=$(echo "${passwordC}" | sudo -u bitcoin lncli unlock --recovery_window=5000 --stdin 3>&1 1>&2 2>&3) - sleep 4 - - echo "# checking results" + result=$(echo "${passwordC}" | sudo -u bitcoin lncli unlock --recovery_window=5000 --stdin 2>&1) wasUnlocked=$(echo "${result}" | grep -c 'successfully unlocked') wrongPassword=$(echo "${result}" | grep -c 'invalid passphrase') if [ ${wasUnlocked} -gt 0 ]; then From b0ed1ff5dbe85ea02c4c5bd5d53af7d54f1bcfbd Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 02:50:30 +0200 Subject: [PATCH 070/126] debug --- home.admin/config.scripts/lnd.unlock.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/home.admin/config.scripts/lnd.unlock.sh b/home.admin/config.scripts/lnd.unlock.sh index 08320a947..5dd473645 100644 --- a/home.admin/config.scripts/lnd.unlock.sh +++ b/home.admin/config.scripts/lnd.unlock.sh @@ -29,6 +29,7 @@ fi # if still no password get from user manualEntry=0 if [ ${#passwordC} -eq 0 ]; then + echo "# manual input" manualEntry=1 passwordC=$(whiptail --passwordbox "\nEnter Password C to unlock wallet:\n" 9 52 "" --title " LND Wallet " --backtitle "RaspiBlitz" 3>&1 1>&2 2>&3) fi From 016a0a516dad4c4ffb99538ebf01e1960a0e36ee Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 02:52:48 +0200 Subject: [PATCH 071/126] debug --- home.admin/config.scripts/lnd.unlock.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/lnd.unlock.sh b/home.admin/config.scripts/lnd.unlock.sh index 5dd473645..56c4e9fba 100644 --- a/home.admin/config.scripts/lnd.unlock.sh +++ b/home.admin/config.scripts/lnd.unlock.sh @@ -41,7 +41,7 @@ while : # TRY TO UNLOCK ... loopCount=$(($loopCount +1)) - echo "# calling: lncli unlock" + echo "# calling: lncli unlock (${passwordC})" result=$(echo "${passwordC}" | sudo -u bitcoin lncli unlock --recovery_window=5000 --stdin 2>&1) wasUnlocked=$(echo "${result}" | grep -c 'successfully unlocked') wrongPassword=$(echo "${result}" | grep -c 'invalid passphrase') From 67bc2b38c281225add6dfd245bce49fb3d508e38 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 02:54:27 +0200 Subject: [PATCH 072/126] debug --- home.admin/config.scripts/lnd.unlock.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home.admin/config.scripts/lnd.unlock.sh b/home.admin/config.scripts/lnd.unlock.sh index 56c4e9fba..5257c955d 100644 --- a/home.admin/config.scripts/lnd.unlock.sh +++ b/home.admin/config.scripts/lnd.unlock.sh @@ -41,8 +41,8 @@ while : # TRY TO UNLOCK ... loopCount=$(($loopCount +1)) - echo "# calling: lncli unlock (${passwordC})" - result=$(echo "${passwordC}" | sudo -u bitcoin lncli unlock --recovery_window=5000 --stdin 2>&1) + echo "# calling: lncli unlock ($passwordC)" + result=$(echo '$passwordC' | sudo -u bitcoin lncli unlock --recovery_window=5000 --stdin 2>&1) wasUnlocked=$(echo "${result}" | grep -c 'successfully unlocked') wrongPassword=$(echo "${result}" | grep -c 'invalid passphrase') if [ ${wasUnlocked} -gt 0 ]; then From 6723f659424ca9aafce72f2f8244a0329a882bfd Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 02:56:21 +0200 Subject: [PATCH 073/126] debug --- home.admin/config.scripts/lnd.unlock.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/lnd.unlock.sh b/home.admin/config.scripts/lnd.unlock.sh index 5257c955d..6868c20fb 100644 --- a/home.admin/config.scripts/lnd.unlock.sh +++ b/home.admin/config.scripts/lnd.unlock.sh @@ -42,7 +42,7 @@ while : loopCount=$(($loopCount +1)) echo "# calling: lncli unlock ($passwordC)" - result=$(echo '$passwordC' | sudo -u bitcoin lncli unlock --recovery_window=5000 --stdin 2>&1) + result=$(echo "$passwordC" | sudo -u bitcoin lncli unlock --recovery_window=5000 --stdin 2>&1) wasUnlocked=$(echo "${result}" | grep -c 'successfully unlocked') wrongPassword=$(echo "${result}" | grep -c 'invalid passphrase') if [ ${wasUnlocked} -gt 0 ]; then From b17af7c293debdfb0aa425bc51236c1ce1bd9f6e Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 02:58:10 +0200 Subject: [PATCH 074/126] fix --- home.admin/config.scripts/lnd.autounlock.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/lnd.autounlock.sh b/home.admin/config.scripts/lnd.autounlock.sh index 09a71f055..52f16fd59 100755 --- a/home.admin/config.scripts/lnd.autounlock.sh +++ b/home.admin/config.scripts/lnd.autounlock.sh @@ -50,7 +50,7 @@ Password C will be stored on the device. sudo systemctl restart lnd sleep 4 error="" - source <(sudo /home/admin/config.scripts/lnd.unlock.sh '${passwordC}') + source <(sudo /home/admin/config.scripts/lnd.unlock.sh) if [ ${error} -gt 0 ];then echo "# PASSWORD C is wrong - try again or cancel" sleep 3 From 148e2de4b4d6ee33674849dc22f8fbd9009be7c2 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 02:58:50 +0200 Subject: [PATCH 075/126] fix auto unlock --- home.admin/_background.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/home.admin/_background.sh b/home.admin/_background.sh index 1f720dc2b..ac41e7af6 100644 --- a/home.admin/_background.sh +++ b/home.admin/_background.sh @@ -140,7 +140,8 @@ do if [ ${#dynDomain} -gt 0 ]; then echo "restart LND with new environment config" # restart and let to auto-unlock (if activated) do the rest - sudo systemctl restart lnd.service + sudo systemctl stop lnd + sudo systemctl start lnd fi # 2) trigger update if dnyamic domain (if set) From aec42aad867b2c42c699a1c3959c844f2facf8dc Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 03:07:43 +0200 Subject: [PATCH 076/126] fix auto-unlock --- home.admin/_background.sh | 2 +- home.admin/config.scripts/lnd.autounlock.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/home.admin/_background.sh b/home.admin/_background.sh index ac41e7af6..5a6268d8f 100644 --- a/home.admin/_background.sh +++ b/home.admin/_background.sh @@ -297,7 +297,7 @@ do if [ ${locked} -gt 0 ]; then echo "STARTING AUTO-UNLOCK ..." - sudo /home/admin/config.scripts/lnd.unlock.sh '${passwordC}' + sudo /home/admin/config.scripts/lnd.unlock.sh fi fi diff --git a/home.admin/config.scripts/lnd.autounlock.sh b/home.admin/config.scripts/lnd.autounlock.sh index 52f16fd59..0edcabaf9 100755 --- a/home.admin/config.scripts/lnd.autounlock.sh +++ b/home.admin/config.scripts/lnd.autounlock.sh @@ -50,7 +50,7 @@ Password C will be stored on the device. sudo systemctl restart lnd sleep 4 error="" - source <(sudo /home/admin/config.scripts/lnd.unlock.sh) + source <(sudo /home/admin/config.scripts/lnd.unlock.sh "$passwordC") if [ ${error} -gt 0 ];then echo "# PASSWORD C is wrong - try again or cancel" sleep 3 From 9ef7dcc16956ca48512953ee09cc2c849b54f617 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 03:31:07 +0200 Subject: [PATCH 077/126] test --- home.admin/config.scripts/lnd.unlock.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home.admin/config.scripts/lnd.unlock.sh b/home.admin/config.scripts/lnd.unlock.sh index 6868c20fb..a53302d44 100644 --- a/home.admin/config.scripts/lnd.unlock.sh +++ b/home.admin/config.scripts/lnd.unlock.sh @@ -8,7 +8,7 @@ fi # check if wallet is already unlocked echo "# checking LND wallet ... (can take some time)" -walletUnlocked=$(echo "" | sudo -u bitcoin lncli unlock --stdin 3>&1 1>&2 2>&3 | grep -c "already unlocked") +walletUnlocked=$(echo "" | sudo -u bitcoin lncli unlock --stdin 2>&1 | grep -c "already unlocked") if [ ${walletUnlocked} -eq 1 ]; then echo "# OK LND wallet was already unlocked" exit 0 @@ -41,7 +41,7 @@ while : # TRY TO UNLOCK ... loopCount=$(($loopCount +1)) - echo "# calling: lncli unlock ($passwordC)" + echo "# calling: lncli unlock" result=$(echo "$passwordC" | sudo -u bitcoin lncli unlock --recovery_window=5000 --stdin 2>&1) wasUnlocked=$(echo "${result}" | grep -c 'successfully unlocked') wrongPassword=$(echo "${result}" | grep -c 'invalid passphrase') From e84e5a8399c276df87546a2f0cc06e4a38738255 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 03:33:34 +0200 Subject: [PATCH 078/126] replace unlock script --- home.admin/00raspiblitz.sh | 2 +- home.admin/00settingsMenuServices.sh | 5 +---- home.admin/10setupBlitz.sh | 8 +++---- home.admin/70initLND.sh | 4 ++-- home.admin/config.scripts/lnd.unlock.py | 29 ------------------------- 5 files changed, 8 insertions(+), 40 deletions(-) delete mode 100644 home.admin/config.scripts/lnd.unlock.py diff --git a/home.admin/00raspiblitz.sh b/home.admin/00raspiblitz.sh index a94f8c825..ee21f375d 100755 --- a/home.admin/00raspiblitz.sh +++ b/home.admin/00raspiblitz.sh @@ -206,7 +206,7 @@ How do you want to continue? # check how many times LND was restarted source <(sudo /home/admin/config.scripts/blitz.statusscan.sh) if [ ${startcountLightning} -lt 4 ]; then - /home/admin/AAunlockLND.sh + /home/admin/config.scripts/lnd.unlock.sh echo "Starting up Wallet ... (10sec)" sleep 5 sleep 5 diff --git a/home.admin/00settingsMenuServices.sh b/home.admin/00settingsMenuServices.sh index fb1722fc2..fd4d93661 100644 --- a/home.admin/00settingsMenuServices.sh +++ b/home.admin/00settingsMenuServices.sh @@ -434,10 +434,7 @@ if [ "${autoUnlock}" != "${choice}" ]; then if [ "${choice}" = "on" ]; then l1="AUTO-UNLOCK IS NOW ACTIVE" fi - l2="-------------------------" - l3="mobile/external wallets may need reconnect" - l4="possible change in macaroon / TLS cert" - dialog --title 'OK' --msgbox "${l1}\n${l2}\n${l3}\n${l4}" 11 60 + dialog --title 'OK' --msgbox "\n${l1}\n" 9 50 needsReboot=1 else echo "LND Autounlock Setting unchanged." diff --git a/home.admin/10setupBlitz.sh b/home.admin/10setupBlitz.sh index 4519b034f..4dc35f6cb 100755 --- a/home.admin/10setupBlitz.sh +++ b/home.admin/10setupBlitz.sh @@ -55,16 +55,16 @@ if [ ${lndRunning} -eq 1 ]; then # check if LND wallet exists and if locked walletExists=$(sudo ls /mnt/hdd/lnd/data/chain/${network}/${chain}net/wallet.db 2>/dev/null | grep wallet.db -c) - locked=0 + walletUnlocked=1 # only when a wallet exists - it can be locked if [ ${walletExists} -eq 1 ];then echo "lnd wallet exists ... checking if locked" sleep 2 - locked=$(sudo tail -n 1 /mnt/hdd/lnd/logs/${network}/${chain}net/lnd.log 2>/dev/null | grep -c unlock) + walletUnlocked=$(echo "" | sudo -u bitcoin lncli unlock --stdin 2>&1 | grep -c "already unlocked") fi - if [ ${locked} -gt 0 ]; then + if [ ${walletUnlocked} -eq 0 ]; then # LND wallet is locked - /home/admin/AAunlockLND.sh + /home/admin/config.scripts/lnd.unlock.sh /home/admin/10setupBlitz.sh exit 0 fi diff --git a/home.admin/70initLND.sh b/home.admin/70initLND.sh index 2459dc2ff..fd742546c 100755 --- a/home.admin/70initLND.sh +++ b/home.admin/70initLND.sh @@ -446,7 +446,7 @@ echo "*** Copy LND Macaroons to user admin ***" # check if macaroon exists and if not try to unlock LND wallet first macaroonExists=$(sudo -u bitcoin ls -la /home/bitcoin/.lnd/data/chain/${network}/${chain}net/admin.macaroon 2>/dev/null | grep -c admin.macaroon) if [ ${macaroonExists} -eq 0 ]; then - /home/admin/AAunlockLND.sh + /home/admin/config.scripts/lnd.unlock.sh sleep 3 fi @@ -472,7 +472,7 @@ echo "*** Check Wallet Lock ***" locked=$(sudo tail -n 1 /mnt/hdd/lnd/logs/${network}/${chain}net/lnd.log 2>/dev/null | grep -c unlock) if [ ${locked} -gt 0 ]; then echo "OK - Wallet is locked ... starting unlocking dialog" - /home/admin/AAunlockLND.sh + /home/admin/config.scripts/lnd.unlock.sh else echo "OK - Wallet is already unlocked" fi diff --git a/home.admin/config.scripts/lnd.unlock.py b/home.admin/config.scripts/lnd.unlock.py deleted file mode 100644 index 604620438..000000000 --- a/home.admin/config.scripts/lnd.unlock.py +++ /dev/null @@ -1,29 +0,0 @@ -# parameter #1: password c to unlock wallet -import base64 -import codecs -import json -import requests -import sys - -pw = sys.argv[1] - -url = 'https://localhost:8080/v1/unlockwallet' -cert_path = '/mnt/hdd/lnd/tls.cert' - -try: - pw_b64 = base64.b64encode(pw).decode() -except TypeError: # for Python3+ - pw_b64 = base64.b64encode(pw.encode()).decode('UTF-8') - -data = {'wallet_password': pw_b64} -try: - r = requests.post(url, verify=cert_path, data=json.dumps(data)) -except requests.exceptions.ConnectionError as err: - print(err) - print("\nAn Error occurred - is LND running?") - sys.exit(1) - -if r.status_code == 404: - print("Already unlocked!") -else: - print(r.json()) From cd56faf9d7ea0c07ff249e8c4c723e5ff011264c Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 12:48:28 +0200 Subject: [PATCH 079/126] unlock fallback on error --- home.admin/config.scripts/lnd.unlock.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/home.admin/config.scripts/lnd.unlock.sh b/home.admin/config.scripts/lnd.unlock.sh index a53302d44..a035f643a 100644 --- a/home.admin/config.scripts/lnd.unlock.sh +++ b/home.admin/config.scripts/lnd.unlock.sh @@ -77,8 +77,13 @@ while : echo "# unkown error" if [ ${manualEntry} -eq 1 ]; then - whiptail --title " LND ERROR " --msgbox "${result}" --ok-button "Try Again" 8 60 - sleep 4 + LND + whiptail --title " LND ERROR " --msgbox "${result}" --ok-button "Try CLI" 8 60 + # fall back to direct CLI input + echo "Calling: lncli unlock" + echo "Please re-enter Password C:" + lncli unlock --recovery_window=5000 + exit 1 else # maybe lncli is waiting to get ready (wait and loop) if [ ${loopCount} -gt 10 ]; then From ba5ef2f8e0c0c2054151ae9fedf4be2d680b9141 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 13:40:31 +0200 Subject: [PATCH 080/126] add tls cert script --- home.admin/config.scripts/lnd.tlscert.sh | 118 +++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 home.admin/config.scripts/lnd.tlscert.sh diff --git a/home.admin/config.scripts/lnd.tlscert.sh b/home.admin/config.scripts/lnd.tlscert.sh new file mode 100644 index 000000000..1ec691faa --- /dev/null +++ b/home.admin/config.scripts/lnd.tlscert.sh @@ -0,0 +1,118 @@ +#!/bin/bash + +# ToDo(frennkie) why doesn't this start lnd again? - I assume as _background will start it anyway?! +# ToDo(frennkie) the way LND generates the x509 certificate is not ideal - +# it may be better to simply run openssl and create a cert with our settings... + +if [ $# -eq 0 ]; then + echo "script to set and config TLS Cert for LND" + echo "lnd.tlscert.sh refresh" + exit 1 +fi + +TLSPATH="/mnt/hdd/lnd" +LNDCONF="/mnt(hdd/lnd/lnd.conf" + +def lndCreateFreshTLS() +{ + + echo "# making sure services are not running" + sudo systemctl stop lnd 2>/dev/null + + echo "# keep old tls data as backup" + sudo rm ${TLSPATH}/tls.cert.old 2>/dev/null + sudo rm ${TLSPATH}/tls.key.old 2>/dev/null + sudo mv ${TLSPATH}/tls.cert ${TLSPATH}/tls.cert.old + sudo mv ${TLSPATH}/tls.key ${TLSPATH}/tls.key.old + + echo "# start to create new generate new TLSCert" + sudo systemctl start lnd + echo "# wait until generated" + newCertExists=0 + count=0 + while [ ${newCertExists} -eq 0 ] + do + count=$(($count + 1)) + echo "# (${count}/60) check for cert" + if [ ${count} -gt 60 ]; then + sudo systemctl stop lnd + echo "error='failed to generate new LND cert'" + exit 1 + fi + newCertExists=$(sudo ls /mnt/hdd/lnd/tls.cert 2>/dev/null | grep -c '.cert') + sleep 2 + done + + # stop lnd and let outside decide to restart or not + sudo systemctl stop lnd + sudo chmod 664 ${TLSPATH}/tls.cert + sudo chown bitcoin:bitcoin "/mnt/hdd/lnd/tls.cert" + + echo "# symlink new cert to lnd app-data directory" + if ! [[ -L "/mnt/hdd/app-data/lnd/tls.cert" ]]; then + sudo rm -rf "/mnt/hdd/app-data/lnd/tls.cert" # not a symlink.. delete it silently + sudo ln -s ${TLSPATH}/tls.cert /home/admin/.lnd/tls.cert # and create symlink + fi + echo "# OK TLS certs are fresh" +} + +### REFRESH + +if [ "$1" = "refresh" ]; then + lndCreateFreshTLS + exit +fi + +### ADD IP + +if [ "$1" = "ip-add" ]; then + + # 2. parameter: ip + ip=$2 + countDots=$(echo "$ip" | grep -c '.') + if [ "${countDots}" != "4" ]; then + echo "error='missing or invalid ip'" + fi + + # simply add the line to the LND conf + sudo sed -i "8itlsextraip=${ip}" ${LNDCONF} + + # check if line is added + found=$(sudo cat ${LNDCONF} | grep -c "tlsextraip=${ip}") + if [ ${found} -eq 0 ]; then + echo "error='failed adding IP'" + exit + fi + + echo "# OK added IP to lnd.conf - refresh of TLS cert is needed" + exit +fi + +### REMOVE IP + +if [ "$1" = "ip-remove" ]; then + + # 2. parameter: ip + ip=$2 + countDots=$(echo "$ip" | grep -c '.') + if [ "${countDots}" != "4" ]; then + echo "error='missing or invalid ip'" + fi + + # remove the line to the LND conf + sudo sed -i "/tlsextraip=${ip}/d" ${LNDCONF} + + # check if line is removed + found=$(sudo cat ${LNDCONF} | grep -c "tlsextraip=${ip}") + if [ ${found} -gt 0 ]; then + echo "error='failed removing IP'" + exit + fi + + echo "# OK removed IP from lnd.conf - refresh of TLS cert is needed" + exit +fi + + + + From 7dc10f0297c6b5985ebc78538e21ac1b79644343 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 13:43:54 +0200 Subject: [PATCH 081/126] fix syntax --- home.admin/config.scripts/lnd.tlscert.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/home.admin/config.scripts/lnd.tlscert.sh b/home.admin/config.scripts/lnd.tlscert.sh index 1ec691faa..9daf7ab3d 100644 --- a/home.admin/config.scripts/lnd.tlscert.sh +++ b/home.admin/config.scripts/lnd.tlscert.sh @@ -7,13 +7,15 @@ if [ $# -eq 0 ]; then echo "script to set and config TLS Cert for LND" echo "lnd.tlscert.sh refresh" + echo "lnd.tlscert.sh ip-add [ip]" + echo "lnd.tlscert.sh ip-remove [ip]" exit 1 fi TLSPATH="/mnt/hdd/lnd" LNDCONF="/mnt(hdd/lnd/lnd.conf" -def lndCreateFreshTLS() +lndCreateFreshTLS() { echo "# making sure services are not running" From 2d72f91ec0624923d455266d702f9a75915079cf Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 13:44:38 +0200 Subject: [PATCH 082/126] fix path --- home.admin/config.scripts/lnd.tlscert.sh | 96 +++++++++++------------- 1 file changed, 45 insertions(+), 51 deletions(-) diff --git a/home.admin/config.scripts/lnd.tlscert.sh b/home.admin/config.scripts/lnd.tlscert.sh index 9daf7ab3d..fa8fba726 100644 --- a/home.admin/config.scripts/lnd.tlscert.sh +++ b/home.admin/config.scripts/lnd.tlscert.sh @@ -13,57 +13,7 @@ if [ $# -eq 0 ]; then fi TLSPATH="/mnt/hdd/lnd" -LNDCONF="/mnt(hdd/lnd/lnd.conf" - -lndCreateFreshTLS() -{ - - echo "# making sure services are not running" - sudo systemctl stop lnd 2>/dev/null - - echo "# keep old tls data as backup" - sudo rm ${TLSPATH}/tls.cert.old 2>/dev/null - sudo rm ${TLSPATH}/tls.key.old 2>/dev/null - sudo mv ${TLSPATH}/tls.cert ${TLSPATH}/tls.cert.old - sudo mv ${TLSPATH}/tls.key ${TLSPATH}/tls.key.old - - echo "# start to create new generate new TLSCert" - sudo systemctl start lnd - echo "# wait until generated" - newCertExists=0 - count=0 - while [ ${newCertExists} -eq 0 ] - do - count=$(($count + 1)) - echo "# (${count}/60) check for cert" - if [ ${count} -gt 60 ]; then - sudo systemctl stop lnd - echo "error='failed to generate new LND cert'" - exit 1 - fi - newCertExists=$(sudo ls /mnt/hdd/lnd/tls.cert 2>/dev/null | grep -c '.cert') - sleep 2 - done - - # stop lnd and let outside decide to restart or not - sudo systemctl stop lnd - sudo chmod 664 ${TLSPATH}/tls.cert - sudo chown bitcoin:bitcoin "/mnt/hdd/lnd/tls.cert" - - echo "# symlink new cert to lnd app-data directory" - if ! [[ -L "/mnt/hdd/app-data/lnd/tls.cert" ]]; then - sudo rm -rf "/mnt/hdd/app-data/lnd/tls.cert" # not a symlink.. delete it silently - sudo ln -s ${TLSPATH}/tls.cert /home/admin/.lnd/tls.cert # and create symlink - fi - echo "# OK TLS certs are fresh" -} - -### REFRESH - -if [ "$1" = "refresh" ]; then - lndCreateFreshTLS - exit -fi +LNDCONF="/mnt/hdd/lnd/lnd.conf" ### ADD IP @@ -115,6 +65,50 @@ if [ "$1" = "ip-remove" ]; then exit fi +### REFRESH + +if [ "$1" = "refresh" ]; then + echo "# making sure services are not running" + sudo systemctl stop lnd 2>/dev/null + + echo "# keep old tls data as backup" + sudo rm ${TLSPATH}/tls.cert.old 2>/dev/null + sudo rm ${TLSPATH}/tls.key.old 2>/dev/null + sudo mv ${TLSPATH}/tls.cert ${TLSPATH}/tls.cert.old + sudo mv ${TLSPATH}/tls.key ${TLSPATH}/tls.key.old + + echo "# start to create new generate new TLSCert" + sudo systemctl start lnd + echo "# wait until generated" + newCertExists=0 + count=0 + while [ ${newCertExists} -eq 0 ] + do + count=$(($count + 1)) + echo "# (${count}/60) check for cert" + if [ ${count} -gt 60 ]; then + sudo systemctl stop lnd + echo "error='failed to generate new LND cert'" + exit 1 + fi + newCertExists=$(sudo ls /mnt/hdd/lnd/tls.cert 2>/dev/null | grep -c '.cert') + sleep 2 + done + + # stop lnd and let outside decide to restart or not + sudo systemctl stop lnd + sudo chmod 664 ${TLSPATH}/tls.cert + sudo chown bitcoin:bitcoin "/mnt/hdd/lnd/tls.cert" + + echo "# symlink new cert to lnd app-data directory" + if ! [[ -L "/mnt/hdd/app-data/lnd/tls.cert" ]]; then + sudo rm -rf "/mnt/hdd/app-data/lnd/tls.cert" # not a symlink.. delete it silently + sudo ln -s ${TLSPATH}/tls.cert /home/admin/.lnd/tls.cert # and create symlink + fi + echo "# OK TLS certs are fresh" + exit +fi + From 54c1557e9a9cdbca37f6066c6af8c496a4b93e9e Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 13:47:34 +0200 Subject: [PATCH 083/126] prevent double adding --- home.admin/config.scripts/lnd.tlscert.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/home.admin/config.scripts/lnd.tlscert.sh b/home.admin/config.scripts/lnd.tlscert.sh index fa8fba726..7fc9c7859 100644 --- a/home.admin/config.scripts/lnd.tlscert.sh +++ b/home.admin/config.scripts/lnd.tlscert.sh @@ -22,8 +22,16 @@ if [ "$1" = "ip-add" ]; then # 2. parameter: ip ip=$2 countDots=$(echo "$ip" | grep -c '.') - if [ "${countDots}" != "4" ]; then + if [ ${countDots} -eq 0 ]; then echo "error='missing or invalid ip'" + exit + fi + + # check if IP is already added + found=$(sudo cat ${LNDCONF} | grep -c "tlsextraip=${ip}") + if [ ${found} -gt 0 ]; then + echo "# OK the IP was already added lnd.conf" + exit fi # simply add the line to the LND conf From 3899fdb14e3c13b226c0adcf52b46dfac2c31910 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 13:48:09 +0200 Subject: [PATCH 084/126] fix parameter check --- home.admin/config.scripts/lnd.tlscert.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/home.admin/config.scripts/lnd.tlscert.sh b/home.admin/config.scripts/lnd.tlscert.sh index 7fc9c7859..b0f328c18 100644 --- a/home.admin/config.scripts/lnd.tlscert.sh +++ b/home.admin/config.scripts/lnd.tlscert.sh @@ -23,7 +23,7 @@ if [ "$1" = "ip-add" ]; then ip=$2 countDots=$(echo "$ip" | grep -c '.') if [ ${countDots} -eq 0 ]; then - echo "error='missing or invalid ip'" + echo "error='missing or invalid IP'" exit fi @@ -55,8 +55,9 @@ if [ "$1" = "ip-remove" ]; then # 2. parameter: ip ip=$2 countDots=$(echo "$ip" | grep -c '.') - if [ "${countDots}" != "4" ]; then - echo "error='missing or invalid ip'" + if [ ${countDots} -eq 0 ]; then + echo "error='missing or invalid IP'" + exit fi # remove the line to the LND conf From e4dc7799e2acb05af0ddbc42b02df2023d6f912c Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 13:48:56 +0200 Subject: [PATCH 085/126] better insertion point --- home.admin/config.scripts/lnd.tlscert.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/lnd.tlscert.sh b/home.admin/config.scripts/lnd.tlscert.sh index b0f328c18..1dde888d7 100644 --- a/home.admin/config.scripts/lnd.tlscert.sh +++ b/home.admin/config.scripts/lnd.tlscert.sh @@ -35,7 +35,7 @@ if [ "$1" = "ip-add" ]; then fi # simply add the line to the LND conf - sudo sed -i "8itlsextraip=${ip}" ${LNDCONF} + sudo sed -i "10itlsextraip=${ip}" ${LNDCONF} # check if line is added found=$(sudo cat ${LNDCONF} | grep -c "tlsextraip=${ip}") From 94148eb15ae3c91a05b0ebee429726ec8a621df7 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 14:40:48 +0200 Subject: [PATCH 086/126] description correction --- home.admin/config.scripts/lnd.setport.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/lnd.setport.sh b/home.admin/config.scripts/lnd.setport.sh index e855c82e2..360b510b7 100644 --- a/home.admin/config.scripts/lnd.setport.sh +++ b/home.admin/config.scripts/lnd.setport.sh @@ -4,7 +4,7 @@ # based on: https://github.com/rootzoll/raspiblitz/issues/386 if [ $# -eq 0 ]; then - echo "small config script set the port LND is running on" + echo "script set the port LND is running on" echo "lnd.setport.sh [portnumber]" exit 1 fi From cf76cb6af8316e48c67e3b2c8f14aca53a968d3a Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 14:44:16 +0200 Subject: [PATCH 087/126] replace new tls cert script --- home.admin/config.scripts/lnd.autounlock.sh | 2 +- home.admin/config.scripts/lnd.credentials.sh | 68 ++++++++++++++------ home.admin/config.scripts/lnd.newtlscert.sh | 39 ----------- home.admin/config.scripts/lnd.setaddress.sh | 4 +- home.admin/config.scripts/lnd.tlscert.sh | 2 +- 5 files changed, 53 insertions(+), 62 deletions(-) delete mode 100644 home.admin/config.scripts/lnd.newtlscert.sh diff --git a/home.admin/config.scripts/lnd.autounlock.sh b/home.admin/config.scripts/lnd.autounlock.sh index 0edcabaf9..62f845988 100755 --- a/home.admin/config.scripts/lnd.autounlock.sh +++ b/home.admin/config.scripts/lnd.autounlock.sh @@ -101,7 +101,7 @@ if [ "$1" = "1" ] || [ "$1" = "on" ]; then md5HashAfter=$(sudo shasum -a 256 /mnt/hdd/lnd/lnd.conf) if [ "${md5HashAfter}" != "${md5HashBefore}" ]; then echo "# lnd.conf changed - TLS certs need refreshing" - sudo /home/admin/config.scripts/lnd.newtlscert.sh + sudo /home/admin/config.scripts/lnd.tlscert.sh refresh else echo "# lnd.conf NOT changed - keep TLS certs" fi diff --git a/home.admin/config.scripts/lnd.credentials.sh b/home.admin/config.scripts/lnd.credentials.sh index d8a7cd85a..e66815074 100755 --- a/home.admin/config.scripts/lnd.credentials.sh +++ b/home.admin/config.scripts/lnd.credentials.sh @@ -3,7 +3,7 @@ # command info if [ "$1" = "-h" ] || [ "$1" = "-help" ]; then echo "tool to reset or sync credentials (e.g. macaroons)" - echo "lnd.credentials.sh [reset|sync]" + echo "lnd.credentials.sh [reset|sync] [?tls|macaroons]" exit 1 fi @@ -63,35 +63,65 @@ function copy_mac_set_perms() { # RESET Macaroons and TLS ########################### if [ "$1" = "reset" ]; then + clear - echo "###### RESET MACAROONS AND TLS.cert ######" - echo "" - echo "All your macaroons and the tls.cert get deleted and recreated." - echo "Use this to invalidate former EXPORTS for example if you loose a device." - echo "" - cd || exit - echo "- deleting old macaroons" - sudo find /mnt/hdd/app-data/lnd/data/chain/"${network}"/"${chain}"net/ -iname '*.macaroon' -delete - sudo find /home/bitcoin/.lnd/data/chain/"${network}"/"${chain}"net/ -iname '*.macaroon' -delete - sudo rm /home/bitcoin/.lnd/data/chain/"${network}"/"${chain}"net/macaroons.db - echo "- resetting TLS cert" - sudo /home/admin/config.scripts/lnd.newtlscert.sh + echo "### lnd.credentials.sh reset" + + # default reset both + resetTLS=1 + resetMacaroons=1 + + # optional second paramter to just reset one on them + if [ "$2" == "tls" ]; then + echo "# just resetting TLS" + resetTLS=1 + resetMacaroons=0 + fi + if [ "$2" == "macaroons" ]; then + echo "# just resetting Macaroons" + resetTLS=0 + resetMacaroons=1 + fi + + if [ ${resetMacaroons} -eq 1 ]; then + echo "## Resetting Macaroons" + echo "# all your macaroons get deleted and recreated" + cd || exit + sudo find /mnt/hdd/app-data/lnd/data/chain/"${network}"/"${chain}"net/ -iname '*.macaroon' -delete + sudo find /home/bitcoin/.lnd/data/chain/"${network}"/"${chain}"net/ -iname '*.macaroon' -delete + sudo rm /home/bitcoin/.lnd/data/chain/"${network}"/"${chain}"net/macaroons.db + fi + + if [ ${resetTLS} -eq 1 ]; then + echo "## Resetting TLS" + echo "# tls cert gets deleted and recreated" + cd || exit + sudo /home/admin/config.scripts/lnd.tlscert.sh refresh + fi + + # unlock wallet after restart echo "- restarting LND ... wait 10 secs" sudo systemctl start lnd sleep 10 - sudo -u bitcoin lncli --chain="${network}" --network="${chain}"net unlock + + # unlock wallet after restart + sudo /home/admin/config.scripts/lnd.unlock.sh echo "- creating new macaroons ... wait 10 secs" sleep 10 - echo "- copy new macaroons to central app-data directory and ensure unix ownerships and permissions" - copy_mac_set_perms admin.macaroon lndadmin "${network}" "${chain}" - copy_mac_set_perms invoice.macaroon lndinvoice "${network}" "${chain}" - copy_mac_set_perms readonly.macaroon lndreadonly "${network}" "${chain}" - echo "OK DONE" + + if [ ${resetMacaroons} -eq 1 ]; then + echo "# copy new macaroons to central app-data directory and ensure unix ownerships and permissions" + copy_mac_set_perms admin.macaroon lndadmin "${network}" "${chain}" + copy_mac_set_perms invoice.macaroon lndinvoice "${network}" "${chain}" + copy_mac_set_perms readonly.macaroon lndreadonly "${network}" "${chain}" + echo "# OK DONE" + fi ########################### # SYNC ########################### elif [ "$1" = "sync" ]; then + echo "###### SYNCING MACAROONS, RPC Password AND TLS Certificate ######" echo "# make sure LND app-data directories exist" diff --git a/home.admin/config.scripts/lnd.newtlscert.sh b/home.admin/config.scripts/lnd.newtlscert.sh deleted file mode 100644 index 51ec70911..000000000 --- a/home.admin/config.scripts/lnd.newtlscert.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash - -# stop services -echo "making sure services are not running" -sudo systemctl stop lnd 2>/dev/null - -echo "keep old tls data as backup" -sudo mv /mnt/hdd/lnd/tls.cert /mnt/hdd/lnd/tls.cert.old -sudo mv /mnt/hdd/lnd/tls.key /mnt/hdd/lnd/tls.key.old - -echo "let lnd generate new TLSCert" -sudo -u bitcoin /usr/local/bin/lnd &>/dev/null & -echo "wait until generated" -newCertExists=0 -count=0 -while [ ${newCertExists} -eq 0 ] -do - count=$(($count + 1)) - echo "(${count}/60) check for cert" - if [ ${count} -gt 60 ]; then - echo "FAIL - was not able to generate new LND certs" - exit 1 - fi - newCertExists=$(sudo ls /mnt/hdd/lnd/tls.cert 2>/dev/null | grep -c '.cert') - sleep 2 -done -sudo killall /usr/local/bin/lnd -sudo chmod 664 /mnt/hdd/lnd/tls.cert -sudo chown bitcoin:bitcoin "/mnt/hdd/lnd/tls.cert" -echo "symlink new cert to lnd app-data directory" -if ! [[ -L "/mnt/hdd/app-data/lnd/tls.cert" ]]; then - sudo rm -rf "/mnt/hdd/app-data/lnd/tls.cert" # not a symlink.. delete it silently - sudo ln -s /mnt/hdd/lnd/tls.cert /home/admin/.lnd/tls.cert # and create symlink -fi -echo "OK TLS certs are fresh" - -# ToDo(frennkie) why doesn't this start lnd again? - I assume as _background will start it anyway?! -# ToDo(frennkie) the way LND generates the x509 certificate is not ideal - -# it may be better to simply run openssl and create a cert with our settings... diff --git a/home.admin/config.scripts/lnd.setaddress.sh b/home.admin/config.scripts/lnd.setaddress.sh index d24140ec5..d29040103 100755 --- a/home.admin/config.scripts/lnd.setaddress.sh +++ b/home.admin/config.scripts/lnd.setaddress.sh @@ -58,7 +58,7 @@ if [ "${mode}" = "on" ]; then md5HashAfter=$(sudo shasum -a 256 /mnt/hdd/lnd/lnd.conf) if [ "${md5HashAfter}" != "${md5HashBefore}" ]; then echo "# lnd.conf changed - TLS certs need refreshing" - sudo /home/admin/config.scripts/lnd.newtlscert.sh + sudo /home/admin/config.scripts/lnd.tlscert.sh refresh else echo "# lnd.conf NOT changed - keep TLS certs" fi @@ -86,7 +86,7 @@ if [ "${mode}" = "off" ]; then md5HashAfter=$(sudo shasum -a 256 /mnt/hdd/lnd/lnd.conf) if [ "${md5HashAfter}" != "${md5HashBefore}" ]; then echo "# lnd.conf changed - TLS certs need refreshing" - sudo /home/admin/config.scripts/lnd.newtlscert.sh + sudo /home/admin/config.scripts/lnd.tlscert.sh refresh else echo "# lnd.conf NOT changed - keep TLS certs" fi diff --git a/home.admin/config.scripts/lnd.tlscert.sh b/home.admin/config.scripts/lnd.tlscert.sh index 1dde888d7..e32b3609d 100644 --- a/home.admin/config.scripts/lnd.tlscert.sh +++ b/home.admin/config.scripts/lnd.tlscert.sh @@ -114,7 +114,7 @@ if [ "$1" = "refresh" ]; then sudo rm -rf "/mnt/hdd/app-data/lnd/tls.cert" # not a symlink.. delete it silently sudo ln -s ${TLSPATH}/tls.cert /home/admin/.lnd/tls.cert # and create symlink fi - echo "# OK TLS certs are fresh" + echo "# OK TLS certs are fresh - start of LND service needed" exit fi From 19d69fc924ece10d5a16dfbb2c86624d06eec9bd Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 14:45:59 +0200 Subject: [PATCH 088/126] better restart info --- home.admin/80scanLND.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home.admin/80scanLND.sh b/home.admin/80scanLND.sh index b69f753b1..910473fc1 100755 --- a/home.admin/80scanLND.sh +++ b/home.admin/80scanLND.sh @@ -64,7 +64,7 @@ if [ ${bitcoinActive} -eq 0 ] || [ ${#bitcoinErrorFull} -gt 0 ] || [ "${1}" == " fi echo "-> Use following command to debug: /home/admin/XXdebugLogs.sh" echo "-> To force Main Menu run: /home/admin/00mainMenu.sh" - echo "-> To try restart: sudo shutdown -r now" + echo "-> To try restart: restart" echo "" fi else @@ -123,7 +123,7 @@ elif [ ${lndActive} -eq 0 ] || [ ${#lndErrorFull} -gt 0 ] || [ "${1}" == "lightn echo echo "-> Use following command to debug: /home/admin/XXdebugLogs.sh" echo "-> To force Main Menu run: /home/admin/00mainMenu.sh" - echo "-> To try restart: sudo shutdown -r now" + echo "-> To try restart: restart" echo "" exit 1 else From a0f97e7f65f29f3c9dc8d69aaaaa805cabab0454 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 14:52:42 +0200 Subject: [PATCH 089/126] removing ols lnd rest setting --- home.admin/config.scripts/lnd.autounlock.sh | 24 --------------------- 1 file changed, 24 deletions(-) diff --git a/home.admin/config.scripts/lnd.autounlock.sh b/home.admin/config.scripts/lnd.autounlock.sh index 62f845988..2506e8785 100755 --- a/home.admin/config.scripts/lnd.autounlock.sh +++ b/home.admin/config.scripts/lnd.autounlock.sh @@ -82,30 +82,6 @@ fi # switch on if [ "$1" = "1" ] || [ "$1" = "on" ]; then - # get hash of lnd.conf before edit (to detect if changed later) - md5HashBefore=$(sudo shasum -a 256 /mnt/hdd/lnd/lnd.conf) - - # make sure config values are uncommented - sudo sed -i "s/^#restlisten=.*/restlisten=/g" /mnt/hdd/lnd/lnd.conf - - # make sure config values exits - exists=$(sudo cat /mnt/hdd/lnd/lnd.conf | grep -c 'restlisten=') - if [ ${exists} -eq 0 ]; then - sudo sed -n -i 'p;4a restlisten=' /mnt/hdd/lnd/lnd.conf - fi - - # set needed config values - sudo sed -i "s/^restlisten=.*/restlisten=0.0.0.0:8080/g" /mnt/hdd/lnd/lnd.conf - - # refresh TLS cert (if lnd.conf was changed) - md5HashAfter=$(sudo shasum -a 256 /mnt/hdd/lnd/lnd.conf) - if [ "${md5HashAfter}" != "${md5HashBefore}" ]; then - echo "# lnd.conf changed - TLS certs need refreshing" - sudo /home/admin/config.scripts/lnd.tlscert.sh refresh - else - echo "# lnd.conf NOT changed - keep TLS certs" - fi - echo "# switching the Auto-Unlock ON" # setting value in raspi blitz config From 78771e6d0c69fb5523f025b6349a94791ba7790f Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 14:54:09 +0200 Subject: [PATCH 090/126] new tls refesh script --- home.admin/config.scripts/internet.dyndomain.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/internet.dyndomain.sh b/home.admin/config.scripts/internet.dyndomain.sh index 69d73bd11..dda5944e6 100755 --- a/home.admin/config.scripts/internet.dyndomain.sh +++ b/home.admin/config.scripts/internet.dyndomain.sh @@ -129,7 +129,7 @@ if [ "$1" = "0" ] || [ "$1" = "off" ]; then fi # refresh TLS cert -sudo /home/admin/config.scripts/lnd.newtlscert.sh +sudo /home/admin/config.scripts/lnd.tlscert.sh refresh echo "may needs reboot to run normal again" exit 0 From 92f92a80b615cf8555fc3ed22f5cf64eb696729b Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 15:07:50 +0200 Subject: [PATCH 091/126] replace old tls script --- home.admin/config.scripts/internet.sshtunnel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/internet.sshtunnel.py b/home.admin/config.scripts/internet.sshtunnel.py index dd5b3f07b..146c478f3 100755 --- a/home.admin/config.scripts/internet.sshtunnel.py +++ b/home.admin/config.scripts/internet.sshtunnel.py @@ -188,7 +188,7 @@ if sys.argv[1] == "on": newConfigHash=subprocess.getoutput("sudo shasum -a 256 /mnt/hdd/lnd/lnd.conf") if oldConfigHash != newConfigHash: print("lnd.conf changed ... generating new TLS cert") - subprocess.call("sudo /home/admin/config.scripts/lnd.newtlscert.sh", shell=True) + subprocess.call(sudo /home/admin/config.scripts/lnd.tlscert.sh refresh", shell=True) else: print("lnd.conf unchanged... keep TLS cert") From d2ecffa9f2aad959c6ecbe470d6f6a63f867cf97 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 15:08:12 +0200 Subject: [PATCH 092/126] add ip if new bridge to LND tls --- .../config.scripts/blitz.subscriptions.ip2tor.py | 10 ++++++++-- home.admin/config.scripts/blitz.subscriptions.py | 1 - 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py index 480a646bb..ea658522d 100644 --- a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py +++ b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py @@ -671,6 +671,12 @@ Unkown Error happend - please report to developers: '''.format(str(e)),title="Exception on Subscription") sys.exit(1) + # if LND REST or LND GRPS service ... add bridge IP to TLS + if servicename == "LND-REST-API" or servicename == "LND-GRPC-API": + os.system("sudo /home/admin/config.scripts/lnd.tlscert.sh ip-add {0}".format(subscription['ip'])) + os.system("sudo /home/admin/config.scripts/lnd.credentials.sh reset tls") + os.system("sudo /home/admin/config.scripts/lnd.credentials.sh sync") + # warn user if not delivered as advertised if subscription['contract_breached']: Dialog(dialog="dialog",autowidgetsize=True).msgbox(''' @@ -912,7 +918,7 @@ if sys.argv[1] == "subscription-by-service": # check parameters try: - servicenname = sys.argv[2] + servicename = sys.argv[2] except Exception as e: handleException(e) @@ -921,7 +927,7 @@ if sys.argv[1] == "subscription-by-service": subs = toml.load(SUBSCRIPTIONS_FILE) newList = [] for idx, sub in enumerate(subs['subscriptions_ip2tor']): - if sub['active'] and sub['name'] == servicenname: + if sub['active'] and sub['name'] == servicename: print("type='{0}'".format(sub['type'])) print("ip='{0}'".format(sub['ip'])) print("port='{0}'".format(sub['port'])) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 9df58a458..4a260550e 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -15,7 +15,6 @@ from dialog import Dialog from blitzpy import RaspiBlitzConfig - # constants for standard services LND_REST_API = "LND-REST-API" LND_GRPC_API = "LND-GRPC-API" From a69e43b3c454345c5a1d115a44101811c3e2cb7f Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 15:13:08 +0200 Subject: [PATCH 093/126] fix syntax --- home.admin/config.scripts/blitz.subscriptions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 4a260550e..4b47437c7 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -90,7 +90,7 @@ You have no active or inactive subscriptions. d.set_background_title("My Subscriptions") if selectedSub['type'] == "ip2tor-v1": if len(selectedSub['warning']) > 0: - selectedSub['warning'] = "\n{0}".formart(selectedSub['warning']) + selectedSub['warning'] = "\n{0}".format(selectedSub['warning']) text=''' This is a IP2TOR subscription bought on {initdate} at {shop} From 1133644c23f87c9c5b89bbe0ab936c3093802b20 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 15:22:12 +0200 Subject: [PATCH 094/126] fix UI --- home.admin/97addMobileWallet.sh | 2 +- home.admin/config.scripts/lnd.credentials.sh | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/home.admin/97addMobileWallet.sh b/home.admin/97addMobileWallet.sh index 96cd1a887..cb2d04490 100755 --- a/home.admin/97addMobileWallet.sh +++ b/home.admin/97addMobileWallet.sh @@ -193,7 +193,7 @@ case $CHOICE in whiptail --title "Install Zap from PlayStore on your Android device" \ --yes-button "continue" \ --no-button "link as QR code" \ - --yesno "Find & install the Zap Wallet on the Android Play Store:\n\n${appstoreLink}\n\nEasiest way to install scan QR code on LCD with phone.\n\nWhen installed and started -> continue." 10 65 + --yesno "Find & install the Zap Wallet on the Android Play Store:\n\n${appstoreLink}\n\nEasiest way to install scan QR code on LCD with phone.\n\nWhen installed and started -> continue." 10 67 if [ $? -eq 1 ]; then /home/admin/config.scripts/blitz.lcd.sh qr-console ${appstoreLink} fi diff --git a/home.admin/config.scripts/lnd.credentials.sh b/home.admin/config.scripts/lnd.credentials.sh index e66815074..c7804106e 100755 --- a/home.admin/config.scripts/lnd.credentials.sh +++ b/home.admin/config.scripts/lnd.credentials.sh @@ -106,7 +106,6 @@ if [ "$1" = "reset" ]; then # unlock wallet after restart sudo /home/admin/config.scripts/lnd.unlock.sh - echo "- creating new macaroons ... wait 10 secs" sleep 10 if [ ${resetMacaroons} -eq 1 ]; then From 624b7361c4c94508d0aec1e3b5d2ae36ea907a25 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 15:32:26 +0200 Subject: [PATCH 095/126] ui change --- home.admin/config.scripts/blitz.subscriptions.py | 2 +- home.admin/config.scripts/lnd.credentials.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 4b47437c7..186a8df9b 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -77,7 +77,7 @@ You have no active or inactive subscriptions. d.set_background_title("RaspiBlitz Subscriptions") code, tag = d.menu( "\nYou have the following subscriptions - select for details:", - choices=choices, width=65, height=15, title="My Subscriptions") + choices=choices, cancel_label="Back" width=65, height=15, title="My Subscriptions") # if user chosses CANCEL if code != d.OK: return diff --git a/home.admin/config.scripts/lnd.credentials.sh b/home.admin/config.scripts/lnd.credentials.sh index c7804106e..545fbc981 100755 --- a/home.admin/config.scripts/lnd.credentials.sh +++ b/home.admin/config.scripts/lnd.credentials.sh @@ -100,7 +100,7 @@ if [ "$1" = "reset" ]; then fi # unlock wallet after restart - echo "- restarting LND ... wait 10 secs" + echo "# restarting LND ... wait 10 secs" sudo systemctl start lnd sleep 10 From 518cbcc96e3f5a310073d2693c432219e9966e18 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Thu, 28 May 2020 15:33:16 +0200 Subject: [PATCH 096/126] fix syntax --- home.admin/config.scripts/blitz.subscriptions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 186a8df9b..b9e5ce022 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -77,7 +77,7 @@ You have no active or inactive subscriptions. d.set_background_title("RaspiBlitz Subscriptions") code, tag = d.menu( "\nYou have the following subscriptions - select for details:", - choices=choices, cancel_label="Back" width=65, height=15, title="My Subscriptions") + choices=choices, cancel_label="Back", width=65, height=15, title="My Subscriptions") # if user chosses CANCEL if code != d.OK: return From e53ea6bfe00b586c5378aa0d481ea21d1ad40869 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Sun, 31 May 2020 17:26:43 +0200 Subject: [PATCH 097/126] run with default secondsBeforeSuspend = 0 --- home.admin/config.scripts/blitz.subscriptions.ip2tor.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py index ea658522d..27e1b6116 100644 --- a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py +++ b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py @@ -815,15 +815,18 @@ if sys.argv[1] == "subscriptions-list": if sys.argv[1] == "subscriptions-renew": + print("# RUNNING subscriptions-renew") + # check parameters try: secondsBeforeSuspend = int(sys.argv[2]) if secondsBeforeSuspend < 0: secondsBeforeSuspend = 0 except Exception as e: - handleException(e) + print("# running with secondsBeforeSuspend=0") + secondsBeforeSuspend = 0 # check if any active subscrpitions are below the secondsBeforeSuspend - if yes extend - print("# RUNNING subscriptions-renew") + try: if not Path(SUBSCRIPTIONS_FILE).is_file(): From 7d620562c889f4b4aeb525ff8714a668c8908579 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Sun, 31 May 2020 17:47:12 +0200 Subject: [PATCH 098/126] exit if lightning is not ready --- home.admin/97addMobileWallet.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/home.admin/97addMobileWallet.sh b/home.admin/97addMobileWallet.sh index cb2d04490..adc010f84 100755 --- a/home.admin/97addMobileWallet.sh +++ b/home.admin/97addMobileWallet.sh @@ -98,7 +98,14 @@ checkIP2TOR() port="8080" toraddress=$(sudo cat /mnt/hdd/tor/lndrest8080/hostname) fi - /home/admin/config.scripts/blitz.subscriptions.ip2tor.py create-ssh-dialog "$1" "$toraddress" "$port" + + userHasActiveChannels=$(sudo -u bitcoin lncli listchannels | grep -c '"active": true') + if [ ${userHasActiveChannels} -gt 0 ]; then + /home/admin/config.scripts/blitz.subscriptions.ip2tor.py create-ssh-dialog "$1" "$toraddress" "$port" + else + whiptail --title " Lightning not Ready " --msgbox "\nYou need at least one active Lightning channel.\n\nPlease make sure that your node is funded and\nyou have a confirmed and active channel running.\nThen try again to connect the mobile wallet." 13 52 + exit 0 + fi clear fi fi From 13aeb909e61e01a8facecd144566dc5eabe93a8a Mon Sep 17 00:00:00 2001 From: rootzoll Date: Sun, 31 May 2020 17:50:46 +0200 Subject: [PATCH 099/126] hide qr code --- home.admin/97addMobileWallet.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/home.admin/97addMobileWallet.sh b/home.admin/97addMobileWallet.sh index adc010f84..6764deb0c 100755 --- a/home.admin/97addMobileWallet.sh +++ b/home.admin/97addMobileWallet.sh @@ -155,8 +155,8 @@ case $CHOICE in if [ $? -eq 1 ]; then /home/admin/config.scripts/blitz.lcd.sh qr-console ${appstoreLink} fi - checkIP2TOR LND-GRPC-API /home/admin/config.scripts/blitz.lcd.sh hide + checkIP2TOR LND-GRPC-API /home/admin/config.scripts/bonus.lndconnect.sh shango-ios ${connect} exit 1; ;; @@ -170,8 +170,8 @@ case $CHOICE in if [ $? -eq 1 ]; then /home/admin/config.scripts/blitz.lcd.sh qr-console ${appstoreLink} fi - checkIP2TOR LND-GRPC-API /home/admin/config.scripts/blitz.lcd.sh hide + checkIP2TOR LND-GRPC-API /home/admin/config.scripts/bonus.lndconnect.sh shango-android ${connect} exit 1; ;; @@ -185,12 +185,12 @@ case $CHOICE in if [ $? -eq 1 ]; then /home/admin/config.scripts/blitz.lcd.sh qr-console ${appstoreLink} fi + /home/admin/config.scripts/blitz.lcd.sh hide checkIP2TOR LND-GRPC-API # see https://github.com/rootzoll/raspiblitz/issues/1001#issuecomment-634580257 #if [ ${#ip2tor} -eq 0 ]; then # choose_IP_or_TOR #fi - /home/admin/config.scripts/blitz.lcd.sh hide /home/admin/config.scripts/bonus.lndconnect.sh zap-ios ${connect} exit 1; ;; @@ -204,12 +204,12 @@ case $CHOICE in if [ $? -eq 1 ]; then /home/admin/config.scripts/blitz.lcd.sh qr-console ${appstoreLink} fi + /home/admin/config.scripts/blitz.lcd.sh hide checkIP2TOR LND-GRPC-API # see https://github.com/rootzoll/raspiblitz/issues/1001#issuecomment-634580257 #if [ ${#ip2tor} -eq 0 ]; then # choose_IP_or_TOR #fi - /home/admin/config.scripts/blitz.lcd.sh hide /home/admin/config.scripts/bonus.lndconnect.sh zap-android ${connect} exit 1; ;; @@ -235,8 +235,8 @@ Please go to MAINMENU > SERVICES and activate KEYSEND first. if [ $? -eq 1 ]; then /home/admin/config.scripts/blitz.lcd.sh qr-console ${appstoreLink} fi - checkIP2TOR LND-GRPC-API /home/admin/config.scripts/blitz.lcd.sh hide + checkIP2TOR LND-GRPC-API /home/admin/config.scripts/bonus.lndconnect.sh sendmany-android ${connect} exit 1; ;; @@ -250,8 +250,8 @@ Please go to MAINMENU > SERVICES and activate KEYSEND first. if [ $? -eq 1 ]; then /home/admin/config.scripts/blitz.lcd.sh qr-console ${appstoreLink} fi - checkIP2TOR LND-REST-API /home/admin/config.scripts/blitz.lcd.sh hide + checkIP2TOR LND-REST-API /home/admin/config.scripts/bonus.lndconnect.sh zeus-ios ${connect} exit 1; ;; @@ -265,11 +265,11 @@ Please go to MAINMENU > SERVICES and activate KEYSEND first. if [ $? -eq 1 ]; then /home/admin/config.scripts/blitz.lcd.sh qr-console ${appstoreLink} fi + /home/admin/config.scripts/blitz.lcd.sh hide checkIP2TOR LND-REST-API if [ ${#ip2tor} -eq 0 ]; then choose_IP_or_TOR fi - /home/admin/config.scripts/blitz.lcd.sh hide /home/admin/config.scripts/bonus.lndconnect.sh zeus-android ${connect} exit 1; ;; From 8f54a227b65c11013554777ef516f3b8845ae6f2 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Sun, 31 May 2020 18:54:17 +0200 Subject: [PATCH 100/126] use .value --- home.admin/config.scripts/blitz.subscriptions.ip2tor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py index 27e1b6116..a01b990d4 100644 --- a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py +++ b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py @@ -40,7 +40,7 @@ if Path("/mnt/hdd/raspiblitz.conf").is_file(): #DEFAULT_SHOPURL="shopdeu2vdhazvmllyfagdcvlpflzdyt5gwftmn4hjj3zw2oyelksaid.onion" DEFAULT_SHOPURL="shop.ip2t.org" LND_IP="127.0.0.1" - LND_ADMIN_MACAROON_PATH="/mnt/hdd/app-data/lnd/data/chain/{0}/{1}net/admin.macaroon".format(cfg.network,cfg.chain) + LND_ADMIN_MACAROON_PATH="/mnt/hdd/app-data/lnd/data/chain/{0}/{1}net/admin.macaroon".format(.value,cfg.chain.value) LND_TLS_PATH="/mnt/hdd/app-data/lnd/tls.cert" # make sure to make requests thru TOR 127.0.0.1:9050 session.proxies = {'http': 'socks5h://127.0.0.1:9050', 'https': 'socks5h://127.0.0.1:9050'} From adff0e7e6307f98e0f2695cd0db4c305494511a8 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Sun, 31 May 2020 18:58:33 +0200 Subject: [PATCH 101/126] with .value --- home.admin/config.scripts/blitz.subscriptions.ip2tor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py index a01b990d4..8747f59eb 100644 --- a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py +++ b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py @@ -40,7 +40,7 @@ if Path("/mnt/hdd/raspiblitz.conf").is_file(): #DEFAULT_SHOPURL="shopdeu2vdhazvmllyfagdcvlpflzdyt5gwftmn4hjj3zw2oyelksaid.onion" DEFAULT_SHOPURL="shop.ip2t.org" LND_IP="127.0.0.1" - LND_ADMIN_MACAROON_PATH="/mnt/hdd/app-data/lnd/data/chain/{0}/{1}net/admin.macaroon".format(.value,cfg.chain.value) + LND_ADMIN_MACAROON_PATH="/mnt/hdd/app-data/lnd/data/chain/{0}/{1}net/admin.macaroon".format(cfg.network.value,cfg.chain.value) LND_TLS_PATH="/mnt/hdd/app-data/lnd/tls.cert" # make sure to make requests thru TOR 127.0.0.1:9050 session.proxies = {'http': 'socks5h://127.0.0.1:9050', 'https': 'socks5h://127.0.0.1:9050'} From 6302883ed4c6f0ccaa9272dd6076fb786d4b863f Mon Sep 17 00:00:00 2001 From: rootzoll Date: Sun, 31 May 2020 19:07:36 +0200 Subject: [PATCH 102/126] server date parsing without micro seconds --- home.admin/config.scripts/blitz.subscriptions.ip2tor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py index 8747f59eb..97d20bb6b 100644 --- a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py +++ b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py @@ -78,7 +78,7 @@ def handleException(e): sys.exit(1) def parseDate(datestr): - return datetime.datetime.strptime(datestr,"%Y-%m-%dT%H:%M:%S.%fZ") + return datetime.datetime.strptime(datestr,"%Y-%m-%dT%H:%M:%SZ") def secondsLeft(dateObj): return round((dateObj - datetime.datetime.utcnow()).total_seconds()) From 61865e6617c558f3d6e39f97109f877241d93205 Mon Sep 17 00:00:00 2001 From: frennkie Date: Sun, 31 May 2020 18:50:21 +0100 Subject: [PATCH 103/126] add -h to SyncScripts --- home.admin/XXsyncScripts.sh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/home.admin/XXsyncScripts.sh b/home.admin/XXsyncScripts.sh index bf18b9d11..592ebbcb1 100755 --- a/home.admin/XXsyncScripts.sh +++ b/home.admin/XXsyncScripts.sh @@ -6,6 +6,14 @@ # IF YOU WANT TO UPDATE YOUR RASPIBLITZ: # https://github.com/rootzoll/raspiblitz/blob/master/FAQ.md#how-to-update-my-raspiblitz-after-version-098 +# command info +if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ] || [ "$1" = "-help" ]; then + echo "FOR DEVELOPMENT USE ONLY!" + echo "RaspiBlitz Sync Scripts" + echo "XXsyncScripts.sh [-clean] [-install] branch [repo]" + exit 1 +fi + cd /home/admin/raspiblitz source /mnt/hdd/raspiblitz.conf 2>/dev/null @@ -13,7 +21,7 @@ source /mnt/hdd/raspiblitz.conf 2>/dev/null activeGitHubUser=$(sudo -u admin cat /home/admin/raspiblitz/.git/config | grep "url = " | cut -d "=" -f2 | cut -d "/" -f4) activeBranch=$(git branch | grep \* | cut -d ' ' -f2) -# if parameter is "info" just give back basic info about sync +# if parameter is "info" just give back basic info about sync if [ "$1" == "info" ]; then echo "activeGitHubUser='${activeGitHubUser}'" echo "activeBranch='${activeBranch}'" @@ -84,6 +92,7 @@ if [ ${#wantedBranch} -gt 0 ]; then else echo "" echo "USAGE-INFO: ./XXsyncScripts.sh '[BRANCHNAME]'" + exit 1 fi origin=$(git remote -v | grep 'origin' | tail -n1) @@ -137,7 +146,7 @@ else blitzpy_wheel=$(ls -trR /home/admin/raspiblitz/home.admin/BlitzPy/dist | grep -E "*any.whl" | tail -n 1) blitzpy_version=$(echo ${blitzpy_wheel} | grep -oE "([0-9]\.[0-9]\.[0-9])") echo "# BlitzPy changed --> UPDATING to Version ${blitzpy_version}" - sudo -H /usr/bin/python -m pip install "/home/admin/raspiblitz/home.admin/BlitzPy/dist/${blitzpy_wheel}" >/dev/null 2>&1 + sudo -H /usr/bin/python -m pip install "/home/admin/raspiblitz/home.admin/BlitzPy/dist/${blitzpy_wheel}" >/dev/null 2>&1 fi if [ "${touchscreen}" = "1" ]; then From 8f3f3d74e45f72c82f1d14e865c439e27e1a6739 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Sun, 31 May 2020 19:52:25 +0200 Subject: [PATCH 104/126] remove bitzpy 0.1.0 dist --- .../dist/BlitzPy-0.1.0-py2.py3-none-any.whl | Bin 4960 -> 0 bytes home.admin/BlitzPy/dist/BlitzPy-0.1.0.tar.gz | Bin 3926 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 home.admin/BlitzPy/dist/BlitzPy-0.1.0-py2.py3-none-any.whl delete mode 100644 home.admin/BlitzPy/dist/BlitzPy-0.1.0.tar.gz diff --git a/home.admin/BlitzPy/dist/BlitzPy-0.1.0-py2.py3-none-any.whl b/home.admin/BlitzPy/dist/BlitzPy-0.1.0-py2.py3-none-any.whl deleted file mode 100644 index 6caae1ef7d2c30a18cd8f3b1ccd3d5ce0e56bd20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4960 zcmai&2T)V((#Hb=5~6@q=|wt(uJjgKAc=Gcp$b8I??FX+2dRPxh|)ojPNWw>dJ_bs z7eTsILB%iLJNN2+$M^lt%+8rJbM`m;%-P-lp4En3BA@~Q0K|amk~;0BqRbO3+*2~n zC~;=xWbcJ>^B1zPuy?Wdvak?z^Vc&RnHV#G4r%oc!0L5*z#8MVfT(?s&mQ^IYwLU) zoa^iPHU<3Xk2I^asXPRnG_+{xHFTQ3RLC3eM=G+1V+Ts-%PW+g9?L7#PSnr+u~ZKg znam!)CJiTmia{mQ9)ked{|!mg+A_CIcRZ%l}x_L!0GkF1a>|M3kQ_N>VklR?1z*z3LsGNJ@|T7K?~!VvCeZhZr7JNPne@|h({si3U>kgKujaJmPKmWf8Gf~T z3KhfS*Q&ABL<6h*az42|C+)qTwpL0H`+W;51gUe;`08n{mEFsxEmmpD&=DGCBv0;K zR+ZAz5KrA>w3OLJ7)*z8cNcJ`??=d5rU7Ohka98n3IIzvB~CHg2-T@HP3cd>gl`0b zY^?9*Zt6sa5keieOLd)WvUxd+90?kf5fM^I9ipLyr|A>kSE8OI0l6JvQ}0YI*^R3Q z4!+Ne&RB6VKRv!p;le|Uxz-YOB_=+RcPqFa0Y2Ck=9g!jy+_wPll0L1)#bf@J!G=E zWbV;=W=H#e4@Euxs%>5eix%Ark9r{%l#}@af9t1H_VTSZK}C~ThUk*E5rO`94N|s> zIaq_aMY#Wal8hB!acO`5CD%e(w-^$kM(^^o)oBn9S$pB|G{ohQhK^;*Q^zl+rD82H zahHqo+QZdr8D-V=j_txFth8{xL8EhiA+_$@y0999^{9T;qaw0tcmD6@o7O}Z8@AO9 zEHungbhkCH2{6P$cSm7aR7O6l%0Sw3@A@%oY=CS- z653v&i$%kPJAGG$=q7WiI{T};48+f|-xX3CtH^TX7fh3t5{#xn`;?Idw*t1Cx<0md zc+p%nPn}FlDaj*}LM`31O!Y^w&9k~&tvO>r8PV7;f%-jR6pV?Eb}3$O=@P2U?R&2| zlVu;wz{PHVmd{Fi1wXg$TjI_aA7-_|h6fQZNG1#>;a=jO^lM_ir@5QoCjOGTD&-_V zGi@lNS_W;|L*i|vG<_kdn|&}qms}#mb%H2>zWrj`DBT@OR4mj4-T~m*a4rU`?2!8;Ec^>Q9(xy2n zB0gD7xcV4zENV3|c14uVr*LbFgL4j1(g(UA3*B2q*G1rG>ZuYt*Lf#l#)c7@qVc82 zW!UVZwd3%DuJX5qJLpct(S0Fj|ErSjx$-yo&-1p9!d*Ut^qn1-7m6G;4kujS_0<7a zDBQ1Xfl=xexxJ-(hH8%ZVxFMY1BpBQb8!Y6jBsv*8i{t+w@X?JQbm)XnpU+x4-Vx$?S8&WE{N5DjO zRIZkany4@$s}O>z$*nj5?8-R+ke*W0K`o5IV^7@?&&Xw~>Ddu-4n7L0);Z?9%9Vip zpp5w1UyGI1yuPlFRxLsn_XWI#fC~nzo6CeN0;bJ%ioStw-F&R^+#aBO^YLx=Mg7cY zB?ir7FB|d8wCDC&FidxkpZGONbovDL+)tGLE|-|2HA7b0wD*cubI^B=gm%EfS16^l zc3LrMt13?|RJ=ilWf7xAW@@X*WzZeb3=QDl#b8Y#gD=^gEF0CL_JUMb7#$XBb221` zW*ZLE&*`3+7!`fJht&<#atq{fGt_C(KK2Y!m^9s=C2oAZN$0peU~otOhDm{sn9OF5 zqetEkl4s`U-2C{)AB^P)-Y=v4Y6C}BP!;wy7oBai+ICne=G3RHq3S=xN&KtYnVjrr znT{fp&G*=J3Nwp)?#pA|5y2+{8bvVdCX_y5_`}HL&I_I3+owU8CmcEp{F>xPOgZY; z;U+wJBfjjQ`1Y?bJz~alY5T$QW6H3Aoy-&lZbbH@?mDM2wJV4$@~3wBJmrtLCww)= z<1;xA%aXe_p_}v^pYkz?6yl(*@Bv{zaI$0=>@x2?_G{^-F7%Fj9c*43Zh7tHKne|; z@e9?>ny|Qd;^`v2L^S=W7=-@)6KF-RqeUozIT`!lq68m=WZVVX>8!AvSXM4g@}j0( zhT2oZj7`_rY*>!>WkT|KMjcn$*bQJ-<3oBO3zK%rTyzCh?Pkl-kIw)`rl2d3)NR&* zf#~zC?%g4UUm}UZiDaY|b#Nt49O>`?0E*v4(#OWb)85qur;^U`2$BxPD`BT$^GhOv z-N96WKEZ|i0OcK(xT(AWc|HzbWD zuE9o?KrLrk*<+6EJe%l-*hphrY!D@KkrBkbzWLzk_IIcHxQC7A%BUi!{f1a@Y519^ zlQiTRR|$M(sUnT)1u0(E`I1IIAIKVRoD${<`#!r^GPD$0J2!K6+lAi5*0Nl>feq@BCf^ zx-oS6)t7b-g#=#3mO8Tt%v!q3WWl+M6t&`PzSd znZ<59X6M@|X^>(*6R9ATBUl3zk8h|ij2u)Pbngdpo^4(xu2Z&#E{&XDKkZzQRM}0adFN-Q_iPAz z95HOnC_R%E&aApa>>yk2{O+6c7L@79!ddyDt)|h}7I!MXZ_heM4F)G$r$mO=cAFFI zPM3p++`dWf9`n`|Y*{*1m?+!KR-Q?WDUw3E$l5YU;~!k-{E>i>Kp{PfRv`*vZBe$r9RIEk&-$soCO{@W`G;FDBYEeD;;rRn%@q<$8u1?v9 zF*F}FJ-G~lXs0*KXOT(Jkk59zR^-`_pJMXf?mu>518FApLHGqIuaq3goEYoN;uWZ< z${6!tJ7R0}Lf6nYIMp@A8nZtUWlRLCw#niHrUc#$Ots^vdXX!=@su;i`qW4s5HTU9R$!N}d#zHIb{w{|d z3oirCTWEm~vHdfTX9_N>F4Dh8+ACkLnQlApHmt%!l>#$h22kVhDwQ+Dy z=FGd~ybe_E6J42AR>^dp-sNns@y2=SG`{3O@NR6K*6y4}(XFY(r!@c_JdmI*M{_(r zX?tqqcEKiw6f%BOiY?ld|2|d2^UP$q(I?o+o~Px`;X6{sV^gw+R)bMv$_+AtD9OEd z*EL=^b9497^e{zsH~_(=1whe=N8c$%;q)B+$>AdDcWIz2 zNDf@I9Op+tx>AGh}{|!n_MO78x|Tp7MQ%s z1J)eug;(kF@bV$nNHpNMf72rIvBCaf*aTvrG&Jh^4V8x9el6>9qEeztJV}C!h!|&_ z{}7p%tDA+BjgO6!pqHN)tgly~n6GFR|2NoAg|dK1M#SUf_YSV8ng0Q%tE#M}tKvPP zk@Q>wt;yqS9V&?~92+0H0ovVl4cZ?bn)pAPD)cp9(o@VM{_j=Az} z%}|&HDy@U|6Bxp#ILwWFBv&@>`gLS|%+}dc_tW;4i+fHJh^Gz1!>79R_iGT`=ls`|7xeS? zho#8xfIlrQ{_PF`@u}c`Yz5F)lDJbYXG;?Hp@Uz}AOj5buel6LuRAA_6CDq zZv%}s){vr*ngK!^roC{y8o0;GMMK2zpCrA@jeqi{PG{!Oc{I^2vgiba&|iq_b^?Ym;TZc7os(csB7zR_9d?NiJS3%Uyf7Vi4`pco z3FhWRx3O~KSlA1px~tRgPS1WgRSt1z1&&WS`&(&?P?FMzqyRY~GLdfv6p<;Sb1XCB z2jnMgQDk~Hau&Xe7ucf=ev0pr757CHVq~$d(2I4X4_jO4*n?^3x+Y_+3}6eL2ROh# zM^5NaT!c6!9xlf_#6I?H>{$*DpM#fhRNX~C{`h11Y}x34(y(>rFwi=ekj^T;@A$|` zXxmOmJ2{Qh_LqI#Uk=(HFxED`rG7tmQ{1yp>0=n#1hqdPe+g5-L+!=yA}qHheR%VR z1aIEJNP3}T;{e9e@n$f*cTPYf(?!^WC*rYDukW3h#{pyV4vvNC5H z(~CS~g6EEB8x(X%TAZP)@sM7gefmb#9__tEnH0;eKOSF-(wi33Y@pb%r{6obj*o4} z)JZVwu(u9C8VO`pp>hsG0;+P6>8S(P3`1w?V9csSB5lk!wd>%^)JPmU22`jAN?BW>h`=HbAu+843Hsw&xK=Z-`f(kD9 zBPp#POmBDGP;8%n;j%czQ7C9qmG4=5VPY+lta7#@14g|LLXb5yFMeT z&*{R|bjIw~7P`Lj0_Gx=n`L2U#J$!@zlYWMrBU<>WrHnumFHeyQ$$8?bu zU>+UYR2un*0h1Ph8|#yQSnV_U?+tpr-Qj4L$$xj$`2TB3j%T@%jghSRHydx@Zz}&U zvfcY!`Cr-pW%eI_oA}>aQnUZt?Eg0Vzs>${v;W)d|2F%-e|P^c-Sk_h|JNI4=RXI# z19tuoR)Nj=zcs~wgfUTG!3R>5RV$e)PBuc?|k@8o46NRblC-@*=;v#_0@iM*! z<578zPr)&s<2zLP3}wCoXQwb41s{OJJ;~Nr+W4GpFSF@ow!FrMm)UO78ey@NFSW^y z{+IQ?I5qL|>;LDS{~v+DXwLtCz44dM)~q4^+wZ6GpI&d+XXpQ${hzhj|Mr_U*e4s5 z>mG{ewEa((!*)`*70}}&RaI7CN6I<&ri9@c2G|$F0ON4I$rbqaD%SQ+p@1Q??3*U| z{0ET#^c>w9{C}qP)AOGL_{Z*ly&W|1->)tIiO9QTHiN?SorH;Mh$jgw6hd%plfqcO z&w1VsIy`#6e|2(saddFW2m&Qg3JE=ZhUp1B;-F<1%m)O|Fy6tnSo8s%cy{7Zk_lUK zXnV2Fu<;ZL^VABlJKaI%Bs6@J&c|wJ;nB|AwmYuJ|8wo73RE6v0}Ndt05{^1Rh-6t zSS4oUQgmm!Q4-cZIXz5T7X`_dagJu-TZRiu1MC4+RTcF911lyU2XvWnpFtYT|K*L4 zSqw0Z0&kV79{M1hEp<=TuDdr+BhQAUK%NFm=}oGTdD%6U_HMKc4L?}er>J!d%e9B2 zARsW>EVh$8e$V=iKWpW6bwvX>$MIrel~GkyS$;Cl;sE5-ak0vJHx2B?({G%cc`Z#I zPIfH8#*=8);`G=mVwL0``t>(ej}Jbya#KW;8h!7;l!5N{RzQ#mQ)H!`F<-C_GHoNI zu!5Pjru?m?<(M;l-yl3j7D6LptZQ}Ohkm#CG(%@`sd^)$6{j4C6RXIuTx@zRiR=zi z0WgMBcUCcTGFMp4eTnF0OY#?#J}CrICxm812`Cc^OU=+CcQ{x=CGSl)#ASfK;}Tj2 z5P2@KZYvjLMScVm z#WEbftT3RiagQf3;V2HKrd7pSK4wq>6ozwyMxKXD`<#-u!BUzTrdDliYAK!rj7*N< zXqCpPnp6TKNF}dYjV-ID6+<1L3t}mj_5|x!J1T(i1D>SdsjIh2M|;eC*4Gkw?>O)! z3DPQZ6tp_aTir1L7DEZD8J<>at!vqpKm}bXORF^U)qDo2Cz>3K5_A*f3Wu7-x1Qxr zv+b--yqzU^)a+8ui+j{@;4Vjzo%}YO1v^eq;x1LXz6+4n3Y;1*kY6i>?#4`Xx~qkW zMk-)Mu=EV>h)bbDBfw0!!x+Eu&R)Sg%gu;t@nB#aN{B^<_Zn_ZHsPwNBrt+b^7?v) zAUB;W4K|0m0H9RgrD$4(2-GM~*&2sshPXmnD%q3aKgHmJei^Am>oJ)t=wl071!@m; z;|{vT%bj%Uacv~z5@e5>x0qcrk>m}fm_U|cBRV%JS~#;gMH7r-0YKQZh>dNO)XVp? zlSosNm5O#g{KZ*-e#m%aamfUyRl;qInuNcyFqcHqD5uGYX~l|JRjn9BXN~b&>b9yS zkK5|DrZN4^FVNgOu8RWG389lbbi`R;*2d6Xus43)a<~Z3M)*S>m^_fMJ)tpwHVp7S+8~ z-u2L2k0f42F@T)~O5`5U-K;~!Gw$`7*qtjE|gv?aQN`SbA!lx(9Q5+DeyVysMk(#|r0DTJ&m}ehtJO=RkxL~*Q;Z4~ zdPcBZj2~5y<8h#vOeLW>R#ZVCj`%!6Aqfi=NpPP?AeW)XPE!#vjq6m`oP~Z$(WUTB zRX45#d5UC2$flZ!G^kTVt_YMWv=Q|mlZQK!@yMwM3QWzSOUd8K~L zxhYfWB?>*v1S;Qr&P7-uO2VaZSo9@6c!0)Zq#6cOc7~xQEsEWZzxr{c^7B70`_-&R zzyB~uzyB~8@$)~sT_|qO|EwW_?~g7(%VB=fUj#te7aCAVKoYi4Peb<@fyvxvXMs!` z+0rR}G+Dw*gYd`!-FlVMo#w!W?ZL_o|}QMJF# zDa5?|r=R*;=l!22HSy&+CMAG^@QDb zG4AIWyEjVYIZRMYww2R^LOh#siMdgzIWs1a!J|h49 z`UyK_O! zi7U}l>+j&Ro{)f_a0_2PIHW%97Jd%p@mu%;{6>rtuiOZdyZPg7ekotvyh(0{X2sVT kw$@z1X;PD#)TAagsYy+0Qj?n0q`zMJKa`VM%K&%)0LT-z%m4rY From aa7d180b3e0ac67f06ad824a612d146037af8e05 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Sun, 31 May 2020 19:56:38 +0200 Subject: [PATCH 105/126] parameter warning --- home.admin/config.scripts/blitz.subscriptions.ip2tor.py | 1 + 1 file changed, 1 insertion(+) diff --git a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py index 97d20bb6b..4575de10d 100644 --- a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py +++ b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py @@ -718,6 +718,7 @@ MAIN MENU > Manage Subscriptions > My Subscriptions if sys.argv[1] == "create-ssh-dialog": # check parameters + if len(sys.argv) < 5: raise BlitzError("incorrect parameters","") try: servicename = sys.argv[2] toraddress = sys.argv[3] From ba768ca35a603e58fe7f75a858f8ff1831bbcfb4 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Sun, 31 May 2020 19:59:30 +0200 Subject: [PATCH 106/126] shop order parameter check --- home.admin/config.scripts/blitz.subscriptions.ip2tor.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py index 4575de10d..4458737a8 100644 --- a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py +++ b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py @@ -763,6 +763,7 @@ if sys.argv[1] == "shop-list": if sys.argv[1] == "shop-order": # check parameters + if len(sys.argv) < 9: raise BlitzError("incorrect parameters","") try: shopurl = sys.argv[2] servicename = sys.argv[3] @@ -771,7 +772,7 @@ if sys.argv[1] == "shop-order": duration = sys.argv[6] msatsFirst = sys.argv[7] msatsNext = sys.argv[8] - if len(sys.argv) >=9: + if len(sys.argv) >=10: description = sys.argv[9] else: description = "" From 9a9d2392cec0a02e10aed8e4deff11994208534a Mon Sep 17 00:00:00 2001 From: rootzoll Date: Sun, 31 May 2020 20:02:01 +0200 Subject: [PATCH 107/126] parameter checks --- home.admin/config.scripts/blitz.subscriptions.ip2tor.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py index 4458737a8..85e437440 100644 --- a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py +++ b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py @@ -718,8 +718,8 @@ MAIN MENU > Manage Subscriptions > My Subscriptions if sys.argv[1] == "create-ssh-dialog": # check parameters - if len(sys.argv) < 5: raise BlitzError("incorrect parameters","") try: + if len(sys.argv) < 5: raise BlitzError("incorrect parameters","") servicename = sys.argv[2] toraddress = sys.argv[3] port = sys.argv[4] @@ -763,8 +763,8 @@ if sys.argv[1] == "shop-list": if sys.argv[1] == "shop-order": # check parameters - if len(sys.argv) < 9: raise BlitzError("incorrect parameters","") try: + if len(sys.argv) < 9: raise BlitzError("incorrect parameters","") shopurl = sys.argv[2] servicename = sys.argv[3] hostid = sys.argv[4] @@ -889,6 +889,7 @@ if sys.argv[1] == "subscription-cancel": # check parameters try: + if len(sys.argv) <= 2: raise BlitzError("incorrect parameters","") subscriptionID = sys.argv[2] except Exception as e: handleException(e) @@ -923,6 +924,7 @@ if sys.argv[1] == "subscription-by-service": # check parameters try: + if len(sys.argv) <= 2: raise BlitzError("incorrect parameters","") servicename = sys.argv[2] except Exception as e: handleException(e) From a1c4ad58cd307cb7b1648d2c133b878cc8156595 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Sun, 31 May 2020 20:04:12 +0200 Subject: [PATCH 108/126] parameter check --- home.admin/config.scripts/blitz.subscriptions.ip2tor.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py index 85e437440..e9d8bd3a4 100644 --- a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py +++ b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py @@ -741,6 +741,7 @@ if sys.argv[1] == "shop-list": # check parameters try: + if len(sys.argv) <= 2: raise BlitzError("incorrect parameters","") shopurl = sys.argv[2] except Exception as e: handleException(e) @@ -764,7 +765,7 @@ if sys.argv[1] == "shop-order": # check parameters try: - if len(sys.argv) < 9: raise BlitzError("incorrect parameters","") + if len(sys.argv) <= 9: raise BlitzError("incorrect parameters","") shopurl = sys.argv[2] servicename = sys.argv[3] hostid = sys.argv[4] From 94b941f8b9eae2bd1d3979c395437437838500cb Mon Sep 17 00:00:00 2001 From: rootzoll Date: Sun, 31 May 2020 20:09:56 +0200 Subject: [PATCH 109/126] fix parameter count --- home.admin/config.scripts/blitz.subscriptions.ip2tor.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py index e9d8bd3a4..823b20ba7 100644 --- a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py +++ b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py @@ -23,7 +23,7 @@ if len(sys.argv) <= 1 or sys.argv[1] == "-h" or sys.argv[1] == "help": print("# manage ip2tor subscriptions for raspiblitz") print("# blitz.subscriptions.ip2tor.py create-ssh-dialog [servicename] [toraddress] [torport]") print("# blitz.subscriptions.ip2tor.py shop-list [shopurl]") - print("# blitz.subscriptions.ip2tor.py shop-order [shopurl] [servicename] [hostid] [toraddress:port] [duration] [msats]") + print("# blitz.subscriptions.ip2tor.py shop-order [shopurl] [servicename] [hostid] [toraddress:port] [duration] [msatsFirst] [msatsNext] [?description]") print("# blitz.subscriptions.ip2tor.py subscriptions-list") print("# blitz.subscriptions.ip2tor.py subscriptions-renew [secondsBeforeSuspend]") print("# blitz.subscriptions.ip2tor.py subscription-cancel [id]") @@ -719,7 +719,7 @@ if sys.argv[1] == "create-ssh-dialog": # check parameters try: - if len(sys.argv) < 5: raise BlitzError("incorrect parameters","") + if len(sys.argv) <= 4: raise BlitzError("incorrect parameters","") servicename = sys.argv[2] toraddress = sys.argv[3] port = sys.argv[4] @@ -765,7 +765,7 @@ if sys.argv[1] == "shop-order": # check parameters try: - if len(sys.argv) <= 9: raise BlitzError("incorrect parameters","") + if len(sys.argv) <= 8: raise BlitzError("incorrect parameters","") shopurl = sys.argv[2] servicename = sys.argv[3] hostid = sys.argv[4] From 256ac632d4cf5977ccc04708d8edfd63aff864c4 Mon Sep 17 00:00:00 2001 From: frennkie Date: Sun, 31 May 2020 22:16:51 +0200 Subject: [PATCH 110/126] Update XXsyncScripts.sh --- home.admin/XXsyncScripts.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/XXsyncScripts.sh b/home.admin/XXsyncScripts.sh index 592ebbcb1..7bb9dad98 100755 --- a/home.admin/XXsyncScripts.sh +++ b/home.admin/XXsyncScripts.sh @@ -10,7 +10,7 @@ if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ] || [ "$1" = "-help" ]; then echo "FOR DEVELOPMENT USE ONLY!" echo "RaspiBlitz Sync Scripts" - echo "XXsyncScripts.sh [-clean] [-install] branch [repo]" + echo "XXsyncScripts.sh [-clean] branch [repo]" exit 1 fi From 757092b8bcf55e39822fadc0efe4f17e5988a891 Mon Sep 17 00:00:00 2001 From: frennkie Date: Sun, 31 May 2020 22:22:54 +0200 Subject: [PATCH 111/126] Update XXsyncScripts.sh --- home.admin/XXsyncScripts.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/home.admin/XXsyncScripts.sh b/home.admin/XXsyncScripts.sh index 7bb9dad98..253bf427f 100755 --- a/home.admin/XXsyncScripts.sh +++ b/home.admin/XXsyncScripts.sh @@ -10,7 +10,8 @@ if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ] || [ "$1" = "-help" ]; then echo "FOR DEVELOPMENT USE ONLY!" echo "RaspiBlitz Sync Scripts" - echo "XXsyncScripts.sh [-clean] branch [repo]" + echo "XXsyncScripts.sh info + echo "XXsyncScripts.sh [-clean|-install] branch [repo]" exit 1 fi From 4adbe35063b6f8ae92fe40adec59c92909d30c30 Mon Sep 17 00:00:00 2001 From: frennkie Date: Sun, 31 May 2020 22:23:16 +0200 Subject: [PATCH 112/126] Update XXsyncScripts.sh --- home.admin/XXsyncScripts.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/XXsyncScripts.sh b/home.admin/XXsyncScripts.sh index 253bf427f..b7755c249 100755 --- a/home.admin/XXsyncScripts.sh +++ b/home.admin/XXsyncScripts.sh @@ -10,7 +10,7 @@ if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ] || [ "$1" = "-help" ]; then echo "FOR DEVELOPMENT USE ONLY!" echo "RaspiBlitz Sync Scripts" - echo "XXsyncScripts.sh info + echo "XXsyncScripts.sh info" echo "XXsyncScripts.sh [-clean|-install] branch [repo]" exit 1 fi From 950c3f30a13423f7143f00ed20f32ca080c53ec8 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Mon, 1 Jun 2020 20:06:42 +0200 Subject: [PATCH 113/126] using new raspbian base image may2020 --- FAQ.md | 1 + build_sdcard.sh | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/FAQ.md b/FAQ.md index e12e52984..63230bc64 100644 --- a/FAQ.md +++ b/FAQ.md @@ -2,6 +2,7 @@ ## Whats new in Version 1.6 of RaspiBlitz? +- Update: Raspberry Pi OS Base Image (May 2020) - Fix: DropBox StaticChannelBackup - New: Balance of Satoshis [details](https://github.com/alexbosworth/balanceofsatoshis) - New: Faraday [details](https://github.com/lightninglabs/faraday) diff --git a/build_sdcard.sh b/build_sdcard.sh index 11e942deb..f1a8f162e 100644 --- a/build_sdcard.sh +++ b/build_sdcard.sh @@ -1,9 +1,9 @@ #!/bin/bash ######################################################################### # Build your SD card image based on: -# Raspbian Buster Desktop (2020-02-13) +# Raspbian Buster Desktop (2020-05-27) # https://www.raspberrypi.org/downloads/raspbian/ -# SHA256: a82ed4139dfad31c3167e60e943bcbe28c404d1858f4713efe5530c08a419f50 +# SHA256: b9a5c5321b3145e605b3bcd297ca9ffc350ecb1844880afd8fb75a7589b7bd04 ########################################################################## # setup fresh SD card with image above - login per SSH and run this script: ########################################################################## From 9fb85f9f69176b14660540999a48d14186a479ba Mon Sep 17 00:00:00 2001 From: rootzoll Date: Mon, 1 Jun 2020 20:19:37 +0200 Subject: [PATCH 114/126] mark version ras rc0 --- home.admin/_version.info | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/_version.info b/home.admin/_version.info index fd67e8df9..02b8e2d6b 100644 --- a/home.admin/_version.info +++ b/home.admin/_version.info @@ -1,2 +1,2 @@ # RaspiBlitz Version - always [main].[sub] -codeVersion="1.5" \ No newline at end of file +codeVersion="1.6.0rc0" \ No newline at end of file From 1d078f8910ae77c3c60c883daba61f8b061f6d59 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Mon, 1 Jun 2020 20:22:12 +0200 Subject: [PATCH 115/126] mark version 1.6 of buildscript --- build_sdcard.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_sdcard.sh b/build_sdcard.sh index f1a8f162e..12cb4fb11 100644 --- a/build_sdcard.sh +++ b/build_sdcard.sh @@ -10,7 +10,7 @@ echo "" echo "*****************************************" -echo "* RASPIBLITZ SD CARD IMAGE SETUP v1.5 *" +echo "* RASPIBLITZ SD CARD IMAGE SETUP v1.6 *" echo "*****************************************" echo "" From fcebd7caff51406042f19cdffe713fe2e8e4a4ad Mon Sep 17 00:00:00 2001 From: rootzoll Date: Mon, 1 Jun 2020 21:01:46 +0200 Subject: [PATCH 116/126] #1231 quickfix: ignore keybase.io https cert --- build_sdcard.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_sdcard.sh b/build_sdcard.sh index 12cb4fb11..780118232 100644 --- a/build_sdcard.sh +++ b/build_sdcard.sh @@ -493,7 +493,7 @@ sudo -u admin wget -N https://github.com/lightningnetwork/lnd/releases/download/ # check if checksums are signed by lnd dev team sudo -u admin wget -N https://github.com/lightningnetwork/lnd/releases/download/v${lndVersion}/manifest-v${lndVersion}.txt.sig -sudo -u admin wget -N -O "pgp_keys.asc" ${PGPpkeys} +sudo -u admin wget --no-check-certificate -N -O "pgp_keys.asc" ${PGPpkeys} gpg ./pgp_keys.asc fingerprint=$(sudo gpg "pgp_keys.asc" 2>/dev/null | grep "${PGPcheck}" -c) if [ ${fingerprint} -lt 1 ]; then From 10b4ef57b3dc36e5a18393e44ba51c121c2c82cb Mon Sep 17 00:00:00 2001 From: rootzoll Date: Mon, 1 Jun 2020 22:03:07 +0200 Subject: [PATCH 117/126] #1231 quick fix also on lnd.update.sh --- home.admin/config.scripts/lnd.update.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/lnd.update.sh b/home.admin/config.scripts/lnd.update.sh index 24e4c4b11..231c97201 100755 --- a/home.admin/config.scripts/lnd.update.sh +++ b/home.admin/config.scripts/lnd.update.sh @@ -143,7 +143,7 @@ if [ "${mode}" = "verified" ]; then echo echo "# check binary was not manipulated (checksum test)" sudo -u admin wget -N https://github.com/lightningnetwork/lnd/releases/download/v${lndUpdateVersion}/manifest-v${lndUpdateVersion}.txt.sig - sudo -u admin wget -N -O "${downloadDir}/pgp_keys.asc" ${lndUpdatePGPpkeys} + sudo -u admin wget --no-check-certificate -N -O "${downloadDir}/pgp_keys.asc" ${lndUpdatePGPpkeys} binaryChecksum=$(sha256sum ${binaryName} | cut -d " " -f1) if [ "${binaryChecksum}" != "${lndSHA256}" ]; then echo "error='checksum not matching'" From a895da84f0a902f3efa138d83c84b845646479b9 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Mon, 1 Jun 2020 22:48:24 +0200 Subject: [PATCH 118/126] better fallback for older lnd versions --- home.admin/config.scripts/lnd.unlock.sh | 53 +++++++++++++++++++------ 1 file changed, 41 insertions(+), 12 deletions(-) diff --git a/home.admin/config.scripts/lnd.unlock.sh b/home.admin/config.scripts/lnd.unlock.sh index a035f643a..74a51708c 100644 --- a/home.admin/config.scripts/lnd.unlock.sh +++ b/home.admin/config.scripts/lnd.unlock.sh @@ -2,10 +2,13 @@ if [ "$1" == "-h" ] || [ "$1" == "help" ]; then echo "script to unlock LND wallet" - echo "lnd.unlock.sh [passwordC]" + echo "lnd.unlock.sh [?passwordC]" exit 1 fi +# 1. parameter +passwordC="$1" + # check if wallet is already unlocked echo "# checking LND wallet ... (can take some time)" walletUnlocked=$(echo "" | sudo -u bitcoin lncli unlock --stdin 2>&1 | grep -c "already unlocked") @@ -14,8 +17,18 @@ if [ ${walletUnlocked} -eq 1 ]; then exit 0 fi -# 1. parameter -passwordC="$1" + +# check if LND is below 0.10 (has no STDIN password option) +fallback=0 +source <(/home/admin/config.scripts/lnd.update.sh info) +if [ ${lndInstalledVersionMajor} -eq 0 ] && [ ${lndInstalledVersionMain} -lt 10 ]; then + if [ ${#passwordC} -gt 0 ]; then + echo "error='lnd version too old'" + exit 1 + else + fallback=1 + fi +fi # if no password check if stored for auto-unlock if [ ${#passwordC} -eq 0 ]; then @@ -28,14 +41,14 @@ fi # if still no password get from user manualEntry=0 -if [ ${#passwordC} -eq 0 ]; then +if [ ${#passwordC} -eq 0 ] && [ ${fallback} -eq 0 ]; then echo "# manual input" manualEntry=1 passwordC=$(whiptail --passwordbox "\nEnter Password C to unlock wallet:\n" 9 52 "" --title " LND Wallet " --backtitle "RaspiBlitz" 3>&1 1>&2 2>&3) fi loopCount=0 -while : +while [ ${fallback} -eq 0 ]: do # TRY TO UNLOCK ... @@ -77,13 +90,8 @@ while : echo "# unkown error" if [ ${manualEntry} -eq 1 ]; then - LND whiptail --title " LND ERROR " --msgbox "${result}" --ok-button "Try CLI" 8 60 - # fall back to direct CLI input - echo "Calling: lncli unlock" - echo "Please re-enter Password C:" - lncli unlock --recovery_window=5000 - exit 1 + fallback=1 else # maybe lncli is waiting to get ready (wait and loop) if [ ${loopCount} -gt 10 ]; then @@ -94,4 +102,25 @@ while : fi fi - done \ No newline at end of file + done + +# FALBACK LND CLI UNLOCK +unlocked=0 +while [ ${unlocked} -eq 0 ]: +do + # do CLI unlock + echo "############################" + echo "Calling: lncli unlock" + echo "Please re-enter Password C:" + lncli unlock --recovery_window=5000 + + # test unlock + walletUnlocked=$(echo "" | sudo -u bitcoin lncli unlock --stdin 2>&1 | grep -c "already unlocked") + if [ ${wasUnlocked} -gt 0 ]; then + echo "# OK LND wallet unlocked" + exit 0 + else + echo "--> Was not able to unlock wallet ... try again or use CTRL-C to exit" + fi + +done \ No newline at end of file From 8ad92c70a611370c0b762dcfb64ddbe0e14de822 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Mon, 1 Jun 2020 22:53:34 +0200 Subject: [PATCH 119/126] syncscript just run --- home.admin/XXsyncScripts.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/home.admin/XXsyncScripts.sh b/home.admin/XXsyncScripts.sh index b7755c249..e313c846f 100755 --- a/home.admin/XXsyncScripts.sh +++ b/home.admin/XXsyncScripts.sh @@ -11,7 +11,7 @@ if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ] || [ "$1" = "-help" ]; echo "FOR DEVELOPMENT USE ONLY!" echo "RaspiBlitz Sync Scripts" echo "XXsyncScripts.sh info" - echo "XXsyncScripts.sh [-clean|-install] branch [repo]" + echo "XXsyncScripts.sh [-run|-clean|-install] branch [repo]" exit 1 fi @@ -33,6 +33,10 @@ fi clean=0 wantedBranch="$1" wantedGitHubUser="$2" +if [ "${wantedBranch}" = "-run" ]; then + wantedBranch="" + wantedGitHubUser="" +fi if [ "${wantedBranch}" = "-clean" ]; then clean=1 wantedBranch="$2" From e25e41793c94df486c0376f2b2153877ec509b78 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Mon, 1 Jun 2020 22:55:09 +0200 Subject: [PATCH 120/126] add simple run --- home.admin/XXsyncScripts.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home.admin/XXsyncScripts.sh b/home.admin/XXsyncScripts.sh index e313c846f..78f773580 100755 --- a/home.admin/XXsyncScripts.sh +++ b/home.admin/XXsyncScripts.sh @@ -34,8 +34,8 @@ clean=0 wantedBranch="$1" wantedGitHubUser="$2" if [ "${wantedBranch}" = "-run" ]; then - wantedBranch="" - wantedGitHubUser="" + wantedBranch="${activeBranch}" + wantedGitHubUser="${activeGitHubUser}" fi if [ "${wantedBranch}" = "-clean" ]; then clean=1 From b1c7a434f9b590bb37d22eb34841021f35341097 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Mon, 1 Jun 2020 22:56:51 +0200 Subject: [PATCH 121/126] adapt PATCH menu to modified XXsyncScripts --- home.admin/99updateMenu.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/99updateMenu.sh b/home.admin/99updateMenu.sh index 46471d648..5628f6346 100644 --- a/home.admin/99updateMenu.sh +++ b/home.admin/99updateMenu.sh @@ -122,7 +122,7 @@ patch() clear case $CHOICE in PATCH) - sudo -u admin /home/admin/XXsyncScripts.sh + sudo -u admin /home/admin/XXsyncScripts.sh -run sleep 4 whiptail --title " Patching/Syncing " --yes-button "Reboot" --no-button "Skip Reboot" --yesno " OK patching/syncing done. From cb57fc4319a1f9c14e1012cb6feb163d25e7beca Mon Sep 17 00:00:00 2001 From: rootzoll Date: Mon, 1 Jun 2020 22:59:07 +0200 Subject: [PATCH 122/126] fix while loop in unlock --- home.admin/config.scripts/lnd.unlock.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/home.admin/config.scripts/lnd.unlock.sh b/home.admin/config.scripts/lnd.unlock.sh index 74a51708c..1e5f4973f 100644 --- a/home.admin/config.scripts/lnd.unlock.sh +++ b/home.admin/config.scripts/lnd.unlock.sh @@ -48,7 +48,7 @@ if [ ${#passwordC} -eq 0 ] && [ ${fallback} -eq 0 ]; then fi loopCount=0 -while [ ${fallback} -eq 0 ]: +while [ ${fallback} -eq 0 ] do # TRY TO UNLOCK ... @@ -106,7 +106,7 @@ while [ ${fallback} -eq 0 ]: # FALBACK LND CLI UNLOCK unlocked=0 -while [ ${unlocked} -eq 0 ]: +while [ ${unlocked} -eq 0 ] do # do CLI unlock echo "############################" @@ -122,5 +122,5 @@ do else echo "--> Was not able to unlock wallet ... try again or use CTRL-C to exit" fi - + done \ No newline at end of file From 954c2bf4058019681b6f81b928b56cbd95129222 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Mon, 1 Jun 2020 23:00:08 +0200 Subject: [PATCH 123/126] small UI on unlock fallback --- home.admin/config.scripts/lnd.unlock.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/home.admin/config.scripts/lnd.unlock.sh b/home.admin/config.scripts/lnd.unlock.sh index 1e5f4973f..917b0ebde 100644 --- a/home.admin/config.scripts/lnd.unlock.sh +++ b/home.admin/config.scripts/lnd.unlock.sh @@ -109,6 +109,7 @@ unlocked=0 while [ ${unlocked} -eq 0 ] do # do CLI unlock + echo echo "############################" echo "Calling: lncli unlock" echo "Please re-enter Password C:" From cc086952193f9f8d4ff5570427dba941d06714d3 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Mon, 1 Jun 2020 23:20:19 +0200 Subject: [PATCH 124/126] use backwards compatible locked detection --- home.admin/10setupBlitz.sh | 6 +++--- home.admin/config.scripts/lnd.unlock.sh | 21 ++++++++++----------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/home.admin/10setupBlitz.sh b/home.admin/10setupBlitz.sh index 4dc35f6cb..7f208eaf8 100755 --- a/home.admin/10setupBlitz.sh +++ b/home.admin/10setupBlitz.sh @@ -55,14 +55,14 @@ if [ ${lndRunning} -eq 1 ]; then # check if LND wallet exists and if locked walletExists=$(sudo ls /mnt/hdd/lnd/data/chain/${network}/${chain}net/wallet.db 2>/dev/null | grep wallet.db -c) - walletUnlocked=1 + walletLocked=0 # only when a wallet exists - it can be locked if [ ${walletExists} -eq 1 ];then echo "lnd wallet exists ... checking if locked" sleep 2 - walletUnlocked=$(echo "" | sudo -u bitcoin lncli unlock --stdin 2>&1 | grep -c "already unlocked") + walletLocked=$(sudo -u bitcoin /usr/local/bin/lncli getinfo 2>&1 | grep -c unlock) fi - if [ ${walletUnlocked} -eq 0 ]; then + if [ ${walletLocked} -gt 0 ]; then # LND wallet is locked /home/admin/config.scripts/lnd.unlock.sh /home/admin/10setupBlitz.sh diff --git a/home.admin/config.scripts/lnd.unlock.sh b/home.admin/config.scripts/lnd.unlock.sh index 917b0ebde..4ab84473b 100644 --- a/home.admin/config.scripts/lnd.unlock.sh +++ b/home.admin/config.scripts/lnd.unlock.sh @@ -11,8 +11,8 @@ passwordC="$1" # check if wallet is already unlocked echo "# checking LND wallet ... (can take some time)" -walletUnlocked=$(echo "" | sudo -u bitcoin lncli unlock --stdin 2>&1 | grep -c "already unlocked") -if [ ${walletUnlocked} -eq 1 ]; then +walletLocked=$(sudo -u bitcoin /usr/local/bin/lncli getinfo 2>&1 | grep -c unlock) +if [ ${walletLocked} -eq 0 ]; then echo "# OK LND wallet was already unlocked" exit 0 fi @@ -82,8 +82,8 @@ while [ ${fallback} -eq 0 ] # UNKOWN RESULT # check if wallet was unlocked anyway - walletUnlocked=$(echo "" | sudo -u bitcoin lncli unlock --stdin 3>&1 1>&2 2>&3 | grep -c "already unlocked") - if [ ${walletUnlocked} -eq 1 ]; then + walletLocked=$(sudo -u bitcoin /usr/local/bin/lncli getinfo 2>&1 | grep -c unlock) + if [ ${walletUnlocked} -eq 0 ]; then echo "# OK LND wallet unlocked" exit 0 fi @@ -105,8 +105,8 @@ while [ ${fallback} -eq 0 ] done # FALBACK LND CLI UNLOCK -unlocked=0 -while [ ${unlocked} -eq 0 ] +walletLocked=1 +while [ ${walletLocked} -gt 0 ] do # do CLI unlock echo @@ -116,12 +116,11 @@ do lncli unlock --recovery_window=5000 # test unlock - walletUnlocked=$(echo "" | sudo -u bitcoin lncli unlock --stdin 2>&1 | grep -c "already unlocked") - if [ ${wasUnlocked} -gt 0 ]; then - echo "# OK LND wallet unlocked" - exit 0 + walletLocked=$(sudo -u bitcoin /usr/local/bin/lncli getinfo 2>&1 | grep -c unlock) + if [ ${walletLocked} -eq 0 ]; then + echo "# --> OK LND wallet unlocked" else - echo "--> Was not able to unlock wallet ... try again or use CTRL-C to exit" + echo "# --> Was not able to unlock wallet ... try again or use CTRL-C to exit" fi done \ No newline at end of file From 6251ca6eea6ba2221a274450746d4eb2259a289a Mon Sep 17 00:00:00 2001 From: rootzoll Date: Mon, 1 Jun 2020 23:52:26 +0200 Subject: [PATCH 125/126] try fix TOR detection --- home.admin/config.scripts/blitz.subscriptions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index b9e5ce022..0cd917673 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -169,7 +169,7 @@ if tag == "NEW1": # check if Blitz is running behind TOR cfg.reload() - if not cfg.run_behind_tor: + if not cfg.run_behind_tor.value: Dialog(dialog="dialog",autowidgetsize=True).msgbox(''' The IP2TOR service just makes sense if you run your RaspiBlitz behind TOR. From 243661548db05f9d3abdf85498c2163ce0734201 Mon Sep 17 00:00:00 2001 From: rootzoll Date: Tue, 2 Jun 2020 00:07:06 +0200 Subject: [PATCH 126/126] handle case if subscriptions file does not exist --- .../blitz.subscriptions.ip2tor.py | 21 +++++++++---------- .../config.scripts/blitz.subscriptions.py | 11 +++++----- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py index 823b20ba7..2ff40e705 100644 --- a/home.admin/config.scripts/blitz.subscriptions.ip2tor.py +++ b/home.admin/config.scripts/blitz.subscriptions.ip2tor.py @@ -931,17 +931,16 @@ if sys.argv[1] == "subscription-by-service": handleException(e) try: - - subs = toml.load(SUBSCRIPTIONS_FILE) - newList = [] - for idx, sub in enumerate(subs['subscriptions_ip2tor']): - if sub['active'] and sub['name'] == servicename: - print("type='{0}'".format(sub['type'])) - print("ip='{0}'".format(sub['ip'])) - print("port='{0}'".format(sub['port'])) - print("tor='{0}'".format(sub['tor'])) - sys.exit(0) - + if os.path.isfile(SUBSCRIPTIONS_FILE): + subs = toml.load(SUBSCRIPTIONS_FILE) + for idx, sub in enumerate(subs['subscriptions_ip2tor']): + if sub['active'] and sub['name'] == servicename: + print("type='{0}'".format(sub['type'])) + print("ip='{0}'".format(sub['ip'])) + print("port='{0}'".format(sub['port'])) + print("tor='{0}'".format(sub['tor'])) + sys.exit(0) + print("error='not found'") sys.exit(0) diff --git a/home.admin/config.scripts/blitz.subscriptions.py b/home.admin/config.scripts/blitz.subscriptions.py index 0cd917673..5a0ea5c86 100644 --- a/home.admin/config.scripts/blitz.subscriptions.py +++ b/home.admin/config.scripts/blitz.subscriptions.py @@ -180,11 +180,12 @@ your RaspiBlitz behind TOR. lnd_rest_api=False lnd_grpc_api=False try: - subs = toml.load(SUBSCRIPTIONS_FILE) - for sub in subs['subscriptions_ip2tor']: - if not sub['active']: next - if sub['active'] and sub['name'] == LND_REST_API: lnd_rest_api=True - if sub['active'] and sub['name'] == LND_GRPC_API: lnd_grpc_api=True + if os.path.isfile(SUBSCRIPTIONS_FILE): + subs = toml.load(SUBSCRIPTIONS_FILE) + for sub in subs['subscriptions_ip2tor']: + if not sub['active']: next + if sub['active'] and sub['name'] == LND_REST_API: lnd_rest_api=True + if sub['active'] and sub['name'] == LND_GRPC_API: lnd_grpc_api=True except Exception as e: print(e)