X-Git-Url: http://gitweb.michael.orlitzky.com/?p=mailshears.git;a=blobdiff_plain;f=lib%2Frm%2Fplugins%2Fpostfixadmin_db.rb;h=ca91b8beb553f545b00f8de85c5cc475bef594fa;hp=cd59928007448a3bd77c400cecad60eb717f6365;hb=bd2dabf89ab277fbe315b05e6dfa839afb5ce5ef;hpb=51f027b01e242737956c3ab5aecdd322d6ceeeed diff --git a/lib/rm/plugins/postfixadmin_db.rb b/lib/rm/plugins/postfixadmin_db.rb index cd59928..ca91b8b 100644 --- a/lib/rm/plugins/postfixadmin_db.rb +++ b/lib/rm/plugins/postfixadmin_db.rb @@ -10,6 +10,8 @@ class PostfixadminDbRm def delete_account(account) + raise NonexistentAccountError.new(account) if not user_exists(account) + sql_queries = ['DELETE FROM alias WHERE address = $1;'] # Wipe out any aliases pointed at our account. sql_queries << "UPDATE alias SET goto=REPLACE(goto, $1, '');" @@ -51,12 +53,15 @@ class PostfixadminDbRm def delete_domain(domain) + raise NonexistentDomainError.new(domain) if not domain_exists(domain) + sql_queries = ['DELETE FROM domain_admins WHERE domain = $1;'] sql_queries << 'DELETE FROM alias WHERE domain = $1;' sql_queries << 'DELETE FROM mailbox WHERE domain = $1;' sql_queries << 'DELETE FROM alias_domain WHERE alias_domain = $1;' sql_queries << 'DELETE FROM log WHERE domain = $1;' sql_queries << 'DELETE FROM vacation WHERE domain = $1;' + sql_queries << 'DELETE FROM domain WHERE domain = $1;' begin connection = PGconn.connect(@db_host, @@ -81,9 +86,10 @@ class PostfixadminDbRm end + protected; - def get_domain_usernames(domain) - usernames = [] + def domain_exists(domain) + count = 0 # Just assume PostgreSQL for now. begin @@ -95,19 +101,23 @@ class PostfixadminDbRm @db_user, @db_pass) - sql_query = 'SELECT username FROM mailbox WHERE domain = $1;' - + sql_query = 'SELECT COUNT(domain) as count FROM domain WHERE domain = $1;' connection.query(sql_query, [domain]) do |result| - usernames = result.field_values('username') + return false if result.ntuples() < 1 + begin + count = result.getvalue(0,0).to_i() + return false if count.nil? + rescue StandardError + return false + end end - connection.close() rescue PGError => e - # Pretend like we're database-agnostic in case we ever are. + # But pretend like we're database-agnostic in case we ever are. raise DatabaseError.new(e) end - return usernames + return (count > 0) end end