32 lines
825 B
Ruby
32 lines
825 B
Ruby
# ©AngelaMos | 2026
|
|
# target_client.rb
|
|
# frozen_string_literal: true
|
|
|
|
require "net/http"
|
|
require "uri"
|
|
|
|
FIELD_SEPARATOR = "\t"
|
|
BODY_SEPARATOR = "\n"
|
|
TRANSPORT_FAILURE = "000"
|
|
OPEN_TIMEOUT = 5
|
|
READ_TIMEOUT = 10
|
|
|
|
path = ARGV.fetch(0)
|
|
cookie = ARGV[1]
|
|
|
|
uri = URI.parse("#{ENV.fetch('TARGET_BASE')}#{path}")
|
|
request = Net::HTTP::Get.new(uri)
|
|
request["Cookie"] = cookie if cookie && !cookie.empty?
|
|
|
|
begin
|
|
response = Net::HTTP.start(uri.hostname, uri.port,
|
|
open_timeout: OPEN_TIMEOUT, read_timeout: READ_TIMEOUT) do |http|
|
|
http.request(request)
|
|
end
|
|
print "#{response.code}#{FIELD_SEPARATOR}#{response.body.to_s.length}#{BODY_SEPARATOR}"
|
|
print response.body
|
|
rescue StandardError => e
|
|
print "#{TRANSPORT_FAILURE}#{FIELD_SEPARATOR}0#{BODY_SEPARATOR}"
|
|
print "#{e.class}: #{e.message}"
|
|
end
|