Beispiel #1
0
    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
Beispiel #2
0
    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
Beispiel #3
0
    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
Beispiel #4
0
    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
Beispiel #5
0
    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
Beispiel #6
0
 def __reginit__(self, login, name, **kw):
     self.open_db()
     self._sid = 0
     self._lid = 0
     SiteInfo.__reginit__(self, login, name, **kw)
Beispiel #7
0
 def __reginit__(self, login, name, **kw):
     self.open_db()
     self._sid = 0
     self._lid = 0
     SiteInfo.__reginit__(self, login, name, **kw)