def list_site_users(self, **tokens): sites = [] query = """select id, name from site order by name""" for id, name in self.sql_list(query): query = """select login from login where site_id = %d order by priority desc""" % id logins = [] for (login, ) in self.sql_list(query): logins.append(SiteInfo(login, name)) if not len(logins): logins.append(SiteInfo('ORPHAN', name, priority=0)) sites += logins filter = tokens.get('filter', tokens.get('f', None)) if filter: siteinfos = [] for site in sites: if ACLRule('list_site_users_filter', filter).eval(namespace={'site': site.get_tags()}): siteinfos.append(site) sites = siteinfos return sites
def add_site(self, sitename, **tokens): login, site = self.split_user_site(sitename) if login == '*': return "'*' is not allowed, be more specific." if not login: if self.exists(site, **tokens): return 'Site %s does already exist' % site # create site port = tokens.get('port', 22) try: port = int(port) if not (0 < port < 65536): raise ValueError except ValueError: return ('Port must be numeric and have a strictly positive ' 'value inferior to 65536') query = ("insert into site (name, ip_address, port) " "values ('%s', '%s', '%s')") sid = self.sql_add(query % (Q(site), Q(tokens.get('ip_address', '')), port)) if not sid: return 'A problem occured when adding site %s' % sitename elif not self.exists(site, **tokens): # if site does not exist and a login was given, exit with an error return 'Please create site %s first' % site else: if self.exists(sitename, **tokens): return 'Site %s does already exist' % sitename sid = self.sql_get("select id from site where name = '%s'" % Q(site)) query = ("insert into login (site_id, login, password) " "values (%d, '%s', '%s')") lid = self.sql_add(query % (sid, Q(login), Q(tokens.get('password', '')))) if not lid: return 'A problem occured when adding site %s' % sitename site = SiteInfo(login, site, **tokens) site.save() return 'Site %s added' % sitename
def add_site(self, sitename, **tokens): login, site = self.split_user_site(sitename) if login == '*': return "'*' is not allowed, be more specific." if not login: if self.exists(site, **tokens): return 'Site %s does already exist' % site # create site port = tokens.get('port', 22) try: port = int(port) if not (0 < port < 65536): raise ValueError except ValueError: return ('Port must be numeric and have a strictly positive ' 'value inferior to 65536') query = ("insert into site (name, ip_address, port) " "values ('%s', '%s', '%s')") sid = self.sql_add( query % (Q(site), Q(tokens.get('ip_address', '')), port)) if not sid: return 'A problem occured when adding site %s' % sitename elif not self.exists(site, **tokens): # if site does not exist and a login was given, exit with an error return 'Please create site %s first' % site else: if self.exists(sitename, **tokens): return 'Site %s does already exist' % sitename sid = self.sql_get("select id from site where name = '%s'" % Q(site)) query = ("insert into login (site_id, login, password) " "values (%d, '%s', '%s')") lid = self.sql_add(query % (sid, Q(login), Q(tokens.get('password', '')))) if not lid: return 'A problem occured when adding site %s' % sitename site = SiteInfo(login, site, **tokens) site.save() return 'Site %s added' % sitename
def list_site_users(self, **tokens): sitepath = get_config('site_db.ini')['db_path'] if not os.path.exists(sitepath): os.makedirs(sitepath) # no need to search for the site files return [] sitefiles = os.listdir(sitepath) sites = [] for sitefile in sitefiles: if sitefile[0] == '.': continue file = ConfigParser() file.read(os.path.join(sitepath, sitefile)) users = file.sections() if len(users): for user in users: sites.append(SiteInfo(user, sitefile)) else: sites.append(SiteInfo(None, sitefile)) return sites
def add_site(self, sitename, **tokens): sitepath = get_config('site_db.ini')['db_path'] if not os.path.exists(sitepath): os.makedirs(sitepath) login, name = self.split_user_site(sitename) if login == '*': return "'*' is not allowed, be more specific." if self.exists(sitename, **tokens): return 'Site %s does already exist' % sitename sitefile = os.path.join(sitepath, name) if not os.path.exists(sitefile): if login: return 'Site %s does not exist. Please create it first.' % name # touch the file open(sitefile, 'w').close() os.chmod(sitefile, 0600) siteinfo = SiteInfo(login, name, **tokens) siteinfo.save() return 'Site %s added' % sitename
def __reginit__(self, login, name, **kw): self.open_db() self._sid = 0 self._lid = 0 SiteInfo.__reginit__(self, login, name, **kw)