Files
jeb/server/utils/clients_management/chclient.py
T
jakob.scheid b1ac351ad1 geändert: README.md
geändert:       client/client.py
	gelöscht:       lib/__pycache__/crypto_utils.cpython-313.pyc
	gelöscht:       lib/__pycache__/jebp_utils.cpython-313.pyc
	gelöscht:       lib/__pycache__/terminal_table.cpython-313.pyc
	geändert:       lib/jebp_utils.py
	gelöscht:       server/clients_management/chclient.py
	gelöscht:       server/clients_management/rmclient.py
	neue Datei:     server/data/conf/client_admin_rights
	umbenannt:      server/config/clients/fingerprints -> server/data/conf/client_fingerprints
	neue Datei:     server/data/conf/topics
	geändert:       server/server.py
	neue Datei:     server/utils/clients_management/chclient.py
	neue Datei:     server/utils/clients_management/lsclients.py
	umbenannt:      server/clients_management/mkclient.py -> server/utils/clients_management/mkclient.py
	neue Datei:     server/utils/clients_management/rmclient.py
	umbenannt:      server/clients_management/lsclients.py -> server/utils/topics_management/lstopics.py
2026-01-11 12:54:26 +01:00

56 lines
1.8 KiB
Python
Executable File

#!/usr/bin/env python3
import dbm
import sys
from cryptography import x509
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization
import hashlib
import os
if len(sys.argv) < 2:
print(f'{sys.argv[0]}: missing key hash')
sys.exit(1)
with dbm.open('server/data/conf/client_fingerprints', 'c') as db:
if bytes.fromhex(sys.argv[1]) not in db.keys():
print(f'{sys.argv[0]}: hash not registered')
sys.exit(1)
db[bytes.fromhex(sys.argv[1])] = input(f'New common name [{db[bytes.fromhex(sys.argv[1])].decode()}]: ') or db[bytes.fromhex(sys.argv[1])]
db.close()
if os.path.exists('server/data/conf/locks/client_admin_rights.lock'):
with open('server/data/conf/locks/client_admin_rights.lock', 'r') as lockf:
print(f'{sys.argv[0]}: admin rights file is locked by process {lockf.read()}')
lockf.close()
sys.exit(1)
try:
with open('server/data/conf/locks/client_admin_rights.lock', 'w') as lockf:
lockf.write(str(os.getpid()))
lockf.close()
with open('server/data/conf/client_admin_rights', 'r') as carf:
admins = {kh for kh in carf.read().split('\n') if kh}
carf.close()
admin = input(f'Is admin (y/n) [{'y' if sys.argv[1] in admins else 'n'}]: ') or ('y' if sys.argv[1] in admins else 'n')
if admin == 'y':
admin = True
else:
admin = False
if admin:
if sys.argv[1] not in admins:
print(f'Added {sys.argv[1]} to the admins')
admins.add(sys.argv[1])
else:
try:
admins.remove(sys.argv[1])
except KeyError:
pass
with open('server/data/conf/client_admin_rights', 'w') as carf:
carf.write('\n'.join(admins))
carf.close()
finally:
os.remove('server/data/conf/locks/client_admin_rights.lock')