def dashboard(request): count_ips, count_domains = total_data() count_bugs = total_bug() total = { "ips": count_ips, "domains": count_domains, "bugs": count_bugs } # 资产相关 data = properly.objects.order_by("-id").all() # 图表统计 payload = {"size": 0, "aggs": { "sales": { "date_histogram": { "field": "published_from", "interval": STATIC_TASKS, "format": "yyyy-MM-dd" } } } } s = Search(using=es, index='w12scan').from_dict(payload) res = s.execute().to_dict() try: charts = res["aggregations"]["sales"]["buckets"] except KeyError: charts = [] data_chart = { "labels": [], "data": [] } for item in charts: data_chart["labels"].append(item["key_as_string"]) data_chart["data"].append(item["doc_count"]) # Bar chart names = count_name() data_bar = { "labels": [], "data": [] } for item in names: data_bar["labels"].append(item["key"]) data_bar["data"].append(item["doc_count"]) return render(request, "frontend/dashboard.html", {"total": total, "zc_data": data, "data_chart": data_chart, "data_bar": data_bar})
def dashboard(request): count_ips, count_domains = total_data() count_bugs = total_bug() total = { "ips": count_ips, "domains": count_domains, "bugs": count_bugs } # 资产相关 data = properly.objects.order_by("-id").all() # 图表统计 payload = {"size": 0, "aggs": { "sales": { "date_histogram": { "field": "published_from", "interval": STATIC_TASKS, "format": "yyyy-MM-dd" } } } } s = Search(using=es, index='w12scan').from_dict(payload) res = s.execute().to_dict() try: charts = res["aggregations"]["sales"]["buckets"] except KeyError: charts = [] data_chart = { "labels": [], "data": [] } for item in charts: count = item["doc_count"] if count == 0: continue data_chart["labels"].append(item["key_as_string"]) data_chart["data"].append(item["doc_count"]) # Bar chart names = count_name(6) data_bar = { "labels": [], "data": [] } for item in names: data_bar["labels"].append(item["key"]) data_bar["data"].append(item["doc_count"]) # node monitor nodenames = redis_con.keys("w12_node_*") nodes = [] for nodename in nodenames: dd = redis_con.hgetall(nodename) tem_dict = {} tem_dict["nodename"] = lstrsub(nodename, "w12_node_") tem_dict["last_time"] = dd.get("last_time", 0) tem_dict["tasks"] = dd.get("tasks", "error") tem_dict["running"] = dd.get("running", "error") tem_dict["finished"] = dd.get("finished", "error") tem_dict["status"] = "Running" if time.time() - float(tem_dict["last_time"]) > 60 * 5: tem_dict["status"] = "Pending" tem_dict["time"] = smartDate(float(tem_dict["last_time"])) nodes.append(tem_dict) # bug[domain]漏洞图表展示 dd = es.indices.get_mapping(index='w12scan', doc_type='domains') dd = dd["w12scan"]["mappings"]["domains"]["properties"] data_bugs = [] if "bugs" in dd: bug_type = dd["bugs"]["properties"].keys() index = 0 for bug_name in bug_type: index += 1 count = get_bug_count('domains', bug_name) dd = {} _cls = ["primary", "info", "danger", "success", "warning"] dd["label"] = bug_name dd["count"] = count dd["cls"] = _cls[index % 5] data_bugs.append(dd) return render(request, "frontend/dashboard.html", {"total": total, "zc_data": data, "data_chart": data_chart, "data_bar": data_bar, "nodes": nodes, "data_bugs": data_bugs})
def dashboard(request): count_ips, count_domains = total_data() count_bugs = total_bug() total = { "ips": count_ips, "domains": count_domains, "bugs": count_bugs } # 资产相关 data = properly.objects.order_by("-id").all() # 图表统计 payload = {"size": 0, "aggs": { "sales": { "date_histogram": { "field": "published_from", "interval": STATIC_TASKS, "format": "yyyy-MM-dd" } } } } s = Search(using=es, index='w12scan').from_dict(payload) res = s.execute().to_dict() try: charts = res["aggregations"]["sales"]["buckets"] except KeyError: charts = [] data_chart = { "labels": [], "data": [] } for item in charts: data_chart["labels"].append(item["key_as_string"]) data_chart["data"].append(item["doc_count"]) # Bar chart names = count_name() data_bar = { "labels": [], "data": [] } for item in names: data_bar["labels"].append(item["key"]) data_bar["data"].append(item["doc_count"]) # node monitor nodenames = redis_con.keys("w12_node_*") nodes = [] for nodename in nodenames: dd = redis_con.hgetall(nodename) tem_dict = {} tem_dict["nodename"] = lstrsub(nodename, "w12_node_") tem_dict["last_time"] = dd.get("last_time", 0) tem_dict["running"] = dd.get("running", "error") tem_dict["finished"] = dd.get("finished", "error") tem_dict["status"] = "Running" if time.time() - float(tem_dict["last_time"]) > 60 * 5: tem_dict["status"] = "Pending" tem_dict["time"] = smartDate(float(tem_dict["last_time"])) nodes.append(tem_dict) return render(request, "frontend/dashboard.html", {"total": total, "zc_data": data, "data_chart": data_chart, "data_bar": data_bar, "nodes": nodes})