jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/355036 )

Change subject: Silence mediawiki::user exec-spam
......................................................................


Silence mediawiki::user exec-spam

The SQL-based 'unless' rule for setting user groups did not work
for wikis where one of the groups (such as 'steward') did not exist.

Change-Id: Ic22468404e21dab1cff0d26a79c0b9b58aecbee2
---
M puppet/modules/mediawiki/manifests/user.pp
1 file changed, 13 insertions(+), 11 deletions(-)

Approvals:
  BryanDavis: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/puppet/modules/mediawiki/manifests/user.pp 
b/puppet/modules/mediawiki/manifests/user.pp
index 6e270db..432a518 100644
--- a/puppet/modules/mediawiki/manifests/user.pp
+++ b/puppet/modules/mediawiki/manifests/user.pp
@@ -70,15 +70,17 @@
     if ! empty($groups) {
         $comma_groups = join($groups, ',')
 
-        $comma_groups_sql = join($groups, "', '")
+        $comma_groups_php = join($groups, "', '")
 
-        $group_count = size($groups)
-        $sql_unless = "
-            SELECT COUNT(*)
-            FROM user_groups
-            JOIN user ON ug_user = user_id
-            WHERE user_name = '${canonical_username}'
-            AND ug_group IN ('${$comma_groups_sql}');"
+        # eval.php requires each command to be a single line
+        # double-escape $ against puppet + shell
+        $eval_unless = "
+            \\\$u = User::newFromName( '${username}' );
+            \\\$u->load( User::READ_LATEST );
+            \\\$expected_groups = array_intersect( [ '${comma_groups_php}' ], 
User::GetAllGroups() );
+            \\\$actual_groups = \\\$u->getGroups();
+            echo array_diff( \\\$expected_groups, \\\$actual_groups ) ? 'Bad' 
: 'Good';
+        "
 
         mediawiki::maintenance { 
"mediawiki_user_${canonical_username}_${wiki}_${comma_groups}":
             command => "/usr/local/bin/mwscript createAndPromote.php 
--wiki='${wiki}' \
@@ -87,9 +89,9 @@
 
             # Check that they're already in all the requested groups,
             # using counts.
-            unless  => "/bin/echo \"${sql_unless}\" | \
-                        /usr/local/bin/mwscript sql.php --wikidb='${wiki}' | \
-                        /bin/grep -q '=> ${group_count}'",
+            unless  => "/bin/echo \"${eval_unless}\" | \
+                        /usr/local/bin/mwscript eval.php --wiki='${wiki}' | \
+                        /bin/grep -q '^Good$'",
             require => [
                 
Mediawiki::Maintenance["mediawiki_user_${canonical_username}_${wiki}"],
             ]

-- 
To view, visit https://gerrit.wikimedia.org/r/355036
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic22468404e21dab1cff0d26a79c0b9b58aecbee2
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/vagrant
Gerrit-Branch: master
Gerrit-Owner: Gergő Tisza <gti...@wikimedia.org>
Gerrit-Reviewer: BryanDavis <bda...@wikimedia.org>
Gerrit-Reviewer: Dduvall <dduv...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to