First commit

This commit is contained in:
Miguel Nogueira 2024-05-16 10:24:41 +01:00
commit ab9d36e6ec
21 changed files with 114480 additions and 0 deletions

Binary file not shown.

View File

@ -0,0 +1 @@
{"nonce":2912274208777723537,"last_updated":{"seconds":1693331088,"nanos":625452000}}

View File

View File

@ -0,0 +1 @@
{"type":"resolve","resolvedModuleId":"replit","inputHash":"","resolutionPath":["replit"],"error":"","Changed":true}

View File

@ -0,0 +1 @@
{"type":"resolve","resolvedModuleId":"ruby-3.2","inputHash":"","resolutionPath":["ruby-3.2"],"error":"","Changed":true}

File diff suppressed because one or more lines are too long

56
.gitignore vendored Normal file
View File

@ -0,0 +1,56 @@
*.gem
*.rbc
/.config
/coverage/
/InstalledFiles
/pkg/
/spec/reports/
/spec/examples.txt
/test/tmp/
/test/version_tmp/
/tmp/
# Used by dotenv library to load environment variables.
# .env
# Ignore Byebug command history file.
.byebug_history
## Specific to RubyMotion:
.dat*
.repl_history
build/
*.bridgesupport
build-iPhoneOS/
build-iPhoneSimulator/
## Specific to RubyMotion (use of CocoaPods):
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
# vendor/Pods/
## Documentation cache and generated files:
/.yardoc/
/_yardoc/
/doc/
/rdoc/
## Environment normalization:
/.bundle/
/vendor/bundle
/lib/bundler/man/
# for a library or gem, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# Gemfile.lock
# .ruby-version
# .ruby-gemset
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
.rvmrc
# Used by RuboCop. Remote config files pulled in from inherit_from directive.
# .rubocop-https?--*

8
.idea/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

17
.idea/ApacheLogStats.iml Normal file
View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="RUBY_MODULE" version="4">
<component name="ModuleRunConfigurationManager">
<shared />
</component>
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/features" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/.bundle" />
</content>
<orderEntry type="jdk" jdkName="ruby-3.3.1-p55" jdkType="RUBY_SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="PROVIDED" name="bundler (v2.5.9, ruby-3.3.1-p55) [gem]" level="application" />
</component>
</module>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MaterialThemeProjectNewConfig">
<option name="metadata">
<MTProjectMetadataState>
<option name="migrated" value="true" />
<option name="pristineConfig" value="false" />
<option name="userId" value="193687b7:18f7c61f726:-7ffe" />
</MTProjectMetadataState>
</option>
</component>
</project>

8
.idea/modules.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/ApacheLogStats.iml" filepath="$PROJECT_DIR$/.idea/ApacheLogStats.iml" />
</modules>
</component>
</project>

10
.replit Normal file
View File

@ -0,0 +1,10 @@
run = "bundle exec ruby main.rb"
hidden = [".bundle"]
entrypoint = "main.rb"
modules = ["ruby-3.2:v6-20240209-9e3a339"]
[nix]
channel = "stable-23_11"
[gitHubImport]
requiredFiles = [".replit", "replit.nix"]

1
.upm/store.json Normal file
View File

@ -0,0 +1 @@
{"version":2,"languages":{"ruby-bundler":{"specfileHash":"0bee94fb9969f7de9b9f4407817dd18c","lockfileHash":"57de5e0f5e5c8e06679014ee543bbb6f"}}}

5
Gemfile Normal file
View File

@ -0,0 +1,5 @@
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
# gem "rails"

12
Gemfile.lock Normal file
View File

@ -0,0 +1,12 @@
GEM
remote: https://rubygems.org/
specs:
PLATFORMS
x64-mingw-ucrt
x86_64-linux
DEPENDENCIES
BUNDLED WITH
2.5.9

11
README.md Normal file
View File

@ -0,0 +1,11 @@
# Ruby - Análise de ficheiros de auditoria Apache - UFCD 9191
## Objetivos do programa
- **Objetivo 1**: Número de contactos que um determinado IP realizou
- **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
### Sub-objetivos
-

38
main.rb Normal file
View File

@ -0,0 +1,38 @@
# frozen_string_literal: true
logfile = File.open("teambuilder.pt.log")
data = logfile.read
lines = data.split("\n")
# Gets the IP address from the string
def get_line_ip(line)
pattern = /\b(?:\d{1,3}\.){3}\d{1,3}\b/
line.match(pattern)[0] if line.match(pattern)
end
# Gets the number of times an IP contacted the site
def times_appeared_single(ips, ip_to_check)
counter = 0
ips.each do |ip|
if ip == ip_to_check
counter += 1
end
end
[counter]
end
def get_code_by_ip(ip_address)
end
def get_user_agent(ip)
end
ips = []
lines.each do | line |
previous_ip = ""
ips << get_line_ip(line)
end
puts times_appeared_single(ips, "3.94.209.170")

2
replit_zip_error_log.txt Normal file
View File

@ -0,0 +1,2 @@
{"error":".zip archives do not support non-regular files","level":"error","msg":"unable to write file .cache/replit/modules/replit","time":"2024-05-15T11:23:28Z"}
{"error":".zip archives do not support non-regular files","level":"error","msg":"unable to write file .cache/replit/modules/ruby-3.2","time":"2024-05-15T11:23:28Z"}

114296
teambuilder.pt.log Normal file

File diff suppressed because it is too large Load Diff