mirror of
https://github.com/ail-project/ail-framework.git
synced 2024-11-30 01:37:17 +00:00
chg: [dashboard] add crawler stats
This commit is contained in:
parent
3d14bac434
commit
14b0675330
5 changed files with 103 additions and 4 deletions
|
@ -15,6 +15,7 @@ sys.path.append(os.environ['AIL_BIN'])
|
||||||
##################################
|
##################################
|
||||||
from lib.ConfigLoader import ConfigLoader
|
from lib.ConfigLoader import ConfigLoader
|
||||||
from lib.objects import ail_objects
|
from lib.objects import ail_objects
|
||||||
|
from lib.crawlers import get_crawlers_stats
|
||||||
from lib import Tag
|
from lib import Tag
|
||||||
from lib import Tracker
|
from lib import Tracker
|
||||||
|
|
||||||
|
@ -91,6 +92,9 @@ def get_nb_objs_today():
|
||||||
nb_objs = ail_objects.get_nb_objects_by_date(date)
|
nb_objs = ail_objects.get_nb_objects_by_date(date)
|
||||||
return nb_objs
|
return nb_objs
|
||||||
|
|
||||||
|
def get_crawler_stats():
|
||||||
|
return get_crawlers_stats()
|
||||||
|
|
||||||
def get_nb_objs_dashboard():
|
def get_nb_objs_dashboard():
|
||||||
date = datetime.date.today().strftime("%Y%m%d")
|
date = datetime.date.today().strftime("%Y%m%d")
|
||||||
return ail_objects.get_nb_objects_dashboard(date)
|
return ail_objects.get_nb_objects_dashboard(date)
|
||||||
|
|
|
@ -316,7 +316,8 @@ def ws_dashboard(ws):
|
||||||
objs = ail_stats.get_nb_objs_today()
|
objs = ail_stats.get_nb_objs_today()
|
||||||
tags = ail_stats.get_tagged_objs_dashboard()
|
tags = ail_stats.get_tagged_objs_dashboard()
|
||||||
trackers = ail_stats.get_tracked_objs_dashboard(user_org, user_id)
|
trackers = ail_stats.get_tracked_objs_dashboard(user_org, user_id)
|
||||||
ws.send(json.dumps({'feeders': feeders, 'objs': objs, 'tags': tags, 'trackers': trackers}))
|
crawler = ail_stats.get_crawlers_stats()
|
||||||
|
ws.send(json.dumps({'feeders': feeders, 'objs': objs, 'crawler': crawler, 'tags': tags, 'trackers': trackers}))
|
||||||
next_feeders = next_feeders + 30
|
next_feeders = next_feeders + 30
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
except Exception as e: # ConnectionClosed ?
|
except Exception as e: # ConnectionClosed ?
|
||||||
|
|
|
@ -598,6 +598,36 @@ def domains_search_name():
|
||||||
l_dict_domains=l_dict_domains, bootstrap_label=bootstrap_label,
|
l_dict_domains=l_dict_domains, bootstrap_label=bootstrap_label,
|
||||||
domains_types=domains_types)
|
domains_types=domains_types)
|
||||||
|
|
||||||
|
@crawler_splash.route('/domains/today', methods=['GET'])
|
||||||
|
@login_required
|
||||||
|
@login_read_only
|
||||||
|
def domains_search_today():
|
||||||
|
dom_types = request.args.get('type')
|
||||||
|
down = bool(request.args.get('down', False))
|
||||||
|
up = bool(request.args.get('up'))
|
||||||
|
# page = request.args.get('page')
|
||||||
|
|
||||||
|
all_types = Domains.get_all_domains_types()
|
||||||
|
if dom_types == 'all':
|
||||||
|
domain_types = all_types
|
||||||
|
elif dom_types in Domains.get_all_domains_types():
|
||||||
|
domain_types = [dom_types]
|
||||||
|
else:
|
||||||
|
dom_types = 'all'
|
||||||
|
domain_types = all_types
|
||||||
|
|
||||||
|
date = Date.get_today_date_str()
|
||||||
|
domains_date = Domains.get_domains_dates_by_daterange(date, date, domain_types, up=up, down=down)
|
||||||
|
dict_domains = {}
|
||||||
|
for d in domains_date:
|
||||||
|
dict_domains[d] = Domains.get_domains_meta(domains_date[d])
|
||||||
|
date_from = f"{date[0:4]}-{date[4:6]}-{date[6:8]}"
|
||||||
|
date_to = date_from
|
||||||
|
|
||||||
|
return render_template("domains_daterange.html", date_from=date_from, date_to=date_to,
|
||||||
|
bootstrap_label=bootstrap_label,
|
||||||
|
filter_down=down, filter_up=up,
|
||||||
|
dict_domains=dict_domains, type=dom_types)
|
||||||
|
|
||||||
@crawler_splash.route('/domains/date', methods=['GET'])
|
@crawler_splash.route('/domains/date', methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
|
|
|
@ -19,7 +19,6 @@ sys.path.append(os.environ['AIL_BIN'])
|
||||||
##################################
|
##################################
|
||||||
# Import Project packages
|
# Import Project packages
|
||||||
##################################
|
##################################
|
||||||
from lib.objects import ail_objects
|
|
||||||
from lib import ail_stats
|
from lib import ail_stats
|
||||||
|
|
||||||
|
|
||||||
|
@ -41,11 +40,12 @@ def objects():
|
||||||
user_id = current_user.get_user_id()
|
user_id = current_user.get_user_id()
|
||||||
nb_objects = ail_stats.get_nb_objs_dashboard()
|
nb_objects = ail_stats.get_nb_objs_dashboard()
|
||||||
feeders_dashboard = ail_stats.get_feeders_dashboard_full()
|
feeders_dashboard = ail_stats.get_feeders_dashboard_full()
|
||||||
|
crawlers_stats = ail_stats.get_crawlers_stats()
|
||||||
trackers = ail_stats.get_tracked_objs_dashboard(user_org, user_id)
|
trackers = ail_stats.get_tracked_objs_dashboard(user_org, user_id)
|
||||||
tagged_objs = ail_stats.get_tagged_objs_dashboard()
|
tagged_objs = ail_stats.get_tagged_objs_dashboard()
|
||||||
return render_template("objs_dashboard.html", feeders_dashboard=feeders_dashboard,
|
return render_template("objs_dashboard.html", feeders_dashboard=feeders_dashboard,
|
||||||
nb_objects=nb_objects, trackers=trackers, tagged_objs=tagged_objs,
|
nb_objects=nb_objects, trackers=trackers, tagged_objs=tagged_objs,
|
||||||
bootstrap_label=bootstrap_label)
|
bootstrap_label=bootstrap_label, crawlers_stats=crawlers_stats)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,59 @@
|
||||||
|
|
||||||
<div class="col-12 col-xl-6">
|
<div class="col-12 col-xl-6">
|
||||||
<div id="feeders_dashboard" style="width: 100%; height:600px;"></div>
|
<div id="feeders_dashboard" style="width: 100%; height:600px;"></div>
|
||||||
|
|
||||||
|
<div class="card mt-1 mb-4">
|
||||||
|
<div class="card-header text-white bg-dark">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-1">
|
||||||
|
<i class="fas fa-user-secret fa-2x"></i>
|
||||||
|
</div>
|
||||||
|
<div class="col-5">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-6">
|
||||||
|
<div>
|
||||||
|
<a href="{{ url_for('crawler_splash.domains_search_today') }}?type=onion&up=True" class="badge badge-success" id="stat_crawler_onion_domain_up">{{ crawlers_stats['onion']['up'] }}</a> Up
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a href="{{ url_for('crawler_splash.domains_search_today') }}?type=onion&down=True" class="badge badge-danger" id="stat_crawler_onion_domain_down">{{ crawlers_stats['onion']['down'] }}</a> Down
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-6">
|
||||||
|
<div>
|
||||||
|
<a href="{{ url_for('crawler_splash.domains_search_today') }}?type=onion&up=True&down=True" class="badge badge-success" id="stat_crawler_onion_total">{{ crawlers_stats['onion']['crawled'] }}</a> Crawled
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span class="badge badge-warning" id="stat_crawler_onion_queue">{{ crawlers_stats['onion']['queue'] }}</span> Queue
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-1">
|
||||||
|
<i class="fab fa-html5 fa-2x"></i>
|
||||||
|
</div>
|
||||||
|
<div class="col-5">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-6">
|
||||||
|
<div>
|
||||||
|
<a href="{{ url_for('crawler_splash.domains_search_today') }}?type=web&up=True" class="badge badge-success" id="stat_crawler_regular_domain_up">{{ crawlers_stats['web']['up'] }}</a> UP
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a href="{{ url_for('crawler_splash.domains_search_today') }}?type=web&down=True" class="badge badge-danger" id="stat_crawler_regular_domain_down">{{ crawlers_stats['web']['down'] }}</a> DOWN
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-6">
|
||||||
|
<div>
|
||||||
|
<a href="{{ url_for('crawler_splash.domains_search_today') }}?type=web&up=True&down=True" class="badge badge-success" id="stat_crawler_regular_total">{{ crawlers_stats['web']['crawled'] }}</a> Crawled
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span class="badge badge-warning" id="stat_crawler_regular_queue">{{ crawlers_stats['web']['queue'] }}</span> Queue
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-12 col-xl-6 mt-4">
|
<div class="col-12 col-xl-6 mt-4">
|
||||||
|
@ -89,7 +142,6 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
||||||
<div class="col-12 col-xl-6">
|
<div class="col-12 col-xl-6">
|
||||||
|
@ -286,6 +338,17 @@ function updateNbObjects(data) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function updateCrawlerStats(data) {
|
||||||
|
$("#stat_crawler_onion_domain_up").text(data['onion']['up']);
|
||||||
|
$("#stat_crawler_onion_domain_down").text(data['onion']['down']);
|
||||||
|
$("#stat_crawler_onion_total").text(data['onion']['crawled']);
|
||||||
|
$("#stat_crawler_onion_queue").text(data['onion']['queue']);
|
||||||
|
$("#stat_crawler_regular_domain_up").text(data['web']['up']);
|
||||||
|
$("#stat_crawler_regular_domain_down").text(data['web']['down']);
|
||||||
|
$("#stat_crawler_regular_total").text(data['web']['crawled']);
|
||||||
|
$("#stat_crawler_regular_queue").text(data['web']['queue']);
|
||||||
|
}
|
||||||
|
|
||||||
///////
|
///////
|
||||||
|
|
||||||
function create_obj_svg(container, obj_gid, url, color, fa_style, icon) {
|
function create_obj_svg(container, obj_gid, url, color, fa_style, icon) {
|
||||||
|
@ -362,6 +425,7 @@ socket.onmessage = function(event) {
|
||||||
let data = JSON.parse(event.data);
|
let data = JSON.parse(event.data);
|
||||||
updateFeederChart(data['feeders']);
|
updateFeederChart(data['feeders']);
|
||||||
updateNbObjects(data['objs']);
|
updateNbObjects(data['objs']);
|
||||||
|
updateCrawlerStats(data['crawler']);
|
||||||
update_tracked_objs_dashboard(data['trackers']);
|
update_tracked_objs_dashboard(data['trackers']);
|
||||||
update_tags_obj_dashboard(data['tags']);
|
update_tags_obj_dashboard(data['tags']);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue