summaryrefslogtreecommitdiff
path: root/lib/insomniaircd_conf.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/insomniaircd_conf.rb')
-rw-r--r--lib/insomniaircd_conf.rb49
1 files changed, 49 insertions, 0 deletions
diff --git a/lib/insomniaircd_conf.rb b/lib/insomniaircd_conf.rb
new file mode 100644
index 0000000..e8f15b3
--- /dev/null
+++ b/lib/insomniaircd_conf.rb
@@ -0,0 +1,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
+