Added a YAML account backend, removed the not in forseeable future working htaccess backend.

git-svn-id: svn+ssh://svn.luon.net/svn/ildus/trunk@13 65a33f86-aa00-0410-91be-cd1bf5efb309
This commit is contained in:
paul 2005-11-12 19:28:47 +00:00
parent 50ccb02e2f
commit 37536b1fac
2 changed files with 65 additions and 17 deletions

View File

@ -1,17 +0,0 @@
# = ildus/server/account_backends/htaccess - account backend library for .htacces files
#
# 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.
module Ildus::Server::AccountBackend
# = Account backend class for Apache's htaccess files.
class Htaccess < Basic
end # class Htaccess
end # module Ildus::Server::AccountBackend

View File

@ -0,0 +1,65 @@
# = ildus/server/account_backends/yaml - account backend library for YAML files
#
# 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.
module Ildus::Server::AccountBackend
# = Account backend class for Apache's htaccess files.
class Yaml < Basic
def initialize(*args)
super
@db = nil
load_db
end
def authenticate
case config['crypt'].to_sym
when :unix
regged_pass = @db[user]
self.auth = (pass.crypt(regged_pass) == regged_pass)
else
raise "unsupported crypt type: #{config['crypt']}"
end
end
def register_account(user, pass)
raise "user already exists" if @db.has_key? user
raise "password to short" if pass.length < 5
salt = pass[-2..-1].succ.succ
@db[user] = pass.crypt(salt)
save_db
end
def unregister_account(user)
raise "user does not exist" unless @db.has_k
@db.delete user
save_db
end
########
private
########
def load_db
db = nil
File.open(config['file'], 'r') { |f| db = YAML.load(f) || Hash.new }
raise "wrong account database format" unless db.is_a? Hash
@db = db
end
def save_db
unless FileTest.exists? config['file']
raise "account database file does not exist: " + config['file']
end
File.open(config['file'], 'w') { |f| f.puts @db.to_yaml }
end
end # class Yaml
end # module Ildus::Server::AccountBackend