@@ -630,31 +630,32 @@ def __deletefile(self, ip, folder, file):
630630 if os .path .exists (datafile ):
631631 os .remove (datafile )
632632
633+ def __writefile (self , dest , data , mode ):
634+ fh = open (dest , mode )
635+ self .__exflock (fh )
636+ fh .write (data )
637+ self .__unflock (fh )
638+ fh .close ()
639+ os .chmod (dest , 0o644 )
640+
633641 def __createfile (self , ip , folder , file , data ):
634642 dest = "/var/www/html/" + folder + "/" + ip + "/" + file
635643 metamanifestdir = "/var/www/html/" + folder + "/" + ip
636644 metamanifest = metamanifestdir + "/meta-data"
637645
638- # base64 decode userdata
639- if folder == "userdata" or folder == "user-data" :
640- if data is not None :
646+ if data is not None :
647+ # base64 decode userdata
648+ if folder == "userdata" or folder == "user-data" :
641649 # need to pad data if it is not valid base 64
642650 if len (data ) % 4 != 0 :
643651 data += (4 - (len (data ) % 4 )) * "="
644652 data = base64 .b64decode (data )
645-
646- fh = open (dest , "w" )
647- self .__exflock (fh )
648- if data is not None :
649653 if isinstance (data , str ):
650- fh . write ( data )
654+ self . __writefile ( dest , data , "w" )
651655 elif isinstance (data , bytes ):
652- fh . write ( data . decode () )
656+ self . __writefile ( dest , data , "wb" )
653657 else :
654- fh .write ("" )
655- self .__unflock (fh )
656- fh .close ()
657- os .chmod (dest , 0o644 )
658+ self .__writefile (dest , "" , "w" )
658659
659660 if folder == "metadata" or folder == "meta-data" :
660661 try :
0 commit comments