-# Needed for rm_rf.
+# Needed for rm_r.
require 'fileutils'
require 'common/filesystem'
require 'common/mailstore'
-require 'common/plugin'
+require 'common/dovecot_mailstore_plugin'
require 'rm/rm_plugin'
class DovecotMailstoreRm < Mailstore
- include Plugin
+ include DovecotMailstorePlugin
include RmPlugin
- def initialize
- cfg = Configuration.new()
- @domain_root = cfg.mail_root
- end
-
- def describe_domain(domain)
- begin
- domain_path = get_domain_path(domain)
- return domain_path
- rescue NonexistentDomainError => e
- return "Doesn't exist: #{e.to_s}"
- end
- end
-
- def describe_account(account)
- begin
- account_path = get_account_path(account)
- return account_path
- rescue NonexistentAccountError => e
- return "Doesn't exist: #{e.to_s}"
- end
- end
def delete_domain(domain)
domain_path = self.get_domain_path(domain)
- FileUtils.rm_rf(domain_path)
+ FileUtils.rm_r(domain_path)
end
def delete_account(account)
account_path = self.get_account_path(account)
- FileUtils.rm_rf(account_path)
+ FileUtils.rm_r(account_path)
end
def get_leftover_domains(db_domains)
return (fs_accounts - db_accounts)
end
+
+ def get_domain_usernames(domain)
+ return get_accounts_from_filesystem([domain])
+ end
+
protected;
def get_domains_from_filesystem()
return accounts
end
-
- def get_domain_path(domain)
- # Return the filesystem path for the given domain.
- # That is, the directory where its mail is stored.
- # Only works if the domain directory exists!
- domain_path = File.join(@domain_root, domain)
-
- if File.directory?(domain_path)
- return domain_path
- else
- raise NonexistentDomainError.new(domain)
- end
- end
-
-
- def get_account_path(account)
- # Return the filesystem path of this account's mailbox.
- # Only works if the account exists!
- if not account.include?('@')
- raise InvalidAccountError.new("#{account}: Accounts must contain an '@' symbol.")
- end
-
- account_parts = account.split('@')
- user_part = account_parts[0]
- domain_part = account_parts[1]
-
- begin
- domain_path = get_domain_path(domain_part)
- rescue NonexistentDomainError
- raise NonexistentAccountError.new(account)
- end
-
- account_path = File.join(domain_path, user_part)
-
- if File.directory?(account_path)
- return account_path
- else
- raise NonexistentAccountError(account)
- end
- end
-
end