Add encrypted configuration backup and planned restore

This commit is contained in:
Mikei386 committed 2026-09-30 14:20:21 +02:00
1 parent 18adaf4a52
commit e7a1deaab0
22 files changed
+844 -28

No files matched your search

+8 -2
View File
@@ -143,6 +143,12 @@ class Manager:
return self.video_status(config)
def dispatch(self,data):
if not isinstance(data,dict):raise ValueError('Ungültige Helferanfrage.')
if data.get('action')=='backup-export' and set(data)=={'action'}:
import docker_backup
return docker_backup.export(self)
if data.get('action')=='backup-restore' and set(data)=={'action','container'}:
import docker_backup
return docker_backup.restore(self,data['container'])
if set(data)=={'action','service'} and data['action'] in ('video-start','video-stop'):
return self.video_action(data['service'],data['action']=='video-start')
if set(data)!={'action'}:raise ValueError('Ungültige Helferanfrage.')
@@ -197,8 +203,8 @@ class Handler(socketserver.StreamRequestHandler):
try:
_,uid,_=struct.unpack('3i',self.connection.getsockopt(socket.SOL_SOCKET,socket.SO_PEERCRED,12))
if uid not in (0,self.server.client_uid):raise ValueError('Client nicht erlaubt.')
raw=self.rfile.readline(4097)
if len(raw)>4096:raise ValueError('Anfrage zu groß.')
raw=self.rfile.readline(67108865)
if len(raw)>67108864:raise ValueError('Anfrage zu groß.')
data=json.loads(raw)
if isinstance(data,dict) and data.get('action')=='video-http':
self.connection.settimeout(3600);video_http(self.server.manager,data,self.rfile,self.wfile);return