Secure Static IP for Ruby HTTPS using Net::HTTP & Shield

Learn how to securely route Ruby HTTP traffic through a QuotaGuard Shield proxy using native Net::HTTP.

Prerequisites

Ruby installed.

Instructions

Run example
QUOTAGUARDSHIELD_URL=... bin/qgpass ruby net-http.rb

Be sure to set QUOTAGUARDSHIELD_URL to your Connection URL from the QuotaGuard Dashboard.

Test in Docker
docker build -t qg-shield-ruby-net-http-example .
docker run -e QUOTAGUARDSHIELD_URL=... qg-shield-ruby-net-http-example

Code Samples

Net-HTTP.rb
#!/usr/bin/env ruby

require 'net/http'
require 'uri'

# Use localhost and port 8080 for qgpass
quotaguard = URI.parse("http://localhost:8080")

proxy_uri = URI.parse("http://#{quotaguard.host}:#{quotaguard.port}")

target_uri = URI.parse('https://ip.quotaguard.com')

Net::HTTP.start(target_uri.host, target_uri.port, proxy_uri.host, proxy_uri.port, :use_ssl => target_uri.scheme == 'https') do |http|
  request = Net::HTTP::Get.new(target_uri)

  response = http.request(request)

  puts response.body
end
Docker File
FROM ruby:latest

WORKDIR /app/

RUN gem install net-http

# Download and extract qgpass
RUN curl https://s3.amazonaws.com/quotaguard/qgpass-latest.tar.gz | tar xz -C /app/

COPY net-http.rb net-http.rb

ENTRYPOINT [ "/app/bin/qgpass", "ruby", "net-http.rb" ]