+
+
+
+Kernel.exit(0)
+
+
+begin
+ # Get a list of domains from the Postfixadmin database.
+ db_domains = pgadb.get_domains_from_db()
+rescue DatabaseError => e
+ puts "There was an error connecting to the database: #{e.to_s}"
+ Kernel.exit(ExitCodes::DATABASE_ERROR)
+end
+
+begin
+ # And the accounts.
+ db_accounts = pgadb.get_accounts_from_db()
+rescue DatabaseError => e
+ puts "There was an error connecting to the database: #{e.to_s}"
+ Kernel.exit(ExitCodes::DATABASE_ERROR)
+end
+
+
+Plugin.includers.each do |plugin_class_includer|
+ plugin = plugin_class_includer.new()
+
+ begin
+ leftover_domains = plugin.get_leftover_domains(db_domains)
+ rescue StandardError => e
+ puts "There was an error retrieving domains from the filesystem: #{e.to_s}"
+ Kernel.exit(ExitCodes::FILESYSTEM_ERROR)
+ end
+
+ begin
+ leftover_accounts = plugin.get_leftover_accounts(db_accounts)
+ rescue StandardError => e
+ puts "There was an error retrieving accounts from the filesystem: #{e.to_s}"
+ Kernel.exit(ExitCodes::FILESYSTEM_ERROR)
+ end
+
+ if leftover_domains.size > 0 or leftover_accounts.size > 0
+ puts make_header(plugin_class.to_s())
+
+ leftover_domains.each do |domain|
+ puts "Found: #{domain} (#{plugin.describe_domain(domain)})"
+ end
+
+ leftover_accounts.each do |account|
+ puts "Found: #{account} (#{plugin.describe_account(account)})"
+ end
+
+ if cfg.i_mean_business
+ # We have to delete the accounts before the domain,
+ # otherwise they'd already be gone.
+ leftover_accounts.each do |account|
+ # Get the description before we delete the domain.
+ # This can still fail if the account's domain is gone.
+ account_description = plugin.describe_account(account)
+ plugin.delete_account(account)
+ puts "Removed: #{account} (#{account_description})"
+ end
+
+ leftover_domains.each do |domain|
+ # Get the description before we delete the domain.
+ domain_description = plugin.describe_domain(domain)
+ plugin.delete_domain(domain)
+ puts "Removed: #{domain} (#{domain_description})"
+ end
+ end
+
+ puts ""
+ end
+
+end