Стартовая страница › Форумы › Разработка и интеграция › Защита Модулей, Драйверов, Плагинов
- В этой теме 38 ответов, 4 участника, последнее обновление 2 месяца, 2 недели назад сделано
Mikhail.
-
АвторСообщения
-
03.07.2024 в 14:56 #33299
manjey73
УчастникИнтересуют куски кода для правильного определения папок хранения CompCode.txt
Доступа к этим папкам
Как правильно получать Local компьютера
Как правильно выводить в логи Модуля или др.
Как правильно выводить в Журнал сервера информацию.p.s. а то в бесплатных некоторых вещей нет, а пытаться разобраться в коде после обфускации как-то тяжко, чтобы понять принципы 🙂
на модуль перенес свой принцип защиты, но как-то кривовато это все работает.
03.07.2024 в 15:29 #33301Mikhail
Модератор03.07.2024 в 15:56 #33302manjey73
УчастникLocale.isRussian по определению локали?
Вот доступа к AppDirs я и не могу получить правильно, не пойму как его объявить.
Сделал через другой подходserverContext.AppDirs.LogDir — но ведь как-то можно правильнее получить этот AppDirs?
В драйвере не помню таких ухищрений.
03.07.2024 в 16:56 #33303manjey73
УчастникВот пример, как сделать подобную запись ?
2024-07-03 16:53:10 [LAPTOP-J1GTEM7T][LAPTOP-J1GTEM7T$][ERR] Модуль ModAutoControl: Проверка регистрации ModAutoControl: Регистрационный ключ пуст.
У меня просто получается вывести одну строку, без даты, времени и так далее.
Пример брал из OpenModule какого-то.moduleLog.WriteBreak(); понятно, выводит
-----------------------
А вот как формировать строки в том виде пока не разобрался.
04.07.2024 в 15:53 #33311manjey73
УчастникЕсть класс ModXXXLogic наследник ModuleLogic
Что надо сделать, чтобы в своем internal class ХХХХ получить доступ к
moduleLog.WriteAction
Log.WriteLineи так далее ??
04.07.2024 в 16:10 #33317Mikhail
МодераторВ модуле ServerContext.AppDirs — всё верно.
> Вот пример, как сделать подобную запись?
> moduleLog.WriteAction
> Log.WriteLineПосмотрите ModDiffCalculatorLogic.cs
05.07.2024 в 13:50 #33343manjey73
УчастникВероятно мой пост про наследников останется без ответа, раз не я последний в теме 🙂
05.07.2024 в 16:35 #33361manjey73
УчастникНапример я использую такое чтение в массив байт
byte[] npere = ScadaUtils.HexToBytes(keyString, true);
В случае если длина ключа не кратна байтам и имеет пропуск одного полубайта, то есть запись вида FFF вместо FFFF то данная команда выдаст null в массив байт.
Это так задумано, или косяк в реализации функции ?
Потому что такая комбинация ScadaUtils.HexToBytes(keyString, true, true);Приводит к другому результату и модуль падает с исключением. Хотя еще не проверял, возможно он падает в исключение несколько дальше…
08.07.2024 в 12:31 #33365Mikhail
МодераторВероятно мой пост про наследников останется без ответа, раз не я последний в теме
Какой?
Это так задумано, или косяк в реализации функции ?
public static byte[] HexToBytes(string s, bool skipWhiteSpace = false, bool throwOnFail = false)
Так задумано. Параметр throwOnFail по умолчанию равен false.08.07.2024 в 12:52 #33368manjey73
УчастникЕсть класс ModXXXLogic наследник ModuleLogic
Что надо сделать, чтобы в своем internal class Class1 получить доступ к
moduleLog.WriteAction
Log.WriteLineПри этом мне еще нужен Class2 который будет наследником от Class1 — и вот тут выползает ошибка, типа Class2 не может определить откуда поступают данные, от ModuleLogic или от Class1, хотя и близко вроде не имеет отношения к ModuleLogic
Я хочу в лог печатать из собственного класса, то есть использовать modulLog и так далее из своего кода а не лезть в часть ModXXXLogic
08.07.2024 в 13:03 #33371JurasskPark
УчастникВы про это?
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 #33374manjey73
Участникда, я про эти методы вывода логов в журналы Сервера и модуля, но чтобы я их мог использовать в стороннем классе, а не пинать из своего класса строки в ModXXXLogic и пытаться их потом через обходные пути вывести.
То есть как можно использовать методы записи в журнал не из самого ModXXXLogic.У меня не получается. Или я не понимаю, как это сделать и возможно ли?
08.07.2024 в 13:56 #33375JurasskPark
УчастникУ вы подключили библиотеку ScadaCommon.Log.dll
Прописали using Scada.Log;
Вызываете из своей библиотеки и он валится с ошибкой?08.07.2024 в 14:36 #33376manjey73
Участника что, достаточно подключить библиотеку, чтобы получить доступ к выводу лога?
Библиотека то подключена к проекту ессно, но как получить к данному методу доступ из своего класса? и чтобы в логе было все напечатано?08.07.2024 в 14:39 #33377 -
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.