def get_cert_key(self, server, crtfile, keyfile): script = Script(server) crt = script.run("cat %s" % crtfile)["stdout"] key = script.run("cat %s" % keyfile)["stdout"] return crt, key
class AppBackend(App): class Meta: proxy = True def __init__(self, *args, **kwargs): super(AppBackend, self).__init__(*args, **kwargs) self.script = Script(self.core_server) self.proxy = ProxyObject(self) def get_user(self): return "app_%.5d" % self.id def get_group(self): return "app_%.5d" % self.id def get_home(self): home = os.path.join(settings.APPS_HOME, self.get_user()) if home != settings.APPS_HOME: return home raise AppException("Wrong home directory") def get_parmameters(self): parms = {} if self.parameters: parms.update(self.parameters) parms.update( { "user": self.get_user(), "group": self.get_group(), "home": self.get_home(), "main_domain": self.main_domain, "misc_domains": " ".join(self.misc_domains_list), "domains": " ".join(self.domains_list) } ) return parms def install(self): parms = self.get_parmameters() self.script.add_cmd("/usr/sbin/groupadd %(group)s" % parms) self.script.add_cmd("/usr/sbin/useradd -m -d %(home)s -g %(group)s %(user)s -s /bin/bash" % parms) self.script.add_cmd("/usr/sbin/usermod -G %(group)s -a www-data" % parms) self.script.add_cmd("mkdir -p %(home)s/logs" % parms, user=self.get_user()) self.script.add_cmd("mkdir -p %(home)s/app" % parms, user=self.get_user()) self.script.add_cmd("mkdir -p %(home)s/.ssh" % parms, user=self.get_user()) self.script.add_cmd("chmod 770 %(home)s/logs" % parms) self.script.add_cmd("chmod 750 %(home)s" % parms) self.installed = True self.save() self.proxy.setup() def commit(self, no_thread=False): self.script.commit(no_thread) def disable(self): parms = self.get_parmameters() self.script.add_cmd("chmod 000 %(home)s" % parms, user=self.get_user()) self.proxy.setdown() def enable(self): parms = self.get_parmameters() self.script.add_cmd("chmod 750 %(home)s" % parms, user=self.get_user()) self.proxy.setup() def uninstall(self): parms = self.get_parmameters() self.script.add_cmd("/usr/sbin/userdel %(user)s" % parms) self.script.add_cmd("/usr/sbin/groupdel %(group)s" % parms) self.script.add_cmd("rm -rf %(home)s" % parms) self.script.add_cmd("rm /etc/security/limits.d/%(user)s.conf" % parms) self.proxy.setdown() def update(self): parms = self.get_parmameters() limits = "%(user)s hard nproc 64\n" limits += "%(user)s hard as 393216\n" self.script.add_file("/etc/security/limits.d/%(user)s.conf" % parms, limits) self.proxy.setup() def get_logs(self): parms = self.get_parmameters() logfiles = [] for logfile in self.script.run("ls \"%(home)s/logs/\"" % parms)["stdout"].split(): if re.match(".*\.log$", logfile): path = os.path.join("%(home)s/logs/" % parms, logfile.strip()) logfiles.append((path, self.script.run("tail -n 60 %s" % path)["stdout"])) return logfiles def get_directories(self): parms = self.get_parmameters() return [x.strip()[len(parms.get("home"))+1:] for x in self.script.run("find -L %s -maxdepth %d -type d" % (parms.get("home"), 3))["stdout"].split("\n")] def get_uid(self): return int(self.script.run("id -u %s" % self.get_user())["stdout"].strip()) def get_gid(self): return int(self.script.run("id -g %s" % self.get_user())["stdout"].strip()) def passwd(self, password): self.script.add_cmd("/usr/sbin/chpasswd", stdin="%s:%s" % (self.get_user(), password))