@@ -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
624631class 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+
700715class InputLicense (InputFirmwareUpdate ):
701716 pass
702717
0 commit comments