mirror of
https://github.com/HoneyryderChuck/httpx.git
synced 2025-10-06 00:02:08 -04:00
40 lines
1.1 KiB
Ruby
40 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require_relative "test"
|
|
|
|
class NTLMServer < TestServer
|
|
class NTLMApp < WEBrick::HTTPServlet::AbstractServlet
|
|
def do_GET(req, res) # rubocop:disable Naming/MethodName
|
|
if req["Authorization"] =~ /^NTLM (.*)/
|
|
authorization = Regexp.last_match(1).unpack("m*")[0] # rubocop:disable Style/UnpackFirst
|
|
|
|
case authorization
|
|
when /^NTLMSSP\000\001/
|
|
type2 = "TlRMTVNTUAACAAAADAAMADAAAAABAoEAASNFZ4mr" \
|
|
"ze8AAAAAAAAAAGIAYgA8AAAARABPAE0AQQBJAE4A" \
|
|
"AgAMAEQATwBNAEEASQBOAAEADABTAEUAUgBWAEUA" \
|
|
"UgAEABQAZABvAG0AYQBpAG4ALgBjAG8AbQADACIA" \
|
|
"cwBlAHIAdgBlAHIALgBkAG8AbQBhAGkAbgAuAGMA" \
|
|
"bwBtAAAAAAA="
|
|
|
|
res["WWW-Authenticate"] = "NTLM #{type2}"
|
|
res.status = 401
|
|
when /^NTLMSSP\000\003/
|
|
res.body = "ok"
|
|
else
|
|
res["WWW-Authenticate"] = "NTLM"
|
|
res.status = 401
|
|
end
|
|
else
|
|
res["WWW-Authenticate"] = "NTLM"
|
|
res.status = 401
|
|
end
|
|
end
|
|
end
|
|
|
|
def initialize(options = {})
|
|
super
|
|
mount("/", NTLMApp)
|
|
end
|
|
end
|