def add_user_dns_zone(user_id, domain_id, ttl, retry, refresh, rname, expire, record_ttl, comment=""):
    if is_positive_numeric(user_id) is not True:
        raise Invalid("User id must be positive integer")
    elif is_positive_numeric(domain_id) is not True:
        raise Invalid("User id must be positive integer")
    domain_q = DomainDatabase.query()
    domain_q = domain_q.filter(DomainDatabase.user_id == user_id)
    domain_q = domain_q.filter(DomainDatabase.id == domain_id)
    try:
        domain = domain_q.one()
    except NoResultFound:
        raise DoesNotExist("Domain id=%s does not exist" % domain_id)
    try:
        get_dns_zone(user_id, domain_id)
        raise AlreadyExist("DNS zone already added for domain id=%s" % domain_id)
    except DoesNotExist:
        pass
    zone = DNSZoneDatabase()
    zone.domain_id = domain.id
    zone.refresh = refresh
    zone.retry = retry
    zone.expire = expire
    zone.ttl = ttl
    zone.rname = rname
    zone.record_ttl = record_ttl
    zone.comment = comment
    zone.save()
    return zone
def delete_dns_zone(user_id, domain_id):
    """
    Delete dns zone and all it's records
    """
    if is_positive_numeric(user_id) is not True:
        raise Invalid("User id must be positive integer")
    elif is_positive_numeric(domain_id) is not True:
        raise Invalid("User id must be positive integer")
    zone = get_dns_zone(user_id, domain_id)
    records = DNSRecordDatabase.query().filter(DNSRecordDatabase.dns_zone_id == zone.id).all()
    for record in records:
        record.delete()
    zone.delete()
    return
def get_dns_zone(user_id, domain_id, limit=None, offset=None):
    if is_positive_numeric(user_id) is not True:
        raise Invalid("User id must be positive integer")
    elif is_positive_numeric(domain_id) is not True:
        raise Invalid("User id must be positive integer")
    zonequery = DNSZoneDatabase.query()
    zonequery = zonequery.filter(DNSZoneDatabase.domain_id == domain_id)
    zonequery = zonequery.filter(DNSZoneDatabase.domain.has(DomainDatabase.user_id == user_id))
    zonequery = do_limits(zonequery, limit, offset)
    try:
        return zonequery.one()
    except NoResultFound:
        pass
    raise DoesNotExist("DNS entry for domain %s does not exist" % domain_id)
Exemple #4
0
def delete_dns_zone(user_id, domain_id):
    """
    Delete dns zone and all it's records
    """
    if is_positive_numeric(user_id) is not True:
        raise Invalid('User id must be positive integer')
    elif is_positive_numeric(domain_id) is not True:
        raise Invalid('User id must be positive integer')
    zone = get_dns_zone(user_id, domain_id)
    records = DNSRecordDatabase.query().filter(
        DNSRecordDatabase.dns_zone_id == zone.id).all()
    for record in records:
        record.delete()
    zone.delete()
    return
Exemple #5
0
def get_dns_zone(user_id, domain_id, limit=None, offset=None):
    if is_positive_numeric(user_id) is not True:
        raise Invalid('User id must be positive integer')
    elif is_positive_numeric(domain_id) is not True:
        raise Invalid('User id must be positive integer')
    zonequery = DNSZoneDatabase.query()
    zonequery = zonequery.filter(DNSZoneDatabase.domain_id == domain_id)
    zonequery = zonequery.filter(
        DNSZoneDatabase.domain.has(DomainDatabase.user_id == user_id))
    zonequery = do_limits(zonequery, limit, offset)
    try:
        return zonequery.one()
    except NoResultFound:
        pass
    raise DoesNotExist("DNS entry for domain %s does not exist" % domain_id)
Exemple #6
0
def do_limits(query, limit, offset=None):
    """
    Apply limit and offset to query

    @raises Invalid: if limit is not None of positive integer
    """
    if limit:
        if is_positive_numeric(limit) is not True:
            raise Invalid('Limit must be positive integer')
        query = query.limit(int(limit))
        if offset:
            if is_positive_numeric(offset) is not True:
                raise Invalid('Lower limit must be positive integer')
            query = query.offset(int(offset))
    return query
Exemple #7
0
def get_domains(user_id=None, limit=None, offset=None):
    query = DomainDatabase.query()
    if user_id is not None:
        if is_positive_numeric(user_id) is not True:
            raise Invalid('User id must be positive integer')
        query = query.filter(DomainDatabase.user_id == user_id)
    query = do_limits(query, limit, offset)
    return query.all()
Exemple #8
0
def get_domains(user_id=None, limit=None, offset=None):
    query =  DomainDatabase.query()
    if user_id is not None:
        if is_positive_numeric(user_id) is not True:
            raise Invalid('User id must be positive integer')
        query = query.filter(DomainDatabase.user_id==user_id)
    query = do_limits(query, limit, offset)
    return query.all()
Exemple #9
0
def get_user_domains(user_id, limit=None, offset=None):
    """
    Get user `user_id` domains.
    @param user_id: user user_id
    @type user_id: positive integer
    @param limit: how many entries to return
    @type limit: positive integer
    @param offset: offset in limit
    @type offset: positive integer
    """
    if is_positive_numeric(user_id) is not True:
        raise Invalid('User id must be positive integer')
    return get_domains(user_id=user_id, limit=limit, offset=offset)
Exemple #10
0
def get_user_domains(user_id, limit=None, offset=None):
    """
    Get user `user_id` domains.
    @param user_id: user user_id
    @type user_id: positive integer
    @param limit: how many entries to return
    @type limit: positive integer
    @param offset: offset in limit
    @type offset: positive integer
    """
    if is_positive_numeric(user_id) is not True:
        raise Invalid('User id must be positive integer')
    return get_domains(user_id=user_id, limit=limit, offset=offset)
Exemple #11
0
def add_user_dns_zone(user_id,
                      domain_id,
                      ttl,
                      retry,
                      refresh,
                      rname,
                      expire,
                      record_ttl,
                      comment=''):
    if is_positive_numeric(user_id) is not True:
        raise Invalid('User id must be positive integer')
    elif is_positive_numeric(domain_id) is not True:
        raise Invalid('User id must be positive integer')
    domain_q = DomainDatabase.query()
    domain_q = domain_q.filter(DomainDatabase.user_id == user_id)
    domain_q = domain_q.filter(DomainDatabase.id == domain_id)
    try:
        domain = domain_q.one()
    except NoResultFound:
        raise DoesNotExist("Domain id=%s does not exist" % domain_id)
    try:
        get_dns_zone(user_id, domain_id)
        raise AlreadyExist("DNS zone already added for domain id=%s" %
                           domain_id)
    except DoesNotExist:
        pass
    zone = DNSZoneDatabase()
    zone.domain_id = domain.id
    zone.refresh = refresh
    zone.retry = retry
    zone.expire = expire
    zone.ttl = ttl
    zone.rname = rname
    zone.record_ttl = record_ttl
    zone.comment = comment
    zone.save()
    return zone