# = ildus/server/backend - generic server backend library # # Copyright (C) 2005 Paul van Tilburg # # Ildus is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) # any later version. require 'singleton' module Ildus class Server module Backend BackendClasses = Hash.new class << self def load path = File.dirname(__FILE__) Dir["#{path}/backends/**/*.rb"].each { |file| require file } end def get(type) BackendClasses[type.to_sym] end alias_method :[], :get def register(type, backend_class) if BackendClasses.include? type raise "type #{type} already registered" end BackendClasses[type] = backend_class end end class Basic attr_reader :config, :user, :pass def self.inherited(subclass) diff = subclass.to_s.split('::') - self.to_s.split('::') type = diff.to_s.split('::').last.downcase.to_sym Backend.register(type, subclass) end def initialize(backend_config) @config = backend_config @auth = false @user = user @pass = pass end ################# # Account methods def user=(username) raise Handler::AlreadyAuthError if @auth @user = username end def pass=(password) raise Handler::AlreadyAuthError if @auth @pass = password ## STUB @auth = (password == "foo") ## end def authenticated? @auth end def register_account raise Handler::NotImplementedError end def unregister_account raise Handler::NotImplementedError end ################# # Backend methods def hostnames raise Handler::NotImplementedError end def add_hostname(host) raise Handler::NotImplementedError end def remove_hostname(host) raise Handler::NotImplementedError end def update_hostname(host, addr) raise Handler::NotImplementedError end def add_alias(new_alias, host) raise Handler::NotImplementedError end def remove_alias(old_alias, host) raise Handler::NotImplementedError end end # class Basic end # module Backend end # class Server end # module Ildus