# = ildus/server/backend - generic server backend library
#
# Copyright (C) 2005 Paul van Tilburg <paul@luon.net>
# 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]
alias_method :[], :get
def register(type, backend_class)
if BackendClasses.include? type
raise "type #{type} already registered"
BackendClasses[type] = backend_class
class Basic
def self.inherited(subclass)
type = subclass.to_s.split('::').last.downcase.to_sym
Backend.register(type, subclass)
def hostnames_of(user)
raise Handler::NotImplementedError
def add_hostname(user)
def remove_hostname(user)
def update_hostname(user, host, addr)
def add_alias(user, new_alias, host)
def remove_alias(user, old_alias, host)
end # class Basic
end # module Backend
end # class Server
end # module Ildus