Dark mode feature (#16)

* added toggle dark mode button on settings page, new logo and CSS file for dark mode

* change colors of settings_input for dark mode

* added the dark_mode flag in every templateData (very painfully)

* Using ui.json to store all UI settings, darkmode implementation is cleaner

* moved all CSS and JS links to head.html; imported ui_settigns appropriately; created dark version of bitcoind CSS

* subheader color on lnd page

* save ui.json on both HDD and mynode for redundancy

* use head and logo template in new config and login pages

* add ui_settings to templateData for new login and config pages

* avoid repeating CSS for dark theme

* change colors of config textarea

* wrap ui setting hdd write in TRY/except

* group similar CSS commands
This commit is contained in:
Abhishek Shandilya 2019-11-09 12:17:53 -05:00 committed by Taylor Helsper
parent d586997ab9
commit b09d322331
46 changed files with 412 additions and 378 deletions

View File

@ -1,6 +1,7 @@
from flask import Blueprint, render_template, session, abort, Markup, request, redirect from flask import Blueprint, render_template, session, abort, Markup, request, redirect
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
from pprint import pprint, pformat from pprint import pprint, pformat
from settings import read_ui_settings
from user_management import check_logged_in from user_management import check_logged_in
import json import json
import time import time
@ -34,6 +35,7 @@ def bitcoincli():
# Load page # Load page
templateData = { templateData = {
"title": "myNode Bitcoin CLI" "title": "myNode Bitcoin CLI",
"ui_settings": read_ui_settings()
} }
return render_template('bitcoin_cli.html', **templateData) return render_template('bitcoin_cli.html', **templateData)

View File

@ -6,6 +6,7 @@ from device_info import *
#from bitcoin.wallet import * #from bitcoin.wallet import *
from subprocess import check_output, check_call from subprocess import check_output, check_call
from electrum_functions import * from electrum_functions import *
from settings import read_ui_settings
from user_management import check_logged_in from user_management import check_logged_in
import socket import socket
import hashlib import hashlib
@ -158,7 +159,8 @@ def bitcoind_status_page():
except Exception as e: except Exception as e:
templateData = { templateData = {
"title": "myNode Bitcoin Error", "title": "myNode Bitcoin Error",
"message": Markup("Error communicating with bitcoind. Node may be busy syncing.<br/><br/>{}".format(str(e))) "message": Markup("Error communicating with bitcoind. Node may be busy syncing.<br/><br/>{}".format(str(e))),
"ui_settings": read_ui_settings()
} }
return render_template('bitcoind_status_error.html', **templateData) return render_template('bitcoind_status_error.html', **templateData)
@ -173,7 +175,8 @@ def bitcoind_status_page():
"disk_size": (int(info["size_on_disk"]) / 1000 / 1000 / 1000), "disk_size": (int(info["size_on_disk"]) / 1000 / 1000 / 1000),
"mempool_tx": mempool["size"], "mempool_tx": mempool["size"],
"mempool_size": "{:.3} MB".format(float(mempool["bytes"]) / 1000 / 1000), "mempool_size": "{:.3} MB".format(float(mempool["bytes"]) / 1000 / 1000),
"version": version "version": version,
"ui_settings": read_ui_settings()
} }
return render_template('bitcoind_status.html', **templateData) return render_template('bitcoind_status.html', **templateData)
@ -212,7 +215,8 @@ def bitcoind_config_page():
templateData = { templateData = {
"title": "myNode Reboot", "title": "myNode Reboot",
"header_text": "Restarting", "header_text": "Restarting",
"subheader_text": "This will take several minutes..." "subheader_text": "This will take several minutes...",
"ui_settings": read_ui_settings()
} }
return render_template('reboot.html', **templateData) return render_template('reboot.html', **templateData)
@ -222,7 +226,8 @@ def bitcoind_config_page():
templateData = { templateData = {
"title": "myNode Bitcoin Config", "title": "myNode Bitcoin Config",
"bitcoin_config": bitcoin_config "bitcoin_config": bitcoin_config,
"ui_settings": read_ui_settings()
} }
return render_template('bitcoind_config.html', **templateData) return render_template('bitcoind_config.html', **templateData)
@ -251,7 +256,8 @@ def bitcoind_explorer_page():
templateData = { templateData = {
"title": "myNode Bitcoin Error", "title": "myNode Bitcoin Error",
"message": Markup("Error communicating with bitcoind. Node may be busy syncing.<br/><br/>{}".format(str(e))), "message": Markup("Error communicating with bitcoind. Node may be busy syncing.<br/><br/>{}".format(str(e))),
"back_url": "/" "back_url": "/",
"ui_settings": read_ui_settings()
} }
return render_template('bitcoind_error.html', **templateData) return render_template('bitcoind_error.html', **templateData)
@ -264,7 +270,8 @@ def bitcoind_explorer_page():
"header_num": info["headers"], "header_num": info["headers"],
"disk_size": (int(info["size_on_disk"]) / 1000 / 1000 / 1000), "disk_size": (int(info["size_on_disk"]) / 1000 / 1000 / 1000),
"mempool_tx": mempool["size"], "mempool_tx": mempool["size"],
"mempool_size": "{:.3} MB".format(float(mempool["bytes"]) / 1000 / 1000) "mempool_size": "{:.3} MB".format(float(mempool["bytes"]) / 1000 / 1000),
"ui_settings": read_ui_settings()
} }
return render_template('bitcoind_explorer.html', **templateData) return render_template('bitcoind_explorer.html', **templateData)
@ -286,19 +293,22 @@ def search_page():
elif results["type"] == "not_found": elif results["type"] == "not_found":
templateData = { templateData = {
"title": "myNode BTC Bitcoin Error", "title": "myNode BTC Bitcoin Error",
"message": Markup("Not Found<br/>{}".format(request.form['search'])) "message": Markup("Not Found<br/>{}".format(request.form['search'])),
"ui_settings": read_ui_settings()
} }
return render_template('bitcoind_error.html', **templateData) return render_template('bitcoind_error.html', **templateData)
elif results["type"] == "error": elif results["type"] == "error":
templateData = { templateData = {
"title": "myNode Bitcoin Error", "title": "myNode Bitcoin Error",
"message": Markup("Error<br/>{}".format(results["error_message"])) "message": Markup("Error<br/>{}".format(results["error_message"])),
"ui_settings": read_ui_settings()
} }
return render_template('bitcoind_error.html', **templateData) return render_template('bitcoind_error.html', **templateData)
templateData = { templateData = {
"title": "myNode Bitcoin Error", "title": "myNode Bitcoin Error",
"message": Markup("Error - unknown return: {}".format(results["type"])), "message": Markup("Error - unknown return: {}".format(results["type"])),
"ui_settings": read_ui_settings()
} }
return render_template('bitcoind_error.html', **templateData) return render_template('bitcoind_error.html', **templateData)
@ -360,13 +370,15 @@ def tx_page(txid):
"block_date": block_date, "block_date": block_date,
"total": total, "total": total,
"inputs": inputs, "inputs": inputs,
"outputs": outputs "outputs": outputs,
"ui_settings": read_ui_settings()
} }
return render_template('bitcoind_tx.html', **templateData) return render_template('bitcoind_tx.html', **templateData)
except Exception as e: except Exception as e:
templateData = { templateData = {
"title": "myNode Bitcoin Error", "title": "myNode Bitcoin Error",
"message": Markup("Error retreiving or parsing transaction.<br/><br/>{}".format(str(e))) "message": Markup("Error retreiving or parsing transaction.<br/><br/>{}".format(str(e))),
"ui_settings": read_ui_settings()
} }
return render_template('bitcoind_error.html', **templateData) return render_template('bitcoind_error.html', **templateData)
@ -399,14 +411,16 @@ def block_page(block_hash):
"difficulty": "{:.3g}".format(block["difficulty"]), "difficulty": "{:.3g}".format(block["difficulty"]),
"size": int(block["size"] / 1000), "size": int(block["size"] / 1000),
"date": tstring, "date": tstring,
"txs": txs "txs": txs,
"ui_settings": read_ui_settings()
} }
return render_template('bitcoind_block.html', **templateData) return render_template('bitcoind_block.html', **templateData)
except Exception as e: except Exception as e:
templateData = { templateData = {
"title": "myNode Bitcoin Error", "title": "myNode Bitcoin Error",
"message": Markup("Error communicating with bitcoind. Node may be busy syncing.<br/><br/>{}".format(str(e))), "message": Markup("Error communicating with bitcoind. Node may be busy syncing.<br/><br/>{}".format(str(e))),
"back_url": "/bitcoind" "back_url": "/bitcoind",
"ui_settings": read_ui_settings()
} }
return render_template('bitcoind_error.html', **templateData) return render_template('bitcoind_error.html', **templateData)
@ -446,13 +460,15 @@ def address_page(addr):
"address": addr, "address": addr,
"confirmed_balance": confirmed_bal, "confirmed_balance": confirmed_bal,
"unconfirmed_balance": unconfirmed_bal, "unconfirmed_balance": unconfirmed_bal,
"txs": txs "txs": txs,
"ui_settings": read_ui_settings()
} }
return render_template('bitcoind_address.html', **templateData) return render_template('bitcoind_address.html', **templateData)
except Exception as e: except Exception as e:
templateData = { templateData = {
"title": "myNode Bitcoin Error", "title": "myNode Bitcoin Error",
"message": Markup("Error communicating with bitcoind. Node may be busy syncing.<br/><br/>{}".format(str(e))), "message": Markup("Error communicating with bitcoind. Node may be busy syncing.<br/><br/>{}".format(str(e))),
"back_url": "/bitcoind" "back_url": "/bitcoind",
"ui_settings": read_ui_settings()
} }
return render_template('bitcoind_error.html', **templateData) return render_template('bitcoind_error.html', **templateData)

View File

@ -123,6 +123,7 @@ def electrum_server_page():
"electrs_command": electrs_command, "electrs_command": electrs_command,
"electrs_onion_hostname": electrs_onion_hostname, "electrs_onion_hostname": electrs_onion_hostname,
"electrs_onion_password": electrs_onion_password, "electrs_onion_password": electrs_onion_password,
"electrs_onion_command": electrs_onion_command "electrs_onion_command": electrs_onion_command,
"ui_settings": {'darkmode': False}
} }
return render_template('electrum_server.html', **templateData) return render_template('electrum_server.html', **templateData)

View File

@ -3,7 +3,7 @@ from pprint import pprint, pformat
from threading import Timer from threading import Timer
from bitcoin_info import * from bitcoin_info import *
from lightning_info import * from lightning_info import *
from settings import reboot_device from settings import reboot_device, read_ui_settings
from device_info import * from device_info import *
from user_management import check_logged_in from user_management import check_logged_in
import base64 import base64
@ -62,7 +62,8 @@ def page_lnd():
"wallet_exists": wallet_exists, "wallet_exists": wallet_exists,
"wallet_logged_in": wallet_logged_in, "wallet_logged_in": wallet_logged_in,
"version": get_lnd_version(), "version": get_lnd_version(),
"status": status "status": status,
"ui_settings": read_ui_settings()
} }
return render_template('lnd.html', **templateData) return render_template('lnd.html', **templateData)
@ -72,7 +73,8 @@ def page_lnd():
"wallet_exists": wallet_exists, "wallet_exists": wallet_exists,
"wallet_logged_in": wallet_logged_in, "wallet_logged_in": wallet_logged_in,
"status": get_lnd_status(), "status": get_lnd_status(),
"version": get_lnd_version() "version": get_lnd_version(),
"ui_settings": read_ui_settings()
} }
return render_template('lnd.html', **templateData) return render_template('lnd.html', **templateData)
@ -97,7 +99,8 @@ def page_lnd():
except Exception as e: except Exception as e:
templateData = { templateData = {
"title": "myNode Lightning Status", "title": "myNode Lightning Status",
"message": str(e) "message": str(e),
"ui_settings": read_ui_settings()
} }
return render_template('lnd_error.html', **templateData) return render_template('lnd_error.html', **templateData)
@ -116,7 +119,8 @@ def page_lnd():
"num_inactive_channels": num_inactive_channels, "num_inactive_channels": num_inactive_channels,
"pubkey": pubkey, "pubkey": pubkey,
"uri": uri, "uri": uri,
"ip": ip "ip": ip,
"ui_settings": read_ui_settings()
} }
return render_template('lnd.html', **templateData) return render_template('lnd.html', **templateData)
@ -153,13 +157,15 @@ def page_lnd_create_wallet():
except: except:
templateData = { templateData = {
"title": "myNode Lightning Wallet", "title": "myNode Lightning Wallet",
"message": Markup("Waiting on lnd...<br/>Please try again in a minute.") "message": Markup("Waiting on lnd...<br/>Please try again in a minute."),
"ui_settings": read_ui_settings()
} }
return render_template('lnd_error.html', **templateData) return render_template('lnd_error.html', **templateData)
templateData = { templateData = {
"title": "myNode Lightning Wallet", "title": "myNode Lightning Wallet",
"seed": seed "seed": seed,
"ui_settings": read_ui_settings()
} }
return render_template('lnd_wallet_create.html', **templateData) return render_template('lnd_wallet_create.html', **templateData)
@ -171,6 +177,7 @@ def page_lnd_create_wallet_with_seed():
if request.method == 'GET': if request.method == 'GET':
templateData = { templateData = {
"title": "myNode Lightning Wallet", "title": "myNode Lightning Wallet",
"ui_settings": read_ui_settings()
} }
return render_template('lnd_wallet_create_with_seed.html', **templateData) return render_template('lnd_wallet_create_with_seed.html', **templateData)
@ -193,6 +200,7 @@ def page_lnd_create_wallet_confirm():
if request.method == 'GET': if request.method == 'GET':
templateData = { templateData = {
"title": "myNode Lightning Wallet", "title": "myNode Lightning Wallet",
"ui_settings": read_ui_settings()
} }
return render_template('lnd_wallet_create_confirm.html', **templateData) return render_template('lnd_wallet_create_confirm.html', **templateData)
@ -259,7 +267,8 @@ def page_lnd_lndconnect():
"lndconnect_local_grpc_img": lndconnect_local_grpc_img, "lndconnect_local_grpc_img": lndconnect_local_grpc_img,
"lndconnect_local_rest_img": lndconnect_local_rest_img, "lndconnect_local_rest_img": lndconnect_local_rest_img,
"lndconnect_tor_grpc_img": lndconnect_tor_grpc_img, "lndconnect_tor_grpc_img": lndconnect_tor_grpc_img,
"lndconnect_tor_rest_img": lndconnect_tor_rest_img "lndconnect_tor_rest_img": lndconnect_tor_rest_img,
"ui_settings": read_ui_settings()
} }
return render_template('lndconnect.html', **templateData) return render_template('lndconnect.html', **templateData)
@ -296,7 +305,8 @@ def page_lnd_change_alias():
templateData = { templateData = {
"title": "myNode Reboot", "title": "myNode Reboot",
"header_text": "Restarting", "header_text": "Restarting",
"subheader_text": "This will take several minutes..." "subheader_text": "This will take several minutes...",
"ui_settings": read_ui_settings()
} }
return render_template('reboot.html', **templateData) return render_template('reboot.html', **templateData)
@ -314,7 +324,8 @@ def lnd_reset_config_page():
templateData = { templateData = {
"title": "myNode Reboot", "title": "myNode Reboot",
"header_text": "Restarting", "header_text": "Restarting",
"subheader_text": "This will take several minutes..." "subheader_text": "This will take several minutes...",
"ui_settings": read_ui_settings()
} }
return render_template('reboot.html', **templateData) return render_template('reboot.html', **templateData)
@ -335,7 +346,8 @@ def lnd_config_page():
templateData = { templateData = {
"title": "myNode Reboot", "title": "myNode Reboot",
"header_text": "Restarting", "header_text": "Restarting",
"subheader_text": "This will take several minutes..." "subheader_text": "This will take several minutes...",
"ui_settings": read_ui_settings()
} }
return render_template('reboot.html', **templateData) return render_template('reboot.html', **templateData)
@ -345,7 +357,8 @@ def lnd_config_page():
templateData = { templateData = {
"title": "myNode LND Config", "title": "myNode LND Config",
"lnd_config": lnd_config "lnd_config": lnd_config,
"ui_settings": read_ui_settings()
} }
return render_template('lnd_config.html', **templateData) return render_template('lnd_config.html', **templateData)

View File

@ -8,7 +8,7 @@ from tor import mynode_tor
from vpn import mynode_vpn from vpn import mynode_vpn
from electrum_server import * from electrum_server import *
from lnd import mynode_lnd, lnd_wallet_exists, is_lnd_logged_in, lnd_get, get_lnd_status from lnd import mynode_lnd, lnd_wallet_exists, is_lnd_logged_in, lnd_get, get_lnd_status
from settings import mynode_settings from settings import *
from pprint import pprint from pprint import pprint
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
from background_thread import BackgroundThread from background_thread import BackgroundThread
@ -19,6 +19,7 @@ from messages import get_message
from thread_functions import * from thread_functions import *
from datetime import timedelta from datetime import timedelta
import pam import pam
import json
import random import random
import logging import logging
import logging.handlers import logging.handlers
@ -107,7 +108,8 @@ def index():
templateData = { templateData = {
"title": "myNode Uploader", "title": "myNode Uploader",
"header_text": "Uploader Device", "header_text": "Uploader Device",
"quicksync_status": status "quicksync_status": status,
"ui_settings": read_ui_settings()
} }
return render_template('uploader.html', **templateData) return render_template('uploader.html', **templateData)
@ -115,14 +117,16 @@ def index():
templateData = { templateData = {
"title": "myNode Looking for Drive", "title": "myNode Looking for Drive",
"header_text": "Looking for Drive", "header_text": "Looking for Drive",
"subheader_text": "Please attach a drive to your myNode" "subheader_text": "Please attach a drive to your myNode",
"ui_settings": read_ui_settings()
} }
return render_template('state.html', **templateData) return render_template('state.html', **templateData)
elif status == STATE_DRIVE_MOUNTED: elif status == STATE_DRIVE_MOUNTED:
templateData = { templateData = {
"title": "myNode Drive Mounted", "title": "myNode Drive Mounted",
"header_text": "Drive Mounted", "header_text": "Drive Mounted",
"subheader_text": "myNode starting soon..." "subheader_text": "myNode starting soon...",
"ui_settings": read_ui_settings()
} }
return render_template('state.html', **templateData) return render_template('state.html', **templateData)
elif not has_product_key() and not skipped_product_key(): elif not has_product_key() and not skipped_product_key():
@ -148,14 +152,16 @@ def index():
templateData = { templateData = {
"title": "myNode QuickSync", "title": "myNode QuickSync",
"header_text": "QuickSync", "header_text": "QuickSync",
"subheader_text": subheader_msg "subheader_text": subheader_msg,
"ui_settings": read_ui_settings()
} }
return render_template('state.html', **templateData) return render_template('state.html', **templateData)
elif status == STATE_QUICKSYNC_RESET: elif status == STATE_QUICKSYNC_RESET:
templateData = { templateData = {
"title": "myNode QuickSync", "title": "myNode QuickSync",
"header_text": "QuickSync", "header_text": "QuickSync",
"subheader_text": "Restarting QuickSync..." "subheader_text": "Restarting QuickSync...",
"ui_settings": read_ui_settings()
} }
return render_template('state.html', **templateData) return render_template('state.html', **templateData)
elif status == STATE_QUICKSYNC_DOWNLOAD: elif status == STATE_QUICKSYNC_DOWNLOAD:
@ -179,7 +185,8 @@ def index():
templateData = { templateData = {
"title": "myNode QuickSync", "title": "myNode QuickSync",
"header_text": "QuickSync", "header_text": "QuickSync",
"subheader_text": subheader "subheader_text": subheader,
"ui_settings": read_ui_settings()
} }
return render_template('state.html', **templateData) return render_template('state.html', **templateData)
elif status == STATE_STABLE: elif status == STATE_STABLE:
@ -209,7 +216,8 @@ def index():
templateData = { templateData = {
"title": "myNode Status", "title": "myNode Status",
"header_text": "Starting...", "header_text": "Starting...",
"subheader_text": Markup("Launching myNode services...{}".format(message)) "subheader_text": Markup("Launching myNode services...{}".format(message)),
"ui_settings": read_ui_settings()
} }
return render_template('state.html', **templateData) return render_template('state.html', **templateData)
@ -224,7 +232,8 @@ def index():
templateData = { templateData = {
"title": "myNode Sync", "title": "myNode Sync",
"header_text": "Bitcoin Blockchain", "header_text": "Bitcoin Blockchain",
"subheader_text": subheader "subheader_text": subheader,
"ui_settings": read_ui_settings()
} }
return render_template('state.html', **templateData) return render_template('state.html', **templateData)
@ -361,15 +370,17 @@ def index():
"ram_usage": get_ram_usage(), "ram_usage": get_ram_usage(),
"swap_usage": get_swap_usage(), "swap_usage": get_swap_usage(),
"device_temp": get_device_temp(), "device_temp": get_device_temp(),
"upgrade_available": upgrade_available,
"has_changed_password": has_changed_password(), "has_changed_password": has_changed_password(),
"upgrade_available": upgrade_available "ui_settings": read_ui_settings()
} }
return render_template('main.html', **templateData) return render_template('main.html', **templateData)
else: else:
templateData = { templateData = {
"title": "myNode Error", "title": "myNode Error",
"header_text": "Error", "header_text": "Error",
"subheader_text": "Unknown State ("+status+"). Please restart your myNode." "subheader_text": "Unknown State ("+status+"). Please restart your myNode.",
"ui_settings": read_ui_settings()
} }
return render_template('state.html', **templateData) return render_template('state.html', **templateData)
@ -381,7 +392,8 @@ def page_product_key():
if request.method == 'GET': if request.method == 'GET':
templateData = { templateData = {
"title": "myNode Product Key", "title": "myNode Product Key",
"header_text": "Product Key" "header_text": "Product Key",
"ui_settings": read_ui_settings()
} }
return render_template('product_key.html', **templateData) return render_template('product_key.html', **templateData)
elif request.method == 'POST': elif request.method == 'POST':
@ -448,8 +460,9 @@ def page_toggle_vpn():
@app.route("/login", methods=["GET","POST"]) @app.route("/login", methods=["GET","POST"])
def page_login(): def page_login():
templateData = {"ui_settings": read_ui_settings()}
if request.method == 'GET': if request.method == 'GET':
return render_template('login.html') return render_template('login.html', **templateData)
pw = request.form.get('password') pw = request.form.get('password')
if login(pw): if login(pw):
@ -466,12 +479,14 @@ def page_logout():
@app.route("/about") @app.route("/about")
def page_about(): def page_about():
check_logged_in() check_logged_in()
return render_template('about.html') templateData = {"ui_settings": read_ui_settings()}
return render_template('about.html', **templateData)
@app.route("/help") @app.route("/help")
def page_help(): def page_help():
check_logged_in() check_logged_in()
return render_template('help.html') templateData = {"ui_settings": read_ui_settings()}
return render_template('help.html', **templateData)
# Disable browser caching # Disable browser caching
@app.after_request @app.after_request
@ -529,4 +544,4 @@ if __name__ == "__main__":
raise RuntimeError('Not running with the Werkzeug Server') raise RuntimeError('Not running with the Werkzeug Server')
func() func()
print("Service www exiting...") print("Service www exiting...")

View File

@ -3,7 +3,6 @@ from flask import Blueprint, render_template, session, abort, Markup, request, r
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
from pprint import pprint, pformat from pprint import pprint, pformat
from threading import Timer from threading import Timer
from device_info import *
from thread_functions import * from thread_functions import *
from user_management import check_logged_in from user_management import check_logged_in
from lightning_info import * from lightning_info import *
@ -15,6 +14,51 @@ import subprocess
mynode_settings = Blueprint('mynode_settings',__name__) mynode_settings = Blueprint('mynode_settings',__name__)
def read_ui_settings():
ui_hdd_file = '/mnt/hdd/mynode/settings/ui.json'
ui_mynode_file = '/home/bitcoin/.mynode/ui.json'
# read ui.json from HDD
if os.path.isfile(ui_hdd_file):
with open(ui_hdd_file, 'r') as fp:
ui_settings = json.load(fp)
# read ui.json from mynode
elif os.path.isfile(ui_mynode_file):
with open(ui_mynode_file, 'r') as fp:
ui_settings = json.load(fp)
# if ui.json is not found anywhere, use default settings
else:
ui_settings = {'darkmode': False}
return ui_settings
def write_ui_settings(ui_settings):
ui_hdd_file = '/mnt/hdd/mynode/settings/ui.json'
ui_mynode_file = '/home/bitcoin/.mynode/ui.json'
try:
with open(ui_hdd_file, 'w') as fp:
json.dump(ui_settings, fp)
except:
pass
with open(ui_mynode_file, 'w') as fp:
json.dump(ui_settings, fp)
def is_darkmode_enabled():
ui_settings = read_ui_settings()
return ui_settings['darkmode']
def disable_darkmode():
ui_settings = read_ui_settings()
ui_settings['darkmode'] = False
write_ui_settings(ui_settings)
def enable_darkmode():
ui_settings = read_ui_settings()
ui_settings['darkmode'] = True
write_ui_settings(ui_settings)
# Flask Pages # Flask Pages
@mynode_settings.route("/settings") @mynode_settings.route("/settings")
def page_settings(): def page_settings():
@ -93,7 +137,8 @@ def page_settings():
"upload_rate": upload_rate, "upload_rate": upload_rate,
"uptime": uptime, "uptime": uptime,
"public_ip": public_ip, "public_ip": public_ip,
"local_ip": local_ip "local_ip": local_ip,
"ui_settings": read_ui_settings()
} }
return render_template('settings.html', **templateData) return render_template('settings.html', **templateData)
@ -109,7 +154,8 @@ def upgrade_page():
templateData = { templateData = {
"title": "myNode Upgrade", "title": "myNode Upgrade",
"header_text": "Upgrading", "header_text": "Upgrading",
"subheader_text": "This may take a while..." "subheader_text": "This may take a while...",
"ui_settings": read_ui_settings()
} }
return render_template('reboot.html', **templateData) return render_template('reboot.html', **templateData)
@ -129,7 +175,8 @@ def reset_blockchain_page():
templateData = { templateData = {
"title": "myNode", "title": "myNode",
"header_text": "Reset Blockchain", "header_text": "Reset Blockchain",
"subheader_text": "This will take several minutes..." "subheader_text": "This will take several minutes...",
"ui_settings": read_ui_settings()
} }
return render_template('reboot.html', **templateData) return render_template('reboot.html', **templateData)
@ -143,7 +190,8 @@ def restart_quicksync_page():
templateData = { templateData = {
"title": "myNode", "title": "myNode",
"header_text": "Restart Quicksync", "header_text": "Restart Quicksync",
"subheader_text": "This will take several minutes..." "subheader_text": "This will take several minutes...",
"ui_settings": read_ui_settings()
} }
return render_template('reboot.html', **templateData) return render_template('reboot.html', **templateData)
@ -159,7 +207,8 @@ def reboot_device_page():
templateData = { templateData = {
"title": "myNode Reboot", "title": "myNode Reboot",
"header_text": "Restarting", "header_text": "Restarting",
"subheader_text": "This will take several minutes..." "subheader_text": "This will take several minutes...",
"ui_settings": read_ui_settings()
} }
return render_template('reboot.html', **templateData) return render_template('reboot.html', **templateData)
@ -175,7 +224,8 @@ def shutdown_device_page():
templateData = { templateData = {
"title": "myNode Shutdown", "title": "myNode Shutdown",
"header_text": "Shutting down...", "header_text": "Shutting down...",
"subheader_text": Markup("Your myNode is shutting down.<br/><br/>You will need to power cycle the device to turn it back on.") "subheader_text": Markup("Your myNode is shutting down.<br/><br/>You will need to power cycle the device to turn it back on."),
"ui_settings": read_ui_settings()
} }
return render_template('shutdown.html', **templateData) return render_template('shutdown.html', **templateData)
@ -212,7 +262,8 @@ def factory_reset_page():
templateData = { templateData = {
"title": "myNode Factory Reset", "title": "myNode Factory Reset",
"header_text": "Factory Reset", "header_text": "Factory Reset",
"subheader_text": "This will take several minutes..." "subheader_text": "This will take several minutes...",
"ui_settings": read_ui_settings()
} }
return render_template('reboot.html', **templateData) return render_template('reboot.html', **templateData)
@ -307,7 +358,8 @@ def page_reset_tor():
templateData = { templateData = {
"title": "myNode Reboot", "title": "myNode Reboot",
"header_text": "Restarting", "header_text": "Restarting",
"subheader_text": "This will take several minutes..." "subheader_text": "This will take several minutes...",
"ui_settings": read_ui_settings()
} }
return render_template('reboot.html', **templateData) return render_template('reboot.html', **templateData)
@ -340,7 +392,8 @@ def repair_drive_page():
templateData = { templateData = {
"title": "myNode Reboot", "title": "myNode Reboot",
"header_text": "Restarting", "header_text": "Restarting",
"subheader_text": "This will take several minutes..." "subheader_text": "This will take several minutes...",
"ui_settings": read_ui_settings()
} }
return render_template('reboot.html', **templateData) return render_template('reboot.html', **templateData)
@ -374,7 +427,8 @@ def toggle_uploader_page():
templateData = { templateData = {
"title": "myNode Reboot", "title": "myNode Reboot",
"header_text": "Restarting", "header_text": "Restarting",
"subheader_text": "This will take several minutes..." "subheader_text": "This will take several minutes...",
"ui_settings": read_ui_settings()
} }
return render_template('reboot.html', **templateData) return render_template('reboot.html', **templateData)
@ -393,10 +447,19 @@ def toggle_quicksync_page():
templateData = { templateData = {
"title": "myNode Reboot", "title": "myNode Reboot",
"header_text": "Restarting", "header_text": "Restarting",
"subheader_text": "This will take several minutes..." "subheader_text": "This will take several minutes...",
"ui_settings": read_ui_settings()
} }
return render_template('reboot.html', **templateData) return render_template('reboot.html', **templateData)
@mynode_settings.route("/settings/ping") @mynode_settings.route("/settings/ping")
def ping_page(): def ping_page():
return "alive" return "alive"
@mynode_settings.route("/settings/toggle-darkmode")
def toggle_darkmode_page():
if is_darkmode_enabled():
disable_darkmode()
else:
enable_darkmode()
return redirect("/settings")

View File

@ -413,6 +413,33 @@ a:active {
-webkit-border-radius: 50%; -webkit-border-radius: 50%;
} }
.cli_command {
width: 800px;
margin: auto;
display: table;
padding: 10px;
vertical-align: middle;
}
.cli_command_input {
width: 685px;
font-size: 20px;
vertical-align: middle;
}
.cli_enter_button {
width: 100px;
font-size: 16px;
vertical-align: middle;
}
.cli_contents {
margin: auto;
width: 800px;
max-height: 500px;
height: 500px;
overflow-y: scroll;
border: 2px solid #222222;
border-radius: 5px;
}
.login_div { .login_div {
width: 300px; width: 300px;
color: #444444; color: #444444;

View File

@ -1,4 +1,3 @@
.bitcoind_search { .bitcoind_search {
width: 600px; width: 600px;
margin: auto; margin: auto;
@ -46,14 +45,14 @@
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
} }
table tbody tr:nth-child(odd) td{ table.bitcoind_table tbody tr:nth-child(odd) td{
background-color: #ffdecb; background-color: #ffdecb;
} }
table tbody tr:nth-child(even) td{ table.bitcoind_table tbody tr:nth-child(even) td{
background-color: #fff5ef; background-color: #fff5ef;
} }
table td { table.bitcoind_table td {
padding: 10px; padding: 10px;
margin: 0px; margin: 0px;
} }

View File

@ -0,0 +1,19 @@
.bitcoind_search_text {
color: #888888;
}
.bitcoind_error_message {
color: #BB4444;
}
.bitcoind_table_header {
border-bottom: 2px solid gray;
background-color: unset;
}
table.bitcoind_table tbody tr:nth-child(odd) td{
background-color: #222;
}
table.bitcoind_table tbody tr:nth-child(even) td{
background-color: unset;
}

View File

@ -1,28 +0,0 @@
.cli_command {
width: 800px;
margin: auto;
display: table;
padding: 10px;
vertical-align: middle;
}
.cli_command_input {
width: 685px;
font-size: 20px;
vertical-align: middle;
}
.cli_enter_button {
width: 100px;
font-size: 16px;
vertical-align: middle;
}
.cli_contents {
margin: auto;
width: 800px;
max-height: 500px;
height: 500px;
overflow-y: scroll;
border: 2px solid #222222;
border-radius: 5px;
}

View File

@ -0,0 +1,99 @@
/* mynode color: #f9c132 */
/* dark grey for background: #303841 */
/* lighter gray: #3a4750 */
/* light gray: #eee */
body {
background: #303841;
}
a:link,
a:visited,
a:hover,
a:active {
color: #eee;
text-decoration: underline dashed #eee;
}
.footer,
.state_header,
.state_subheader,
.main_header,
.main_header_sub_text,
.app_title,
.app_status,
.app_contents,
.info_tile_contents,
.content_block,
.drive_usage,
.settings_block_header,
.settings_block_subheader,
.settings_block,
table,
#cli_contents {
color: #eee;
}
.app_tile,
.app_tile_short,
.info_tile,
.settings_block_header {
border: 3px solid #f9c132;
}
.info_tile_header {
color: #FFFFFF;
background-color: #f9c132;
}
.divider {
border-bottom: 3px dashed #f9c132;
}
.ui-button.ui-widget.ui-corner-all {
color: #303841;
background-color: #eee;
border-color: #eee;
}
.settings_input {
color: white;
background: #eee;
}
.main_page_warning_block,
.upgrade_ad_main_page {
color: #eee;
border: 3px solid #f9c132;
background-color: #3a4750;
}
.main_page_error_block {
color: #eee;
border: 3px solid red;
background-color: rgb(255, 238, 238);
}
.slider {
background-color: #ccc;
}
.slider:before {
background-color: white;
}
input:checked + .slider {
background-color: #eee;
}
input:focus + .slider {
box-shadow: 0 0 1px #eee;
}
.cli_contents {
border: 2px solid #222222;
}
.config_textarea {
color: #eee;
background-color: #303841;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

View File

@ -1,18 +1,12 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>myNode About</title> <title>myNode About</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
</div> </div>

View File

@ -1,15 +1,7 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_cli.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
<script> <script>
$(document).ready(function() { $(document).ready(function() {
$("#cmd_form").submit(function( event ) { $("#cmd_form").submit(function( event ) {
@ -42,7 +34,7 @@
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
</div> </div>

View File

@ -1,19 +1,11 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_bitcoind.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/explorer"><span class="ui-icon ui-icon-search"></span>bitcoin&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/explorer"><span class="ui-icon ui-icon-search"></span>bitcoin&nbsp;</a>

View File

@ -1,19 +1,11 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_bitcoind.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/explorer"><span class="ui-icon ui-icon-search"></span>bitcoin&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/explorer"><span class="ui-icon ui-icon-search"></span>bitcoin&nbsp;</a>

View File

@ -1,19 +1,11 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_bitcoind.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/bitcoind"><span class="ui-icon ui-icon-arrowthick-1-w"></span>back&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/bitcoind"><span class="ui-icon ui-icon-arrowthick-1-w"></span>back&nbsp;</a>

View File

@ -1,19 +1,11 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_bitcoind.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/explorer"><span class="ui-icon ui-icon-search"></span>bitcoin&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/explorer"><span class="ui-icon ui-icon-search"></span>bitcoin&nbsp;</a>

View File

@ -1,19 +1,11 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_bitcoind.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
</div> </div>

View File

@ -1,19 +1,11 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_bitcoind.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
</div> </div>

View File

@ -1,19 +1,11 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_bitcoind.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/bitcoind"><span class="ui-icon ui-icon-info"></span>bitcoin&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/bitcoind"><span class="ui-icon ui-icon-info"></span>bitcoin&nbsp;</a>

View File

@ -1,19 +1,11 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_bitcoind.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/explorer"><span class="ui-icon ui-icon-search"></span>bitcoin&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/explorer"><span class="ui-icon ui-icon-search"></span>bitcoin&nbsp;</a>

View File

@ -1,19 +1,11 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_bitcoind.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
</div> </div>

View File

@ -1,19 +1,11 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_bitcoind.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
</div> </div>

View File

@ -1,18 +1,12 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>myNode Help</title> <title>myNode Help</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
</div> </div>

View File

@ -0,0 +1,14 @@
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}">
<link href="{{ url_for('static', filename='jquery_ui/jquery-ui.css')}}" rel="stylesheet">
<link rel="stylesheet" href="{{ url_for('static', filename='css/mynode.css')}}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/mynode_bitcoind.css')}}">
{% if ui_settings['darkmode'] %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/mynode_dark.css')}}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/mynode_bitcoind_dark.css')}}">
{% endif %}
<link href="{{ url_for('static', filename='jquery_ui/jquery-ui.css')}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename='js/jquery-3.3.1.min.js')}}"></script>
<script src="{{ url_for('static', filename='jquery_ui/jquery-ui.js')}}"></script>
<script src="{{ url_for('static', filename='js/mynode.js')}}"></script>

View File

@ -0,0 +1,5 @@
{% if ui_settings['darkmode'] %}
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename='images/logo_dark.png')}}"/></a></div>
{% else %}
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename='images/logo.png')}}"/></a></div>
{% endif %}

View File

@ -1,15 +1,7 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_bitcoind.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
<meta http-equiv="refresh" content="120"> <meta http-equiv="refresh" content="120">
<script> <script>
@ -110,7 +102,7 @@
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
</div> </div>

View File

@ -1,19 +1,11 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_bitcoind.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/lnd"><span class="ui-icon ui-icon-arrowthick-1-w"></span>back&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/lnd"><span class="ui-icon ui-icon-arrowthick-1-w"></span>back&nbsp;</a>

View File

@ -1,19 +1,11 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_bitcoind.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/lnd"><span class="ui-icon ui-icon-transfer-e-w"></span>ln status&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/lnd"><span class="ui-icon ui-icon-transfer-e-w"></span>ln status&nbsp;</a>

View File

@ -1,19 +1,11 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_bitcoind.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/lnd"><span class="ui-icon ui-icon-transfer-e-w"></span>ln wallet&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/lnd"><span class="ui-icon ui-icon-transfer-e-w"></span>ln wallet&nbsp;</a>

View File

@ -1,15 +1,7 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_bitcoind.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
<script> <script>
$(document).ready(function() { $(document).ready(function() {
@ -24,7 +16,7 @@
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/lnd"><span class="ui-icon ui-icon-transfer-e-w"></span>ln wallet&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/lnd"><span class="ui-icon ui-icon-transfer-e-w"></span>ln wallet&nbsp;</a>

View File

@ -1,15 +1,7 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_bitcoind.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
<script> <script>
$(document).ready(function() { $(document).ready(function() {
@ -24,7 +16,7 @@
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/lnd"><span class="ui-icon ui-icon-transfer-e-w"></span>ln wallet&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/lnd"><span class="ui-icon ui-icon-transfer-e-w"></span>ln wallet&nbsp;</a>

View File

@ -1,15 +1,7 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_bitcoind.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
<script> <script>
$(document).ready(function() { $(document).ready(function() {
@ -21,7 +13,7 @@
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/lnd"><span class="ui-icon ui-icon-transfer-e-w"></span>ln wallet&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/lnd"><span class="ui-icon ui-icon-transfer-e-w"></span>ln wallet&nbsp;</a>

View File

@ -1,18 +1,11 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>myNode Login</title> <title>myNode Login</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="main_header">Login</div> <div class="main_header">Login</div>

View File

@ -1,14 +1,7 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
<meta http-equiv="refresh" content="120"> <meta http-equiv="refresh" content="120">
<script> <script>
@ -128,7 +121,7 @@
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_top_right_div"> <div class="mynode_top_right_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" id="https" style="display: none;" href="#">&nbsp;<span class="ui-icon ui-icon-locked"></span>&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" id="https" style="display: none;" href="#">&nbsp;<span class="ui-icon ui-icon-locked"></span>&nbsp;</a>

View File

@ -1,14 +1,7 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
<script> <script>
$(document).ready(function() { $(document).ready(function() {
@ -86,7 +79,7 @@
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="state_header">{{ header_text }}</div> <div class="state_header">{{ header_text }}</div>
<div class="state_subheader">Please enter your product key...</div> <div class="state_subheader">Please enter your product key...</div>

View File

@ -1,12 +1,7 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
<script> <script>
$(document).ready(function() { $(document).ready(function() {
@ -42,7 +37,7 @@
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="state_header">{{ header_text }}</div> <div class="state_header">{{ header_text }}</div>
<div class="state_subheader"> <div class="state_subheader">

View File

@ -1,14 +1,7 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
<script> <script>
$(document).ready(function() { $(document).ready(function() {
@ -285,7 +278,7 @@
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
</div> </div>
@ -356,6 +349,14 @@
</table> </table>
<div class="divider"></div> <div class="divider"></div>
<div class="settings_block_subheader">User Interface</div>
{% if ui_settings['darkmode'] %}
<a href="/settings/toggle-darkmode" class="ui-button ui-widget ui-corner-all settings_button">Disable Dark Mode</a>
{% else %}
<a href="/settings/toggle-darkmode" class="ui-button ui-widget ui-corner-all settings_button">Enable Dark Mode</a>
{% endif %}
<div class="divider"></div>
<div class="settings_block_subheader">Change Log</div> <div class="settings_block_subheader">Change Log</div>
<button id="show_mynode_changelog" class="ui-button ui-widget ui-corner-all settings_button">View Change Log</button> <button id="show_mynode_changelog" class="ui-button ui-widget ui-corner-all settings_button">View Change Log</button>
<div id="mynode_changelog" style='text-align: left; font-size: 12px; width: 800px; display: none;'><pre>{{changelog}}</pre></div> <div id="mynode_changelog" style='text-align: left; font-size: 12px; width: 800px; display: none;'><pre>{{changelog}}</pre></div>

View File

@ -1,12 +1,7 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
<script> <script>
$(document).ready(function() { $(document).ready(function() {
@ -42,7 +37,7 @@
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="state_header">{{ header_text }}</div> <div class="state_header">{{ header_text }}</div>
<div class="state_subheader"> <div class="state_subheader">

View File

@ -1,19 +1,12 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
<meta http-equiv="refresh" content="30"> <meta http-equiv="refresh" content="30">
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="state_header">{{ header_text }}</div> <div class="state_header">{{ header_text }}</div>
<div class="state_subheader">{{ subheader_text }}</div> <div class="state_subheader">{{ subheader_text }}</div>

View File

@ -1,20 +1,12 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_bitcoind.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
</div> </div>

View File

@ -1,19 +1,12 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
<meta http-equiv="refresh" content="30"> <meta http-equiv="refresh" content="30">
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="state_header">{{ header_text }}</div> <div class="state_header">{{ header_text }}</div>

View File

@ -1,15 +1,7 @@
<!DOCTYPE html lang="en"> <!DOCTYPE html lang="en">
<head> <head>
<title>{{ title }}</title> <title>{{ title }}</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> {% include 'includes/head.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode.css")}}">
<link rel="stylesheet" href="{{ url_for('static', filename="css/mynode_bitcoind.css")}}">
<link href="{{ url_for('static', filename="jquery_ui/jquery-ui.css")}}" rel="stylesheet">
<meta http-equiv="Content-Language" content="en">
<meta name="google" content="notranslate">
<script src="{{ url_for('static', filename="js/jquery-3.3.1.min.js")}}"></script>
<script src="{{ url_for('static', filename="jquery_ui/jquery-ui.js")}}"></script>
<script src="{{ url_for('static', filename="js/mynode.js")}}"></script>
<script> <script>
$(document).ready(function() { $(document).ready(function() {
@ -74,7 +66,7 @@
</head> </head>
<body> <body>
<div class="logo_header"><a href="/"><img class="logo_image" src="{{ url_for('static', filename="images/logo.png")}}"/></a></div> {% include 'includes/logo_header.html' %}
<div class="mynode_back_div"> <div class="mynode_back_div">
<a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a> <a class="ui-button ui-widget ui-corner-all mynode_back" href="/"><span class="ui-icon ui-icon-home"></span>home&nbsp;</a>
</div> </div>

View File

@ -1,6 +1,7 @@
from flask import Blueprint, render_template, session, abort, Markup, request, redirect from flask import Blueprint, render_template, session, abort, Markup, request, redirect
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
from pprint import pprint, pformat from pprint import pprint, pformat
from settings import read_ui_settings
from device_info import is_community_edition, get_bitcoin_rpc_password from device_info import is_community_edition, get_bitcoin_rpc_password
from user_management import check_logged_in from user_management import check_logged_in
import os import os
@ -54,7 +55,8 @@ def page_tor():
"title": "myNode Tor Services", "title": "myNode Tor Services",
"mynode_onion_hostname": mynode_onion_hostname, "mynode_onion_hostname": mynode_onion_hostname,
"mynode_onion_password": mynode_onion_password, "mynode_onion_password": mynode_onion_password,
"services": services,
"fully_noded_link": fully_noded_link, "fully_noded_link": fully_noded_link,
"services": services "ui_settings": read_ui_settings()
} }
return render_template('tor.html', **templateData) return render_template('tor.html', **templateData)

View File

@ -1,10 +1,12 @@
from flask import Blueprint, render_template, session, abort, Markup, request, redirect, send_from_directory, url_for, flash from flask import Blueprint, render_template, session, abort, Markup, request, redirect, send_from_directory, url_for, flash
from thread_functions import get_public_ip from thread_functions import get_public_ip
from device_info import is_community_edition from device_info import is_community_edition
from settings import read_ui_settings
from user_management import check_logged_in from user_management import check_logged_in
import subprocess import subprocess
import pam import pam
import os import os
import json
mynode_vpn = Blueprint('mynode_vpn',__name__) mynode_vpn = Blueprint('mynode_vpn',__name__)
@ -40,7 +42,8 @@ def page_vpn_info():
"vpn_file_exists": vpn_file_exists, "vpn_file_exists": vpn_file_exists,
"port_forwarded": port_forwarded, "port_forwarded": port_forwarded,
"public_ip": ip, "public_ip": ip,
"port": "51194" "port": "51194",
"ui_settings": read_ui_settings()
} }
return render_template('vpn_info.html', **templateData) return render_template('vpn_info.html', **templateData)