Example #1
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 #2
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 #3
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 #4
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 #5
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 #6
0
def _config_mac(group, mac, remove=False):
    if check_mac(mac):
        devices = get_fact('devices', group) or []
        if not remove and mac.lower() not in devices:
            devices.append(mac.lower())
        elif remove and mac.lower() in devices:
            devices.remove(mac.lower())
        en = {group: devices}
        write_role('devices', en)
    else:
        return 30
Example #7
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 #8
0
    def __init__(self, *args, **kwargs):
        super(VpnProfileForm, self).__init__(*args, **kwargs)

        upri_dns_domain = None

        try:
            upri_dns_domain = get_fact('dns', 'dns', 'hostname')
        except:
            logger.error('Kein upri DNS fact gefunden.')

        if upri_dns_domain:
            self.fields['dyndomain'].widget = forms.HiddenInput()
            self.fields['dyndomain'].initial = upri_dns_domain
            self.fields['dyndomain'].label = ""
Example #9
0
    def __init__(self, *args, **kwargs):
        super(VpnProfileForm, self).__init__(*args, **kwargs)

        upri_dns_domain = None

        try:
            upri_dns_domain = get_fact("dns", "dns", "hostname")
        except:
            logger.error("Kein upri DNS fact gefunden.")

        if upri_dns_domain:
            self.fields["dyndomain"].widget = forms.HiddenInput()
            self.fields["dyndomain"].initial = upri_dns_domain
            self.fields["dyndomain"].label = ""
Example #10
0
def reconfigure_network(ip, netmask, gateway, dns, enable=False):
    try:
        jobs.job_message(
            _("Die Netzwerkeinstellungen werden neu konfiguriert..."))
        try:
            if enable:
                logger.debug("Static IP activated")
                logger.debug(enable)
                jobs.job_message(
                    _("Modus zur Vergabe statischer IP Adressen wird aktiviert..."
                      ))
                utils.exec_upri_config('enable_static_ip', "yes")
            if ip:
                logger.debug("new IP: %s" % ip)
                jobs.job_message(_("IP Adresse wird geändert..."))
                utils.exec_upri_config('set_ip', ip)
            if netmask:
                logger.debug("new netmask: %s" % netmask)
                jobs.job_message(_("Subnetzmaske wird geändert..."))
                utils.exec_upri_config('set_netmask', netmask)
            if gateway:
                logger.debug("new gateway: %s" % gateway)
                jobs.job_message(_("Gateway wird geändert..."))
                utils.exec_upri_config('set_gateway', gateway)
            if dns:
                logger.debug("new dns server: %s" % dns)
                jobs.job_message(_("DNS Server wird geändert..."))
                utils.exec_upri_config('set_dns_server', dns)
            if ip or netmask or gateway or dns:
                if utils.get_fact('interfaces', 'general', 'mode') == "static":
                    jobs.job_message(_("Netzwerk wird neu gestartet..."))
                    logger.debug("restarting network")
                    utils.exec_upri_config('restart_network')

            jobs.job_message(
                _("Konfiguration der Netzwerkeinstellungen erfolgreich."))

        except utils.AnsibleError as e:
            logger.error("ansible failed with error %d: %s" %
                         (e.rc, e.message))
            # jobs.job_message(_("Es ist ein unbekannter Fehler aufgetreten. Fehlercode: %(errorcode)s" % {'errorcode': e.rc}))
            raise
    except Exception as e:
        logger.exception(e)
        # jobs.job_clear_messages()
        jobs.job_error(
            _("Konfiguration der Netzwerkeinstellungen fehlgeschlagen."))
        raise jobs.JobFailedError()
Example #11
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 #12
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 #13
0
        },
    'loggers':
        {
            'uprilogger': {
                'handlers': ['console'],
                'level': 'WARNING',
                'propagate': True,
            },
            "rq.worker": {
                "handlers": ['console', 'out'],
                "level": "INFO"
            },
        },
}

LOG_FILE = get_fact('log', 'django', 'error')
LOG_PATH = get_fact('log', 'general', 'path')

if LOG_FILE and LOG_PATH:
    LOGGING['handlers']['file'] = {
        'level': 'ERROR',
        'class': 'logging.handlers.WatchedFileHandler',
        'filename': LOG_PATH + '/' + LOG_FILE,
    }

    LOGGING['loggers']['django'] = {
        'handlers': ['file'],
        'level': 'INFO',
        'propagate': True,
    }
Example #14
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)
Example #15
0
def get_fact(role, group, fact):
    return utils.get_fact(role, group, fact)
Example #16
0
def get_fact(role, group, fact):
    return utils.get_fact(role, group, fact)