Skip to content

Commit 5cfc3f0

Browse files
author
Jarrod Johnson
committed
Fix nodemedia attach
The hardening blocked all URL patters.
1 parent 3d0b1c1 commit 5cfc3f0

1 file changed

Lines changed: 16 additions & 1 deletion

File tree

confluent_server/confluent/messages.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -578,6 +578,8 @@ def get_input_message(path, operation, inputdata, nodes=None, multinode=False,
578578
return InputPowerMessage(path, nodes, inputdata)
579579
elif '/'.join(path).startswith('media/detach'):
580580
return DetachMedia(path, nodes, inputdata)
581+
elif '/'.join(path).startswith('media/attach') and inputdata:
582+
return InputMediaUrl(path, nodes, inputdata, configmanager)
581583
elif '/'.join(path).startswith('media/') and inputdata:
582584
return InputMedia(path, nodes, inputdata, configmanager)
583585
elif '/'.join(path).startswith('support/servicedata') and inputdata:
@@ -620,9 +622,14 @@ def checkaccess(user, filename, pwent):
620622
return True
621623
return False
622624

625+
def isurl(value):
626+
prefix, value = value.split('://', 1) if '://' in value else (None, value)
627+
if '/' in prefix:
628+
return False
629+
return True if prefix else False
623630

624631
class InputFirmwareUpdate(ConfluentMessage):
625-
632+
urlsupported = False
626633
def __init__(self, path, nodes, inputdata, configmanager):
627634
self._filename = inputdata.get('filename', inputdata.get('url', inputdata.get('dirname', None)))
628635
self.bank = inputdata.get('bank', None)
@@ -639,6 +646,9 @@ def __init__(self, path, nodes, inputdata, configmanager):
639646
node, value = expanded
640647
if value != self._filename:
641648
self._complexname = True
649+
if self.urlsupported and isurl(value):
650+
self.filebynode[node] = value
651+
continue
642652
value = os.path.normpath(value)
643653
if value not in checkedfiles:
644654
if value.startswith('../'):
@@ -697,6 +707,11 @@ class InputMedia(InputFirmwareUpdate):
697707
# Use InputFirmwareUpdate
698708
pass
699709

710+
class InputMediaUrl(InputFirmwareUpdate):
711+
# Use InputFirmwareUpdate for URL-based media attachment
712+
urlsupported = True
713+
pass
714+
700715
class InputLicense(InputFirmwareUpdate):
701716
pass
702717

0 commit comments

Comments
 (0)