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()
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 })
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()
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."))
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()
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."))
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()
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."))
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")
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))
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."))
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)
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()
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}))
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()
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)})
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)
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."))
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)
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()
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}))
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")
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()
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')
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}))
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()
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")