示例#1
0
def toggle_dhcpd(state):
    try:
        if state in ['no', 'yes']:
            try:
                logger.debug("dhcp server: %s" % state)
                if state == 'yes':
                    jobs.job_message(_("DHCP Server wird aktiviert..."))
                else:
                    jobs.job_message(_("DHCP Server wird deaktiviert..."))
                utils.exec_upri_config('set_dhcpd', state)

                jobs.job_message(_("DHCP Server wird konfiguriert..."))
                utils.exec_upri_config('restart_dhcpd')
                jobs.job_message(
                    _("Konfiguration des DHCP Servers erfolgreich."))

            except utils.AnsibleError as e:
                logger.error("ansible failed with error %d: %s" %
                             (e.rc, e.message))
                raise
        else:
            jobs.job_message(_("Es ist ein unbekannter Fehler aufgetreten."))
            raise jobs.JobFailedError()

    except Exception as e:
        logger.exception(e)
        # jobs.job_clear_messages()
        jobs.job_error(_("Konfiguration des DHCP Servers fehlgeschlagen."))
        raise jobs.JobFailedError()
示例#2
0
def get_device_queries(request, slug, week=None):
    if not week:
        week = datetime.now().date().isocalendar()[1]
        week = int(week)

    try:
        logger.debug("parsing logs")
        exec_upri_config('parse_logs')
        if int(week) == 0:
            raise ValueError()
    except (ValueError, TypeError) as error:
        return HttpResponse(status=412)

    try:

        dev = DeviceEntry.objects.get(slug=slug)
        domains, blocked_domains, block_percent = get_queries_for_device(
            dev.mac, week, sort=True, limit=10)

    except (ValueError, TypeError, DeviceEntry.DoesNotExist) as error:
        #return HttpResponse(error)
        return HttpResponse(status=412)

    return JsonResponse({
        'domains': domains,
        'blocked_domains': blocked_domains,
        'block_percent': block_percent
    })
示例#3
0
def toggle_ssh(state):
    try:
        if state in ['yes', 'no']:
            try:
                if state == 'yes':
                    jobs.job_message(_("SSH wird gestartet..."))
                else:
                    jobs.job_message(_("SSH wird gestoppt..."))

                logger.debug("restarting ssh")
                utils.exec_upri_config('enable_ssh', state)
                utils.exec_upri_config('restart_ssh')
                jobs.job_message(_("Konfiguration von SSH erfolgreich."))

            except utils.AnsibleError as e:
                logger.error("ansible failed with error %d: %s" %
                             (e.rc, e.message))
                raise
        else:
            # jobs.job_message(_("Es ist ein unbekannter Fehler aufgetreten."))
            logger.error("something unexpected happened")
            raise jobs.JobFailedError()
    except Exception as e:
        logger.exception(e)
        # jobs.job_clear_messages()
        jobs.job_error(_("Konfiguration von SSH fehlgeschlagen."))
        raise jobs.JobFailedError()
示例#4
0
文件: jobs.py 项目: mx2x/upribox
def toggle_static(state):

    if state in ['no', 'yes']:
        try:
            if state == 'yes':
                jobs.job_message(_("Statische IP wird aktiviert..."))
            else:
                jobs.job_message(_("Statische IP wird deaktiviert..."))

            logger.debug("restarting network")
            utils.exec_upri_config('enable_static_ip', state)
            utils.exec_upri_config('restart_network')
            jobs.job_message(_("Konfiguration von Interfaces erfolgreich."))

        except utils.AnsibleError as e:
            logger.error("ansible failed with error %d: %s" %
                         (e.rc, e.message))
            if state == 'yes':
                jobs.job_message(
                    _("Aktivierung von statischer IP fehlgeschlagen."))
            else:
                jobs.job_message(
                    _("Deaktivierung von statischer IP fehlgeschlagen."))
    else:
        jobs.job_message(_("Es ist ein unbekannter Fehler aufgetreten."))
示例#5
0
def toggle_static(state):
    try:
        if state in ['no', 'yes']:
            try:
                if state == 'yes':
                    jobs.job_message(_("Statische IP wird aktiviert..."))
                else:
                    jobs.job_message(_("Statische IP wird deaktiviert..."))

                logger.debug("restarting network")
                utils.exec_upri_config('enable_static_ip', state)
                utils.exec_upri_config('restart_network')
                jobs.job_message(
                    _("Konfiguration der statischen IP erfolgreich."))

            except utils.AnsibleError as e:
                logger.error("ansible failed with error %d: %s" %
                             (e.rc, e.message))
                raise
        else:
            logger.error("something unexpected happened")
            raise jobs.JobFailedError()

    except Exception as e:
        logger.exception(e)
        # jobs.job_clear_messages()
        jobs.job_error(_("Konfiguration der statischen IP fehlgeschlagen."))
        raise jobs.JobFailedError()
示例#6
0
文件: jobs.py 项目: mx2x/upribox
def toggle_apate(state):

    if state in ['yes', 'no']:
        try:
            if state == 'yes':
                jobs.job_message(
                    _("Apate ARP Spoofing Daemon wird gestartet..."))
            else:
                jobs.job_message(
                    _("Apate ARP Spoofing Daemon wird gestoppt..."))

            logger.debug("restarting apate")
            utils.exec_upri_config('enable_apate', state)
            utils.exec_upri_config('restart_apate')
            jobs.job_message(
                _("Konfiguration von Apate ARP Spoofing Daemon erfolgreich."))

        except utils.AnsibleError as e:
            logger.error("ansible failed with error %d: %s" %
                         (e.rc, e.message))
            if state == 'yes':
                jobs.job_message(
                    _("Starten von Apate ARP Spoofing Daemon fehlgeschlagen."))
            else:
                jobs.job_message(
                    _("Stoppen von Apate ARP Spoofing Daemon fehlgeschlagen."))
    else:
        jobs.job_message(_("Es ist ein unbekannter Fehler aufgetreten."))
示例#7
0
def toggle_vpn(state):
    try:
        if state in ['yes', 'no']:
            try:
                if state == 'yes':
                    jobs.job_message(_("VPN wird gestartet..."))
                else:
                    jobs.job_message(_("VPN wird gestoppt..."))

                # Restart VPN
                logger.debug("restarting vpn")
                utils.exec_upri_config('enable_vpn', state)
                utils.exec_upri_config('restart_vpn')
                jobs.job_message(_("Konfiguration des VPNs erfolgreich."))

            except utils.AnsibleError as e:
                logger.error("ansible failed with error %d: %s" %
                             (e.rc, e.message))
                raise
        else:
            jobs.job_message(_("Es ist ein unbekannter Fehler aufgetreten."))
            raise jobs.JobFailedError()
    except Exception as e:
        logger.exception(e)
        # jobs.job_clear_messages()
        jobs.job_error(_("Konfiguration des VPNs fehlgeschlagen."))
        raise jobs.JobFailedError()
示例#8
0
文件: jobs.py 项目: quaqua/upribox
def delete_profile(profile_id):
    try:
        jobs.job_message(_("VPN Profile wird entfernt..."))
        logger.debug("deleting vpn profile")
        utils.exec_upri_config('delete_profile', profile_id)
        jobs.job_message(_("Entfernen des VPN Profiles erfolgreich."))

    except utils.AnsibleError as e:
        logger.error("ansible failed with error %d: %s" % (e.rc, e.message))
        jobs.job_message(_("Entfernen des VPN Profiles fehlgeschlagen."))
示例#9
0
def json_statistics(request):

    logger.debug("parsing logs")
    utils.exec_upri_config('parse_logs')


    truncate_date = connection.ops.date_trunc_sql('month', 'log_date')
    privoxy_qs = PrivoxyLogEntry.objects.extra({'month':truncate_date})
    privoxy_log = privoxy_qs.values('month').annotate(Count('pk')).order_by('month')
    dnsmasq_qs = DnsmasqBlockedLogEntry.objects.extra({'month': truncate_date})
    dnsmasq_log = dnsmasq_qs.values('month').annotate(Count('pk')).order_by('month')

    monthly = [[0]*5, [0]*5]

    now = time.localtime()
    months = [_localdate(datetime.fromtimestamp(time.mktime((now.tm_year, now.tm_mon - n, 1, 0, 0, 0, 0, 0, 0))),"F") for n in reversed(range(5))]
    for entry in privoxy_log:
        cur_month = _localdate(datetime.strptime(entry['month'], '%Y-%m-%d'), "F")
        monthly[1][months.index(cur_month)] = entry['pk__count']
    for entry in dnsmasq_log:
        cur_month = _localdate(datetime.strptime(entry['month'], '%Y-%m-%d'), "F")
        monthly[0][months.index(cur_month)] = entry['pk__count']


    privoxy_log = PrivoxyLogEntry.objects.values('url').annotate(Count('pk')).order_by('-pk__count')
    filtered_pages = list()
    dnsmasq_log = DnsmasqBlockedLogEntry.objects.values('url').annotate(Count('pk')).order_by('-pk__count')
    blocked_pages = list()

    for entry in privoxy_log[0:5]:
        #print entry
        filtered_pages.append({"url": entry['url'], "count": entry['pk__count']})
    for entry in dnsmasq_log[0:5]:
        #print entry
        blocked_pages.append({"url": entry['url'], "count": entry['pk__count']})

    today = datetime.now().date()
    total_blocked_queries = DnsmasqBlockedLogEntry.objects.count()
    today_blocked_queries = DnsmasqBlockedLogEntry.objects.filter(log_date__contains=today).count()
    pie1_data = [DnsmasqQueryLogEntry.objects.count() - total_blocked_queries, total_blocked_queries]
    pie2_data = [DnsmasqQueryLogEntry.objects.filter(log_date__contains=today).count() - today_blocked_queries, today_blocked_queries]

    return HttpResponse(json.dumps({'pie1_data': {
                                        'series': pie1_data
                                    },
                                    'pie2_data': {
                                        'series': pie2_data
                                    },
                                    'filtered_pages': filtered_pages,
                                    'blocked_pages': blocked_pages,
                                    'bar_data': {
                                        'labels': months,
                                        'series': monthly
                                    }}),  content_type="application/json")
示例#10
0
def statistics_update(request, week=None):
    if not week:
        week = datetime.now().date().isocalendar()[1]
    try:
        datetime.strptime(week, '%W')
        logger.debug("parsing logs")
        utils.exec_upri_config('parse_logs')
        if int(week) == 0:
            raise ValueError()
    except (ValueError, TypeError):
        return HttpResponse(status=412)

    return JsonResponse(detailed_week(week))
示例#11
0
def toggle_silent(state):

    if state in ['yes', 'no']:
        try:
            if state == 'yes':
                jobs.job_message(_("silent WLAN wird gestartet..."))
            else:
                jobs.job_message(_("silent WLAN wird gestoppt..."))

            logger.debug("restarting silent")
            utils.exec_upri_config('enable_silent', state)
            if state == 'no':
                utils.exec_upri_config('enable_tor', 'no')
                utils.exec_upri_config('restart_tor')
            else:
                utils.exec_upri_config('restart_silent')
            jobs.job_message(_("Konfiguration des silent WLAN erfolgreich."))

        except utils.AnsibleError as e:
            logger.error("ansible failed with error %d: %s" %
                         (e.rc, e.message))
            if state == 'yes':
                jobs.job_message(_("Starten des silent WLAN fehlgeschlagen."))
            else:
                jobs.job_message(_("Stoppen des silent WLAN fehlgeschlagen."))
    else:
        jobs.job_message(_("Es ist ein unbekannter Fehler aufgetreten."))
示例#12
0
def vpn_delete(request, slug):
    logger.info("deleting vpn profile %s..." % slug)
    try:
        profile = VpnProfile.objects.get(slug=slug)
        profile.delete()

        try:
            logger.debug("deleting vpn profile")
            utils.exec_upri_config('delete_profile', slug)
        except utils.AnsibleError as e:
            logger.error("ansible failed with error %d: %s" % (e.rc, e.message))

        response = {'deleted': 'true'}
    except VpnProfile.DoesNotExist:
        response = {'deleted': 'true'}

    return JsonResponse(response)
示例#13
0
def vpn_delete(request, slug):
    logger.info("deleting vpn profile %s..." % slug)
    try:
        profile = VpnProfile.objects.get(slug=slug)
        profile.delete()

        try:
            logger.debug("deleting vpn profile")
            utils.exec_upri_config('delete_profile', slug)
        except utils.AnsibleError as e:
            logger.error("ansible failed with error %d: %s" %
                         (e.rc, e.message))

        response = {'deleted': 'true'}
    except VpnProfile.DoesNotExist:
        response = {'deleted': 'true'}

    return JsonResponse(response)
示例#14
0
def generate_profile(profile_id):
    try:
        try:
            jobs.job_message(_("VPN Profile wird generiert..."))
            logger.debug("generating vpn profile")
            utils.exec_upri_config('generate_profile', profile_id)
            jobs.job_message(_("Generieren des VPN Profiles erfolgreich."))

        except utils.AnsibleError as e:
            logger.error("ansible failed with error %d: %s" %
                         (e.rc, e.message))
            raise
            # jobs.job_message(_("Generieren des VPN Profiles fehlgeschlagen."))
            #profile = VpnProfile.objects.get(id=profile_id)
            #profile.delete()
    except Exception as e:
        logger.exception(e)
        # jobs.job_clear_messages()
        jobs.job_error(_("Generieren des VPN Profiles fehlgeschlagen."))
        raise jobs.JobFailedError()
示例#15
0
def reconfigure_tor(ssid, password):

    jobs.job_message(_("Das Ninja WLAN wird neu konfiguriert..."))

    try:
        if ssid:
            logger.debug("new tor ssid: %s" % ssid)
            jobs.job_message(_("Name wird geändert..."))
            utils.exec_upri_config('set_tor_ssid', ssid)
        if password:
            logger.debug("new tor password")
            jobs.job_message(_("Passwort wird geändert..."))
            utils.exec_upri_config('set_tor_password', password)
        if password or ssid:
            logger.debug("restarting tor wlan")
            jobs.job_message(_("WLAN wird neu gestartet..."))
            utils.exec_upri_config('restart_wlan')

        jobs.job_message(_("Konfiguration 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}))
示例#16
0
def reconfigure_wlan(ssid, password):
    try:
        jobs.job_message(_("Das Silent WLAN wird neu konfiguriert..."))
        try:
            if ssid:
                logger.debug("new ssid: %s" % ssid)
                jobs.job_message(_("Name wird geändert..."))
                utils.exec_upri_config('set_ssid', ssid)
            if password:
                logger.debug("new password: %s" % password)
                jobs.job_message(_("Passwort wird geändert..."))
                utils.exec_upri_config('set_password', password)
            if password or ssid:
                jobs.job_message(_("Wlan wird neu gestartet..."))
                logger.debug("restarting wlan")
                utils.exec_upri_config('restart_wlan')

            jobs.job_message(_("Konfiguration des WLANs 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 des WLANs fehlgeschlagen."))
        raise jobs.JobFailedError()
示例#17
0
def get_device_status(request, slug):
    try:
        dev = DeviceEntry.objects.get(slug=slug)
    except DeviceEntry.DoesNotExist:
        res = None
    else:
        res = utils.exec_upri_config("check_device", dev.ip)
        if bool(res):
            # update last_seen date
            dev.last_seen = django_now()
            dev.save()

    return JsonResponse({slug: bool(res)})
示例#18
0
def json_statistics(request):

    logger.debug("parsing logs")
    utils.exec_upri_config('parse_logs')
    cur_week = datetime.now().date().isocalendar()[1]
    cur_year = datetime.now().year

    data = [{
        "week":
        stats.sub_week(cur_week, cur_year, i),
        "ugly":
        stats.get_week_counters(stats.sub_week(cur_week, cur_year, i))[0],
        "bad":
        stats.get_week_counters(stats.sub_week(cur_week, cur_year, i))[1]
    } for i in range(1, SHOW_WEEKS)
            if stats.week_exists(stats.sub_week(cur_week, cur_year, i))]

    detailed = detailed_week(cur_week)

    data.insert(0, detailed)

    return JsonResponse(data, safe=False)
示例#19
0
def toggle_vpn(state):
    if state in ['yes', 'no']:
        try:
            if state == 'yes':
                jobs.job_message(_("VPN wird gestartet..."))
            else:
                jobs.job_message(_("VPN wird gestoppt..."))

            # Restart VPN
            logger.debug("restarting vpn")
            utils.exec_upri_config('enable_vpn', state)
            utils.exec_upri_config('restart_vpn')
            jobs.job_message(_("Konfiguration des VPNs erfolgreich."))

        except utils.AnsibleError as e:
            logger.error("ansible failed with error %d: %s" % (e.rc, e.message))
            if state == 'yes':
                jobs.job_message(_("Starten des VPNs fehlgeschlagen."))
            else:
                jobs.job_message(_("Stoppen des VPNs fehlgeschlagen."))
    else:
        jobs.job_message(_("Es ist ein unbekannter Fehler aufgetreten."))
示例#20
0
def refresh_devices(request):
    try:
        utils.exec_upri_config('parse_user_agents')
    except utils.AnsibleError as ae:
        logger.exception(ae)

    devices = get_entries()
    response = [{
        'slug':
        dev.slug,
        'mode':
        dev.mode,
        'mode_url':
        reverse('upri_devices_mode'),
        'name_url':
        reverse('upri_device_name', kwargs={'slug': dev.slug}),
        'name':
        get_device_name(dev),
        'changing':
        dev.changing
    } for dev in devices]

    return JsonResponse(response, safe=False)
示例#21
0
def toggle_apate(state, messages=True):
    try:
        if state in ['yes', 'no']:
            try:
                if state == 'yes':
                    if messages:
                        jobs.job_message(
                            _("Apate ARP Spoofing Daemon wird gestartet..."))
                else:
                    if messages:
                        jobs.job_message(
                            _("Apate ARP Spoofing Daemon wird gestoppt..."))

                logger.debug("restarting apate")
                utils.exec_upri_config('enable_apate', state)
                utils.exec_upri_config('restart_apate')
                if messages:
                    jobs.job_message(
                        _("Konfiguration von Apate ARP Spoofing Daemon erfolgreich."
                          ))

            except utils.AnsibleError as e:
                logger.error("ansible failed with error %d: %s" %
                             (e.rc, e.message))
                raise

        else:
            logger.error("something unexpected happened")
            raise jobs.JobFailedError()

    except Exception as e:
        logger.exception(e)
        # jobs.job_clear_messages()
        jobs.job_error(
            _("Konfiguration von Apate ARP Spoofing Daemon fehlgeschlagen."))
        raise jobs.JobFailedError()
示例#22
0
def reconfigure_wlan(ssid, password):

    jobs.job_message(_("Das Silent WLAN wird neu konfiguriert..."))
    try:
        if ssid:
            logger.debug("new ssid: %s" % ssid)
            jobs.job_message(_("Name wird geändert..."))
            utils.exec_upri_config('set_ssid', ssid)
        if password:
            logger.debug("new password: %s" % password)
            jobs.job_message(_("Passwort wird geändert..."))
            utils.exec_upri_config('set_password', password)
        if password or ssid:
            jobs.job_message(_("Wlan wird neu gestartet..."))
            logger.debug("restarting wlan")
            utils.exec_upri_config('restart_wlan')

        jobs.job_message(_("Konfiguration 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}))
示例#23
0
文件: views.py 项目: quaqua/upribox
def json_statistics(request):

    logger.debug("parsing logs")
    utils.exec_upri_config('parse_logs')

    truncate_date = connection.ops.date_trunc_sql('month', 'log_date')
    privoxy_qs = PrivoxyLogEntry.objects.extra({'month': truncate_date})
    privoxy_log = privoxy_qs.values('month').annotate(
        Count('pk')).order_by('month')
    dnsmasq_qs = DnsmasqBlockedLogEntry.objects.extra({'month': truncate_date})
    dnsmasq_log = dnsmasq_qs.values('month').annotate(
        Count('pk')).order_by('month')

    monthly = [[0] * 5, [0] * 5]

    now = time.localtime()
    months = [
        _localdate(
            datetime.fromtimestamp(
                time.mktime(
                    (now.tm_year, now.tm_mon - n, 1, 0, 0, 0, 0, 0, 0))), "F")
        for n in reversed(range(5))
    ]
    for entry in privoxy_log:
        cur_month = _localdate(datetime.strptime(entry['month'], '%Y-%m-%d'),
                               "F")
        monthly[1][months.index(cur_month)] = entry['pk__count']
    for entry in dnsmasq_log:
        cur_month = _localdate(datetime.strptime(entry['month'], '%Y-%m-%d'),
                               "F")
        monthly[0][months.index(cur_month)] = entry['pk__count']

    privoxy_log = PrivoxyLogEntry.objects.values('url').annotate(
        Count('pk')).order_by('-pk__count')
    filtered_pages = list()
    dnsmasq_log = DnsmasqBlockedLogEntry.objects.values('url').annotate(
        Count('pk')).order_by('-pk__count')
    blocked_pages = list()

    for entry in privoxy_log[0:5]:
        #print entry
        filtered_pages.append({
            "url": entry['url'],
            "count": entry['pk__count']
        })
    for entry in dnsmasq_log[0:5]:
        #print entry
        blocked_pages.append({
            "url": entry['url'],
            "count": entry['pk__count']
        })

    today = datetime.now().date()
    total_blocked_queries = DnsmasqBlockedLogEntry.objects.count()
    today_blocked_queries = DnsmasqBlockedLogEntry.objects.filter(
        log_date__contains=today).count()
    pie1_data = [
        DnsmasqQueryLogEntry.objects.count() - total_blocked_queries,
        total_blocked_queries
    ]
    pie2_data = [
        DnsmasqQueryLogEntry.objects.filter(log_date__contains=today).count() -
        today_blocked_queries, today_blocked_queries
    ]

    return HttpResponse(json.dumps({
        'pie1_data': {
            'series': pie1_data
        },
        'pie2_data': {
            'series': pie2_data
        },
        'filtered_pages': filtered_pages,
        'blocked_pages': blocked_pages,
        'bar_data': {
            'labels': months,
            'series': monthly
        }
    }),
                        content_type="application/json")
示例#24
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()
示例#25
0
def toogle_static(mode):
    if mode in ['dhcp', 'static']:
        utils.exec_upri_config('enable_static_ip', mode)
        utils.exec_upri_config('restart_network')
        utils.exec_upri_config('restart_dhcpd')
示例#26
0
def reconfigure_network(ip, netmask, gateway, dns, dhcp):

    jobs.job_message(_("Die Netzwerkeinstellungen werden neu konfiguriert..."))
    try:
        logger.debug("Static IP activated")
        jobs.job_message(_("Modus zur Vergabe statischer IP Adressen wird aktiviert..."))
        utils.exec_upri_config('enable_static_ip', "static")
        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:
            jobs.job_message(_("Netzwerk wird neu gestartet..."))
            logger.debug("restarting network")
            utils.exec_upri_config('restart_network')
        if dhcp is not None:
            logger.debug("dhcp server: %s" % dhcp)
            jobs.job_message(_("DNS Server wird geändert..."))
            utils.exec_upri_config('set_dhcpd', "yes" if dhcp else "no")
            jobs.job_message(_("DHCP Server wird konfiguriert..."))
            utils.exec_upri_config('restart_dhcpd')

        jobs.job_message(_("Konfiguration von Interfaces 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}))
示例#27
0
def toggle_device_mode(mode, device):
    dbfile = None
    try:
        if mode in [entry[0] for entry in DeviceEntry.MODES]:
            if device:
                try:
                    with open('/etc/ansible/default_settings.json', 'r') as f:
                        config = json.load(f)
                except IOError as e:
                    logger.error('Cannot read Default Settings File: ' +
                                 e.strerror)
                    raise

                dbfile = config['django']['db']

                jobs.job_message(_("Gerätemodus wird geändert..."))

                try:
                    if mode == "SL":
                        utils.exec_upri_config('silent_device', device.mac)
                    elif mode == "NJ":
                        utils.exec_upri_config('torify_device', device.mac)
                    elif mode == "NO":
                        utils.exec_upri_config('exclude_device', device.mac)

                    logger.debug("configuring device modes")
                    utils.exec_upri_config('configure_devices')

                except utils.AnsibleError as e:
                    logger.error("ansible failed with error %d: %s" %
                                 (e.rc, e.message))
                    raise

                try:
                    with sqlite3.connect(dbfile) as conn:
                        c = conn.cursor()
                        c.execute(
                            "Update devices_deviceentry set mode=?, changing=? where id=?;",
                            (mode, False, device.id))
                        conn.commit()
                except sqlite3.Error as dbe:
                    # logger.exception(dbe)
                    raise

                jobs.job_message(_("Gerätemodus erfolgreich geändert."))

            else:
                logger.error("device id unknown")
                raise jobs.JobFailedError()
        else:
            logger.error("something unexpected happened")
            # jobs.job_message(_("Es ist ein unbekannter Fehler aufgetreten."))
            raise jobs.JobFailedError()
    except Exception as e:
        logger.exception(e)
        # jobs.job_clear_messages()
        jobs.job_error(_("Ändern des Gerätemodus fehlgeschlagen."))
        try:
            with sqlite3.connect(dbfile) as conn:
                c = conn.cursor()
                c.execute(
                    "Update devices_deviceentry set changing=? where id=?;",
                    (False, device.id))
                conn.commit()
        except Exception:
            # logger.exception(dbe)
            raise jobs.JobFailedError()
        raise jobs.JobFailedError()
示例#28
0
文件: views.py 项目: mx2x/upribox
def json_statistics(request):

    logger.debug("parsing logs")
    utils.exec_upri_config('parse_logs')

    # bar chart
    monthly = [[0] * 5, [0] * 5]

    now = time.localtime()
    months = [
        _localdate(
            datetime.fromtimestamp(
                time.mktime(
                    (now.tm_year, now.tm_mon - n, 1, 0, 0, 0, 0, 0, 0))), "F")
        for n in reversed(range(5))
    ]
    months_nr = [
        _localdate(
            datetime.fromtimestamp(
                time.mktime(
                    (now.tm_year, now.tm_mon - n, 1, 0, 0, 0, 0, 0, 0))), "n")
        for n in reversed(range(6))
    ]

    for i in range(5):
        dnsmasq_key = __DELIMITER.join(
            (__PREFIX, __DNSMASQ, __BLOCKED, __MONTH, str(months_nr[i + 1])))
        monthly[0][i] = int(redis.get(dnsmasq_key) or 0)

        privoxy_key = __DELIMITER.join(
            (__PREFIX, __PRIVOXY, __BLOCKED, __MONTH, str(months_nr[i + 1])))
        monthly[1][i] = int(redis.get(privoxy_key) or 0)

    # lists
    all_filtered_pages = list()
    for key in redis.scan_iter(
            __DELIMITER.join((__PREFIX, __PRIVOXY, __BLOCKED, __DOMAIN, "*"))):
        site = key.replace(
            __DELIMITER.join((__PREFIX, __PRIVOXY, __BLOCKED, __DOMAIN)) + ":",
            "")
        all_filtered_pages.append({
            "url": site,
            "count": int(redis.get(key) or 0)
        })
    filtered_pages = sorted(all_filtered_pages,
                            key=lambda k: k['count'],
                            reverse=True)[:5]

    all_blocked_pages = list()
    for key in redis.scan_iter(
            __DELIMITER.join((__PREFIX, __DNSMASQ, __BLOCKED, __DOMAIN, "*"))):
        site = key.replace(
            __DELIMITER.join((__PREFIX, __DNSMASQ, __BLOCKED, __DOMAIN)) + ":",
            "")
        all_blocked_pages.append({
            "url": site,
            "count": int(redis.get(key) or 0)
        })
    blocked_pages = sorted(all_blocked_pages,
                           key=lambda k: k['count'],
                           reverse=True)[:5]

    # pi charts
    sum_adfree_sixmonths = 0
    sum_blocked_sixmonths = 0
    for i in range(6):
        blocked_key = __DELIMITER.join(
            (__PREFIX, __DNSMASQ, __BLOCKED, __MONTH, str(months_nr[i])))
        sum_blocked_sixmonths += int(redis.get(blocked_key) or 0)
        adfree_key = __DELIMITER.join(
            (__PREFIX, __DNSMASQ, __ADFREE, __MONTH, str(months_nr[i])))
        sum_adfree_sixmonths += int(redis.get(adfree_key) or 0)

    today = datetime.now().date().strftime('%Y-%m-%d')
    # return 0 if key does not exist
    sum_blocked_today = int(
        redis.get(
            __DELIMITER.join((__PREFIX, __DNSMASQ, __BLOCKED, __DAY, today)))
        or 0)
    sum_adfree_today = int(
        redis.get(
            __DELIMITER.join((__PREFIX, __DNSMASQ, __ADFREE, __DAY, today)))
        or 0)

    pie1_data = [sum_adfree_sixmonths, sum_blocked_sixmonths]
    pie2_data = [sum_adfree_today, sum_blocked_today]

    return HttpResponse(json.dumps({
        'pie1_data': {
            'series': pie1_data
        },
        'pie2_data': {
            'series': pie2_data
        },
        'filtered_pages': filtered_pages,
        'blocked_pages': blocked_pages,
        'bar_data': {
            'labels': months,
            'series': monthly
        }
    }),
                        content_type="application/json")