Convert DovecotMailstore to a plugin, and generalize the main mailshears script to...
[mailshears.git] / src / dovecot_mailstore.rb
index d675efc9be45b883c02fdcb15233fea57d71e270..ee12da905412a207f9e092b60507382fb84ab16d 100644 (file)
@@ -4,11 +4,51 @@ require 'src/mailstore'
 
 class DovecotMailstore < Mailstore
 
+  def initialize
+    @domain_root = Configuration::MAIL_ROOT
+  end
+
+  def describe_domain(domain)
+    return get_domain_path(domain)
+  end
+
+  def describe_account(account)
+    return get_account_path(account)
+  end
+
+  def delete_domain(domain)
+    domain_path = self.get_domain_path(domain)
+    FileUtils.rm_rf(domain_path)
+  end
+
+  def delete_account(account)
+    account_path = self.get_account_path(account)
+    FileUtils.rm_rf(account_path)
+  end
+
+  def get_leftover_domains(db_domains)
+    # Get the list of domains according to the filesystem.
+    fs_domains = self.get_domains_from_filesystem()
+
+    # Return the list of domains on the filesystem that aren't in the DB.
+    return (fs_domains - db_domains)
+  end
+
+  def get_leftover_accounts(db_accounts)
+    # Get the list of accounts according to the filesystem.
+    fs_domains = self.get_domains_from_filesystem()
+    fs_accounts = self.get_accounts_from_filesystem(fs_domains)
+
+    # And return the accounts on the filesystem that aren't in the DB.
+    return (fs_accounts - db_accounts)
+  end
+
+  protected;
+
   def get_domains_from_filesystem()
     return Filesystem.get_subdirs(@domain_root)
   end
 
-
   def get_accounts_from_filesystem(domains)
     accounts = []