суббота, 11 ноября 2017 г.

Как в KeePass создавать записи по шаблонам, автоматически генерируя пароль?

В своем подходе мне с самого начала не нравилось, что при создании записи по шаблону нужно вручную запускать генератор пароля. И с самого начала чуть было не нашлось решение — назначать шаблонам пароль {NEWPASSWORD}. Но пришлось его забраковать, поскольку можно нечаянно ткнуть на копирование шаблонного пароля — и после этого записи будут создаваться с одинаковым паролем.

Сейчас подумал, что надо было просто соорудить из регулярных выражений проверку, в какой группе лежит запись. Если в templates — вернуть пустоту, если нет — сгенерировать пароль и вернуть его.

Итак, в каждой шаблонной записи указываем пароль {T-REPLACE-RX:!{T-REPLACE-RX:#{{GROUP}#^\{templates$##}!(\{).*!$1NEWPASSWORD}!} (предполагаем, что группа шаблонов называется templates). В результате, когда создадим запись по шаблону и попросим у нее пароль (копированием, перетаскиванием, автонабором...) — он сгенерируется автоматически.

Подчеркну: пароль появится не в момент создания записи, а после первого обращения к нему. Запись в этот момент автоматически изменится: новый пароль запишется в соответствующее поле.

Если же скопировать пароль из шаблона — в буфер попадет пустая строка, а сам шаблон останется нетронутым.

Если определенному шаблону нужен особый профиль пароля, это тоже можно задать, например: {T-REPLACE-RX:!{T-REPLACE-RX:#{{GROUP}#^\{templates$##}!(\{).*!$1NEWPASSWORD:/Simple/}!} (предполагаем, что есть пользовательский профиль генератора Simple).

Пока не решил, менять ли статью и прилагаемую «сборку» под этот трюк: выглядит он пугающе для новичков, да и недостаточно проверен.

По-хорошему, нужно проверять не просто имя группы, а начало пути к ней, так как в моей сборке есть еще подгруппа для неиспользуемых шаблонов: {T-REPLACE-RX:!{T-REPLACE-RX:#{{GROUP_PATH}#^\{\<service\>\.templates.*##}!(\{).*!$1NEWPASSWORD}!}.