New logic
This commit is contained in:
parent
7df3e94185
commit
ec07527653
|
@ -3,8 +3,8 @@
|
||||||
## Objetivos do programa
|
## Objetivos do programa
|
||||||
|
|
||||||
- **Objetivo 1**: ~~Número de contactos que um determinado IP realizou~~ (Feito)
|
- **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 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
|
- **Objetivo 3**: ~~Agrupar por tipo de cliente e saber que tipos de clientes contactam mais o site~~ (Feito)
|
||||||
|
|
||||||
### Sub-objetivos
|
### Sub-objetivos
|
||||||
|
|
||||||
|
|
38
main.rb
38
main.rb
|
@ -1,6 +1,7 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require 'date'
|
require 'date'
|
||||||
|
require_relative 'utils/http_codes'
|
||||||
|
|
||||||
logfile = File.open("teambuilder.pt.log")
|
logfile = File.open("teambuilder.pt.log")
|
||||||
data = logfile.read
|
data = logfile.read
|
||||||
|
@ -63,6 +64,7 @@ end
|
||||||
|
|
||||||
visit_counter = {}
|
visit_counter = {}
|
||||||
client_errors = {}
|
client_errors = {}
|
||||||
|
user_agents = {}
|
||||||
all_ips = []
|
all_ips = []
|
||||||
|
|
||||||
lines.each do | line |
|
lines.each do | line |
|
||||||
|
@ -71,15 +73,43 @@ end
|
||||||
|
|
||||||
unique_ips = sort_unique_ip(all_ips)
|
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|
|
unique_ips.each do |ip|
|
||||||
visit_counter[ip] = times_appeared_single(all_ips, 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
|
end
|
||||||
|
|
||||||
lines.each do |line|
|
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
|
end
|
|
@ -8,5 +8,13 @@ def is_client_err?(code)
|
||||||
end
|
end
|
||||||
|
|
||||||
def is_server_err?(code)
|
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
|
end
|
Loading…
Reference in New Issue