Changeset View
Changeset View
Standalone View
Standalone View
resources/sql/autopatches/20141107.ssh.4.keymig.php
| <?php | <?php | ||||
| $table = new PhabricatorAuthSSHKey(); | $table = new PhabricatorAuthSSHKey(); | ||||
| $conn_w = $table->establishConnection('w'); | $conn_w = $table->establishConnection('w'); | ||||
| echo "Updating SSH public key indexes...\n"; | echo pht('Updating SSH public key indexes...')."\n"; | ||||
| $keys = new LiskMigrationIterator($table); | $keys = new LiskMigrationIterator($table); | ||||
| foreach ($keys as $key) { | foreach ($keys as $key) { | ||||
| $id = $key->getID(); | $id = $key->getID(); | ||||
| echo "Updating key {$id}...\n"; | echo pht('Updating key %d...', $id)."\n"; | ||||
| try { | try { | ||||
| $hash = $key->toPublicKey()->getHash(); | $hash = $key->toPublicKey()->getHash(); | ||||
| } catch (Exception $ex) { | } catch (Exception $ex) { | ||||
| echo "Key has bad format! Removing key.\n"; | echo pht('Key has bad format! Removing key.')."\n"; | ||||
| queryfx( | queryfx( | ||||
| $conn_w, | $conn_w, | ||||
| 'DELETE FROM %T WHERE id = %d', | 'DELETE FROM %T WHERE id = %d', | ||||
| $table->getTableName(), | $table->getTableName(), | ||||
| $id); | $id); | ||||
| continue; | continue; | ||||
| } | } | ||||
| $collision = queryfx_all( | $collision = queryfx_all( | ||||
| $conn_w, | $conn_w, | ||||
| 'SELECT * FROM %T WHERE keyIndex = %s AND id < %d', | 'SELECT * FROM %T WHERE keyIndex = %s AND id < %d', | ||||
| $table->getTableName(), | $table->getTableName(), | ||||
| $hash, | $hash, | ||||
| $key->getID()); | $key->getID()); | ||||
| if ($collision) { | if ($collision) { | ||||
| echo "Key is a duplicate! Removing key.\n"; | echo pht('Key is a duplicate! Removing key.')."\n"; | ||||
| queryfx( | queryfx( | ||||
| $conn_w, | $conn_w, | ||||
| 'DELETE FROM %T WHERE id = %d', | 'DELETE FROM %T WHERE id = %d', | ||||
| $table->getTableName(), | $table->getTableName(), | ||||
| $id); | $id); | ||||
| continue; | continue; | ||||
| } | } | ||||
| queryfx( | queryfx( | ||||
| $conn_w, | $conn_w, | ||||
| 'UPDATE %T SET keyIndex = %s WHERE id = %d', | 'UPDATE %T SET keyIndex = %s WHERE id = %d', | ||||
| $table->getTableName(), | $table->getTableName(), | ||||
| $hash, | $hash, | ||||
| $key->getID()); | $key->getID()); | ||||
| } | } | ||||
| echo "Done.\n"; | echo pht('Done.')."\n"; | ||||