Class: AzureEnum::Federation

Inherits:
Object
  • Object
show all
Defined in:
lib/azure_enum.rb

Defined Under Namespace

Classes: Discovery

Instance Method Summary collapse

Constructor Details

#initialize(domain) ⇒ Federation

Returns a new instance of Federation.



8
9
10
11
12
# File 'lib/azure_enum.rb', line 8

def initialize(domain)
  @domain = domain
  @xml_text = nil
  @redirect = nil
end

Instance Method Details

#check_redirectObject



14
15
16
17
18
19
20
21
22
23
# File 'lib/azure_enum.rb', line 14

def check_redirect
  url = "http://autodiscover.#{@domain}/autodiscover/autodiscover.svc"
  begin
    res = HTTPClient.head(url)
  rescue
    return nil
  end
  return nil unless res.status_code == 302
  @redirect = res.header["Location"][0]
end

#enumerate_autodiscObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/azure_enum.rb', line 25

def enumerate_autodisc
  httpsdomains = [
    "https://#{@domain}/autodiscover/autodiscover.svc",
    "https://autodiscover.#{@domain}/autodiscover/autodiscover.svc"
  ]

  httpsdomains.unshift @redirect if @redirect
  httpsdomains.each do |url|
    xml = get_xml(@domain, url)
    begin
      http = HTTPClient.new
      content = { "Content-Type" => "text/xml; charset=utf-8" }
      res = http.post(url, xml, content)
      @xml_text = res.content
      return @xml_text
      last
    rescue
      next
    end
  end
end

#getdomainsObject



46
47
48
49
50
51
52
53
54
55
# File 'lib/azure_enum.rb', line 46

def getdomains
  fail "enumumerate_autodisc not called yet" unless @xml_text
   tree = Nokogiri.parse(@xml_text)
   tree.xpath(
     "//ad:GetFederationInformationResponseMessage/ad:Response/ad:Domains/ad:Domain",
     "ad": "http://schemas.microsoft.com/exchange/2010/Autodiscover")
     .map do |node|
        node.text
   end
end