Way too many changes to mention. The 'rm' mode works now.
[mailshears.git] / lib / rm / plugins / dovecot_mailstore.rb
index 7c2f02166fe26d5dc4c89da748547149e1685e6b..8ab507d674c3c77739d854ad9d95439b702531ee 100644 (file)
@@ -1,47 +1,25 @@
-# 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 DovecotMailstore < Mailstore
+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)
@@ -61,6 +39,11 @@ class DovecotMailstore < Mailstore
     return (fs_accounts - db_accounts)
   end
 
+
+  def get_domain_usernames(domain)
+    return get_accounts_from_filesystem([domain])
+  end
+
   protected;
 
   def get_domains_from_filesystem()
@@ -89,45 +72,4 @@ class DovecotMailstore < Mailstore
     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