120 lines
2.6 KiB
Ruby
120 lines
2.6 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
|
|
|
|
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
|