]>
gitweb.michael.orlitzky.com - mailshears.git/blob - lib/common/postfixadmin_plugin.rb
1 require 'common/domain'
2 require 'common/plugin'
6 module PostfixadminPlugin
7 # Code that all Postfixadmin plugins (Prune, Rm, Mv...) will
8 # share. That is, we implement the Plugin interface.
12 @db_host = cfg
.postfixadmin_dbhost
13 @db_port = cfg
.postfixadmin_dbport
14 @db_opts = cfg
.postfixadmin_dbopts
15 @db_tty = cfg
.postfixadmin_dbtty
16 @db_name = cfg
.postfixadmin_dbname
17 @db_user = cfg
.postfixadmin_dbuser
18 @db_pass = cfg
.postfixadmin_dbpass
25 # Just assume PostgreSQL for now.
27 connection
= PGconn
.connect(@db_host,
35 # 'ALL' is a magic domain, and we don't want it.
36 sql_query
= "SELECT domain FROM domain WHERE domain <> 'ALL';"
37 connection
.query(sql_query
) do |result
|
38 domains
= result
.field_values('domain')
42 # But pretend like we're database-agnostic in case we ever are.
43 raise DatabaseError
.new(e
)
46 return domains
.map
{ |d
| Domain
.new(d
) }
54 # Just assume PostgreSQL for now.
56 connection
= PGconn
.connect(@db_host,
64 sql_query
= 'SELECT username FROM mailbox;'
65 connection
.query(sql_query
) do |result
|
66 users
= result
.field_values('username')
70 # But pretend like we're database-agnostic in case we ever are.
71 raise DatabaseError
.new(e
)
74 return users
.map
{ |u
| User
.new(u
) }
78 def list_domains_users(domains
)
81 # Just assume PostgreSQL for now.
83 connection
= PGconn
.connect(@db_host,
91 sql_query
= 'SELECT username FROM mailbox WHERE domain IN $1;'
93 connection
.query(sql_query
, domains
.map
{|d
| d
.to_s()}) do |result
|
94 usernames
= result
.field_values('username')
99 # Pretend like we're database-agnostic in case we ever are.
100 raise DatabaseError
.new(e
)
103 return usernames
.map
{ |u
| User
.new(u
) }
109 # Get a list of all aliases, useful for testing.
113 # Just assume PostgreSQL for now.
115 connection
= PGconn
.connect(@db_host,
123 sql_query
= 'SELECT address,goto FROM alias;'
124 results
= connection
.query(sql_query
)
125 results
.each
do |row
|
126 aliases
<< row
# row should be a hash
130 # But pretend like we're database-agnostic in case we ever are.
131 raise DatabaseError
.new(e
)