]>
gitweb.michael.orlitzky.com - mailshears.git/blob - lib/mv/plugins/postfixadmin.rb
3b6d1884975b939bbf7bd01f370fbde10cdf653a
3 require 'common/postfixadmin_plugin'
8 include PostfixadminPlugin
11 def mv_user(user_from
, user_to
)
12 if not user_exists(user_from
)
13 raise NonexistentUserError
.new("source user #{user_from} does not exist")
16 user_to_parts
= user_to
.split('@')
17 localpart_to
= user_to_parts
[0]
18 domain_to
= user_to_parts
[1]
20 if not domain_exists(domain_to
)
21 msg
= "destination domain #{domain_to} does not exist"
22 raise NonexistentDomainError
.new(msg
)
25 mailbox_query
= 'UPDATE mailbox SET '
26 mailbox_query +
= ' username=$1,'
27 mailbox_query +
= ' domain=$2,'
28 mailbox_query +
= " maildir=CONCAT($2, '/', $3, '/'),"
29 mailbox_query +
= ' local_part=$3 '
30 mailbox_query +
= 'WHERE username=$4;'
32 alias_query1
= 'UPDATE alias SET '
33 alias_query1 +
= ' address=$1,'
34 alias_query1 +
= ' domain=$2,'
35 alias_query1 +
= ' goto=REPLACE(goto, $4, $1) '
36 alias_query1 +
= 'WHERE address=$4;'
38 alias_query2
= 'UPDATE alias SET '
39 alias_query2 +
= 'goto=REPLACE(goto, $4, $1);'
41 sql_queries
= [mailbox_query
, alias_query1
, alias_query2
]
44 connection
= PGconn
.connect(@db_host,
52 sql_queries
.each
do |sql_query
|
53 varchar
= 1043 # from pg_type.h
54 params
= [{:value => user_to
, :type => varchar
},
55 {:value => domain_to
, :type => varchar
},
56 {:value => localpart_to
, :type => varchar
},
57 {:value => user_from
, :type => varchar
}]
58 connection
.query(sql_query
, params
)
64 # Pretend like we're database-agnostic in case we ever are.
65 raise DatabaseError
.new(e
)