示例#1
0
文件: home.py 项目: ziqi521/SnitchDNS
def index():
    # This function deliberately doesn't have a @login_required parameter because we want to run a check for a
    # 'first-visit' type scenario, in order to create the administrator.

    provider = Provider()
    zones = provider.dns_zones()
    users = provider.users()
    if users.count() == 0:
        # Looks like we need to setup the administrator.
        return redirect(url_for('install.index'))

    if not current_user.is_authenticated:
        return redirect(url_for('auth.login'))

    search = provider.search()
    results = search.search_from_request(request)

    aliases = provider.aliases()

    return render_template(
        'home/index.html',
        results=results['results'],
        params=results['params'],
        page_url='home.index',
        zone_count=zones.count(user_id=current_user.id),
        aliases=aliases.get_dict(
            None if current_user.admin else current_user.id))
示例#2
0
def alias_edit_save(alias_id):
    provider = Provider()
    aliases = provider.aliases()

    ip = request.form['ip'].strip()
    name = request.form['name'].strip()
    if len(name) == 0:
        flash('Please enter an alias name', 'error')
        return redirect(url_for('dns.alias_index'))
    elif not aliases.is_valid_ip_or_range(ip):
        flash('Please enter a valid IP address', 'error')
        return redirect(url_for('dns.alias_index'))

    alias_with_same_ip = aliases.get(None, user_id=current_user.id, ip=ip)
    if alias_with_same_ip and alias_with_same_ip.id != alias_id:
        flash('An alias with this IP address already exists', 'error')
        return redirect(url_for('dns.alias_index'))

    user_id = None if current_user.admin else current_user.id
    if alias_id > 0:
        if not aliases.can_access(alias_id, user_id):
            flash('You cannot access the selected alias', 'error')
            return redirect(url_for('dns.alias_index'))

        alias = aliases.update(alias_id, ip=ip, name=name)
    else:
        alias = aliases.save(current_user.id, ip, name)

    flash('Alias Created' if alias_id == 0 else 'Alias Updated', 'success')
    return redirect(url_for('dns.alias_index'))
示例#3
0
def alias_index():
    provider = Provider()
    aliases = provider.aliases()

    user_id = None if current_user.admin else current_user.id

    return render_template('dns/aliases/index.html',
                           aliases=aliases.all(user_id=user_id,
                                               order_column='name',
                                               order_by='asc'))
示例#4
0
def alias_delete(alias_id):
    provider = Provider()
    aliases = provider.aliases()

    user_id = None if current_user.admin else current_user.id
    if not aliases.can_access(alias_id, user_id):
        flash('You cannot access the selected alias', 'error')
        return redirect(url_for('dns.alias_index'))

    if not aliases.delete(alias_id, user_id=user_id):
        flash('Could not delete alias', 'error')
        return redirect(url_for('dns.alias_index'))

    flash('Alias deleted', 'success')
    return redirect(url_for('dns.alias_index'))
示例#5
0
def index():
    provider = Provider()
    search = provider.search()
    aliases = provider.aliases()

    results = search.search_from_request(request)
    advanced = int(request.args.get('advanced', 0)) == 1

    return render_template(
        'logs/index.html',
        results=results['results'],
        params=results['params'],
        filters=results['filters'],
        page_url='logs.index',
        advanced=advanced,
        aliases=aliases.get_dict(
            None if current_user.admin else current_user.id))
示例#6
0
def alias_edit(alias_id):
    provider = Provider()
    aliases = provider.aliases()

    autofill_ip = request.args.get('ip', '').strip()
    if len(autofill_ip) > 0 and not aliases.is_valid_ip_or_range(autofill_ip):
        flash('Invalid IP address', 'error')
        return redirect(url_for('dns.alias_index'))

    user_id = None if current_user.admin else current_user.id
    if alias_id > 0:
        if not aliases.can_access(alias_id, user_id):
            flash('You cannot access the selected alias', 'error')
            return redirect(url_for('dns.alias_index'))

        alias = aliases.get(alias_id, user_id=user_id)
    else:
        alias = None

    return render_template('dns/aliases/edit.html',
                           alias_id=alias_id,
                           alias=alias,
                           autofill_ip=autofill_ip)