buniak_a_h wrote: ↑Sat 02 Feb, 2019 12:07
может, имеет смысл включить в комплект поставки такого типа lua?
Есть же уже похожий скрипт в комплекте, для md5. Какой смысл плодить их для каждого алгоритма, кому надо, поправит под свои нужды.
Я про назначение префикса. Есессно, я за основу (как пример) взял из поставки. Просто не все знают про CommandLine. А про разные алгоритмы - я не по уши деревянный, чтоб такое предлагать.
-- идея sToLp: в начале комстроки цифру/знак по кругу менять на префиксы плагинов
-- реализация John Doe Tue 14 Oct, 2014 18:17 http://forum.farmanager.com/viewtopic.php?p=124279#p124279
-- Неторопливое размеренное последовательное нажатие клавиши на цифровой линейке клавиатуры (1 - 0, - = \)
-- приводит к вводу в комстроку назначенных на клавишу префиксов, по кругу сменяющих друг друга.
-- Клавиши применяются также и с модифиатором Shift
-- Для ввода в начало комстроки двух соответствующих цифр/знаков надо быстро дважды подряд нажать соответствующую клавишу/шорткат.
-- контрольные суммы вычисляются плагином Integrity Checker посредством макроса:
-- buniak_a_h Sun 03 Feb 2019 16:02
-- https://forum.farmanager.com/viewtopic.php?p=152951#p152951
local prev = 0 -- переменная prev используется в condition макросов
local prefixes = {"2", "crc:", "crc32:", "md5:", "sha1:", "sha-256:", "sha-512:", "sha3-512:", "whirlpool:", }
local cycle = {}
for i,v in ipairs(prefixes) do
cycle[v] = prefixes[i+1] or prefixes[1]
end
Macro { --в начале комстроки цифру 2 по кругу менять на префиксы подсчета контрольной суммы
description="по кругу [2] - [crc:] - [crc32:] - [md5:] - [sha1:] - [sha-256:] - [sha-512:] - [sha3-512:] - [whirlpool:] - [2]";
area="Shell"; key="2";
uid="C24F0734-FD8D-41F9-9C49-6598D6CAF599";
condition=function()
local time = Far.UpTime; delta = time-prev; prev = time
return delta>300 and CmdLine.Value~=" ";
end;
action=function()
replace = cycle[CmdLine.Value]
if replace then
Keys"CtrlY"
print(replace)
else
Keys"AKey"
end
end;
}
пользовать, просто медленно последовательно нажимая одну и ту же цифру (или знак — меняется легко).
Integrity Checker — работа с хеш-суммами выделенных файлов
Posted: Mon 04 Feb, 2019 18:06
by buniak_a_h
Heir wrote: ↑Mon 04 Feb, 2019 17:19
Ещё хорошо бы результат в Буфер помещать.
description="BAX - Скопировать пункт МЕНЮ в клипборд";
flags="";
action=function()
far.CopyToClipboard(Menu.GetValue(0))
end;
}
Macro{
area="Menu";
key="CtrlShiftC";
description="BAX - Скопировать все пункты МЕНЮ в клипборд";
flags="";
action=function()
local s,i={},1
whiletruedo
if band(Menu.ItemStatus(i),0x00000008)==0then
local ss=Menu.GetValue(i)
if ss then s[#s+1]=ss end
elsebreak
end
i = i +1
end
far.CopyToClipboard(table.concat(s,'\n'))
end;
}
Одно нажатие лишнее, зато мне далеко не всегда требуется помещать его в буфер (а иногда - и нельзя: в буфере что-то нужное).
Можно было бы заменить far.Show на far.Message с кнопками "в буфер", "в комстроку", "закрыть". Было бы универсальнее, но лениво...
Integrity Checker — работа с хеш-суммами выделенных файлов
Posted: Tue 09 Apr, 2019 10:18
by IgorZ
Windows XP SP3, Far 3.0.5382, Integrity Checker 2.7.1
У меня есть каталог с кучей имиджей дисков. Для контроля целостности сделан файл с контрольными суммами MD5, и периодически произвожу проверку. В этот раз встал на файл с контрольными суммами (создан также Integrity Checker), вызвал меню плагина, выбрал пункт "Проверка файлов", Enter, получил
╔═════════════ Исключительная ситуация ══════════════╗
║ 0x0484CE0A IntChecker2.dll!<unknown> (get the pdb) ║
║ 0x04846678 IntChecker2.dll!<unknown> (get the pdb) ║
║ 0x0484723B IntChecker2.dll!<unknown> (get the pdb) ║
║ 0x0484CAEE IntChecker2.dll!<unknown> (get the pdb) ║
║ 0xFFFFFFFF <unknown>!<unknown> (get the pdb) ║
╟────────────────────────────────────────────────────╢
║ { OK } ║
╚════════════════════════════════════════════════════╝
Создал файл с контрольными суммами для каталога IntChecker непосредственно версией 2.7.1 - результат попытки проверки тот же.
С версией 2.7.0 всё работает нормально.
Также заодно повторяю вопрос buniak_a_h: что делает префикс плагина, и почему команда "check: <filename>.md5" вызывает сообщение "Файл не является списком хешей" (файл заведомо корректен, и в версии 2.7.0 при вызове проверки через меню плагина отрабатывается нормально)?
Integrity Checker — работа с хеш-суммами выделенных файлов
Posted: Tue 09 Apr, 2019 10:41
by Ariman
IgorZ wrote: ↑Tue 09 Apr, 2019 10:18В этот раз встал на файл с контрольными суммами (создан также Integrity Checker), вызвал меню плагина, выбрал пункт "Проверка файлов", Enter, получил
А можно файлик посмотреть, на котором падает? Само сообщение мне не сильно много говорит. Раз проблемный файл создается плагином нормально, то, похоже, что падает в парсере. Код хеширования одинаковый для обеих операций.
IgorZ wrote: ↑Tue 09 Apr, 2019 10:18
почему команда "check: <filename>.md5" вызывает сообщение "Файл не является списком хешей" (файл заведомо корректен, и в версии 2.7.0 при вызове проверки через меню плагина отрабатывается нормально)?
Потому что пробел перед именем файла. Плагин его считает частью имени и не находит такой файл. В имя попадает всё, что после двоеточия.
Integrity Checker — работа с хеш-суммами выделенных файлов
IgorZ wrote: ↑Tue 09 Apr, 2019 10:18В этот раз встал на файл с контрольными суммами (создан также Integrity Checker), вызвал меню плагина, выбрал пункт "Проверка файлов", Enter, получил
А можно файлик посмотреть, на котором падает? Само сообщение мне не сильно много говорит. Раз проблемный файл создается плагином нормально, то, похоже, что падает в парсере. Код хеширования одинаковый для обеих операций.
Зашёл в каталог плагина, создал hashlist.md5 (приложил), тут же вызываю проверку - падение.
Подключил FExcept.dll, создал траплог - может, поможет. Тоже прицепил.
IgorZ wrote: ↑Tue 09 Apr, 2019 10:18
почему команда "check: <filename>.md5" вызывает сообщение "Файл не является списком хешей" (файл заведомо корректен, и в версии 2.7.0 при вызове проверки через меню плагина отрабатывается нормально)?
Потому что пробел перед именем файла. Плагин его считает частью имени и не находит такой файл. В имя попадает всё, что после двоеточия.
Спасибо, помогло.
Integrity Checker — работа с хеш-суммами выделенных файлов
Posted: Tue 09 Apr, 2019 15:02
by Ariman
IgorZ wrote: ↑Tue 09 Apr, 2019 12:00
Подключил FExcept.dll, создал траплог - может, поможет. Тоже прицепил.
Не повторяется. Пробовал версию 2.7.1 и x86, и x64. Проверяет файлы без ошибок.
Судя по логу, падает где-то в коде boost-а. В новой версии я его уже не использую, может и ошибка пропадет.
Integrity Checker — работа с хеш-суммами выделенных файлов
Posted: Wed 10 Apr, 2019 10:05
by Ariman
IgorZ
Проверь, ради интереса, будет ли текущая версия падать. А то у меня никак не повторяется.
Версию для последнего билда можно достать в Appveyor-е (закладка Artifacts для нужной конфигурации).
Integrity Checker — работа с хеш-суммами выделенных файлов
Posted: Wed 10 Apr, 2019 10:45
by IgorZ
Ariman wrote: ↑Wed 10 Apr, 2019 10:05IgorZ
Проверь, ради интереса, будет ли текущая версия падать. А то у меня никак не повторяется.
Версию для последнего билда можно достать в Appveyor-е (закладка Artifacts для нужной конфигурации).
Да, версия 2.7.2 работает, не падая, на любых падучих в 2.7.1 вариантах, спасибо. В общем, что это было, неясно, но ушло.
Integrity Checker — работа с хеш-суммами выделенных файлов
Posted: Tue 10 Sep, 2019 14:58
by buniak_a_h
Обнаружена неприятная особенность плагина: при невозможности открытия файла (для подсчёта КС) он валится так, что обойти в скрипте на LUA невозможно (или я не нашёл как).
Например. В скрипте написано такое:
local fn=win.GetEnv('USERPROFILE') .. '\\NTUSER.DAT'
local www=Plugin.SyncCall("E186306E-3B0D-48C1-9668-ED7CF64C0E65", "gethash", 'MD5', fn)
far.Show(www)
╔══════════════════ Error ═══════════════════╗
║ Can not calculate hash for ║
║ \\?\C:\Users\PC\NTUSER.DAT ║
╟────────────────────────────────────────────╢
║ { Skip } [ Skip All ] [ Retry ] [ Cancel ] ║
╚════════════════════════════════════════════╝
При этом после Skip в переменную www помещается результат предыдущего вычисления КС.
Определить, что была ошибка, в скрипте не представляется возможным: pcall и xpcall возвращают true! Например:
(то, что указано во второй строке, это - результат вычисления MD5 предыдущего файла!)
Нельзя ли как-нибудь этот вопрос решить? Причём или по параметру Quiet, или по настройке не только возвращать nil, но и блокировать вывод сообщения об ошибке?
Integrity Checker — работа с хеш-суммами выделенных файлов
Posted: Sat 28 Sep, 2019 08:18
by Ariman
buniak_a_h wrote: ↑Tue 10 Sep, 2019 14:58
Нельзя ли как-нибудь этот вопрос решить? Причём или по параметру Quiet, или по настройке не только возвращать nil, но и блокировать вывод сообщения об ошибке?
Посмотрю.
UPD. Закомитил исправление на гитхаб. Теперь будет возвращать false вместо хеша от предыдущего файла. И добавил опциональный параметр Quiet.
Integrity Checker — работа с хеш-суммами выделенных файлов
Спасибо. Но может я чего-то не понимаю... А дальше-то какие мои действия? Качать исходники и компилить ? На плагринге - старое... Или где-то ещё есть бинарники?
Integrity Checker — работа с хеш-суммами выделенных файлов