def dashboard(): active_user = current_user.name start_time = time.time() if 'monthVisit' in request.form.keys(): monthYear = request.form['monthVisit'] else: monthYear = None now = datetime.datetime.now() currentYear = now.year currentMonth = now.month if monthYear is not None: pieces = monthYear.split("-") month = int(pieces[1]) year = int(pieces[0]) else: month = currentMonth year = currentYear initial_year = datetime.datetime(year,1,1) final_year = datetime.datetime(year+1,1,1) initial_date = datetime.datetime(year,month,1) print(initial_date) if month < 12: final_date = datetime.datetime(year,month+1,1) else: final_date = datetime.datetime(year+1,1,1) domainDoughnutChart = Request.getTopDomainDoughnut(initial_date, final_date) print("pós graph1: " + str(time.time() - start_time)) userDoughnutChart = Request.getTopUsersDoughnut(initial_date, final_date) print ("pós graph2: " + str(time.time() - start_time)) monthChart = Request.getBytesRequestsByMonth(initial_year, final_year) print ("pós graph3: " + str(time.time() - start_time)) dailyChart = Request.getBytesRequestsByDay(initial_date, final_date) print("pós graph4: " + str(time.time() - start_time)) pieChart = VW_content_types.getTypesChart(year, month) print ("pós graph5: " + str(time.time() - start_time)) resultRequestChart = VW_result_codes.getResultsChart(year, month) print ("pós graph6: " + str(time.time() - start_time)) colors = ["rgba(39, 44, 51,1)","rgba(39, 44, 51,0.9)","rgba(39, 44, 51,0.8)","rgba(39, 44, 51,0.7)","rgba(39, 44, 51,0.6)","rgba(39, 44, 51,0.5)","rgba(39, 44, 51,0.4)","rgba(39, 44, 51,0.3)","rgba(39, 44, 51,0.2)","rgba(39, 44, 51,0.1)"] colors2 = ["rgba(238, 108, 77,1)","rgba(238, 108, 77,0.9)","rgba(238, 108, 77,0.8)","rgba(238, 108, 77,0.7)","rgba(238, 108, 77,0.6)","rgba(238, 108, 77,0.5)","rgba(238, 108, 77,0.4)","rgba(238, 108, 77,0.3)","rgba(238, 108, 77,0.2)","rgba(238, 108, 77,0.1)"] colors3 = ["#E5FFDE", "#634B66", "#BBCBCB", "#9590A8", "#FFB997", "#7C898B", "#D6DBB2", "#759FBC", "#FFBA49", "#EF5B5B"] params = {'active_user': active_user, 'domaindatadoughnut': domainDoughnutChart, 'userDoughnutChart': userDoughnutChart, 'datapie': pieChart, 'dailyChart':dailyChart, 'monthChart':monthChart, 'resultRequestChart':resultRequestChart, 'colors': colors, 'colors2': colors2, 'colors3': colors3, 'valuesToQuery':monthYear, 'month': month, 'year': year} return template ('welcome.jinja2', **params)
def pdf(): option = request.args.get('option') initial_date = datetime.datetime.strptime(request.args.get('initial_date'), "%Y-%m-%d") final_date = datetime.datetime.strptime(request.args.get('final_date'), "%Y-%m-%d") final_date = final_date + datetime.timedelta(days=1) initialDate = initial_date.strftime("%d/%m/%Y") finalDate = final_date.strftime("%d/%m/%Y") if option == "user": user = request.args.get('user') title = u"Lista de domínios acessados pelo cliente " + user title2 = u"Período: " + initialDate + " - " + finalDate fields = (u"URL", u"Data", u"Hora", u"Bytes", u"Duração", u"Resultado", u"MIME") values = Request.getDomainsByClientPDF(user, initial_date, final_date) tmplt = template("PDF.jinja2", values=values, title=title, title2=title2, fields=fields) elif option == "domain": domain = request.args.get('domain') title = u"Lista de usuários que acessaram o domínio " + domain title2 = u"Período: " + initialDate + " - " + finalDate fields = (u"Cliente", u"Data", u"Hora", u"Bytes", u"Duração", u"URL", u"Resultado", u"MIME") values = Request.getClientsByDomainPDF(domain, initial_date, final_date) tmplt = template("PDF.jinja2", values=values, title=title, title2=title2, fields=fields) elif option == "comunication": user = request.args.get('user') domain = request.args.get('domain') title = u"Comunicação entre o cliente " + user + u" e o domínio " + domain title2 = u"Período: " + initialDate + " - " + finalDate fields = (u"URL", u"Data", u"Hora", u"Bytes", u"Duração", u"Método", u"Resultado", u"MIME") values = Request.getComunicationDomainClientPDF(domain, user, initial_date, final_date) tmplt = template("PDF.jinja2", values=values, title=title, title2=title2, fields=fields) else: title = u"Requisições negadas" title2 = u"Período: " + initialDate + " - " + finalDate fields = (u"Domínio", u"Cliente", u"Data", u"Hora", u"Resultado") values = Request.getDeniedPDF(initial_date, final_date) print(values) tmplt = template("PDF.jinja2", values=values, title=title, title2=title2, fields=fields) pdf = pdfkit.from_string(tmplt, False) response = Response(response=pdf, status=200, mimetype="application/pdf") # write to PDF return response
def user_domain(client): active_user = current_user.name client = cgi.escape(client) values = Request.getDomainsByClient(client) title = u"Domínios acessados pelo usuário " + str(client) fields = (u"Posição", u"Domínio", "Bytes", u"Duração", u"Requisições") return template ('domainsByClient.jinja2', active_user=active_user, values=values, title=title, fields=fields, client=client)
def domain_user(domain): active_user = current_user.name domain = cgi.escape(domain) values = Request.getClientsByDomain(domain) title = u"Usuários que acessaram o domínio " + str(domain) fields = (u"Posição", u"Cliente", "KBytes", u"Duração (s)", u"Requisições") return template ('clientsByDomain.jinja2', active_user=active_user, values=values, title=title, fields=fields, domain=domain)
def user_domains(domain,client): active_user = current_user.name domain = cgi.escape(domain) client = cgi.escape(client) values = Request.getClientAndUser(domain, client) title = u"Requisições ao domínio " + str(domain) + u" pelo cliente " + str(client) + "." fields = (u"Posição", u"Data", u"Hora", "Bytes", u"Duração", u"Método", u"Resultado", u"MIME") return template('queryDomainClient.jinja2', active_user=active_user, values = values, title = title, fields = fields)
def ranking_comunications(): active_user = current_user.name if 'monthVisit' in request.form.keys(): monthYear = request.form['monthVisit'] else: monthYear = None result = monthyear(monthYear) initial_date = result['initial_date'] final_date = result['final_date'] values = Request.getComunicationsByMonth(initial_date, final_date) title = u"Ranking comunicações Cliente-Domínio" fields = (u"Posição", u"Domínio", u"Cliente", "KBytes", u"Duração (s)", u"Quantidade de Requisições") return template ('comunications.jinja2', active_user=active_user, values = values, title = title, fields = fields, valuesToQuery = monthYear)
def ranking_users_by_day(): active_user = current_user.name if 'dayVisit' in request.form.keys(): dayMonthYear = request.form['dayVisit'] else: dayMonthYear = None result = daymonthyear(dayMonthYear) initial_date = result['initial_date'] final_date = result['final_date'] values = Request.getTopClients(initial_date, final_date) title = u"Ranking de clientes por quantidade de requisições - por dia" fields = (u"Posição", u"Cliente", u"Duração (s)", "KBytes", u"Total de requisições", u"Total de domínios acessados") return template ('clientsByDay.jinja2', active_user=active_user, values=values, title=title, fields=fields, valuesToQuery=dayMonthYear)
def ranking_domainsByDay(): active_user = current_user.name if 'dayVisit' in request.form.keys(): dayMonthYear = request.form['dayVisit'] else: dayMonthYear = None result = daymonthyear(dayMonthYear) initial_date = result['initial_date'] final_date = result['final_date'] values = Request.getTopDomains(initial_date, final_date) title = u"Ranking de domínios mais acessados no dia" fields = (u"Posição", u"Domínio", "KBytes", u"Duração (s)", u"Usuários", u"Acessos") return template('domainsByDay.jinja2', active_user=active_user, values=values, title=title, fields=fields, valuesToQuery=dayMonthYear)
def requests_results(): active_user = current_user.name if 'dayVisit' in request.form.keys(): dayMonthYear = request.form['dayVisit'] else: dayMonthYear = None result = daymonthyear(dayMonthYear) initial_date = result['initial_date'] final_date = result['final_date'] if 'requestResult' in request.form.keys(): resultCode = request.form['requestResult'] else: resultCode = "TCP" print(initial_date) print(final_date) values = Request.getResultCodes(resultCode, initial_date, final_date) title = u"Requisições com resultado " + str(resultCode) fields = (u"Posição", u"Domínio", u"Usuário", u"Data", u"Hora", u"Resultado") return template('requestByDay.jinja2', active_user=active_user, values = values, title=title, fields=fields, valuesToQuery=dayMonthYear)