79 lines
1.8 KiB
Ruby
79 lines
1.8 KiB
Ruby
# = 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]
|
|
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
|