summaryrefslogtreecommitdiff
path: root/lib/insomniaircd_conf.rb
blob: e8f15b33d24cc68ab96b8234fabb2100a892aaad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
require 'erb'
require 'ostruct'
require 'resolv'
require 'yaml'
require 'insomniaircd_conf/secure'

class InsomniaIRCDConf
  def initialize(hostname, secret_key)
    @secure = InsomniaIRCDConf::Secure.new(secret_key)

    @hostname = hostname
    @network = OpenStruct.new(YAML.load_file("network.yaml"))

    raise ArgumentError, "No such server #{hostname}" unless @network.servers.has_key? hostname
    @server = OpenStruct.new(@network.servers[hostname])

    @opers = []
    @network.opers.each do |oper|
      oper["password"] = @secure.decrypt(oper["password"])
      @opers << oper
    end
  end

  def hostname
    @hostname
  end

  def network
    @network
  end

  def server
    @server
  end

  def opers
    @opers
  end

  def secret(key)
    @secure.decrypt @network.secrets[key.to_s]
  end

  def render_template(input)
    template = ERB.new(input)
    template.result(binding)
  end
end