We are no longer offering accounts on this server. Consider https://gitlab.freedesktop.org/ as a place to host projects.

Commit 458f93bd authored by Brion Vibber's avatar Brion Vibber

OStatus fixup-shadow.php: add check for user_group entries with 'uri' entry...

OStatus fixup-shadow.php: add check for user_group entries with 'uri' entry shadowing an actual local_group -- this can cause trouble now that we sometimes actually use the uri field for lookups, and leaving the entries around would break updating the table to fill out formerly missing uris, since the unique index entry would already be taken by the bad entry.
parent a9654beb
......@@ -84,6 +84,50 @@ while ($group->fetch()) {
}
echo "\n";
// And there may be user_group entries remaining where we've already killed
// the ostatus_profile. These were "harmless" until our lookup started actually
// using the uri field, at which point we can clearly see it breaks stuff.
echo "Checking for leftover bogus user_group.uri entries obscuring local_group entries...\n";
$group = new User_group();
$group->joinAdd(array('id', 'local_group:group_id'), 'LEFT');
$group->whereAdd('group_id IS NULL');
$marker = mt_rand(31337, 31337000);
$groupTemplate = common_local_url('groupbyid', array('id' => $marker));
$encGroup = $group->escape($groupTemplate, true);
$encGroup = str_replace($marker, '%', $encGroup);
echo " LIKE '$encGroup'\n";
$group->whereAdd("uri LIKE '$encGroup'");
$group->find();
$count = $group->N;
echo "Found $count...\n";
while ($group->fetch()) {
$uri = $group->uri;
if (preg_match('!/group/(\d+)/id!', $uri, $matches)) {
$id = intval($matches[1]);
$local = Local_group::staticGet('group_id', $id);
if ($local) {
$nick = $local->nickname;
} else {
$nick = '<deleted>';
}
echo "local group $id ($local->nickname) hidden by $uri (bogus group id $group->id)";
if ($dry) {
echo " - skipping\n";
} else {
echo " - removing bogus user_group entry...";
$evil = User_group::staticGet('id', $group->id);
$evil->delete();
echo " ok\n";
}
}
}
echo "\n";
// Fallback?
echo "Checking for bogus profiles blocking local users/groups by URI pattern match...\n";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment