Implement Docker network management features: Add endpoints for retrieving and creating Docker networks, and update container management to support network configuration and port mapping updates. Enhance UI for network selection and port editing in the container management interface. Update database schema to include network-related fields.

https://github.com/usmannasir/cyberpanel/issues/923
This commit is contained in:
Master3395
2025-09-21 21:14:34 +02:00
parent cc07f12017
commit 09c9d67536
9 changed files with 1200 additions and 12 deletions

View File

@@ -764,5 +764,88 @@ def listContainers(request):
coreResult = cm.listContainers(userID)
return coreResult
except KeyError:
return redirect(loadLoginPage)
@preDockerRun
def getDockerNetworks(request):
"""
Get list of all Docker networks
"""
try:
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
pass
else:
return ACLManager.loadErrorJson()
cm = ContainerManager()
coreResult = cm.getDockerNetworks(userID)
return coreResult
except KeyError:
return redirect(loadLoginPage)
@preDockerRun
def createDockerNetwork(request):
"""
Create a new Docker network
"""
try:
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
pass
else:
return ACLManager.loadErrorJson()
cm = ContainerManager()
coreResult = cm.createDockerNetwork(userID, json.loads(request.body))
return coreResult
except KeyError:
return redirect(loadLoginPage)
@preDockerRun
def updateContainerPorts(request):
"""
Update port mappings for an existing container
"""
try:
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
pass
else:
return ACLManager.loadErrorJson()
cm = ContainerManager()
coreResult = cm.updateContainerPorts(userID, json.loads(request.body))
return coreResult
except KeyError:
return redirect(loadLoginPage)
@preDockerRun
def manageNetworks(request):
"""
Display the network management page
"""
try:
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
pass
else:
return ACLManager.loadError()
template = 'dockerManager/manageNetworks.html'
proc = httpProc(request, template, {}, 'admin')
return proc.render()
except KeyError:
return redirect(loadLoginPage)