+class VServerConfig:
+ def __init__(self, name, directory):
+ self.name = name
+ self.dir = directory
+
+ def get(self, option, default = None):
+ try:
+ f = open(os.path.join(self.dir, option), "r")
+ buf = f.readline().rstrip()
+ f.close()
+ return buf
+ except KeyError, e:
+ # No mapping exists for this option
+ raise e
+ except IOError, e:
+ if default is not None:
+ return default
+ else:
+ raise KeyError, "Key %s is not set for %s" % (option, self.name)
+
+ def update(self, option, value):
+ try:
+ old_umask = os.umask(0022)
+ filename = os.path.join(self.dir, option)
+ try:
+ os.makedirs(os.path.dirname(filename), 0755)
+ except:
+ pass
+ f = open(filename, 'w')
+ if isinstance(value, list):
+ f.write("%s\n" % "\n".join(value))
+ else:
+ f.write("%s\n" % value)
+ f.close()
+ os.umask(old_umask)
+ except KeyError, e:
+ raise KeyError, "Don't know how to handle %s, sorry" % option
+
+