From cf4706d1e2d4b4762d3e2eea052fd415b5ec59e9 Mon Sep 17 00:00:00 2001 From: Markus Zolliker Date: Mon, 14 Apr 2025 10:36:00 +0200 Subject: [PATCH] mak box type more consistent and display it anyway - 'rpi' instead of 'ionopi' for a simple raspberry pi + fix dirty flag when dhcp server is modified --- install.py | 19 +++++++++++-------- utils.py | 7 +++---- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/install.py b/install.py index 2910179..90ea1dd 100755 --- a/install.py +++ b/install.py @@ -45,7 +45,7 @@ except ImportError: if serial is None: exit() - + TOOLS = BoxInfo.TOOLS BOX_TYPES = {'ionopi', 'ionopimax', 'control-box', 'bare-apu', 'dual-eth-rpi'} @@ -107,9 +107,6 @@ GENERIC_TEMPLATE = f"""{COMMENT} [BOX] type=%s MAC=%s - -[NETWORK] -eth0=wan """ DHCP_HEADER = """ @@ -508,6 +505,8 @@ def handle_config(): print('WARNING: missing type in BOX section') print('This is a cm3 so guess its a ionopimax') box.typ = 'ionopimax' + print('box type:', box.typ, ' mac addr:', box.macaddr) + print('---') else: if box.typ == 'apu': # determine if display is present @@ -522,8 +521,11 @@ def handle_config(): box.typ = 'dual-eth-rpi' print('This is a cm4, so guess its a dual-eth-rpi - please check type in created cfg file') elif box.typ == 'cm3': - print('This is a cm3 so guess its a ionopimax - please check type in created cfg file') + print('This is a cm3 so guess its a ionopimax - please check type in created cfg file') box.typ = 'ionopimax' + elif box.typ == 'rpi': + print('This is a simple rpi, so guess its a ionopi - please check type in created cfg file') + box.typ = 'ionopi' template = TEMPLATES.get(box.typ) if template is None: box.typ = box.typ or 'unknown-box' @@ -593,9 +595,10 @@ def handle_config(): to_start['isc-dhcp-server'] = 'restart' show.dirty = True try: - replace_in_file('/etc/default/isc-dhcp-server', - r'INTERFACESv4="(.*)"', ' '.join( - [n for n in box.network_interfaces if n != box.main_if])) + if replace_in_file( + '/etc/default/isc-dhcp-server', r'INTERFACESv4="(.*)"', ' '.join( + [n for n in box.network_interfaces if n != box.main_if])): + show.dirty = True except FileNotFoundError: if 'yes'.startswith(input('install isc-dhcp-server? [y]')): unix_cmd('apt-get install isc-dhcp-server') diff --git a/utils.py b/utils.py index 824640b..2eca249 100644 --- a/utils.py +++ b/utils.py @@ -68,9 +68,9 @@ class BoxInfo: CFGDIR = TOOLS / 'cfg' BOX_TYPES = { '00:0d:b9': 'apu', # bare apu or control box - 'b8:27:eb': 'cm3', # guess iono pi max - 'e4:5f:01': 'ionopi', # guess iono pi - 'd8:3a:dd': 'cm4', # guess dual-eth-rpi + 'b8:27:eb': 'cm3', # compute module 3 (guess iono pi max) + 'e4:5f:01': 'rpi', # simple raspberry pi (guess ionopi) + 'd8:3a:dd': 'cm4', # compute module 4 (guess dual-eth-rpi) } def __init__(self, macaddr=None, relcfg=None): @@ -96,7 +96,6 @@ class BoxInfo: with open(ifdev) as f: self.network_interfaces[ifname] = addr = f.read().strip().lower() if ifname in ('eth0', 'enp1s0'): - print('my mac address', addr) macaddr = addr self.main_if = ifname self.macaddr = macaddr