committed by
GitHub
4 changed files with 2 additions and 115 deletions
@ -1,3 +1,4 @@ |
|||
git |
|||
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