]>
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 connection
= PGconn
.connect(@db_host, @db_port, @db_opts, @db_tty,
26 @db_name, @db_user, @db_pass)
28 # 'ALL' is a magic domain, and we don't want it.
29 sql_query
= "SELECT domain FROM domain WHERE domain <> 'ALL';"
30 connection
.query(sql_query
) do |result
|
31 domains
= result
.field_values('domain')
36 return domains
.map
{ |d
| Domain
.new(d
) }
44 connection
= PGconn
.connect(@db_host, @db_port, @db_opts, @db_tty,
45 @db_name, @db_user, @db_pass)
47 sql_query
= 'SELECT username FROM mailbox;'
48 connection
.query(sql_query
) do |result
|
49 users
= result
.field_values('username')
54 return users
.map
{ |u
| User
.new(u
) }
58 def list_domains_users(domains
)
61 connection
= PGconn
.connect(@db_host, @db_port, @db_opts, @db_tty,
62 @db_name, @db_user, @db_pass)
64 sql_query
= 'SELECT username FROM mailbox WHERE domain IN $1;'
66 connection
.query(sql_query
, domains
.map
{|d
| d
.to_s()}) do |result
|
67 usernames
= result
.field_values('username')
72 return usernames
.map
{ |u
| User
.new(u
) }
78 # Get a list of all aliases, useful for testing.
82 connection
= PGconn
.connect(@db_host, @db_port, @db_opts, @db_tty,
83 @db_name, @db_user, @db_pass)
85 sql_query
= 'SELECT address,goto FROM alias;'
86 results
= connection
.query(sql_query
)
88 aliases
<< row
# row should be a hash