committed by
GitHub
4 changed files with 2 additions and 115 deletions
@ -1,3 +1,4 @@ |
|||||
git |
git |
||||
fswatch |
fswatch |
||||
jq |
jq |
||||
|
python3-qrcode |
||||
|
@ -1 +0,0 @@ |
|||||
python3-qrcode |
|
@ -1,4 +0,0 @@ |
|||||
#!/bin/bash -e |
|
||||
|
|
||||
echo "Installing umbrel-details" |
|
||||
install -m 755 files/umbrel-details "${ROOTFS_DIR}"/usr/local/bin/umbrel-details |
|
@ -1,109 +0,0 @@ |
|||||
#!/usr/bin/env python3 |
|
||||
|
|
||||
import sys |
|
||||
import os |
|
||||
import time |
|
||||
import subprocess |
|
||||
import io |
|
||||
import qrcode |
|
||||
|
|
||||
umbrel_ascii = ''' |
|
||||
,;###GGGGGGGGGGl#Sp |
|
||||
,##GGGlW""^' '`""%GGGG#S, |
|
||||
,#GGG" "lGG#o |
|
||||
#GGl^ '$GG# |
|
||||
,#GGb \GGG, |
|
||||
lGG" "GGG |
|
||||
#GGGlGGGl##p,,p##lGGl##p,,p###ll##GGGG |
|
||||
!GGGlW"""*GGGGGGG#""""WlGGGGG#W""*WGGGGS |
|
||||
"" "^ '" "" |
|
||||
|
|
||||
|
|
||||
@GGS lG# |
|
||||
!GGG !GGG |
|
||||
!GGG !GGG |
|
||||
!GGG !GGG |
|
||||
!GGG !GGG |
|
||||
!GGG !GGG |
|
||||
'GGG $GGl |
|
||||
"GGG#psqp##GG# |
|
||||
"%GGGGGG#" |
|
||||
'''.strip('\n') |
|
||||
|
|
||||
def create_qr(data): |
|
||||
output_buffer = io.TextIOWrapper(io.BytesIO(), sys.stdout.encoding) |
|
||||
|
|
||||
qr = qrcode.QRCode(border=0, error_correction=qrcode.constants.ERROR_CORRECT_Q) |
|
||||
qr.add_data(data) |
|
||||
qr.print_ascii(out=output_buffer) |
|
||||
|
|
||||
output_buffer.seek(0) |
|
||||
qr_ascii = output_buffer.read().strip() |
|
||||
|
|
||||
return qr_ascii |
|
||||
|
|
||||
def combine_ascii(left_ascii, right_ascii, spacing=0): |
|
||||
left_lines = left_ascii.split('\n') |
|
||||
right_lines = right_ascii.split('\n') |
|
||||
|
|
||||
no_left_lines = len(left_lines) |
|
||||
no_right_lines = len(right_lines) |
|
||||
|
|
||||
left_width = max(list(map(lambda line: len(line), left_lines))) |
|
||||
max_height = max(no_left_lines, no_right_lines) |
|
||||
|
|
||||
lines = [] |
|
||||
for i in range(max_height): |
|
||||
left_line = left_lines[i] if i < no_left_lines else "" |
|
||||
right_line = right_lines[i] if i < no_right_lines else "" |
|
||||
|
|
||||
padding = " " * ((left_width - len(left_line)) + spacing) |
|
||||
|
|
||||
lines.append(left_line + padding + right_line) |
|
||||
|
|
||||
return "\n".join(lines) |
|
||||
|
|
||||
def read_file_when_available(file_path, timeout): |
|
||||
start = time.time() |
|
||||
while not os.path.exists(file_path): |
|
||||
if (time.time() - start) > timeout: |
|
||||
return False |
|
||||
time.sleep(1) |
|
||||
|
|
||||
with open(file_path, "r") as file: |
|
||||
file_contents = file.read() |
|
||||
|
|
||||
return file_contents |
|
||||
|
|
||||
def run(command): |
|
||||
result = subprocess.run(command, stdout=subprocess.PIPE) |
|
||||
return result.stdout.decode('utf-8').rstrip("\n") |
|
||||
|
|
||||
def main(): |
|
||||
timeout = 30 |
|
||||
tor_hostname_file = "/home/umbrel/umbrel/tor/data/web/hostname" |
|
||||
tor_hostname = read_file_when_available(tor_hostname_file, timeout) |
|
||||
|
|
||||
ip = run(['hostname', '-I']).split(" ")[0] |
|
||||
|
|
||||
if not tor_hostname or not ip: |
|
||||
print("Couldn't get connection details") |
|
||||
return |
|
||||
|
|
||||
tor_hostname_qr_ascii = create_qr(tor_hostname.strip()) |
|
||||
ascii_banner = combine_ascii(umbrel_ascii, tor_hostname_qr_ascii, spacing=10) |
|
||||
|
|
||||
connection_details = f""" |
|
||||
|
|
||||
|
|
||||
{ascii_banner} |
|
||||
|
|
||||
Your Umbrel is up and running at: |
|
||||
|
|
||||
http://umbrel.local |
|
||||
http://{ip} |
|
||||
http://{tor_hostname} |
|
||||
""" |
|
||||
print(connection_details) |
|
||||
|
|
||||
main() |
|
Loading…
Reference in new issue