Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ecea930edb | ||
|
|
dfd98c80db | ||
|
|
75d70d2b7e | ||
|
|
28110c7d94 | ||
|
|
c42fbd6e31 | ||
|
|
5db683d0ab |
+96
-15
@@ -4,20 +4,34 @@ require "validator"
|
||||
|
||||
output = "passed.txt"
|
||||
urlTimeout = 1
|
||||
includes = ""
|
||||
includesFlag = false
|
||||
debug = false
|
||||
quiet = false
|
||||
|
||||
OptionParser.parse do |parser|
|
||||
parser.banner = "Usage: rete [arguments] [file/urls]"
|
||||
parser.on("-i STRING", "--includes=STRING", "Checks to see if a successful response") {|string|
|
||||
includes = string
|
||||
includesFlag = true}
|
||||
parser.on("-t TIMEOUT", "--timeout=TIMEOUT", "Sets how many seconds until rete declares a timeout") {|timeout|
|
||||
urlTimeout = timeout}
|
||||
parser.on("-f FILE", "--file=FILE", "Checks all urls in a txt file.") { |file|
|
||||
urls = File.read(file)
|
||||
checkUrlFromFile urls, output, urlTimeout.to_i
|
||||
checkUrlFromFile urls, output, urlTimeout.to_i, includesFlag, includes, debug, quiet
|
||||
exit 0}
|
||||
parser.on("-o FILENAME", "--output=FILENAME", "Sets the name of the outputted file. -f flag required") {|filename|
|
||||
output = filename}
|
||||
parser.on("-v", "--version", "Displays current version of rete.") {
|
||||
puts "Rete 1.0 by koffee.zip"
|
||||
parser.on("-v", "--version", "Displays current version of rete") {
|
||||
puts "Rete 1.1 by koffee.zip"
|
||||
exit(0)}
|
||||
parser.on("-q", "--quiet", "Prints out less info") do
|
||||
quiet = true
|
||||
end
|
||||
parser.on("-d", "--debug", "Debug Mode") do
|
||||
debug = true
|
||||
puts "Debug mode enabled!"
|
||||
end
|
||||
parser.on("-h", "--help", "Show this help") do
|
||||
puts parser
|
||||
exit
|
||||
@@ -29,7 +43,7 @@ OptionParser.parse do |parser|
|
||||
end
|
||||
end
|
||||
|
||||
def checkUrlFromFile(content, output, urlTimeout) # Sorry for the crappy method name.
|
||||
def checkUrlFromFile(content, output, urlTimeout, includesFlag, includes, debug, quiet) # Sorry for the crappy method name.
|
||||
repeat = 0
|
||||
working = 0
|
||||
notWorking = 0
|
||||
@@ -37,6 +51,12 @@ def checkUrlFromFile(content, output, urlTimeout) # Sorry for the crappy method
|
||||
|
||||
begin
|
||||
config = File.read("config.txt")
|
||||
if debug == true
|
||||
puts "=============================="
|
||||
puts "Current Config:"
|
||||
puts config
|
||||
puts "=============================="
|
||||
end
|
||||
rescue File::NotFoundError
|
||||
puts "Oh No! It seems that your config.txt file does not exist!"
|
||||
puts "This is required for rete to know what classifies if a url is working or not!"
|
||||
@@ -46,6 +66,10 @@ def checkUrlFromFile(content, output, urlTimeout) # Sorry for the crappy method
|
||||
|
||||
urls = content.split("\n")
|
||||
|
||||
if quiet
|
||||
print "\n"
|
||||
end
|
||||
|
||||
while repeat < urls.size
|
||||
begin
|
||||
validUrl = Valid.url? urls[repeat]
|
||||
@@ -55,38 +79,73 @@ def checkUrlFromFile(content, output, urlTimeout) # Sorry for the crappy method
|
||||
|
||||
if validUrl == true
|
||||
begin
|
||||
STDIN.read_timeout = 1
|
||||
uri = URI.parse(urls[repeat])
|
||||
client = HTTP::Client.new(uri)
|
||||
client.connect_timeout = urlTimeout.seconds
|
||||
|
||||
response = client.get("/")
|
||||
if config.includes?(response.status_code.to_s)
|
||||
puts "#{urls[repeat]} is a valid URL and works. Status code: #{response.status_code}"
|
||||
if debug == true
|
||||
puts "=============================="
|
||||
puts "First line of Response from URL:"
|
||||
puts response.body.lines.first
|
||||
puts "=============================="
|
||||
end
|
||||
|
||||
if includesFlag
|
||||
if response.body.includes?(includes)
|
||||
if !quiet
|
||||
puts "#{urls[repeat]} is a valid URL, works and includes \"#{includes}\" Status code: #{response.status_code}"
|
||||
end
|
||||
File.open("#{output}", "a") do |file|
|
||||
file.puts urls[repeat]
|
||||
end
|
||||
working += 1
|
||||
else
|
||||
if !quiet
|
||||
puts "#{urls[repeat]} is a valid URL, works but does not include \"#{includes}\" Status code: #{response.status_code}"
|
||||
end
|
||||
notWorking += 1
|
||||
end
|
||||
else
|
||||
if !quiet
|
||||
puts "#{urls[repeat]} is a valid URL and works. Status code: #{response.status_code}"
|
||||
end
|
||||
working += 1
|
||||
File.open("#{output}", "a") do |file|
|
||||
file.puts urls[repeat]
|
||||
end
|
||||
working += 1
|
||||
end
|
||||
else
|
||||
puts "#{urls[repeat]} is a valid URL but does not work. Status Code: #{response.status_code}"
|
||||
if !quiet
|
||||
puts "#{urls[repeat]} is a valid URL but does not work. Status Code: #{response.status_code}"
|
||||
end
|
||||
notWorking += 1
|
||||
end
|
||||
rescue
|
||||
puts "#{urls[repeat]} is a valid URL but does not exist."
|
||||
if !quiet
|
||||
puts "#{urls[repeat]} is a valid URL but does not exist."
|
||||
end
|
||||
notWorking += 1
|
||||
end
|
||||
else
|
||||
puts "#{urls[repeat]} is not a valid URL"
|
||||
if !quiet
|
||||
puts "#{urls[repeat]} is not a valid URL."
|
||||
end
|
||||
notWorking += 1
|
||||
end
|
||||
if quiet
|
||||
print "\e[1A"
|
||||
puts "#{repeat + 1}/#{urls.size} urls are done."
|
||||
end
|
||||
repeat += 1
|
||||
end
|
||||
|
||||
puts "=============================="
|
||||
puts "Finished testing urls."
|
||||
puts "A total of #{repeat} url(s) were tested."
|
||||
puts "#{working}/#{repeat} url(s) were working."
|
||||
puts "#{notWorking}/#{repeat} url(s) were not working."
|
||||
puts "A total of #{urls.size} url(s) were tested."
|
||||
puts "#{working}/#{urls.size} url(s) were working."
|
||||
puts "#{notWorking}/#{urls.size} url(s) were not working."
|
||||
exit 0
|
||||
end
|
||||
|
||||
@@ -97,6 +156,12 @@ exist = true
|
||||
|
||||
begin
|
||||
config = File.read("config.txt")
|
||||
if debug == true
|
||||
puts "=============================="
|
||||
puts "Current Config:"
|
||||
puts config
|
||||
puts "=============================="
|
||||
end
|
||||
rescue File::NotFoundError
|
||||
puts "Oh No! It seems that your config.txt file does not exist!"
|
||||
puts "This is required for rete to know what classifies if a url is working or not!"
|
||||
@@ -113,14 +178,30 @@ while repeat < ARGV.size
|
||||
|
||||
if validUrl == true
|
||||
begin
|
||||
STDIN.read_timeout = 1
|
||||
uri = URI.parse(ARGV[repeat])
|
||||
client = HTTP::Client.new(uri)
|
||||
client.connect_timeout = urlTimeout.to_i.seconds
|
||||
|
||||
response = client.get("/")
|
||||
if config.includes?(response.status_code.to_s)
|
||||
puts "#{ARGV[repeat]} is a valid URL and works. Status code: #{response.status_code}"
|
||||
if debug == true
|
||||
puts "=============================="
|
||||
puts "First line of Response from URL:"
|
||||
puts response.body.lines.first
|
||||
puts "=============================="
|
||||
end
|
||||
|
||||
if includesFlag
|
||||
if response.body.includes?(includes)
|
||||
puts "#{ARGV[repeat]} is a valid URL, works and includes \"#{includes}\" Status code: #{response.status_code}"
|
||||
working += 1
|
||||
else
|
||||
puts "#{ARGV[repeat]} is a valid URL, works but does not include \"#{includes}\" Status code: #{response.status_code}"
|
||||
notWorking += 1
|
||||
end
|
||||
else
|
||||
puts "#{ARGV[repeat]} is a valid URL and works. Status code: #{response.status_code}"
|
||||
end
|
||||
working += 1
|
||||
else
|
||||
puts "#{ARGV[repeat]} is a valid URL but does not work. Status Code: #{response.status_code}"
|
||||
|
||||
Reference in New Issue
Block a user