PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` import fcntl import time import sys import os, os.path update_config_file = '/etc/panopta-agent/panopta_agent.cfg' if not os.path.exists(update_config_file): home = os.path.expanduser("~") update_config_file = os.path.join(home, "lib", "fm-agent", "update_config") unlock_attempts = 10 def update_config(manifest_file): if not os.path.exists(manifest_file): print "Manifest file %s does not exist" % manifest_file sys.exit(0) try: mf = open(manifest_file).read().strip().split('\n') props = dict([map(str.strip, line.split("=")) for line in mf]) except: print "Error reading manifest file %s" % manifest_file sys.exit(0) manfile = open(update_config_file, 'wt') # Acquire lock locked = True for i in range(unlock_attempts): try: fcntl.flock(manfile, fcntl.LOCK_EX | fcntl.LOCK_NB) locked = False break except: time.sleep(1.0) if locked: print "Could not unlock %s after %s attempts" % (update_config_file, unlock_attempts) sys.exit(1) # Write new properties manfile.write(open(manifest_file).read()) # Release lock fcntl.flock(manfile, fcntl.LOCK_UN) manfile.close() # Change perms to make sure the agent user can read the config file os.system("chmod 666 %s" % update_config_file) if __name__ == "__main__": if len(sys.argv) < 2: print "Please specify the manifest file" sys.exit(0) else: update_config(sys.argv[1])