class Dinomischus::ConfFile
Public Class Methods
create(conf_path, key_path)
click to toggle source
create config file
# File lib/dinomischus/l_conf.rb, line 13 def self.create(conf_path, key_path) raise RuntimeError.new("鍵ファイルが存在しません。#{key_path}") if !File.exist?(key_path) raise RuntimeError.new("設定ファイルが既に存在します。#{conf_path}") if File.exist?(conf_path) base = [] hash = {"key_path": key_path} base.push( hash ) base.push( {"dummy": { "value": "", "desc": "" }} ) File.open(conf_path, 'w') do |f| YAML.dump(base, f) end end
load_file(conf_path, specify = false )
click to toggle source
# File lib/dinomischus/l_conf.rb, line 46 def self.load_file(conf_path, specify = false ) raise RuntimeError.new("設定ファイルが存在しません。#{conf_path}") if !File.exist?(conf_path) conf_file = YAML.load_file(conf_path) key_path = sprintf("%s", conf_file[0][:key_path] ) key_path = File.expand_path(key_path, File.dirname(conf_path)) raw_items = conf_file[1] items = {} raw_items.keys.each do |key| continue if key == "dummy" && raw_items[key][:value] == "" keyval = get(key_path, raw_items[key][:value] ) keydesc = raw_items[key][:desc] items[key] = specify ? {"value": keyval, "desc": keydesc} : keyval end items end
set_item(conf_path, key, value, desc = "", do_encrypt = false)
click to toggle source
# File lib/dinomischus/l_conf.rb, line 27 def self.set_item(conf_path, key, value, desc = "", do_encrypt = false) raise RuntimeError.new("設定ファイルが存在しません。#{conf_path}") if !File.exist?(conf_path) yml = YAML.load_file(conf_path) key_path = yml[0][:key_path] raise RuntimeError.new("鍵ファイルが存在しません。#{key_path}") if !File.exist?(key_path) #val_text = do_encrypt ? "?#{exec_encrypt( key_path, value)}" : value val_text = do_encrypt ? "?#{Dinomischus::dino_encrypt( key_path, value)}" : value yml[1][key.to_sym] = {"value": val_text, "desc": desc} File.open(conf_path, 'w') do |f| YAML.dump( yml, f ) end true end
Private Class Methods
blank?(obj)
click to toggle source
private class method —————–
# File lib/dinomischus/l_conf.rb, line 66 def self.blank?(obj) obj.nil? || obj.empty? end
exec_decrypt( key_path, value)
click to toggle source
# File lib/dinomischus/l_conf.rb, line 100 def self.exec_decrypt( key_path, value) raise RuntimeError.new("鍵ファイルが存在しません。#{key_path}") if !File.exist?(key_path) keys = YAML.load_file(key_path) enctype = keys[:key][:type] if enctype == "sha256" pass = keys[:key][:value] v2 = Crypter::CryptAes.decrypt( value, pass ) v1raw = YAML.load(v2) v1 = Crypter::CryptAes.decrypt( v1raw[0], pass, v1raw[1]) else raise RuntimeError.new("未サポートの暗号です。#{enctype}") end end
exec_encrypt( key_path, value)
click to toggle source
# File lib/dinomischus/l_conf.rb, line 84 def self.exec_encrypt( key_path, value) raise RuntimeError.new("鍵ファイルが存在しません。#{key_path}") if !File.exist?(key_path) keys = YAML.load_file(key_path) enctype = keys[:key][:type] if enctype == "sha256" # sha256の処理。 pass = keys[:key][:value] enc1 = Crypter::CryptAes.encrypt( value, pass, true ) enc2 = Crypter::CryptAes.encrypt( enc1.to_s, pass, false ) else raise RuntimeError.new("未サポートの暗号です。#{enctype}") end enc2[0] end
get(key_path, value)
click to toggle source
# File lib/dinomischus/l_conf.rb, line 70 def self.get(key_path, value) ret = value if value.match /^\?.*/ ret.gsub!("\n","") ret = ret[/\?(.*)/, 1] #ret = exec_decrypt(key_path, ret) ret = Dinomischus::dino_decrypt(key_path, ret) else ret = value end ret end