New logic
This commit is contained in:
parent
63181a656a
commit
7df3e94185
23
main.rb
23
main.rb
|
@ -1,7 +1,6 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require 'date'
|
require 'date'
|
||||||
require 'set'
|
|
||||||
|
|
||||||
logfile = File.open("teambuilder.pt.log")
|
logfile = File.open("teambuilder.pt.log")
|
||||||
data = logfile.read
|
data = logfile.read
|
||||||
|
@ -22,11 +21,13 @@ def get_line_date(line)
|
||||||
Date.parse(match.gsub("[", "").gsub("]", ""))
|
Date.parse(match.gsub("[", "").gsub("]", ""))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Gets the HTTP status code of the given log line
|
||||||
def get_line_code(line)
|
def get_line_code(line)
|
||||||
pattern = /\s(\d{3})\s/
|
pattern = /\s(\d{3})\s/
|
||||||
line.match(pattern)[1] if line.match(pattern)
|
line.match(pattern)[1] if line.match(pattern)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Gets the user agent of the given log line
|
||||||
def get_line_ua(line)
|
def get_line_ua(line)
|
||||||
pattern = /"([^"]*)"$/
|
pattern = /"([^"]*)"$/
|
||||||
user_agent = line.match(pattern)[0] if line.match(pattern)
|
user_agent = line.match(pattern)[0] if line.match(pattern)
|
||||||
|
@ -45,32 +46,25 @@ def times_appeared_single(ips, ip_to_check)
|
||||||
counter
|
counter
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Returns all unique IPs in a given list of IP addresses with duplicates
|
||||||
def sort_unique_ip(ips)
|
def sort_unique_ip(ips)
|
||||||
|
|
||||||
# Hash para rastrear IPs únicos
|
|
||||||
seen_ips = {}
|
seen_ips = {}
|
||||||
|
|
||||||
# Array para armazenar IPs únicos
|
|
||||||
unique_ips = []
|
unique_ips = []
|
||||||
|
|
||||||
# Itera sobre cada IP no array
|
|
||||||
ips.each do |ip|
|
ips.each do |ip|
|
||||||
# Verifica se o IP não está no hash
|
|
||||||
unless seen_ips[ip]
|
unless seen_ips[ip]
|
||||||
# Adiciona o IP ao array de IPs únicos
|
|
||||||
unique_ips << ip
|
unique_ips << ip
|
||||||
# Marca o IP como visto no hash
|
|
||||||
seen_ips[ip] = true
|
seen_ips[ip] = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
unique_ips
|
unique_ips
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
visit_counter = {}
|
visit_counter = {}
|
||||||
|
client_errors = {}
|
||||||
all_ips = []
|
all_ips = []
|
||||||
|
|
||||||
lines.each do | line |
|
lines.each do | line |
|
||||||
all_ips << get_line_ip(line)
|
all_ips << get_line_ip(line)
|
||||||
end
|
end
|
||||||
|
@ -81,6 +75,11 @@ puts("Houve um total de #{unique_ips.length} visitas registas ao nosso 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("O IP #{ip} contactou o nosso site #{times_appeared_single(all_ips, ip)} vezes.")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
lines.each do |line|
|
||||||
|
cur_ip = get_line_ip(line)
|
||||||
|
|
||||||
|
client_errors[cur_ip]
|
||||||
|
end
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
HTTP_CLIENT_ERROR_RANGE = 400..499
|
||||||
|
HTTP_SERVER_ERROR_RANGE = 500..599
|
||||||
|
HTTP_INFORMATIONAL_RANGE = 100..199
|
||||||
|
HTTP_SUCCESS_RANGE = 200..299
|
||||||
|
|
||||||
|
def is_client_err?(code)
|
||||||
|
HTTP_CLIENT_ERROR_RANGE === code
|
||||||
|
end
|
||||||
|
|
||||||
|
def is_server_err?(code)
|
||||||
|
|
||||||
|
end
|
Loading…
Reference in New Issue