Updated sns.in (added the script name2ip.py).
authorZoltán Felleg <zoltan.felleg@userrendszerhaz.hu>
Mon, 16 Jan 2023 15:07:46 +0000 (16:07 +0100)
committerZoltán Felleg <zoltan.felleg@userrendszerhaz.hu>
Mon, 16 Jan 2023 15:07:46 +0000 (16:07 +0100)
sources/sns.in/c3d/mode.txt
sources/sns.in/c3d/postinstall/install-data/usr/local/bin/name2ip.py [new file with mode: 0755]
sources/sns.in/envvars

index d17d0e6000c0f9d2ae21bb47b070346556ab86b1..804694b192a6cae94cbe5c1c1aeb08a7aa0501bb 100644 (file)
@@ -1,6 +1,7 @@
 # mode file (relative to /c3d)
 755 firstboot/scripts/*.sh
 640 postinstall/install-data/etc/named.conf
+755 postinstall/install-data/usr/local/bin/*.py
 600 postinstall/install-data/var/named/*.private
 640 postinstall/install-data/var/named/*.zonesource
 755 postinstall/scripts/*.sh
diff --git a/sources/sns.in/c3d/postinstall/install-data/usr/local/bin/name2ip.py b/sources/sns.in/c3d/postinstall/install-data/usr/local/bin/name2ip.py
new file mode 100755 (executable)
index 0000000..ead3a13
--- /dev/null
@@ -0,0 +1,73 @@
+#!/usr/bin/env python
+
+
+import sys
+
+
+list_of_containers = [('dhcp', 'is'),
+                      ('efg', 'pm'),
+                      ('ens', 'pm'),
+                      ('fdc', 'is'),
+                      ('fds', 'is'),
+                      ('ifg', 'is'),
+                      ('mx', 'pm'),
+                      ('ns', 'is'),
+                      ('pki', 'is'),
+                      ('pns', 'pm'),
+                      ('sns', 'is'),
+                      ('vpn', 'is'),
+                      ('ws', 'pm')]
+
+def get_ip_of_name(name):
+    name_value = 0
+    for position in range(len(name)):
+        name_value *= 10
+        name_character = name[position].lower()
+        if name_character in '0123456789':
+            character_value = int(name_character)
+        else:
+            character_value = ord(name_character) + 1 - ord('a')
+        name_value += character_value
+    return name_value % 256
+
+def list_ip_addresses():
+    ip_addresses = {}
+    for (name, network) in list_of_containers:
+        if network not in ip_addresses:
+            ip_addresses[network] = {}
+        ip_address = get_ip_of_name(name)
+        iteration = 1
+        while ip_address in ip_addresses[network].values():
+            iteration += 1
+            print('{} is a duplicate, trying {}'.format(name,
+                                                        name * iteration))
+            ip_address = get_ip_of_name(name * iteration)
+        ip_addresses[network][name] = ip_address
+    for network in ip_addresses:
+        network_address = get_ip_of_name(network)
+        hex_network_address = hex(network_address)
+        print('{} network ({}, {}):'.format(network,
+                                            network_address,
+                                            hex_network_address))
+        ip_name_list = []
+        for name in ip_addresses[network]:
+            ip_name_list.append((ip_addresses[network][name], name))
+        for (ip_address, name) in sorted(ip_name_list):
+            print('    {:11}: {:3} ({})'.format(name,
+                                                ip_address,
+                                                hex(ip_address)))
+
+if __name__ == '__main__':
+    if len(sys.argv) == 1:
+        list_ip_addresses()
+    elif len(sys.argv) == 3:
+        machine_ip = get_ip_of_name(sys.argv[1])
+        network_ip = get_ip_of_name(sys.argv[2])
+        print('{} network: {:3} ({})'.format(sys.argv[2],
+                                             network_ip,
+                                             hex(network_ip)))
+        print('{:10}: {:3} ({})'.format(sys.argv[1],
+                                        machine_ip,
+                                        hex(machine_ip)))
+    else:
+        print(len(sys.argv))
index bcbce8f22a8e0c228009913538eb7fedc40ef2ae..b4ec612a531c0b11b1c5085c0dcaff2a02e5f55d 100644 (file)
@@ -1,3 +1,4 @@
 DISTRIBUTION=Fedora
 DISTRIBUTION_VERSION=37
 SPEC_PACKAGES="bind bind-dnssec-utils bind-utils"
+SPEC_PACKAGES="$SPEC_PACKAGES python-unversioned-command"