# = 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 def self.inherited(subclass) type = subclass.to_s.split('::').last.downcase.to_sym Backend.register(type, subclass) end def hostnames_of(user) raise Handler::NotImplementedError end def add_hostname(user) raise Handler::NotImplementedError end def remove_hostname(user) raise Handler::NotImplementedError end def update_hostname(user, host, addr) raise Handler::NotImplementedError end def add_alias(user, new_alias, host) raise Handler::NotImplementedError end def remove_alias(user, old_alias, host) raise Handler::NotImplementedError end end # class Basic end # module Backend end # class Server end # module Ildus