class ProxyConf::Mac

Public Instance Methods

active_network() click to toggle source
# File lib/proxyconf/mac.rb, line 37
def active_network
  guid = get_primary_service_guid
  get_service_name(guid)
end
export() click to toggle source
# File lib/proxyconf/mac.rb, line 48
def export
  info = proxy_info
  proxy = ""
  if info['Enabled']
    proxy = "#{info['Server']}:#{info['Port']}"
  end
  puts "export http_proxy=#{proxy}"
  puts "export ftp_proxy=#{proxy}"
  puts "export https_proxy=#{proxy}"
end
proxy_info() click to toggle source
# File lib/proxyconf/mac.rb, line 42
def proxy_info
  active_service_name = active_network
  src = `networksetup -getwebproxy "#{active_service_name}"`
  info = YAML.load(src)
end

Private Instance Methods

get_primary_service_guid() click to toggle source
# File lib/proxyconf/mac.rb, line 25
def get_primary_service_guid
  lines = scutil_query "State:/Network/Global/IPv4"
  pick_value(lines, /PrimaryService/)
end
get_service_name(guid) click to toggle source
# File lib/proxyconf/mac.rb, line 30
def get_service_name(guid)
  lines = scutil_query "Setup:/Network/Service/#{guid}"
  pick_value(lines, /UserDefinedName/)
end
pick_value(lines, key) click to toggle source
# File lib/proxyconf/mac.rb, line 21
def pick_value(lines, key)
  lines.find { |line| line =~ key }.strip.split(':').last.strip
end
scutil_query(key) click to toggle source
# File lib/proxyconf/mac.rb, line 7
    def scutil_query(key)
      send_data = <<-"EOF"
open
get #{key}
d.show
close
      EOF
      IO.popen("scutil", "r+") do |io|
        io.puts send_data
        io.close_write
        io.readlines
      end
    end