mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
notify: Do not pass notification texts via pipes
Directly retrieve comments from the database instead of additionally passing them via stdin. Fixes FS#46742. Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
This commit is contained in:
parent
5931d5ceec
commit
e45609cf66
4 changed files with 30 additions and 12 deletions
|
@ -91,6 +91,25 @@ def get_request_recipients(cur, pkgbase_id, uid):
|
||||||
'Users.ID = %s OR PackageBases.ID = %s', [uid, pkgbase_id])
|
'Users.ID = %s OR PackageBases.ID = %s', [uid, pkgbase_id])
|
||||||
return [row[0] for row in cur.fetchall()]
|
return [row[0] for row in cur.fetchall()]
|
||||||
|
|
||||||
|
def get_comment(cur, comment_id):
|
||||||
|
cur.execute('SELECT Comments FROM PackageComments WHERE ID = %s',
|
||||||
|
[comment_id])
|
||||||
|
return cur.fetchone()[0]
|
||||||
|
|
||||||
|
def get_flagger_comment(cur, pkgbase_id):
|
||||||
|
cur.execute('SELECT FlaggerComment FROM PackageBases WHERE ID = %s',
|
||||||
|
[pkgbase_id])
|
||||||
|
return cur.fetchone()[0]
|
||||||
|
|
||||||
|
def get_request_comment(cur, reqid):
|
||||||
|
cur.execute('SELECT Comments FROM PackageRequests WHERE ID = %s', [reqid])
|
||||||
|
return cur.fetchone()[0]
|
||||||
|
|
||||||
|
def get_request_closure_comment(cur, reqid):
|
||||||
|
cur.execute('SELECT ClosureComment FROM PackageRequests WHERE ID = %s',
|
||||||
|
[reqid])
|
||||||
|
return cur.fetchone()[0]
|
||||||
|
|
||||||
def send_resetkey(cur, uid):
|
def send_resetkey(cur, uid):
|
||||||
cur.execute('SELECT UserName, Email, ResetKey FROM Users WHERE ID = %s',
|
cur.execute('SELECT UserName, Email, ResetKey FROM Users WHERE ID = %s',
|
||||||
[uid])
|
[uid])
|
||||||
|
@ -119,11 +138,11 @@ def welcome(cur, uid):
|
||||||
|
|
||||||
send_notification([to], subject, body, refs)
|
send_notification([to], subject, body, refs)
|
||||||
|
|
||||||
def comment(cur, uid, pkgbase_id):
|
def comment(cur, uid, pkgbase_id, comment_id):
|
||||||
user = username_from_id(cur, uid)
|
user = username_from_id(cur, uid)
|
||||||
pkgbase = pkgbase_from_id(cur, pkgbase_id)
|
pkgbase = pkgbase_from_id(cur, pkgbase_id)
|
||||||
to = get_recipients(cur, pkgbase_id, uid)
|
to = get_recipients(cur, pkgbase_id, uid)
|
||||||
text = sys.stdin.read()
|
text = get_comment(cur, comment_id)
|
||||||
|
|
||||||
uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
||||||
|
|
||||||
|
@ -147,7 +166,7 @@ def flag(cur, uid, pkgbase_id):
|
||||||
user = username_from_id(cur, uid)
|
user = username_from_id(cur, uid)
|
||||||
pkgbase = pkgbase_from_id(cur, pkgbase_id)
|
pkgbase = pkgbase_from_id(cur, pkgbase_id)
|
||||||
to = [get_maintainer_email(cur, pkgbase_id)]
|
to = [get_maintainer_email(cur, pkgbase_id)]
|
||||||
text = sys.stdin.read()
|
text = get_flagger_comment(cur, pkgbase_id)
|
||||||
|
|
||||||
user_uri = aur_location + '/account/' + user + '/'
|
user_uri = aur_location + '/account/' + user + '/'
|
||||||
pkgbase_uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
pkgbase_uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
||||||
|
@ -220,7 +239,7 @@ def request_open(cur, uid, reqid, reqtype, pkgbase_id, merge_into=None):
|
||||||
pkgbase = pkgbase_from_id(cur, pkgbase_id)
|
pkgbase = pkgbase_from_id(cur, pkgbase_id)
|
||||||
to = [aur_request_ml]
|
to = [aur_request_ml]
|
||||||
cc = get_request_recipients(cur, pkgbase_id, uid)
|
cc = get_request_recipients(cur, pkgbase_id, uid)
|
||||||
text = sys.stdin.read()
|
text = get_request_comment(cur, reqid)
|
||||||
|
|
||||||
user_uri = aur_location + '/account/' + user + '/'
|
user_uri = aur_location + '/account/' + user + '/'
|
||||||
pkgbase_uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
pkgbase_uri = aur_location + '/pkgbase/' + pkgbase + '/'
|
||||||
|
@ -252,7 +271,7 @@ def request_close(cur, uid, reqid, reason):
|
||||||
pkgbase_id = pkgbase_from_pkgreq(cur, reqid)
|
pkgbase_id = pkgbase_from_pkgreq(cur, reqid)
|
||||||
to = [aur_request_ml]
|
to = [aur_request_ml]
|
||||||
cc = get_request_recipients(cur, pkgbase_id, uid)
|
cc = get_request_recipients(cur, pkgbase_id, uid)
|
||||||
text = sys.stdin.read()
|
text = get_request_closure_comment(cur, reqid);
|
||||||
|
|
||||||
user_uri = aur_location + '/account/' + user + '/'
|
user_uri = aur_location + '/account/' + user + '/'
|
||||||
|
|
||||||
|
|
|
@ -1277,11 +1277,10 @@ function account_set_ssh_keys($uid, $ssh_keys, $ssh_fingerprints) {
|
||||||
* Invoke the email notification script.
|
* Invoke the email notification script.
|
||||||
*
|
*
|
||||||
* @param string $params Command line parameters for the script.
|
* @param string $params Command line parameters for the script.
|
||||||
* @param string $text Text to pass via stdin.
|
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function notify($params, $text='') {
|
function notify($params) {
|
||||||
$cmd = config_get('notifications', 'notify-cmd');
|
$cmd = config_get('notifications', 'notify-cmd');
|
||||||
foreach ($params as $param) {
|
foreach ($params as $param) {
|
||||||
$cmd .= ' ' . escapeshellarg($param);
|
$cmd .= ' ' . escapeshellarg($param);
|
||||||
|
@ -1299,7 +1298,6 @@ function notify($params, $text='') {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
fwrite($pipes[0], $text);
|
|
||||||
fclose($pipes[0]);
|
fclose($pipes[0]);
|
||||||
fclose($pipes[1]);
|
fclose($pipes[1]);
|
||||||
fclose($pipes[2]);
|
fclose($pipes[2]);
|
||||||
|
|
|
@ -100,8 +100,9 @@ function pkgbase_add_comment($base_id, $uid, $comment) {
|
||||||
$q.= intval($base_id) . ", " . $uid . ", ";
|
$q.= intval($base_id) . ", " . $uid . ", ";
|
||||||
$q.= $dbh->quote($comment) . ", UNIX_TIMESTAMP())";
|
$q.= $dbh->quote($comment) . ", UNIX_TIMESTAMP())";
|
||||||
$dbh->exec($q);
|
$dbh->exec($q);
|
||||||
|
$comment_id = $dbh->lastInsertId();
|
||||||
|
|
||||||
notify(array('comment', $uid, $base_id), $comment);
|
notify(array('comment', $uid, $base_id, $comment_id));
|
||||||
|
|
||||||
return array(true, __('Comment has been added.'));
|
return array(true, __('Comment has been added.'));
|
||||||
}
|
}
|
||||||
|
@ -401,7 +402,7 @@ function pkgbase_flag($base_ids, $comment) {
|
||||||
$dbh->exec($q);
|
$dbh->exec($q);
|
||||||
|
|
||||||
foreach ($base_ids as $base_id) {
|
foreach ($base_ids as $base_id) {
|
||||||
notify(array('flag', $uid, $base_id), $comment);
|
notify(array('flag', $uid, $base_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
return array(true, __("The selected packages have been flagged out-of-date."));
|
return array(true, __("The selected packages have been flagged out-of-date."));
|
||||||
|
|
|
@ -158,7 +158,7 @@ function pkgreq_file($ids, $type, $merge_into, $comments) {
|
||||||
if ($type === 'merge') {
|
if ($type === 'merge') {
|
||||||
$params[] = $merge_into;
|
$params[] = $merge_into;
|
||||||
}
|
}
|
||||||
notify($params, $comments);
|
notify($params);
|
||||||
|
|
||||||
$auto_orphan_age = config_get('options', 'auto_orphan_age');
|
$auto_orphan_age = config_get('options', 'auto_orphan_age');
|
||||||
$auto_delete_age = config_get('options', 'auto_delete_age');
|
$auto_delete_age = config_get('options', 'auto_delete_age');
|
||||||
|
@ -233,7 +233,7 @@ function pkgreq_close($id, $reason, $comments, $auto_close=false) {
|
||||||
$dbh->exec($q);
|
$dbh->exec($q);
|
||||||
|
|
||||||
/* Send e-mail notifications. */
|
/* Send e-mail notifications. */
|
||||||
notify(array('request-close', $uid, $id, $reason), $comments);
|
notify(array('request-close', $uid, $id, $reason));
|
||||||
|
|
||||||
return array(true, __("Request closed successfully."));
|
return array(true, __("Request closed successfully."));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue