From 6fc598a06bcd2561291d669c25857f02f7b796d2 Mon Sep 17 00:00:00 2001 From: Taylor Helsper Date: Thu, 11 Feb 2021 22:25:05 -0600 Subject: [PATCH] Add CKBunker v0.9 (beta) --- SYSTEM_NOTES.md | 13 +- .../nginx/sites-enabled/https_ckbunker.conf | 23 ++++ .../usr/share/mynode/ckbunker_settings.yaml | 2 +- rootfs/standard/var/www/mynode/api.py | 4 + rootfs/standard/var/www/mynode/device_info.py | 24 ++++ .../www/mynode/enable_disable_functions.py | 20 +++ rootfs/standard/var/www/mynode/mynode.py | 34 ++++- .../var/www/mynode/static/css/mynode.css | 30 ++--- .../var/www/mynode/static/css/mynode_dark.css | 1 - .../var/www/mynode/static/images/beta.png | Bin 0 -> 6337 bytes .../var/www/mynode/static/images/ckbunker.png | Bin 0 -> 21978 bytes .../var/www/mynode/static/images/sphinx.png | Bin 0 -> 43947 bytes .../www/mynode/templates/includes/apps.html | 119 ++++++++++-------- .../includes/main_page_messages.html | 2 +- .../mynode/templates/includes/services.html | 12 +- .../var/www/mynode/templates/main.html | 35 +++++- .../var/www/mynode/thread_functions.py | 2 +- 17 files changed, 236 insertions(+), 85 deletions(-) create mode 100644 rootfs/standard/etc/nginx/sites-enabled/https_ckbunker.conf create mode 100644 rootfs/standard/var/www/mynode/static/images/beta.png create mode 100644 rootfs/standard/var/www/mynode/static/images/ckbunker.png create mode 100644 rootfs/standard/var/www/mynode/static/images/sphinx.png diff --git a/SYSTEM_NOTES.md b/SYSTEM_NOTES.md index e435bdcc..c4eca5a6 100644 --- a/SYSTEM_NOTES.md +++ b/SYSTEM_NOTES.md @@ -1,6 +1,6 @@ # myNode System Notes -Various restrictions and behaviors of myNode and the various applications will be documented below. +Various restrictions and behaviors of myNode and the various applications are documented below. ## Thunderhub @@ -8,4 +8,13 @@ Various restrictions and behaviors of myNode and the various applications will b ## BTC Pay Server -- The upgrade button within BTC Pay Server will not work on myNode. Upgrades are performed as part of the myNode upgrade process. \ No newline at end of file +- The upgrade button within BTC Pay Server will not work on myNode. Upgrades are performed as part of the myNode upgrade process. + +## CKBunker + +- On some occasions, the CKBunker application will stop detecting a ColdCard that has been attached for a significant period of time. +-- Workaround: Run these commands as root. + echo 0 > /sys/bus/usb/devices//authorized + echo 1 > /sys/bus/usb/devices//authorized +- CKBunker uses a separate password that starts as "bolt" and can be updated within the app +- The password is stored in plaintext on the myNode drive \ No newline at end of file diff --git a/rootfs/standard/etc/nginx/sites-enabled/https_ckbunker.conf b/rootfs/standard/etc/nginx/sites-enabled/https_ckbunker.conf new file mode 100644 index 00000000..46d483ca --- /dev/null +++ b/rootfs/standard/etc/nginx/sites-enabled/https_ckbunker.conf @@ -0,0 +1,23 @@ +server { + listen 9824 ssl; + server_name ckbunker; + + include /etc/nginx/mynode/mynode_ssl_params.conf; + include /etc/nginx/mynode/mynode_ssl_cert_key.conf; + + access_log /var/log/nginx/access_ckbunker.log; + error_log /var/log/nginx/error_ckbunker.log; + + location / { + proxy_pass http://127.0.0.1:9823; + + include /etc/nginx/mynode/mynode_ssl_proxy_params.conf; + } + location /websocket { + proxy_pass http://127.0.0.1:9823/websocket; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + proxy_set_header Host $host; + } +} \ No newline at end of file diff --git a/rootfs/standard/usr/share/mynode/ckbunker_settings.yaml b/rootfs/standard/usr/share/mynode/ckbunker_settings.yaml index 7c4a6334..df05e280 100644 --- a/rootfs/standard/usr/share/mynode/ckbunker_settings.yaml +++ b/rootfs/standard/usr/share/mynode/ckbunker_settings.yaml @@ -1,7 +1,7 @@ ALLOW_REBOOTS: true DATA_FILES: /mnt/hdd/mynode/ckbunker EASY_CAPTCHA: false -#EXPLORA: http://explorerzydxu5ecjrkwceayqybizmpjjznk5izmitf2modhcusuqlid.onion +EXPLORA: http://explorerzydxu5ecjrkwceayqybizmpjjznk5izmitf2modhcusuqlid.onion MASTER_PW: bolt MAX_IDLE_TIME: 600 MAX_LOGIN_WAIT_TIME: 300 diff --git a/rootfs/standard/var/www/mynode/api.py b/rootfs/standard/var/www/mynode/api.py index 66f3a071..ba597f11 100644 --- a/rootfs/standard/var/www/mynode/api.py +++ b/rootfs/standard/var/www/mynode/api.py @@ -93,6 +93,10 @@ def api_get_service_status(): data["status"], data["color"] = get_lnbits_status_and_color() elif service == "thunderhub": data["status"], data["color"] = get_thunderhub_status_and_color() + elif service == "ckbunker": + data["status"], data["color"] = get_ckbunker_status_and_color() + elif service == "sphinxrelay": + data["status"], data["color"] = get_sphinxrelay_status_and_color() elif service == "tor": data["status"] = "Private Connections" data["color"] = get_service_status_color("tor@default") diff --git a/rootfs/standard/var/www/mynode/device_info.py b/rootfs/standard/var/www/mynode/device_info.py index 7f8f7404..6916ac4d 100644 --- a/rootfs/standard/var/www/mynode/device_info.py +++ b/rootfs/standard/var/www/mynode/device_info.py @@ -565,6 +565,30 @@ def get_thunderhub_status_and_color(): status = "Waiting on LND..." return status,color +def get_ckbunker_status_and_color(): + status = "Coldcard Signing Tool" + color = "gray" + if is_bitcoind_synced(): + if is_ckbunker_enabled(): + color = get_service_status_color("lndhub") + else: + status = "Waiting on Bitcoin..." + return status,color + +def get_sphinxrelay_status_and_color(): + color = "gray" + status = "Chat" + if is_lnd_ready(): + if is_sphinxrelay_enabled(): + status_code = get_service_status_code("sphinxrelay") + if status_code != 0: + color = "red" + else: + color = "green" + else: + status = "Waiting on LND..." + return status,color + def get_lndhub_status_and_color(): status = "BlueWallet Backend" color = "gray" diff --git a/rootfs/standard/var/www/mynode/enable_disable_functions.py b/rootfs/standard/var/www/mynode/enable_disable_functions.py index dca91912..75ef27f2 100644 --- a/rootfs/standard/var/www/mynode/enable_disable_functions.py +++ b/rootfs/standard/var/www/mynode/enable_disable_functions.py @@ -71,6 +71,26 @@ def disable_thunderhub(): os.system("systemctl disable thunderhub --no-pager") +def is_ckbunker_enabled(): + return is_service_enabled("ckbunker") +def enable_ckbunker(): + os.system("systemctl enable ckbunker --no-pager") + os.system("systemctl start ckbunker --no-pager") +def disable_ckbunker(): + os.system("systemctl stop ckbunker --no-pager") + os.system("systemctl disable ckbunker --no-pager") + + +def is_sphinxrelay_enabled(): + return is_service_enabled("thunderhub") +def enable_sphinxrelay(): + os.system("systemctl enable sphinx-relay --no-pager") + os.system("systemctl start sphinx-relay --no-pager") +def disable_sphinxrelay(): + os.system("systemctl stop sphinx-relay --no-pager") + os.system("systemctl disable sphinx-relay --no-pager") + + def is_btcrpcexplorer_enabled(): if os.path.isfile(BTCRPCEXPLORER_ENABLED_FILE): return True diff --git a/rootfs/standard/var/www/mynode/mynode.py b/rootfs/standard/var/www/mynode/mynode.py index a9950740..8f1b37d8 100644 --- a/rootfs/standard/var/www/mynode/mynode.py +++ b/rootfs/standard/var/www/mynode/mynode.py @@ -486,6 +486,12 @@ def index(): # Find Thunderhub status thunderhub_status, thunderhub_status_color = get_thunderhub_status_and_color() + # Find CKBunker status + ckbunker_status, ckbunker_status_color = get_ckbunker_status_and_color() + + # Find Sphinx Relay status + sphinxrelay_status, sphinxrelay_status_color = get_sphinxrelay_status_and_color() + # Find electrs status electrs_status, electrs_status_color = get_electrs_status_and_color() @@ -562,6 +568,12 @@ def index(): "thunderhub_status_color": thunderhub_status_color, "thunderhub_status": thunderhub_status, "thunderhub_enabled": is_thunderhub_enabled(), + "ckbunker_status_color": ckbunker_status_color, + "ckbunker_status": ckbunker_status, + "ckbunker_enabled": is_ckbunker_enabled(), + "sphinxrelay_status_color": sphinxrelay_status_color, + "sphinxrelay_status": sphinxrelay_status, + "sphinxrelay_enabled": is_sphinxrelay_enabled(), "lndhub_status_color": lndhub_status_color, "lndhub_status": lndhub_status, "lndhub_enabled": is_lndhub_enabled(), @@ -683,6 +695,24 @@ def page_toggle_thunderhub(): enable_thunderhub() return redirect("/") +@app.route("/toggle-ckbunker") +def page_toggle_ckbunker(): + check_logged_in() + if is_ckbunker_enabled(): + disable_ckbunker() + else: + enable_ckbunker() + return redirect("/") + +@app.route("/toggle-sphinxrelay") +def page_toggle_sphinxrelay(): + check_logged_in() + if is_sphinxrelay_enabled(): + disable_sphinxrelay() + else: + enable_sphinxrelay() + return redirect("/") + @app.route("/toggle-electrs") def page_toggle_electrs(): check_logged_in() @@ -921,10 +951,10 @@ def start_threads(): app.logger.info("STARTING THREADS") # Start threads - btc_thread1 = BackgroundThread(update_bitcoin_main_info_thread, 10) + btc_thread1 = BackgroundThread(update_bitcoin_main_info_thread, 15) btc_thread1.start() threads.append(btc_thread1) - btc_thread2 = BackgroundThread(update_bitcoin_other_info_thread, 30) + btc_thread2 = BackgroundThread(update_bitcoin_other_info_thread, 60) btc_thread2.start() threads.append(btc_thread2) electrs_info_thread = BackgroundThread(update_electrs_info_thread, 60) diff --git a/rootfs/standard/var/www/mynode/static/css/mynode.css b/rootfs/standard/var/www/mynode/static/css/mynode.css index e7d7c817..2440b361 100644 --- a/rootfs/standard/var/www/mynode/static/css/mynode.css +++ b/rootfs/standard/var/www/mynode/static/css/mynode.css @@ -197,7 +197,7 @@ td { position: relative; border: none; border-radius: 10px; - width: 300px; + width: 385px; height: 180px; padding: 10px; margin: 6px 10px 6px 10px; @@ -209,7 +209,7 @@ td { position: relative; border: none; border-radius: 10px; - width: 640px; + width: 810px; height: 120px; padding: 10px; margin: 6px 10px 6px 10px; @@ -308,6 +308,13 @@ td { font-size: 12px; line-height: 130%; } +.app_beta_tag_image { + width: 40px; + height: 40px; + position: absolute; + left: 110px; + top: 0px; +} .app_contents { font-size: 12px; position: absolute; @@ -532,7 +539,7 @@ a:link.ui-button, a:visited.ui-button, .ui-button { color: #333333; border: 3px solid orange; background-color: rgb(255, 250, 238); - width: 600px; + width: 800px; border-radius: 25px; text-align: justify; display: block; @@ -546,7 +553,7 @@ a:link.ui-button, a:visited.ui-button, .ui-button { color: #333333; border: 3px solid red; background-color: rgb(255, 238, 238); - width: 600px; + width: 800px; border-radius: 25px; text-align: justify; display: block; @@ -562,21 +569,6 @@ a:link.ui-button, a:visited.ui-button, .ui-button { text-align: center; } -.upgrade_ad_main_page { - color: #333333; - border: 3px solid orange; - background-color: rgb(255, 250, 238); - width: 600px; - border-radius: 25px; - text-align: justify; - display: block; - font-size: 12px; - padding: 5px; - padding-left: 12px; - margin: auto; - margin-bottom: 20px; -} - .port_forwarded_icon { width: 26px; height: 24px; diff --git a/rootfs/standard/var/www/mynode/static/css/mynode_dark.css b/rootfs/standard/var/www/mynode/static/css/mynode_dark.css index 21fc9b4e..883a9923 100644 --- a/rootfs/standard/var/www/mynode/static/css/mynode_dark.css +++ b/rootfs/standard/var/www/mynode/static/css/mynode_dark.css @@ -94,7 +94,6 @@ td { } .main_page_warning_block, -.upgrade_ad_main_page, .halving_message_main_page { color: #eee; border: 3px solid #f9c132; diff --git a/rootfs/standard/var/www/mynode/static/images/beta.png b/rootfs/standard/var/www/mynode/static/images/beta.png new file mode 100644 index 0000000000000000000000000000000000000000..eadf0711d067bae20ed9222bd0fe84aef6e14cb1 GIT binary patch literal 6337 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 literal 0 HcmV?d00001 diff --git a/rootfs/standard/var/www/mynode/templates/includes/apps.html b/rootfs/standard/var/www/mynode/templates/includes/apps.html index d031264b..5e73570d 100644 --- a/rootfs/standard/var/www/mynode/templates/includes/apps.html +++ b/rootfs/standard/var/www/mynode/templates/includes/apps.html @@ -1,4 +1,6 @@
Apps
+ +
@@ -48,6 +50,26 @@ {% endif %}
+
+
+ +
Mempool
+
{{ mempoolspace_status }}
+
+ {% if product_key_skipped %} + Premium Feature + {% else %} + {% if not is_installing_docker_images %} + {% if mempoolspace_enabled %} + View + Disable + {% else %} + Enable + {% endif %} + {% endif %} + {% endif %} +
+
@@ -62,21 +84,10 @@ {% endif %}
- + +
@@ -133,20 +144,40 @@
{% endif %}
-
- -
Mempool
-
{{ mempoolspace_status }}
+
+ +
Thunderhub
+
{{ thunderhub_status }}
{% if product_key_skipped %} Premium Feature {% else %} - {% if not is_installing_docker_images %} - {% if mempoolspace_enabled %} - View - Disable + {% if lnd_ready %} + {% if thunderhub_enabled %} + Thunderhub + Disable {% else %} - Enable + Enable + {% endif %} + {% endif %} + {% endif %} +
+
+
+
+ +
LNbits
+
{{ lnbits_status }}
+
+ {% if product_key_skipped %} + Premium Feature + {% else %} + {% if lnd_ready %} + {% if lnbits_enabled %} + LNbits + Disable + {% else %} + Enable {% endif %} {% endif %} {% endif %} @@ -154,6 +185,8 @@
+ +
@@ -192,41 +225,21 @@
-
- -
LNbits
-
{{ lnbits_status }}
+
+ + + +
CKBunker
+
{{ ckbunker_status }}
{% if product_key_skipped %} Premium Feature {% else %} - {% if lnd_ready %} - {% if lnbits_enabled %} - LNbits - Disable - {% else %} - Enable - {% endif %} - {% endif %} - {% endif %} -
-
-
-
- -
Thunderhub
-
{{ thunderhub_status }}
-
- {% if product_key_skipped %} - Premium Feature - {% else %} - {% if lnd_ready %} - {% if thunderhub_enabled %} - Thunderhub - Disable - {% else %} - Enable - {% endif %} + {% if ckbunker_enabled %} + CKBunker + Disable + {% else %} + Enable {% endif %} {% endif %}
diff --git a/rootfs/standard/var/www/mynode/templates/includes/main_page_messages.html b/rootfs/standard/var/www/mynode/templates/includes/main_page_messages.html index b77282ef..4f4e154c 100644 --- a/rootfs/standard/var/www/mynode/templates/includes/main_page_messages.html +++ b/rootfs/standard/var/www/mynode/templates/includes/main_page_messages.html @@ -27,7 +27,7 @@ {% endif %} {% if not has_changed_password %} -
+

Warning!
You appear to be using the default password! You should change it to something else on the settings page.

{% endif %} diff --git a/rootfs/standard/var/www/mynode/templates/includes/services.html b/rootfs/standard/var/www/mynode/templates/includes/services.html index 1e93e8a7..28bcac38 100644 --- a/rootfs/standard/var/www/mynode/templates/includes/services.html +++ b/rootfs/standard/var/www/mynode/templates/includes/services.html @@ -10,7 +10,7 @@ Manage
-
+
@@ -50,7 +50,7 @@ Manage -
+
Height
@@ -131,6 +131,14 @@
???
+
+
+
0.00 MB
+
0 TXs
+
999 min ago
+
+
???
+
\ No newline at end of file diff --git a/rootfs/standard/var/www/mynode/templates/main.html b/rootfs/standard/var/www/mynode/templates/main.html index 4be25daf..9a1ed3c2 100644 --- a/rootfs/standard/var/www/mynode/templates/main.html +++ b/rootfs/standard/var/www/mynode/templates/main.html @@ -156,6 +156,14 @@ update_status("thunderhub_status", data); update_status_icon("thunderhub_status_icon", data); }); + $.getJSON("/api/get_service_status?service=ckbunker", function( data ) { + update_status("ckbunker_status", data); + update_status_icon("ckbunker_status_icon", data); + }); + $.getJSON("/api/get_service_status?service=sphinxrelay", function( data ) { + update_status("sphinxrelay_status", data); + update_status_icon("sphinxrelay_status_icon", data); + }); $.getJSON("/api/get_service_status?service=tor", function( data ) { update_status("tor_status", data); update_status_icon("tor_status_icon", data); @@ -245,6 +253,19 @@ window.open(url,'_blank'); }) + $("#ckbunker").on("click", function() { + port="9823" + if (location.protocol == "https:") { + port="9824" + } + url = location.protocol+'//'+location.hostname+':'+port + window.open(url,'_blank'); + }) + + $("#sphinxrelay").on("click", function() { + alert("TODO???") + }) + $("#btcrpcexplorer").on("click", function() { port="3002" if (location.protocol == "https:") { @@ -349,6 +370,14 @@ window.location.href="/toggle-thunderhub" }); + $("#toggle-ckbunker").on("click", function() { + window.location.href="/toggle-ckbunker" + }); + + $("#toggle-sphinxrelay").on("click", function() { + window.location.href="/toggle-sphinxrelay" + }); + function lndconnect() { $("#lndconnect_form").submit(); lndconnect_dialog.dialog( "close" ); @@ -413,7 +442,7 @@
{% if upgrade_available %} - upgrade available  + upgrade  {% endif %}   @@ -446,7 +475,7 @@ {% if product_key_skipped %}
Community Edition
-
+

You are currently running myNode Community Edition. Upgrading to myNode Premium provides:
@@ -518,7 +547,7 @@

{% if product_key_skipped %} -
+

Tip Address
bc1q75z4fj946pqucfu9gasxdrzma0z4seh8f58sfd

{% endif %} diff --git a/rootfs/standard/var/www/mynode/thread_functions.py b/rootfs/standard/var/www/mynode/thread_functions.py index fb5aa5bb..66342f20 100644 --- a/rootfs/standard/var/www/mynode/thread_functions.py +++ b/rootfs/standard/var/www/mynode/thread_functions.py @@ -100,7 +100,7 @@ def update_bitcoin_main_info_thread(): bitcoin_block_height = get_bitcoin_block_height() mynode_block_height = get_mynode_block_height() remaining = bitcoin_block_height - mynode_block_height - if remaining == 0 and bitcoin_block_height > 630000: + if remaining == 0 and bitcoin_block_height > 670000: if not os.path.isfile(BITCOIN_SYNCED_FILE): open(BITCOIN_SYNCED_FILE, 'a').close() # touch file elif remaining > 18:
Peers