Стартовая страница › Форумы › Разработка и интеграция › Защита Модулей, Драйверов, Плагинов
- В этой теме 42 ответа, 4 участника, последнее обновление 5 месяцев, 1 неделя назад сделано
Mikhail.
-
АвторСообщения
-
03.07.2024 в 14:56 #33299
manjey73УчастникИнтересуют куски кода для правильного определения папок хранения CompCode.txt
Доступа к этим папкам
Как правильно получать Local компьютера
Как правильно выводить в логи Модуля или др.
Как правильно выводить в Журнал сервера информацию.p.s. а то в бесплатных некоторых вещей нет, а пытаться разобраться в коде после обфускации как-то тяжко, чтобы понять принципы 🙂
на модуль перенес свой принцип защиты, но как-то кривовато это все работает.
03.07.2024 в 15:29 #33301
MikhailМодератор03.07.2024 в 15:56 #33302
manjey73УчастникLocale.isRussian по определению локали?
Вот доступа к AppDirs я и не могу получить правильно, не пойму как его объявить.
Сделал через другой подходserverContext.AppDirs.LogDir — но ведь как-то можно правильнее получить этот AppDirs?
В драйвере не помню таких ухищрений.
03.07.2024 в 16:56 #33303
manjey73УчастникВот пример, как сделать подобную запись ?
2024-07-03 16:53:10 [LAPTOP-J1GTEM7T][LAPTOP-J1GTEM7T$][ERR] Модуль ModAutoControl: Проверка регистрации ModAutoControl: Регистрационный ключ пуст.
У меня просто получается вывести одну строку, без даты, времени и так далее.
Пример брал из OpenModule какого-то.moduleLog.WriteBreak(); понятно, выводит
-----------------------А вот как формировать строки в том виде пока не разобрался.
04.07.2024 в 15:53 #33311
manjey73УчастникЕсть класс ModXXXLogic наследник ModuleLogic
Что надо сделать, чтобы в своем internal class ХХХХ получить доступ к
moduleLog.WriteAction
Log.WriteLineи так далее ??
04.07.2024 в 16:10 #33317
MikhailМодераторВ модуле ServerContext.AppDirs — всё верно.
> Вот пример, как сделать подобную запись?
> moduleLog.WriteAction
> Log.WriteLineПосмотрите ModDiffCalculatorLogic.cs
05.07.2024 в 13:50 #33343
manjey73УчастникВероятно мой пост про наследников останется без ответа, раз не я последний в теме 🙂
05.07.2024 в 16:35 #33361
manjey73УчастникНапример я использую такое чтение в массив байт
byte[] npere = ScadaUtils.HexToBytes(keyString, true);
В случае если длина ключа не кратна байтам и имеет пропуск одного полубайта, то есть запись вида FFF вместо FFFF то данная команда выдаст null в массив байт.
Это так задумано, или косяк в реализации функции ?
Потому что такая комбинация ScadaUtils.HexToBytes(keyString, true, true);Приводит к другому результату и модуль падает с исключением. Хотя еще не проверял, возможно он падает в исключение несколько дальше…
08.07.2024 в 12:31 #33365
MikhailМодераторВероятно мой пост про наследников останется без ответа, раз не я последний в теме
Какой?
Это так задумано, или косяк в реализации функции ?
public static byte[] HexToBytes(string s, bool skipWhiteSpace = false, bool throwOnFail = false)
Так задумано. Параметр throwOnFail по умолчанию равен false.08.07.2024 в 12:52 #33368
manjey73УчастникЕсть класс ModXXXLogic наследник ModuleLogic
Что надо сделать, чтобы в своем internal class Class1 получить доступ к
moduleLog.WriteAction
Log.WriteLineПри этом мне еще нужен Class2 который будет наследником от Class1 — и вот тут выползает ошибка, типа Class2 не может определить откуда поступают данные, от ModuleLogic или от Class1, хотя и близко вроде не имеет отношения к ModuleLogic
Я хочу в лог печатать из собственного класса, то есть использовать modulLog и так далее из своего кода а не лезть в часть ModXXXLogic
08.07.2024 в 13:03 #33371
JurasskParkУчастникВы про это?
private readonly ILog moduleLog; // the log moduleLog = new LogFile(LogFormat.Simple) { FileName = Path.Combine(serverContext.AppDirs.LogDir, ModuleUtils.ModuleCode + ".log"), CapacityMB = serverContext.AppConfig.GeneralOptions.MaxLogSize }; // start moduleLog.WriteBreak(); moduleLog.WriteAction(ServerPhrases.StartModule, Code, Version); // stop moduleLog.WriteAction(ServerPhrases.StopModule, Code); moduleLog.WriteBreak();08.07.2024 в 13:35 #33374
manjey73Участникда, я про эти методы вывода логов в журналы Сервера и модуля, но чтобы я их мог использовать в стороннем классе, а не пинать из своего класса строки в ModXXXLogic и пытаться их потом через обходные пути вывести.
То есть как можно использовать методы записи в журнал не из самого ModXXXLogic.У меня не получается. Или я не понимаю, как это сделать и возможно ли?
08.07.2024 в 13:56 #33375
JurasskParkУчастникУ вы подключили библиотеку ScadaCommon.Log.dll
Прописали using Scada.Log;
Вызываете из своей библиотеки и он валится с ошибкой?08.07.2024 в 14:36 #33376
manjey73Участника что, достаточно подключить библиотеку, чтобы получить доступ к выводу лога?
Библиотека то подключена к проекту ессно, но как получить к данному методу доступ из своего класса? и чтобы в логе было все напечатано?08.07.2024 в 14:39 #33377 -
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.