Example #1
0
def vpn_generate(request):
    context = RequestContext(request)

    form = VpnProfileForm(request.POST)

    if form.is_valid():
        profilename = form.cleaned_data.get('profilename')
        dyndomain = form.cleaned_data.get('dyndomain')

        logger.info("generating profile %s" % profilename)
        profile = VpnProfile(profilename=profilename, dyndomain=dyndomain)
        profile.config = "# upri.box OVPN config for %s\nfoo bar baz bar OpenVPN config goes here" % profilename
        profile.save()
        if not (settings.IGNORE_MISSING_UPRICONFIG
                and not exists('/usr/local/bin/upri-config.py')):
            jobs.queue_job(vpnjobs.generate_profile, (str(profile.id), ))
            context.push({'message': True})
        else:
            context.push({'message': False})

        context.push({'form': VpnProfileForm()})

    else:
        context.push({'form': VpnProfileForm(request.POST)})

    context.push({
        'messagestore': jobs.get_messages(),
        'profiles': VpnProfile.objects.all()
    })

    return render_to_response("vpn.html", context)
Example #2
0
def ninja(request):
    context = RequestContext(request)

    if request.method == 'POST':

        form = WlanForm(utils.get_fact('wlan', 'ninja', 'ssid'), request.POST)

        if form.is_valid():
            password = form.cleaned_data['password2']
            ssid = form.cleaned_data['ssid']
            jobs.queue_job(wlanjobs.reconfigure_tor, (ssid, password))
            context.push({'message': True, 'ninja_ssid':ssid})
        else:
            logger.error("tor form validation failed for %s" % request.path)

    else:
        form = WlanForm(utils.get_fact('wlan','ninja','ssid'))

    model_info = ModelInfo()
    pi3 = model_info.runs_on_pi3()

    context.push({
        'form': form,
        'messagestore': jobs.get_messages(),
        'pi3': pi3})

    return render_to_response("ninja.html", context)
Example #3
0
def ninja(request):
    context = {}

    if request.method == 'POST':

        form = WlanForm(utils.get_fact('wlan', 'ninja', 'ssid'), request.POST)

        if form.is_valid():
            password = form.cleaned_data['password2']
            ssid = form.cleaned_data['ssid']
            jobs.queue_job(wlanjobs.reconfigure_tor, (ssid, password))
            context.update({'message': True, 'ninja_ssid': ssid})
        else:
            logger.error("tor form validation failed for %s" % request.path)

    else:
        form = WlanForm(utils.get_fact('wlan', 'ninja', 'ssid'))

    model_info = ModelInfo()
    pi3 = model_info.runs_on_pi3() and not model_info.uses_external_wifi()

    context.update({
        'form': form,
        'messagestore': jobs.get_messages(),
        'pi3': pi3})

    return render(request, "ninja.html", context)
Example #4
0
def vpn_generate(request):
    context = RequestContext(request)

    form = VpnProfileForm(request.POST)

    if form.is_valid():
        profilename = form.cleaned_data.get('profilename')
        dyndomain = form.cleaned_data.get('dyndomain')

        logger.info("generating profile %s" % profilename )
        profile = VpnProfile(profilename=profilename, dyndomain=dyndomain)
        profile.config = "# upri.box OVPN config for %s\nfoo bar baz bar OpenVPN config goes here" % profilename
        profile.save()
        if not (settings.IGNORE_MISSING_UPRICONFIG and not exists('/usr/local/bin/upri-config.py')):
            jobs.queue_job(vpnjobs.generate_profile, (str(profile.id),))
            context.push({'message': True})
        else:
            context.push({'message': False})

        context.push({'form': VpnProfileForm()})

    else:
        context.push({'form': VpnProfileForm(request.POST)})

    context.push({
            'messagestore': jobs.get_messages(),
            'profiles': VpnProfile.objects.all()})

    return render_to_response("vpn.html", context)
Example #5
0
def silent_toggle(request):
    if request.method != 'POST':
        raise Http404()

    state = request.POST['enabled']
    jobs.queue_job(wlanjobs.toggle_silent, (state,))

    return render(request, "modal.html", {"message": True, "refresh_url": reverse('upri_silent')})
Example #6
0
def ssh_toggle(request):
    if request.method != 'POST':
        raise Http404()

    state = request.POST['enabled']
    jobs.queue_job(sshjobs.toggle_ssh, (state,))

    return render_to_response("modal.html", {"message": True, "refresh_url": reverse('upri_more')})
Example #7
0
def ninja_toggle(request):
    if request.method != 'POST':
        raise Http404()

    state = request.POST['enabled']
    jobs.queue_job(wlanjobs.toogle_tor, (state,))

    return render_to_response("modal.html", {"message": True, "refresh_url": reverse('upri_ninja')})
Example #8
0
def save_dhcp(request):
    if request.method != 'POST':
        raise Http404()

    jobs.queue_job(sshjobs.toggle_static, ('dhcp', ))

    return render(request, "modal.html", {
        "message": True,
        "refresh_url": reverse('upri_more')
    })
Example #9
0
def apate_toggle(request):
    if request.method != 'POST':
        raise Http404()

    state = request.POST['enabled']
    jobs.queue_job(sshjobs.toggle_dhcpd, ('no', ))
    jobs.queue_job(sshjobs.toggle_apate, (state, ))

    return render(request, "modal.html", {
        "message": True,
        "refresh_url": reverse('upri_config')
    })
Example #10
0
def set_device_mode(request):
    mode = request.POST.get('mode', None)
    try:
        device = DeviceEntry.objects.get(slug=request.POST.get('dev_id', None))
    except DeviceEntry.DoesNotExist:
        device = None
    device.changing = True
    device.save()
    jobs.queue_job(devicejobs.toggle_device_mode, (mode, device))

    return render(request, "modal.html", {
        "message": True,
        "refresh_url": reverse('upri_devices')
    })
Example #11
0
def more_static(request, enable=None, dhcpd=None):
    context = {}

    net_info = utils.get_system_network_config()
    ip_form = StaticIPForm(
        net_info['ip'],
        net_info['netmask'],
        net_info['gateway'],
        net_info['dns_servers'][0],
        utils.get_fact('dhcpd', 'general', 'enabled'),
    )

    if request.method == 'POST':

        ip_form = StaticIPForm(net_info['ip'], net_info['netmask'],
                               net_info['gateway'], net_info['dns_servers'][0],
                               utils.get_fact('dhcpd', 'general',
                                              'enabled'), request.POST)
        if ip_form.is_valid():
            ip = ip_form.cleaned_data['ip_address']
            netmask = ip_form.cleaned_data['ip_netmask']
            gateway = ip_form.cleaned_data['gateway']
            dns = ip_form.cleaned_data['dns_server']
            # dhcp = ip_form.cleaned_data['dhcp_server']

            jobs.queue_job(sshjobs.reconfigure_network,
                           (ip, netmask, gateway, dns, enable))
            jobs.queue_job(sshjobs.toggle_dhcpd, ("yes" if dhcpd else "no", ))

            context.update({
                'message': True,
                "refresh_url":
                reverse('upri_config'
                        ),  # request.path,  # reverse('upri_config_static'),
                'messagestore': jobs.get_messages()
            })

    context.update({
        'ip_form': ip_form,
        'messagestore': jobs.get_messages(),
        'href': request.path,
        "refresh_url": reverse('upri_config'),
    })

    return render(request, "static.html", context)
Example #12
0
def silent(request):
    context = {}

    if request.method == 'POST':

        form = WlanForm(utils.get_fact('wlan', 'upri', 'ssid'), request.POST)
        if form.is_valid():
            password = form.cleaned_data['password2']
            ssid = form.cleaned_data['ssid']
            jobs.queue_job(wlanjobs.reconfigure_wlan, (ssid, password))
            context.update({'message': True, 'upri_ssid': ssid})
        else:
            logger.error("form validation failed for %s" % request.path)

    else:
        form = WlanForm(utils.get_fact('wlan', 'upri', 'ssid'))

    context.update({'form': form, 'messagestore': jobs.get_messages()})
    return render(request, "silent.html", context)
Example #13
0
def setup_failed(request):
    phase = "failed"
    context = {}

    if info.check_ipv6():
        phase = "ipv6"

    _setup_redis(phase)

    if not info.check_ipv6():
        if request.method == 'GET' and utils.get_fact('apate', 'general',
                                                      'enabled') == 'yes':
            jobs.queue_job(morejobs.toggle_apate, ("no", False), unique=True)
            # context.update({'message': True})

    context.update({
        'phase': phase  # init, failed, ipv6, success
    })
    return render(request, "setup.html", context)
Example #14
0
def silent(request):
    context = RequestContext(request)

    if request.method == 'POST':

        form = WlanForm(utils.get_fact('wlan', 'upri', 'ssid'), request.POST)
        if form.is_valid():
            password = form.cleaned_data['password2']
            ssid = form.cleaned_data['ssid']
            jobs.queue_job(wlanjobs.reconfigure_wlan, (ssid, password))
            context.push({'message': True, 'upri_ssid': ssid})
        else:
            logger.error("form validation failed for %s" % request.path)

    else:
        form = WlanForm(utils.get_fact('wlan', 'upri', 'ssid'))

    context.push({'form': form})
    context.push({'messagestore': jobs.get_messages()})
    return render_to_response("silent.html", context)
Example #15
0
def setup_init(request):
    phase = "init"
    context = {}

    if not info.check_ipv6():
        if info.check_connection():
            if request.method == 'GET' and utils.get_fact(
                    'apate', 'general', 'enabled') == 'no':
                jobs.queue_job(morejobs.toggle_apate, ("yes", ), unique=True)
                # context.update({'message': True})
        else:
            phase = "isolated"

    if info.check_ipv6():
        return redirect('upri_setup_failed')
    else:
        context.update({
            'phase': phase,  # init, failed, success
            'refresh_url': reverse('upri_setup_eval'),
            'error_url': reverse('upri_setup_error')
        })
        return render(request, "setup.html", context)
Example #16
0
def static_toggle(request):
    if request.method != 'POST':
        raise Http404()

    current = [
        utils.get_fact('interfaces', 'static', 'ip', defaults=False),
        utils.get_fact('interfaces', 'static', 'netmask', defaults=False),
        utils.get_fact('interfaces', 'static', 'dns', defaults=False),
        utils.get_fact('interfaces', 'static', 'gateway', defaults=False),
    ]

    state = request.POST.get('enabled', None)
    if all(current) or state == 'no':
        # all requirements met or dhcp requested
        jobs.queue_job(sshjobs.toggle_static, (state, ))
        return render(request, "modal.html", {
            "message": True,
            "refresh_url": reverse('upri_config')
        })
    else:
        # not all requirements met
        return HttpResponseForbidden(reverse('upri_config_static_enable'))
Example #17
0
def wifi_mode(request):
    if request.method != 'POST':
        raise Http404()

    jobs.queue_job(wlanjobs.toggle_silent, ('yes', ))
    jobs.queue_job(sshjobs.toggle_apate, ('no', ))
    jobs.queue_job(sshjobs.toggle_dhcpd, ('no', ))
    return render(request, "modal.html", {
        "message": True,
        "refresh_url": reverse('upri_config')
    })
Example #18
0
def fail(request):
    # if not settings.DEBUG:
    #     raise Http404()

    jobs.queue_job(devicejobs.fail_dummy, ("", ))
    return HttpResponse(status=200)
Example #19
0
def more_config(request, save_form):
    context = {}

    form = AdminForm(request)
    net_info = utils.get_system_network_config()
    ip_form = StaticIPForm(net_info['ip'], net_info['netmask'],
                           net_info['gateway'], net_info['dns_servers'][0],
                           utils.get_fact('dhcpd', 'general', 'enabled'))

    if request.method == 'POST':

        if save_form == "user":
            form = AdminForm(request, request.POST)
            if form.is_valid():
                new_password = form.cleaned_data['password2']
                new_username = form.cleaned_data['username']

                old_password = form.cleaned_data['oldpassword']
                old_username = request.user.username

                logger.info("updating user %s..." % old_username)
                u = User.objects.get(username=old_username)

                # sanity check, this should never happen
                if not u:
                    logger.error("unexpected error: user %s does not exist" %
                                 old_username)
                    return HttpResponse(status=500)

                u.set_password(new_password)
                u.username = new_username
                u.save()
                logger.info(
                    "user %s updated to %s (password changed: %s)" %
                    (old_username, new_username, new_password != old_password))
                context.update({'message': True})

            else:
                logger.error("admin form validation failed")
        elif save_form == "static_ip":
            ip_form = StaticIPForm(
                net_info['ip'], net_info['netmask'], net_info['gateway'],
                net_info['dns_servers'][0],
                utils.get_fact('dhcpd', 'general', 'enabled'), request.POST)
            if ip_form.is_valid():
                ip = ip_form.cleaned_data['ip_address']
                netmask = ip_form.cleaned_data['ip_netmask']
                gateway = ip_form.cleaned_data['gateway']
                dns = ip_form.cleaned_data['dns_server']
                dhcp = ip_form.cleaned_data['dhcp_server']
                jobs.queue_job(sshjobs.reconfigure_network,
                               (ip, netmask, gateway, dns, dhcp))
                context.update({
                    'message': True,
                    "refresh_url": reverse('upri_more'),
                    'messagestore': jobs.get_messages()
                })

    update_status = UpdateStatus()

    context.update({
        'form': form,
        'ip_form': ip_form,
        'messagestore': jobs.get_messages(),
        'update_time': update_status.update_utc_time,
        'version': update_status.get_version()
    })

    return render(request, "more.html", context)