New logic
This commit is contained in:
parent
7df3e94185
commit
ec07527653
|
@ -3,8 +3,8 @@
|
|||
## Objetivos do programa
|
||||
|
||||
- **Objetivo 1**: ~~Número de contactos que um determinado IP realizou~~ (Feito)
|
||||
- **Objetivo 2**: Quais IPs resultaram no maior número de erros de cliente (400-499)
|
||||
- **Objetivo 3**: Agrupar por tipo de cliente e saber que tipos de clientes contactam mais o site
|
||||
- **Objetivo 2**: ~~Quais IPs resultaram no maior número de erros de cliente (400-499)~~ (Feito)
|
||||
- **Objetivo 3**: ~~Agrupar por tipo de cliente e saber que tipos de clientes contactam mais o site~~ (Feito)
|
||||
|
||||
### Sub-objetivos
|
||||
|
||||
|
|
38
main.rb
38
main.rb
|
@ -1,6 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'date'
|
||||
require_relative 'utils/http_codes'
|
||||
|
||||
logfile = File.open("teambuilder.pt.log")
|
||||
data = logfile.read
|
||||
|
@ -63,6 +64,7 @@ end
|
|||
|
||||
visit_counter = {}
|
||||
client_errors = {}
|
||||
user_agents = {}
|
||||
all_ips = []
|
||||
|
||||
lines.each do | line |
|
||||
|
@ -71,15 +73,43 @@ end
|
|||
|
||||
unique_ips = sort_unique_ip(all_ips)
|
||||
|
||||
puts("Houve um total de #{unique_ips.length} visitas registas ao nosso site.")
|
||||
puts("There were a total of #{unique_ips.length} unique IPs who connected to our site.")
|
||||
|
||||
unique_ips.each do |ip|
|
||||
visit_counter[ip] = times_appeared_single(all_ips, ip)
|
||||
puts("O IP #{ip} contactou o nosso site #{times_appeared_single(all_ips, ip)} vezes.")
|
||||
puts("IP #{ip} contacted our site #{times_appeared_single(all_ips, ip)} times.")
|
||||
end
|
||||
|
||||
lines.each do |line|
|
||||
cur_ip = get_line_ip(line)
|
||||
ip = get_line_ip(line).to_s
|
||||
code = get_line_code(line)
|
||||
ua = get_line_ua(line)
|
||||
|
||||
client_errors[cur_ip]
|
||||
#if code.to_i >= 400 && code.to_i < 500
|
||||
if is_client_err?(code.to_i)
|
||||
if client_errors[ip]
|
||||
client_errors[ip] += 1
|
||||
else
|
||||
client_errors[ip] = 1
|
||||
end
|
||||
end
|
||||
|
||||
if user_agents[ua]
|
||||
user_agents[ua] += 1
|
||||
else
|
||||
user_agents[ua] = 1
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
top_user_agents = user_agents.sort_by { |ua, count| -count }.first(5)
|
||||
puts "Top 5 User-Agents contacting the site:"
|
||||
top_user_agents.each do |ua, count|
|
||||
puts "#{ua}: #{count} visits"
|
||||
end
|
||||
|
||||
top_client_errors = client_errors.sort_by { |ip, count| -count }.first(5)
|
||||
puts "Top 5 IPs with most client errors (400-499):"
|
||||
top_client_errors.each do |ip, count|
|
||||
puts "#{ip}: #{count} errors"
|
||||
end
|
|
@ -8,5 +8,13 @@ def is_client_err?(code)
|
|||
end
|
||||
|
||||
def is_server_err?(code)
|
||||
|
||||
HTTP_SERVER_ERROR_RANGE === code
|
||||
end
|
||||
|
||||
def is_info_status?(code)
|
||||
HTTP_INFORMATIONAL_RANGE === code
|
||||
end
|
||||
|
||||
def is_successful?(code)
|
||||
HTTP_SUCCESS_RANGE === code
|
||||
end
|
Loading…
Reference in New Issue