From 04c8b0f020a894cbd52b8c2576183de55fe46314 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Wed, 3 Jul 2024 23:30:16 +0200 Subject: [PATCH 01/16] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20=D0=A3=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=D0=90=D0=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib.config | 3 +- .../ibsrvrunner.os" | 295 ++++++++++++++++++ tests/ibsrvrunner_tests.os | 40 +++ 3 files changed, 337 insertions(+), 1 deletion(-) create mode 100644 "src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" create mode 100644 tests/ibsrvrunner_tests.os diff --git a/lib.config b/lib.config index 3a5ed1c..140688f 100644 --- a/lib.config +++ b/lib.config @@ -1,4 +1,5 @@  + - \ No newline at end of file + diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" new file mode 100644 index 0000000..360c174 --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" @@ -0,0 +1,295 @@ + +// BSLLS:LatinAndCyrillicSymbolInWord-off + +#Использовать v8find +#Использовать 1commands + +#Область ОписаниеПеременных + +Перем Лог; // Экземпляр логгера +Перем ПутьКIbsrv; // Путь к утилите ibsrv +Перем ПараметрыЗапускаАС; + +Перем Процесс; // Процесс запущенного автономного сервера + +Перем Версия; +Перем КаталогДанных; + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +// Текущая версия утилиты ibsrv +// +// Возвращаемое значение: +// Строка - версия утилиты +// +Функция Версия() Экспорт + + Если Версия = "8.3" Тогда + ibsrv_Версия(Версия, Неопределено); + КонецЕсли; + + Возврат Версия; + +КонецФункции + +// Устанавливает версию платформы которая будет использована для запуска утилиты ibsrv +// +// Параметры: +// НомерВерсии - Строка - номер версии в формате 8.3.13.1341 (допустимо указание 8.3, 8.3.13) +// Разрядность - Строка, Неопределено - разрядность требуемой версии (перечисление из РазрядностьПлатформы) +// +Процедура УстановитьВерсиюПлатформы(Знач НомерВерсии, Знач Разрядность = Неопределено) Экспорт + + Ожидаем.Что(НомерВерсии).ИмеетТип("Строка"); + Ожидаем.Что(Разрядность).ИмеетТип("Строка"); + + ibsrv_Версия(НомерВерсии, Разрядность); + +КонецПроцедуры + +// Устанавливает путь к каталогу данных автономного сервера. +// +// Параметры: +// КаталогДанныхСервера - Строка - Путь к каталогу данных сервера. +// +Процедура УстановитьКаталогДанных(Знач КаталогДанныхСервера) Экспорт + + Ожидаем.Что(КаталогДанныхСервера).ИмеетТип("Строка"); + Ожидаем.Что(ФС.КаталогСуществует(КаталогДанныхСервера)).ЭтоИстина(); + + КаталогДанных = КаталогДанныхСервера; + ПараметрыЗапускаАС.Вставить("data", ОбернутьВКавычки(КаталогДанных)); + +КонецПроцедуры + +// Устанавливает параметры доступа к файловой базе данных. +// +// Параметры: +// КаталогИБ - Строка - Путь к каталогу файловой базы данных «1С:Предприятия». +// +Процедура УстановитьПараметрыФайловойИБ(Знач КаталогИБ) Экспорт + + Ожидаем.Что(КаталогИБ).ИмеетТип("Строка"); + Ожидаем.Что(ФС.КаталогСуществует(КаталогИБ)).ЭтоИстина(); + + ПараметрыЗапускаАС.Вставить("db-path", ОбернутьВКавычки(КаталогИБ)); + +КонецПроцедуры + +// Устанавливает путь к конфигурационному файлу автономного сервера. +// +// Параметры: +// ПутьККонфигурационномуФайлу - Строка - Путь к конфигурационному файлу. +// +Процедура УстановитьКонфигурационныйФайл(Знач ПутьККонфигурационномуФайлу) Экспорт + + Ожидаем.Что(ПутьККонфигурационномуФайлу).ИмеетТип("Строка"); + Ожидаем.Что(ФС.ФайлСуществует(ПутьККонфигурационномуФайлу)).ЭтоИстина(); + + ПараметрыЗапускаАС.Вставить("config", ОбернутьВКавычки(ПутьККонфигурационномуФайлу)); + +КонецПроцедуры + +// Выполняет запуск автономного сервера. При ошибке запуска вызывается исключение, которео можно проверить +// методом см. ЭтоИсключенияЗапускаАС +// +Процедура Запустить() Экспорт + + Если Запущен() Тогда + ВызватьИсключение "Процесс ibsrv уже запущен!"; + КонецЕсли; + + Ожидаем.Что(КаталогДанных).Заполнено(); + + ПараметрыКоманды = ЗаполнитьПараметрыКоманды(); + + Команда = КомандаIbsrv(ПараметрыКоманды); + Процесс = Команда.ЗапуститьПроцесс(); + + ОжидатьФайлБлокировкиАС(); + +КонецПроцедуры + +// Проверяет что исключение было вызвано программно при запуске автономного сервера. +// +// Параметры: +// ИнформацияОбОшибке - ИнформацияОбОшибке - Описание ошибки проверяемого исключения +// +// Возвращаемое значение: +// Булево - Если это исключение запуска автономного сервера +// +Функция ЭтоИсключенияЗапускаАС(ИнформацияОбОшибке) Экспорт + + Возврат СтрНайти(КраткоеПредставлениеОшибки(ИнформацияОбОшибке), ТекстИсключенияЗапускаАС()) > 0; + +КонецФункции + +// Проверяет запущен ли процесс автономного сервера +// +// Возвращаемое значение: +// Булево - Истина - если процесс запущен, Ложь - в остальных случаях +// +Функция Запущен() Экспорт + + Если Процесс = Неопределено Тогда + Возврат Ложь; + Иначе + Возврат Не Процесс.Завершен; + КонецЕсли; + +КонецФункции + +// Останавливает запущенный автономный сервер. +// +Процедура Остановить() Экспорт + + Если Запущен() Тогда + Процесс.Завершить(); + Лог.Информация("Процесс ibsrv завершен."); + КонецЕсли; + + Процесс = Неопределено; + +КонецПроцедуры + +#Область ОбработчикиСобытий + +Процедура ПриСозданииОбъекта() + + Версия = "8.3"; + Лог = Логирование.ПолучитьЛог(ИмяЛога()); + ПараметрыЗапускаАС = Новый Соответствие; + КаталогДанных = ""; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ИмяЛога() + Возврат "oscript.lib.ibcmdrunner"; +КонецФункции + +Функция ОбернутьВКавычки(Строка) + Возврат СтрШаблон("""%1""", Строка); +КонецФункции + +Процедура ibsrv_Версия(НомерВерсии, Разрядность) + + ПутьКIbsrv = Платформа1С.ПутьКIBSRV(НомерВерсии, Разрядность); + Ожидаем.Что(ПутьКIbsrv).Заполнено("Не найдена установленная версия платформы: " + НомерВерсии); + + ПараметрыКоманды = Новый Массив; + ПараметрыКоманды.Добавить("--version"); + + КомандаIbsrv = КомандаIbsrv(ПараметрыКоманды); + ВыполнитьКоманду(КомандаIbsrv); + ВыводКоманды = КомандаIbsrv.ПолучитьВывод(); + + Версия = СокрЛП(ВыводКоманды); + +КонецПроцедуры + +Функция КомандаIbsrv(ПараметрыКоманды) + + Команда = Новый Команда(); + Команда.УстановитьКоманду(ПутьКIbsrv); + Команда.ДобавитьПараметры(ПараметрыКоманды); + Команда.УстановитьИсполнениеЧерезКомандыСистемы(Ложь); + //Команда.УстановитьКодировкуВывода(КодировкаТекста.UTF8); + + Возврат Команда; + +КонецФункции + +Процедура ВыполнитьКоманду(КомандаIbsrv, УстановленныйКодВозврата = 0) + + Если ТипЗнч(УстановленныйКодВозврата) = Тип("Массив") Тогда + УспешныеКодыВозврата = УстановленныйКодВозврата; + Иначе + УспешныеКодыВозврата = Новый Массив; + УспешныеКодыВозврата.Добавить(УстановленныйКодВозврата); + КонецЕсли; + + КодВозврата = КомандаIbsrv.Исполнить(); + + Если УспешныеКодыВозврата.Найти(КодВозврата) = Неопределено Тогда + ВызватьИсключение КомандаIbsrv.ПолучитьВывод(); + КонецЕсли; + +КонецПроцедуры + +Процедура ОжидатьФайлБлокировкиАС() + + ИнтервалПроверкиМс = 500; // 0.5 сек + ПредельныйПериодОжиданияМс = 10000; // 10 сек + ТекущийПериодОжидания = 0; + ФайлСуществует = Ложь; + ИмяФайла = ОбъединитьПути(КаталогДанных, "lock.pid"); + + Пока Запущен() И ТекущийПериодОжидания < ПредельныйПериодОжиданияМс Цикл + Приостановить(ИнтервалПроверкиМс); + + Если ФС.ФайлСуществует(ИмяФайла) Тогда + ФайлСуществует = Истина; + Прервать; + КонецЕсли; + + ТекущийПериодОжидания = ТекущийПериодОжидания + ИнтервалПроверкиМс; + + КонецЦикла; + + Если ФайлСуществует Тогда + Возврат; + КонецЕсли; + + Если Запущен() Тогда + Остановить(); + КонецЕсли; + + ВызватьИсключение ТекстИсключенияЗапускаАС(); + +КонецПроцедуры + +Функция ТекстИсключенияЗапускаАС() + + Возврат "Процесс ibsrv не запустился!"; + +КонецФункции + +Функция ЗаполнитьПараметрыКоманды() + + ПараметрыКоманды = Новый Массив; + + Для Каждого КлючИЗначение Из ПараметрыЗапускаАС Цикл + Если КлючИЗначение.Значение = Неопределено Тогда // это параметр-флаг + ПараметрыКоманды.Добавить(КлючИЗначение.Ключ); + Продолжить; + + ИначеЕсли ТипЗнч(КлючИЗначение.Значение) = Тип("Строка") И ПустаяСтрока(КлючИЗначение.Значение) Тогда + Продолжить; + + ИначеЕсли ТипЗнч(КлючИЗначение.Значение) = Тип("Булево") Тогда + Значение = ?(КлючИЗначение.Значение, "allow", "deny"); + + ИначеЕсли ТипЗнч(КлючИЗначение.Значение) = Тип("Число") Тогда + Значение = XMLСтрока(КлючИЗначение.Значение); + + Иначе + Значение = КлючИЗначение.Значение; + + КонецЕсли; + + ПараметрЗапуска = СтрШаблон("--%1=%2", КлючИЗначение.Ключ, Значение); + ПараметрыКоманды.Добавить(ПараметрЗапуска); + + КонецЦикла; + + Возврат ПараметрыКоманды; + +КонецФункции + +#КонецОбласти diff --git a/tests/ibsrvrunner_tests.os b/tests/ibsrvrunner_tests.os new file mode 100644 index 0000000..659019c --- /dev/null +++ b/tests/ibsrvrunner_tests.os @@ -0,0 +1,40 @@ + +#Использовать ".." +#Использовать asserts + +#Область СлужебныйПрограммныйИнтерфейс + +&Тест +Процедура ТестДолжен_ПолучитьВерсию() Экспорт + + // Дано + УправлениеАС = Новый УправлениеАС; + + // Когда + НомерВерсии = УправлениеАС.Версия(); + + // Тогда + РегулярноеВыражение = Новый РегулярноеВыражение("^(\d+)\.(\d+)\.(\d+)\.(\d+)\z"); + Утверждения.ПроверитьИстину(РегулярноеВыражение.Совпадает(НомерВерсии), + "Номер версии должен соответствовать шаблону:" + НомерВерсии); + +КонецПроцедуры + +&Тест +Процедура ТестДолжен_УстановитьНекорректнуюВерсию() Экспорт + + // Дано + УправлениеАС = Новый УправлениеАС; + + // Когда + ПараметрыМетода = Новый Массив; + ПараметрыМетода.Добавить("8.3.23.1111"); + + // Тогда + Ожидаем.Что(УправлениеАС) + .Метод("УстановитьВерсию", ПараметрыМетода) + .ВыбрасываетИсключение("Не найдена установленная версия платформы"); + +КонецПроцедуры + +#КонецОбласти From 611ea32fcc5b2ee6a401e5622c2a4d5302927b0d Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Fri, 5 Jul 2024 11:23:18 +0200 Subject: [PATCH 02/16] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D1=83=20?= =?UTF-8?q?=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D0=B8=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=80=D1=82=D0=BE=D0=B2=20=D0=B4=D0=BB=D1=8F=20=D1=81?= =?UTF-8?q?=D0=BE=D0=B5=D0=B4=D0=B8=D0=BD=D0=B5=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ibsrvrunner.os" | 38 ++++++++++++++++++- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" index 360c174..f003e1a 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" @@ -92,6 +92,36 @@ КонецПроцедуры +// Установить порт установки прямого соединения с сервером. +// +// Параметры: +// НомерПорта - Число - порт установки прямого соединения с сервером +// +Процедура УстановитьПортПрямогоДоступа(Знач НомерПорта) Экспорт + + Ожидаем.Что(НомерПорта).ИмеетТип("Число"); + Ожидаем.Что(НомерПорта).Больше(1000); // BSLLS:MagicNumber-off + Ожидаем.Что(НомерПорта).Меньше(65535); // BSLLS:MagicNumber-off + + ПараметрыЗапускаАС.Вставить("direct-regport", XMLСтрока(НомерПорта)); + +КонецПроцедуры + +// Установить порт установки http соединения с сервером. +// +// Параметры: +// НомерПорта - Число - порт установки http соединения с сервером +// +Процедура УстановитьПортHttpДоступа(Знач НомерПорта) Экспорт + + Ожидаем.Что(НомерПорта).ИмеетТип("Число"); + Ожидаем.Что(НомерПорта).Больше(1000); // BSLLS:MagicNumber-off + Ожидаем.Что(НомерПорта).Меньше(65535); // BSLLS:MagicNumber-off + + ПараметрыЗапускаАС.Вставить("http-port", XMLСтрока(НомерПорта)); + +КонецПроцедуры + // Выполняет запуск автономного сервера. При ошибке запуска вызывается исключение, которео можно проверить // методом см. ЭтоИсключенияЗапускаАС // @@ -110,6 +140,8 @@ ОжидатьФайлБлокировкиАС(); + Лог.Отладка("Процесс %1 ibsrv запущен с параметрами %2", Процесс.Идентификатор, СтрСоединить(ПараметрыКоманды)); + КонецПроцедуры // Проверяет что исключение было вызвано программно при запуске автономного сервера. @@ -147,13 +179,15 @@ Если Запущен() Тогда Процесс.Завершить(); - Лог.Информация("Процесс ibsrv завершен."); + Лог.Отладка("Процесс %1 ibsrv завершен.", Процесс.Идентификатор); КонецЕсли; Процесс = Неопределено; КонецПроцедуры +#КонецОбласти + #Область ОбработчикиСобытий Процедура ПриСозданииОбъекта() @@ -180,7 +214,7 @@ Процедура ibsrv_Версия(НомерВерсии, Разрядность) ПутьКIbsrv = Платформа1С.ПутьКIBSRV(НомерВерсии, Разрядность); - Ожидаем.Что(ПутьКIbsrv).Заполнено("Не найдена установленная версия платформы: " + НомерВерсии); + Ожидаем.Что(ПутьКIbsrv, "Не найдена установленная версия платформы: " + НомерВерсии).Заполнено(); ПараметрыКоманды = Новый Массив; ПараметрыКоманды.Добавить("--version"); From 6780edc755d295094d158f75b8a975543bd1015f Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Fri, 5 Jul 2024 12:33:09 +0200 Subject: [PATCH 03/16] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=BD=D0=B3=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4?= =?UTF-8?q?=D0=B0=20=D1=84=D0=BE=D1=80=D0=BC=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BA=D0=BE=D1=84=D0=BD=D0=B8=D0=B3=D1=83?= =?UTF-8?q?=D1=80=D0=B0=D1=86=D0=B8=D0=BE=D0=BD=D0=BD=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configfile_as.os" | 192 +++++++++++------- 1 file changed, 123 insertions(+), 69 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" index c2594da..a0fc148 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" @@ -346,29 +346,138 @@ Конфиг = Новый ЗаписьТекста(ПутьКФайлу, "UTF-8"); + ЗаписатьПараметрыСервера(Конфиг); + ЗаписатьПараметрыБазыДанных(Конфиг); + ЗаписатьПараметрыИнформационнойБазы(Конфиг); + ЗаписатьПараметрыВебДоступа(Конфиг); + + Конфиг.Закрыть(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПриСозданииОбъекта() + ПараметрыСервера = Новый Соответствие; + ПараметрыСервернойБазыДанных = Новый Соответствие; + ПараметрыФайловойБазыДанных = Новый Соответствие; + ПараметрыИБ = Новый Соответствие; + ПараметрыВеб_Аутентификация = Новый Соответствие; + ПараметрыВеб_Разделители = Новый Соответствие; + ПараметрыВеб_ПубликацияOData = Новый Соответствие; + ПараметрыВеб_РежимПовторногоИспользованияСеансов = Новый Соответствие; + ПараметрыВебСервисовОбщие = Новый Соответствие; + ПараметрыВебСервисов = Новый Соответствие; + ПараметрыХТТП = Новый Соответствие; + ПараметрыХТТПСервисовОбщие = Новый Соответствие; + ПараметрыХТТПСервисов = Новый Соответствие; + ПараметрыПубликацииДистрибутивов = Новый Соответствие; + мсвПараметрыВеб_Разделители = Новый Соответствие; + мсвПараметрыВебСервисов = Новый Соответствие; + мсвПараметрыХТТПСервисов = Новый Соответствие; +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ЗаполнитьСекцию(КонфигФайл, Параметры, Уровень = 1) + Если Параметры.Количество() > 0 Тогда + Для Каждого Параметр Из Параметры Цикл + Если ТипЗнч(Параметр.Значение) = Тип("Число") ИЛИ + ТипЗнч(Параметр.Значение) = Тип("Строка") Тогда + Значение = Параметр.Значение; + ИначеЕсли ТипЗнч(Параметр.Значение) = Тип("Булево") Тогда + Значение = БулевоВСтроку(Параметр.Значение); + Иначе + ВызватьИсключение "Значение параметра имеет неизвестный тип"; + КонецЕсли; + Если Уровень = 1 Тогда + Строка = СтрШаблон(" %1: %2", Параметр.Ключ, Значение); + ИначеЕсли Уровень = 2 Тогда + Строка = СтрШаблон(" %1: %2", Параметр.Ключ, Значение); + ИначеЕсли Уровень = 3 Тогда + Строка = СтрШаблон(" %1: %2", Параметр.Ключ, Значение); + Иначе + ВызватьИсключение "Неверно задано значение параметра Уровень"; + КонецЕсли; + КонфигФайл.ЗаписатьСтроку(Строка); + КонецЦикла; + КонецЕсли; +КонецПроцедуры + +Функция БулевоВСтроку(Значение) + Если Значение = Истина Тогда + Рез = "true"; + ИначеЕсли Значение = Ложь Тогда + Рез = "false"; + Иначе + ВызватьИсключение "Значение должно иметь тип Булево."; + КонецЕсли; + Возврат Рез; +КонецФункции + +Процедура ЗаписатьПараметрыСервера(Конфиг) + + Если ПараметрыСервера.Количество() = 0 Тогда + Возврат; + КонецЕсли; + Конфиг.ЗаписатьСтроку("server:"); ЗаполнитьСекцию(Конфиг, ПараметрыСервера); +КонецПроцедуры + +Процедура ЗаписатьПараметрыБазыДанных(Конфиг) + + Если ПараметрыСервернойБазыДанных.Количество() = 0 И ПараметрыФайловойБазыДанных.Количество() = 0 Тогда + Возврат; + КонецЕсли; + Конфиг.ЗаписатьСтроку("database:"); - Если ПараметрыСервернойБазыДанных.Количество() > 0 Тогда - Для Каждого Параметр Из ПараметрыСервернойБазыДанных Цикл - Строка = СтрШаблон(" %1: %2", Параметр.Ключ, Параметр.Значение); - Конфиг.ЗаписатьСтроку(Строка); - КонецЦикла; - ИначеЕсли ПараметрыФайловойБазыДанных.Количество() > 0 Тогда - Для Каждого Параметр Из ПараметрыФайловойБазыДанных Цикл - Строка = СтрШаблон(" %1: %2", Параметр.Ключ, Параметр.Значение); - Конфиг.ЗаписатьСтроку(Строка); - КонецЦикла; - Иначе - ВызватьИсключение "Не заданы обязательные параметры базы данных"; - КонецЕсли; + + Для Каждого Параметр Из ПараметрыСервернойБазыДанных Цикл + Строка = СтрШаблон(" %1: %2", Параметр.Ключ, Параметр.Значение); + Конфиг.ЗаписатьСтроку(Строка); + КонецЦикла; + + Для Каждого Параметр Из ПараметрыФайловойБазыДанных Цикл + Строка = СтрШаблон(" %1: %2", Параметр.Ключ, Параметр.Значение); + Конфиг.ЗаписатьСтроку(Строка); + КонецЦикла; + +КонецПроцедуры + +Процедура ЗаписатьПараметрыИнформационнойБазы(Конфиг) + + Если ПараметрыИБ.Количество() = 0 Тогда + Возврат; + КонецЕсли; Конфиг.ЗаписатьСтроку("infobase:"); ЗаполнитьСекцию(Конфиг, ПараметрыИБ); +КонецПроцедуры + +Процедура ЗаписатьПараметрыВебДоступа(Конфиг) + + Если ПараметрыХТТП.Количество() = 0 + И ПараметрыВеб_Аутентификация.Количество() = 0 + И мсвПараметрыВеб_Разделители.Количество() = 0 + И ПараметрыВеб_ПубликацияOData.Количество() = 0 + И ПараметрыВебСервисовОбщие.Количество() = 0 + И ПараметрыХТТПСервисовОбщие.Количество() = 0 + И ПараметрыПубликацииДистрибутивов.Количество() = 0 + Тогда Возврат; + КонецЕсли; + Конфиг.ЗаписатьСтроку("http:"); - ЗаполнитьСекцию(Конфиг, ПараметрыХТТП); + Если ПараметрыХТТП.Количество() > 0 Тогда + ЗаполнитьСекцию(Конфиг, ПараметрыХТТП); + КонецЕсли; + Если ПараметрыВеб_Аутентификация.Количество() > 0 Тогда Конфиг.ЗаписатьСтроку(" auth:"); Конфиг.ЗаписатьСтроку(" rely:"); @@ -442,60 +551,5 @@ КонецЕсли; КонецПроцедуры -#КонецОбласти -#Область СлужебныеПроцедурыИФункции - -Процедура ЗаполнитьСекцию(КонфигФайл, Параметры, Уровень = 1) - Если Параметры.Количество() > 0 Тогда - Для Каждого Параметр Из ПараметрыСервера Цикл - Если ТипЗнч(Параметр.Значение) = Тип("Число") ИЛИ - ТипЗнч(Параметр.Значение) = Тип("Строка") Тогда - Значение = Параметр.Значение; - ИначеЕсли ТипЗнч(Параметр.Значение) = Тип("Булево") Тогда - Значение = БулевоВСтроку(Параметр.Значение); - Иначе - ВызватьИсключение "Значение параметра имеет неизвестный тип"; - КонецЕсли; - Если Уровень = 1 Тогда - Строка = СтрШаблон(" %1: %2", Параметр.Ключ, Значение); - ИначеЕсли Уровень = 2 Тогда - Строка = СтрШаблон(" %1: %2", Параметр.Ключ, Значение); - ИначеЕсли Уровень = 3 Тогда - Строка = СтрШаблон(" %1: %2", Параметр.Ключ, Значение); - Иначе - ВызватьИсключение "Неверно задано значение параметра Уровень"; - КонецЕсли; - КонфигФайл.ЗаписатьСтроку(Строка); - КонецЦикла; - КонецЕсли; -КонецПроцедуры - -Функция БулевоВСтроку(Значение) - Если Значение = Истина Тогда - Рез = "true"; - ИначеЕсли Значение = Ложь Тогда - Рез = "false"; - Иначе - ВызватьИсключение "Значение должно иметь тип Булево."; - КонецЕсли; - Возврат Рез; -КонецФункции - -Процедура ПриСозданииОбъекта() - ПараметрыСервера = Новый Соответствие; - ПараметрыСервернойБазыДанных = Новый Соответствие; - ПараметрыФайловойБазыДанных = Новый Соответствие; - ПараметрыИБ = Новый Соответствие; - ПараметрыВеб_Аутентификация = Новый Соответствие; - ПараметрыВеб_Разделители = Новый Соответствие; - ПараметрыВеб_ПубликацияOData = Новый Соответствие; - ПараметрыВеб_РежимПовторногоИспользованияСеансов = Новый Соответствие; - ПараметрыВебСервисовОбщие = Новый Соответствие; - ПараметрыВебСервисов = Новый Соответствие; - ПараметрыХТТП = Новый Соответствие; - ПараметрыХТТПСервисовОбщие = Новый Соответствие; - ПараметрыХТТПСервисов = Новый Соответствие; - ПараметрыПубликацииДистрибутивов = Новый Соответствие; -КонецПроцедуры #КонецОбласти From 68c5078e143b3bbffe36eb1ee97600bb563f9265 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Fri, 5 Jul 2024 13:19:39 +0200 Subject: [PATCH 04/16] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D1=84=D0=BE=D1=80=D0=BC=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D1=80=D0=BE=D0=B2=20=D1=81=D0=B5=D0=BA=D1=86=D0=B8?= =?UTF-8?q?=D0=B8=20gates?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configfile_as.os" | 118 ++++++++++++++---- 1 file changed, 96 insertions(+), 22 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" index a0fc148..38ae75a 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" @@ -1,3 +1,6 @@ +// BSLLS:NumberOfOptionalParams-off +// BSLLS:MagicNumber-off + Перем ПараметрыСервера; // Соответствие - параметры секции server Перем ПараметрыСервернойБазыДанных; // Соответствие - параметры секции database Перем ПараметрыФайловойБазыДанных; // Соответствие - параметры секции database @@ -18,6 +21,8 @@ Перем мсвПараметрыВебСервисов; // массив параметров веб сервисов Перем мсвПараметрыХТТПСервисов; // массив параметров хттп-сервисов +Перем ПараметрыСпособовДоступаКСерверу; // Соответствие - параметры секции gates + #Область ПрограммныйИнтерфейс // ПараметрыСервера @@ -338,6 +343,49 @@ КонецПроцедуры +// Параметры доступа к информационной базе по протоколу TCP/IP (с помощью прямого подключения). +// +// Параметры: +// ОсновнойПорт - Число - Основной сетевой порт установки прямого соединения с сервером +// МинимальныйПортПодключения - Число - Нижняя граница диапазона портов для установки соединения +// МаксимальныйПортПодключения - Число - Верхняя граница диапазона портов для установки соединения +// УровеньБезопасности - Число - Уровень безопасности прямого соединения с сервером +// +Процедура ПараметрыШлюзаПрямогоДоступа(ОсновнойПорт = 1541, + МинимальныйПортПодключения = 1560, + МаксимальныйПортПодключения = 1591, + УровеньБезопасности = 0) Экспорт + + ПараметрыШлюза = Новый Соответствие; + ПараметрыШлюза.Вставить("regport", XMLСтрока(ОсновнойПорт)); + ПараметрыШлюза.Вставить("range", + СтрШаблон("%1:%2", XMLСтрока(МинимальныйПортПодключения), XMLСтрока(МаксимальныйПортПодключения))); + ПараметрыШлюза.Вставить("seclevel", XMLСтрока(УровеньБезопасности)); + + ПараметрыСпособовДоступаКСерверу.Вставить("direct", ПараметрыШлюза); + +КонецПроцедуры + +// Параметры доступа к информационной базе по протоколу SSH. +// +// Параметры: +// СетевойИнтерфейс - Строка - Сетевой интерфейс, который используется шлюзом. +// ПутьКЗакрытомуКлючу - Строка - Путь к закрытому ключу хоста. +// ПортПодключения - Число - Порт, обслуживаемый данным шлюзом. +// +Процедура ПараметрыШлюзаSSH(СетевойИнтерфейс = "localhost", + ПутьКЗакрытомуКлючу = "auto", + ПортПодключения = 8282) Экспорт + + ПараметрыШлюза = Новый Соответствие; + ПараметрыШлюза.Вставить("address", СетевойИнтерфейс); + ПараметрыШлюза.Вставить("host-key", ПутьКЗакрытомуКлючу); + ПараметрыШлюза.Вставить("port", XMLСтрока(ПортПодключения)); + + ПараметрыСпособовДоступаКСерверу.Вставить("ssh", ПараметрыШлюза); + +КонецПроцедуры + // СоздатьКонфигурационныйФайл // Создание конфигурационного файла по ранее заполненным параметрам // Параметры: @@ -350,6 +398,7 @@ ЗаписатьПараметрыБазыДанных(Конфиг); ЗаписатьПараметрыИнформационнойБазы(Конфиг); ЗаписатьПараметрыВебДоступа(Конфиг); + ЗаписатьПараметрыСпособовДоступаКСерверу(Конфиг); Конфиг.Закрыть(); @@ -360,6 +409,7 @@ #Область ОбработчикиСобытий Процедура ПриСозданииОбъекта() + ПараметрыСервера = Новый Соответствие; ПараметрыСервернойБазыДанных = Новый Соответствие; ПараметрыФайловойБазыДанных = Новый Соответствие; @@ -377,6 +427,8 @@ мсвПараметрыВеб_Разделители = Новый Соответствие; мсвПараметрыВебСервисов = Новый Соответствие; мсвПараметрыХТТПСервисов = Новый Соответствие; + ПараметрыСпособовДоступаКСерверу = Новый Соответствие; + КонецПроцедуры #КонецОбласти @@ -384,28 +436,39 @@ #Область СлужебныеПроцедурыИФункции Процедура ЗаполнитьСекцию(КонфигФайл, Параметры, Уровень = 1) - Если Параметры.Количество() > 0 Тогда - Для Каждого Параметр Из Параметры Цикл - Если ТипЗнч(Параметр.Значение) = Тип("Число") ИЛИ - ТипЗнч(Параметр.Значение) = Тип("Строка") Тогда - Значение = Параметр.Значение; - ИначеЕсли ТипЗнч(Параметр.Значение) = Тип("Булево") Тогда - Значение = БулевоВСтроку(Параметр.Значение); - Иначе - ВызватьИсключение "Значение параметра имеет неизвестный тип"; - КонецЕсли; - Если Уровень = 1 Тогда - Строка = СтрШаблон(" %1: %2", Параметр.Ключ, Значение); - ИначеЕсли Уровень = 2 Тогда - Строка = СтрШаблон(" %1: %2", Параметр.Ключ, Значение); - ИначеЕсли Уровень = 3 Тогда - Строка = СтрШаблон(" %1: %2", Параметр.Ключ, Значение); - Иначе - ВызватьИсключение "Неверно задано значение параметра Уровень"; - КонецЕсли; - КонфигФайл.ЗаписатьСтроку(Строка); - КонецЦикла; - КонецЕсли; + + Если Параметры.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Отступ = ""; + Для Счетчик = 1 По Уровень Цикл // BSLLS:UnusedLocalVariable-off + Отступ = Отступ + " "; + КонецЦикла; + + Для Каждого Параметр Из Параметры Цикл + ТипЗнчПараметра = ТипЗнч(Параметр.Значение); + + Если ТипЗнч(Параметр.Значение) = Тип("Число") ИЛИ + ТипЗнч(Параметр.Значение) = Тип("Строка") Тогда + Значение = Параметр.Значение; + ИначеЕсли ТипЗнч(Параметр.Значение) = Тип("Булево") Тогда + Значение = БулевоВСтроку(Параметр.Значение); + + ИначеЕсли ТипЗнчПараметра = Тип("Соответствие") Тогда + КонфигФайл.ЗаписатьСтроку(СтрШаблон("%1%2:", Отступ, Параметр.Ключ)); + ЗаполнитьСекцию(КонфигФайл, Параметр.Значение, Уровень + 1); + Продолжить; + + Иначе + ВызватьИсключение "Значение параметра имеет неизвестный тип"; + КонецЕсли; + + Строка = СтрШаблон("%1%2: %3", Отступ, Параметр.Ключ, Значение); + КонфигФайл.ЗаписатьСтроку(Строка); + + КонецЦикла; + КонецПроцедуры Функция БулевоВСтроку(Значение) @@ -552,4 +615,15 @@ КонецПроцедуры +Процедура ЗаписатьПараметрыСпособовДоступаКСерверу(Конфиг) + + Если ПараметрыСпособовДоступаКСерверу.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Конфиг.ЗаписатьСтроку("gates:"); + ЗаполнитьСекцию(Конфиг, ПараметрыСпособовДоступаКСерверу); + +КонецПроцедуры + #КонецОбласти From a76a9b4b4df226608a15fd034db379134fc99bba Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Fri, 5 Jul 2024 15:17:19 +0200 Subject: [PATCH 05/16] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D1=84=D0=BE=D1=80=D0=BC=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D1=80=D0=BE=D0=B2=20=D1=81=D0=B5=D0=BA=D1=86=D0=B8?= =?UTF-8?q?=D0=B8=20features?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configfile_as.os" | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" index 38ae75a..39d6b06 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" @@ -22,6 +22,7 @@ Перем мсвПараметрыХТТПСервисов; // массив параметров хттп-сервисов Перем ПараметрыСпособовДоступаКСерверу; // Соответствие - параметры секции gates +Перем ПараметрыФункциональностиСервера; // Соответствие - параметры секции features #Область ПрограммныйИнтерфейс @@ -386,6 +387,28 @@ КонецПроцедуры +// Параметры функциональных характеристик автономного сервера. +// +// Параметры: +// ИспользоватьШлюзПрямогоДоступа - Булево - использовать доступ по протоколу TCP/IP (прямое подключение). +// ИспользоватьШлюзHTTP - Булево - использовать доступ к автономному серверу по протоколу HTTP. +// ИспользоватьШлюзSSH - Булево - использовать доступ к автономному серверу по протоколу SSH. +// ИспользоватьРасширеннуюФункциональностьКонифгуратора - Булево - использовать расширенную +// функциональность Конфигуратора. +// +Процедура ПараметрыФункциональностиСервера(ИспользоватьШлюзПрямогоДоступа = Истина, + ИспользоватьШлюзHTTP = Истина, + ИспользоватьШлюзSSH = Истина, + ИспользоватьРасширеннуюФункциональностьКонифгуратора = Ложь) Экспорт + + ПараметрыФункциональностиСервера.Вставить("direct-gate", ИспользоватьШлюзПрямогоДоступа); + ПараметрыФункциональностиСервера.Вставить("http-gate", ИспользоватьШлюзHTTP); + ПараметрыФункциональностиСервера.Вставить("ssh-gate", ИспользоватьШлюзSSH); + ПараметрыФункциональностиСервера.Вставить("extended-designer-features", + ИспользоватьРасширеннуюФункциональностьКонифгуратора); + +КонецПроцедуры + // СоздатьКонфигурационныйФайл // Создание конфигурационного файла по ранее заполненным параметрам // Параметры: @@ -399,6 +422,7 @@ ЗаписатьПараметрыИнформационнойБазы(Конфиг); ЗаписатьПараметрыВебДоступа(Конфиг); ЗаписатьПараметрыСпособовДоступаКСерверу(Конфиг); + ЗаписатьПараметрыФункциональностиСервера(Конфиг); Конфиг.Закрыть(); @@ -428,6 +452,7 @@ мсвПараметрыВебСервисов = Новый Соответствие; мсвПараметрыХТТПСервисов = Новый Соответствие; ПараметрыСпособовДоступаКСерверу = Новый Соответствие; + ПараметрыФункциональностиСервера = Новый Соответствие; КонецПроцедуры @@ -626,4 +651,15 @@ КонецПроцедуры +Процедура ЗаписатьПараметрыФункциональностиСервера(Конфиг) + + Если ПараметрыФункциональностиСервера.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Конфиг.ЗаписатьСтроку("features:"); + ЗаполнитьСекцию(Конфиг, ПараметрыФункциональностиСервера); + +КонецПроцедуры + #КонецОбласти From b346e6304352255f1a7d35aa7ea9224f522028ec Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Sat, 13 Jul 2024 12:02:32 +0200 Subject: [PATCH 06/16] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BB=D0=BE=D0=B3=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B8=20=D0=BE=D0=B6=D0=B8=D0=B4?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=D0=B0?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ibsrvrunner.os" | 102 ++++++++++++------ 1 file changed, 67 insertions(+), 35 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" index f003e1a..c3ea165 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" @@ -8,12 +8,12 @@ Перем Лог; // Экземпляр логгера Перем ПутьКIbsrv; // Путь к утилите ibsrv -Перем ПараметрыЗапускаАС; +Перем ПараметрыЗапускаАС; // Коллекция параметров командной строки Перем Процесс; // Процесс запущенного автономного сервера -Перем Версия; -Перем КаталогДанных; +Перем Версия; // Версия платформы используемая утилитой +Перем КаталогДанных; // Каталог данных автономного сервера #КонецОбласти @@ -134,11 +134,9 @@ Ожидаем.Что(КаталогДанных).Заполнено(); ПараметрыКоманды = ЗаполнитьПараметрыКоманды(); + ЗапуститьПроцессIbsrv(ПараметрыКоманды); - Команда = КомандаIbsrv(ПараметрыКоманды); - Процесс = Команда.ЗапуститьПроцесс(); - - ОжидатьФайлБлокировкиАС(); + ОжидатьЗапускаIbsrv(); Лог.Отладка("Процесс %1 ibsrv запущен с параметрами %2", Процесс.Идентификатор, СтрСоединить(ПараметрыКоманды)); @@ -177,11 +175,16 @@ // Процедура Остановить() Экспорт - Если Запущен() Тогда - Процесс.Завершить(); - Лог.Отладка("Процесс %1 ibsrv завершен.", Процесс.Идентификатор); + Если Не Запущен() Тогда + Возврат; КонецЕсли; - + + Процесс.Завершить(); + + ПрочитатьПотокиIbsrv(); + + Лог.Отладка("Процесс %1 ibsrv завершен.", Процесс.Идентификатор); + Процесс = Неопределено; КонецПроцедуры @@ -219,57 +222,62 @@ ПараметрыКоманды = Новый Массив; ПараметрыКоманды.Добавить("--version"); - КомандаIbsrv = КомандаIbsrv(ПараметрыКоманды); - ВыполнитьКоманду(КомандаIbsrv); - ВыводКоманды = КомандаIbsrv.ПолучитьВывод(); + ВыводКоманды = ВыполнитьКомандуIbsrv(ПараметрыКоманды); Версия = СокрЛП(ВыводКоманды); КонецПроцедуры -Функция КомандаIbsrv(ПараметрыКоманды) +Функция ВыполнитьКомандуIbsrv(ПараметрыКоманды) Команда = Новый Команда(); Команда.УстановитьКоманду(ПутьКIbsrv); Команда.ДобавитьПараметры(ПараметрыКоманды); Команда.УстановитьИсполнениеЧерезКомандыСистемы(Ложь); - //Команда.УстановитьКодировкуВывода(КодировкаТекста.UTF8); + Команда.УстановитьКодировкуВывода(КодировкаТекста.UTF8); + Команда.УстановитьПравильныйКодВозврата(0); - Возврат Команда; + Команда.Исполнить(); -КонецФункции + Возврат Команда.ПолучитьВывод(); -Процедура ВыполнитьКоманду(КомандаIbsrv, УстановленныйКодВозврата = 0) +КонецФункции - Если ТипЗнч(УстановленныйКодВозврата) = Тип("Массив") Тогда - УспешныеКодыВозврата = УстановленныйКодВозврата; - Иначе - УспешныеКодыВозврата = Новый Массив; - УспешныеКодыВозврата.Добавить(УстановленныйКодВозврата); - КонецЕсли; +Функция ЗапуститьПроцессIbsrv(Знач ПараметрыКоманды) + + ПараметрыКоманды.Вставить(0, ОбернутьВКавычки(ПутьКIbsrv)); - КодВозврата = КомандаIbsrv.Исполнить(); + КоманднаяСтрока = СтрСоединить(ПараметрыКоманды, " "); + ТекущийКаталог = КаталогДанных; + ПеренаправлятьПотокВывода = Истина; + ПеренаправлятьПотокВвода = Ложь; + КодировкаПотоков = КодировкаТекста.UTF8; - Если УспешныеКодыВозврата.Найти(КодВозврата) = Неопределено Тогда - ВызватьИсключение КомандаIbsrv.ПолучитьВывод(); - КонецЕсли; + Процесс = СоздатьПроцесс(КоманднаяСтрока, ТекущийКаталог, + ПеренаправлятьПотокВывода, ПеренаправлятьПотокВвода, КодировкаПотоков); + Процесс.Запустить(); + + Возврат Процесс; -КонецПроцедуры +КонецФункции -Процедура ОжидатьФайлБлокировкиАС() +Процедура ОжидатьЗапускаIbsrv() ИнтервалПроверкиМс = 500; // 0.5 сек ПредельныйПериодОжиданияМс = 10000; // 10 сек ТекущийПериодОжидания = 0; ФайлСуществует = Ложь; ИмяФайла = ОбъединитьПути(КаталогДанных, "lock.pid"); + ЕстьДанные = Ложь; Пока Запущен() И ТекущийПериодОжидания < ПредельныйПериодОжиданияМс Цикл Приостановить(ИнтервалПроверкиМс); - Если ФС.ФайлСуществует(ИмяФайла) Тогда - ФайлСуществует = Истина; - Прервать; + ЕстьДанные = ЕстьДанные ИЛИ ПрочитатьПотокиIbsrv(); + ФайлСуществует = ФайлСуществует ИЛИ ФС.ФайлСуществует(ИмяФайла); + + Если ЕстьДанные И ФайлСуществует Тогда + Прервать; КонецЕсли; ТекущийПериодОжидания = ТекущийПериодОжидания + ИнтервалПроверкиМс; @@ -279,7 +287,7 @@ Если ФайлСуществует Тогда Возврат; КонецЕсли; - + Если Запущен() Тогда Остановить(); КонецЕсли; @@ -326,4 +334,28 @@ КонецФункции +Функция ПрочитатьПотокиIbsrv() + + ЕстьДанные = Ложь; + + Пока Процесс.ПотокВывода.ЕстьДанные Цикл + СтрокаВывода = Процесс.ПотокВывода.ПрочитатьСтроку(); + Если ЗначениеЗаполнено(СтрокаВывода) Тогда + Лог.Отладка(СтрокаВывода); + ЕстьДанные = Истина; + КонецЕсли; + КонецЦикла; + + Пока Процесс.ПотокОшибок.ЕстьДанные Цикл + СтрокаОшибки = Процесс.ПотокОшибок.ПрочитатьСтроку(); + Если ЗначениеЗаполнено(СтрокаОшибки) Тогда + Лог.Ошибка(СтрокаОшибки); + ЕстьДанные = Истина; + КонецЕсли; + КонецЦикла; + + Возврат ЕстьДанные; + +КонецФункции + #КонецОбласти From 3a7238e0475c606e6fe13a3948aeebbd75e2097b Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Sat, 13 Jul 2024 12:05:32 +0200 Subject: [PATCH 07/16] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D1=80=D1=8B=20=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=D0=B0=20?= =?UTF-8?q?=D0=BE=D1=82=D0=BB=D0=B0=D0=B4=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configfile_as.os" | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" index 39d6b06..77e77ea 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" @@ -23,6 +23,7 @@ Перем ПараметрыСпособовДоступаКСерверу; // Соответствие - параметры секции gates Перем ПараметрыФункциональностиСервера; // Соответствие - параметры секции features +Перем ПараметрыОтладкиСервера; // Соответствие - параметры секции debug #Область ПрограммныйИнтерфейс @@ -409,6 +410,44 @@ КонецПроцедуры +// Параметры отладки текущего экземпляра автономномного сервера +// +// Параметры: +// ТипОтладки - Строка - Режим работы отладчика. (tcp|http) +// ПортОтладки - Число - Сетевой порт, обслуживаемый сервером отладки +// СетевойИнтерфейс - Строка - IP-адрес, обслуживаемый сервером для отладки +// ПарольОтладки - Строка - Пароль для доступа к серверу отладки. +// +Процедура ПараметрыОтладкиСервера(ТипОтладки = "none", + ПортОтладки = 1550, + СетевойИнтерфейс = "localhost", + ПарольОтладки = "") Экспорт + + ПараметрыОтладкиСервера.Вставить("type", ТипОтладки); + ПараметрыОтладкиСервера.Вставить("port", XMLСтрока(ПортОтладки)); + ПараметрыОтладкиСервера.Вставить("address", СетевойИнтерфейс); + + Если ЗначениеЗаполнено(ПарольОтладки) Тогда + ПараметрыОтладкиСервера.Вставить("password", ПарольОтладки); + КонецЕсли; + +КонецПроцедуры + +// Параметры внешнего сервера отладки +// +// Параметры: +// АдресВнешнегоСервераОтладки - Строка - Адрес внешнего сервера отладки. +// +Процедура ПараметрыВнешнегоСервераОтладки(АдресВнешнегоСервераОтладки) Экспорт + + ПараметрыВнешнегоСервера = Новый Соответствие; + ПараметрыВнешнегоСервера.Вставить("url", АдресВнешнегоСервераОтладки); + + ПараметрыОтладкиСервера.Вставить("type", "server"); + ПараметрыОтладкиСервера.Вставить("server", ПараметрыВнешнегоСервера); + +КонецПроцедуры + // СоздатьКонфигурационныйФайл // Создание конфигурационного файла по ранее заполненным параметрам // Параметры: @@ -423,6 +462,7 @@ ЗаписатьПараметрыВебДоступа(Конфиг); ЗаписатьПараметрыСпособовДоступаКСерверу(Конфиг); ЗаписатьПараметрыФункциональностиСервера(Конфиг); + ЗаписатьПараметрыОтладкиСервера(Конфиг); Конфиг.Закрыть(); @@ -453,6 +493,7 @@ мсвПараметрыХТТПСервисов = Новый Соответствие; ПараметрыСпособовДоступаКСерверу = Новый Соответствие; ПараметрыФункциональностиСервера = Новый Соответствие; + ПараметрыОтладкиСервера = Новый Соответствие; КонецПроцедуры @@ -662,4 +703,15 @@ КонецПроцедуры +Процедура ЗаписатьПараметрыОтладкиСервера(Конфиг) + + Если ПараметрыОтладкиСервера.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Конфиг.ЗаписатьСтроку("debug:"); + ЗаполнитьСекцию(Конфиг, ПараметрыОтладкиСервера); + +КонецПроцедуры + #КонецОбласти From 773e981300abf68397973f55d8748aaba1278f0d Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Sat, 13 Jul 2024 12:08:27 +0200 Subject: [PATCH 08/16] =?UTF-8?q?[BREAK]=20=D0=A3=D1=82=D0=BE=D1=87=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D0=BF=D0=B0?= =?UTF-8?q?=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D0=BE=D0=B2=20=D1=84=D0=B0?= =?UTF-8?q?=D0=B9=D0=BB=D0=BE=D0=B2=D0=BE=D0=B9=20=D0=98=D0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configfile_as.os" | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" index 77e77ea..18d6251 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" @@ -72,17 +72,10 @@ // Установка параметров файловой БД // Параметры: // ПутьКФайлуИБ - Строка - Путь к файлу информационной базы. -// ИмяПользователя - Строка - имя пользователя информационной базы -// Пароль - Строка - пароль пользователя информационной базы -Процедура ПараметрыФайловойБД(ПутьКФайлуИБ, - ИмяПользователя, - Пароль) Экспорт +// +Процедура ПараметрыФайловойБД(ПутьКФайлуИБ) Экспорт - ПараметрыСервернойБазыДанных.Очистить(); - ПараметрыФайловойБазыДанных.Очистить(); ПараметрыФайловойБазыДанных.Вставить("path", ПутьКФайлуИБ); - ПараметрыФайловойБазыДанных.Вставить("user", ИмяПользователя); - ПараметрыФайловойБазыДанных.Вставить("password", Пароль); КонецПроцедуры From 51bf7f009ebfc0d8d7e85f2df4247d9e9ce72490 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Sat, 13 Jul 2024 12:09:38 +0200 Subject: [PATCH 09/16] =?UTF-8?q?[BREAK]=20=D0=98=D0=B7=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D1=84=D0=BE?= =?UTF-8?q?=D1=80=D0=BC=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D0=BE=D0=B2=20?= =?UTF-8?q?=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configfile_as.os" | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" index 18d6251..93dba62 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" @@ -30,18 +30,22 @@ // ПараметрыСервера // Установка параметров автономного сервера // Параметры: -// Адрес - Строка - IP-адрес автономного сервера // Порт - Число - Имя порта автономного сервера +// Адрес - Строка - IP-адрес автономного сервера // ИмяХоста - Строка - имя хоста (необязательный) -Процедура ПараметрыСервера(Адрес, - Порт = 8314, +// +Процедура ПараметрыСервера(Порт = 8314, + Адрес = "localhost", ИмяХоста = Неопределено) Экспорт + ПараметрыСервера. Очистить(); - ПараметрыСервера.Вставить("address", Адрес); ПараметрыСервера.Вставить("port", Порт); - Если ИмяХоста <> Неопределено Тогда + ПараметрыСервера.Вставить("address", Адрес); + + Если ЗначениеЗаполнено(ИмяХоста) Тогда ПараметрыСервера.Вставить("host", ИмяХоста); КонецЕсли; + КонецПроцедуры // ПараметрыСервернойБД From eddfeb22279bdea793705a45fee7c4166221d860 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Tue, 16 Jul 2024 17:41:49 +0200 Subject: [PATCH 10/16] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BD=20=D0=BF?= =?UTF-8?q?=D1=80=D1=8F=D0=BC=D0=BE=D0=B9=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4?= =?UTF-8?q?=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B9=20?= =?UTF-8?q?=D0=B2=20=D0=BA=D0=BE=D0=BD=D1=81=D0=BE=D0=BB=D1=8C.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ibcmdrunner.os" | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibcmdrunner.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibcmdrunner.os" index 36a5109..847adde 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibcmdrunner.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibcmdrunner.os" @@ -547,8 +547,8 @@ ПараметрыЗапуска.Добавить(ОбернутьВКавычки(ПутьКФайлуВыгрузки)); - Рез = ВыполнитьКоманду(); - Сообщить(Рез); + ВыполнитьКоманду(); + КонецПроцедуры // // Очистить информационную базу @@ -656,8 +656,8 @@ ДобавитьПараметрЕслиЗаполнен("--session-terminate", ЗавершатьСеансы, "auto"); КонецЕсли; - Рез = ВыполнитьКоманду(); - Сообщить(Рез); + ВыполнитьКоманду(); + КонецПроцедуры // ВозвратитьсяККонфигурацииБазыДанных From 1abdaeeb660e9301f85737284b48239592f4632a Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Tue, 23 Jul 2024 23:49:24 +0200 Subject: [PATCH 11/16] =?UTF-8?q?[FIX]=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=BE=20=D1=8D=D0=BA=D1=80=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=83=D1=82?= =?UTF-8?q?=D0=B8=20=D0=BA=20=D1=84=D0=B0=D0=B9=D0=BB=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ibcmdrunner.os" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibcmdrunner.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibcmdrunner.os" index 847adde..f83bbc5 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibcmdrunner.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibcmdrunner.os" @@ -682,7 +682,7 @@ НачатьЗаполнениеПараметровЗапуска("infobase config export info"); - ДобавитьПараметрЕслиЗаполнен("--out", ПутьКФайлуXML); + ДобавитьПараметрЕслиЗаполнен("--out", ОбернутьВКавычки(ПутьКФайлуXML)); ДобавитьПараметрЕслиЗаполнен("--extension", ИмяРасширения, ""); ВыполнитьКоманду(); From 067f0af1f899ad44828417ebb1d94b3d3fc02bf3 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Wed, 13 Nov 2024 15:07:10 +0200 Subject: [PATCH 12/16] =?UTF-8?q?=D0=98=D1=81=D0=BF=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=B7=D1=83=D0=B5=D0=BC=20=D0=BC=D1=8F=D0=B3=D0=BA=D1=83=D1=8E?= =?UTF-8?q?=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D1=83=20?= =?UTF-8?q?=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=BE=D0=BD=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D0=BE=D1=81=D1=82=D0=B5=D0=B9=20=D1=81=D0=B5=D1=80?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configfile_as.os" | 42 ++++++++++++------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" index 93dba62..23cb75b 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" @@ -388,22 +388,36 @@ // Параметры функциональных характеристик автономного сервера. // // Параметры: -// ИспользоватьШлюзПрямогоДоступа - Булево - использовать доступ по протоколу TCP/IP (прямое подключение). -// ИспользоватьШлюзHTTP - Булево - использовать доступ к автономному серверу по протоколу HTTP. -// ИспользоватьШлюзSSH - Булево - использовать доступ к автономному серверу по протоколу SSH. -// ИспользоватьРасширеннуюФункциональностьКонифгуратора - Булево - использовать расширенную +// ИспользоватьШлюзПрямогоДоступа - Булево, Неопределено - использовать доступ +// по протоколу TCP/IP (прямое подключение). +// ИспользоватьШлюзHTTP - Булево, Неопределено - использовать доступ к автономному серверу по протоколу HTTP. +// ИспользоватьШлюзSSH - Булево, Неопределено - использовать доступ к автономному серверу по протоколу SSH. +// ИспользоватьРасширеннуюФункциональностьКонифгуратора - Булево, Неопределено - использовать расширенную // функциональность Конфигуратора. // -Процедура ПараметрыФункциональностиСервера(ИспользоватьШлюзПрямогоДоступа = Истина, - ИспользоватьШлюзHTTP = Истина, - ИспользоватьШлюзSSH = Истина, - ИспользоватьРасширеннуюФункциональностьКонифгуратора = Ложь) Экспорт - - ПараметрыФункциональностиСервера.Вставить("direct-gate", ИспользоватьШлюзПрямогоДоступа); - ПараметрыФункциональностиСервера.Вставить("http-gate", ИспользоватьШлюзHTTP); - ПараметрыФункциональностиСервера.Вставить("ssh-gate", ИспользоватьШлюзSSH); - ПараметрыФункциональностиСервера.Вставить("extended-designer-features", - ИспользоватьРасширеннуюФункциональностьКонифгуратора); +Процедура ПараметрыФункциональностиСервера(ИспользоватьШлюзПрямогоДоступа = Неопределено, + ИспользоватьШлюзHTTP = Неопределено, + ИспользоватьШлюзSSH = Неопределено, + ИспользоватьРасширеннуюФункциональностьКонифгуратора = Неопределено) Экспорт + + ТипБулево = Тип("Булево"); + + Если ТипЗнч(ИспользоватьШлюзПрямогоДоступа) = ТипБулево Тогда + ПараметрыФункциональностиСервера.Вставить("direct-gate", ИспользоватьШлюзПрямогоДоступа); + КонецЕсли; + + Если ТипЗнч(ИспользоватьШлюзHTTP) = ТипБулево Тогда + ПараметрыФункциональностиСервера.Вставить("http-gate", ИспользоватьШлюзHTTP); + КонецЕсли; + + Если ТипЗнч(ИспользоватьШлюзSSH) = ТипБулево Тогда + ПараметрыФункциональностиСервера.Вставить("ssh-gate", ИспользоватьШлюзSSH); + КонецЕсли; + + Если ТипЗнч(ИспользоватьРасширеннуюФункциональностьКонифгуратора) = ТипБулево Тогда + ПараметрыФункциональностиСервера.Вставить("extended-designer-features", + ИспользоватьРасширеннуюФункциональностьКонифгуратора); + КонецЕсли; КонецПроцедуры From bed6acc5aa9b8533693a36bb3465c4439cf35e14 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Thu, 14 Nov 2024 20:15:44 +0300 Subject: [PATCH 13/16] =?UTF-8?q?=D0=BC=D0=B5=D0=BB=D0=BA=D0=B8=D0=B5=20?= =?UTF-8?q?=D1=81=D0=B8=D0=BD=D1=82=D0=B0=D0=BA=D1=81-=D0=BE=D1=88=D0=B8?= =?UTF-8?q?=D0=B1=D0=BA=D0=B8=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B9=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ibsrvrunner.os" | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" index c3ea165..edeb44f 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" @@ -1,4 +1,3 @@ - // BSLLS:LatinAndCyrillicSymbolInWord-off #Использовать v8find @@ -12,7 +11,7 @@ Перем Процесс; // Процесс запущенного автономного сервера -Перем Версия; // Версия платформы используемая утилитой +Перем Версия; // Версия платформы, используемая утилитой Перем КаталогДанных; // Каталог данных автономного сервера #КонецОбласти @@ -34,7 +33,7 @@ КонецФункции -// Устанавливает версию платформы которая будет использована для запуска утилиты ibsrv +// Устанавливает версию платформы, которая будет использована для запуска утилиты ibsrv // // Параметры: // НомерВерсии - Строка - номер версии в формате 8.3.13.1341 (допустимо указание 8.3, 8.3.13) @@ -107,7 +106,7 @@ КонецПроцедуры -// Установить порт установки http соединения с сервером. +// Установить порт установки http-соединения с сервером. // // Параметры: // НомерПорта - Число - порт установки http соединения с сервером @@ -142,13 +141,13 @@ КонецПроцедуры -// Проверяет что исключение было вызвано программно при запуске автономного сервера. +// Проверяет, что исключение было вызвано программно при запуске автономного сервера. // // Параметры: // ИнформацияОбОшибке - ИнформацияОбОшибке - Описание ошибки проверяемого исключения // // Возвращаемое значение: -// Булево - Если это исключение запуска автономного сервера +// Булево - Истина, если это исключение запуска автономного сервера // Функция ЭтоИсключенияЗапускаАС(ИнформацияОбОшибке) Экспорт From 4aada56821c396ed33bf7149367aa8f670f184c3 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Thu, 14 Nov 2024 19:16:25 +0200 Subject: [PATCH 14/16] =?UTF-8?q?=D0=92=D0=BA=D0=BB=D1=8E=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8?= =?UTF-8?q?=20BSL=20LS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ibcmdrunner.os" | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibcmdrunner.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibcmdrunner.os" index f83bbc5..0365d13 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibcmdrunner.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibcmdrunner.os" @@ -1,5 +1,6 @@ -// BSLLS-off -// BSLLS-off + +// BSLLS:LatinAndCyrillicSymbolInWord-off + #Использовать logos #Использовать v8find #Использовать asserts From 3a7ec1055ecab03a22e727b5a822354372861b02 Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Thu, 14 Nov 2024 21:00:23 +0200 Subject: [PATCH 15/16] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=87=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D1=80=D0=B5=D0=B2=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configfile_as.os" | 58 +++++++++++++++---- .../ibsrvrunner.os" | 7 ++- 2 files changed, 52 insertions(+), 13 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" index 23cb75b..6599cf7 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/configfile_as.os" @@ -30,12 +30,12 @@ // ПараметрыСервера // Установка параметров автономного сервера // Параметры: -// Порт - Число - Имя порта автономного сервера // Адрес - Строка - IP-адрес автономного сервера +// Порт - Число - Имя порта автономного сервера // ИмяХоста - Строка - имя хоста (необязательный) // -Процедура ПараметрыСервера(Порт = 8314, - Адрес = "localhost", +Процедура ПараметрыСервера(Адрес = "localhost", + Порт = 8314, ИмяХоста = Неопределено) Экспорт ПараметрыСервера. Очистить(); @@ -424,7 +424,7 @@ // Параметры отладки текущего экземпляра автономномного сервера // // Параметры: -// ТипОтладки - Строка - Режим работы отладчика. (tcp|http) +// ТипОтладки - Строка - Режим работы отладчика. (none|tcp|http) // ПортОтладки - Число - Сетевой порт, обслуживаемый сервером отладки // СетевойИнтерфейс - Строка - IP-адрес, обслуживаемый сервером для отладки // ПарольОтладки - Строка - Пароль для доступа к серверу отладки. @@ -526,10 +526,10 @@ Для Каждого Параметр Из Параметры Цикл ТипЗнчПараметра = ТипЗнч(Параметр.Значение); - Если ТипЗнч(Параметр.Значение) = Тип("Число") ИЛИ - ТипЗнч(Параметр.Значение) = Тип("Строка") Тогда + Если ТипЗнчПараметра = Тип("Число") ИЛИ + ТипЗнчПараметра = Тип("Строка") Тогда Значение = Параметр.Значение; - ИначеЕсли ТипЗнч(Параметр.Значение) = Тип("Булево") Тогда + ИначеЕсли ТипЗнчПараметра = Тип("Булево") Тогда Значение = БулевоВСтроку(Параметр.Значение); ИначеЕсли ТипЗнчПараметра = Тип("Соответствие") Тогда @@ -603,21 +603,39 @@ Процедура ЗаписатьПараметрыВебДоступа(Конфиг) - Если ПараметрыХТТП.Количество() = 0 + ПропуститьСекциюHTTP = ПараметрыХТТП.Количество() = 0 И ПараметрыВеб_Аутентификация.Количество() = 0 И мсвПараметрыВеб_Разделители.Количество() = 0 И ПараметрыВеб_ПубликацияOData.Количество() = 0 И ПараметрыВебСервисовОбщие.Количество() = 0 И ПараметрыХТТПСервисовОбщие.Количество() = 0 - И ПараметрыПубликацииДистрибутивов.Количество() = 0 - Тогда Возврат; + И ПараметрыПубликацииДистрибутивов.Количество() = 0; + + Если ПропуститьСекциюHTTP Тогда + Возврат; КонецЕсли; Конфиг.ЗаписатьСтроку("http:"); + ЗаписатьПараметрыВеб_ХТТП(Конфиг); + ЗаписатьПараметрыВеб_Аутентификация(Конфиг); + ЗаписатьПараметрыВеб_Разделители(Конфиг); + ЗаписатьПараметрыВеб_ПубликацияOData(Конфиг); + ЗаписатьПараметрыВеб_ВебСервисов(Конфиг); + ЗаписатьПараметрыВеб_ХТТПСервисов(Конфиг); + ЗаписатьПараметрыВеб_ПубликацииДистрибутивов(Конфиг); + +КонецПроцедуры + +Процедура ЗаписатьПараметрыВеб_ХТТП(Конфиг) + Если ПараметрыХТТП.Количество() > 0 Тогда ЗаполнитьСекцию(Конфиг, ПараметрыХТТП); КонецЕсли; +КонецПроцедуры + +Процедура ЗаписатьПараметрыВеб_Аутентификация(Конфиг) + Если ПараметрыВеб_Аутентификация.Количество() > 0 Тогда Конфиг.ЗаписатьСтроку(" auth:"); Конфиг.ЗаписатьСтроку(" rely:"); @@ -640,6 +658,10 @@ КонецЕсли; КонецЕсли; +КонецПроцедуры + +Процедура ЗаписатьПараметрыВеб_Разделители(Конфиг) + Если мсвПараметрыВеб_Разделители.Количество() > 0 Тогда Конфиг.ЗаписатьСтроку(" zones:"); Для Каждого Разделитель Из мсвПараметрыВеб_Разделители Цикл @@ -648,6 +670,10 @@ КонецЦикла; КонецЕсли; +КонецПроцедуры + +Процедура ЗаписатьПараметрыВеб_ПубликацияOData(Конфиг) + Если ПараметрыВеб_ПубликацияOData.Количество() > 0 Тогда Конфиг.ЗаписатьСтроку(" odata:"); Значение = ПараметрыВеб_ПубликацияOData.Получить("publish"); @@ -661,6 +687,10 @@ КонецЕсли; КонецЕсли; +КонецПроцедуры + +Процедура ЗаписатьПараметрыВеб_ВебСервисов(Конфиг) + Если ПараметрыВебСервисовОбщие.Количество() > 0 Тогда Конфиг.ЗаписатьСтроку(" web-services:"); ЗаполнитьСекцию(Конфиг, ПараметрыВебСервисовОбщие, 2); @@ -672,7 +702,11 @@ КонецЦикла; КонецЕсли; КонецЕсли; + +КонецПроцедуры +Процедура ЗаписатьПараметрыВеб_ХТТПСервисов(Конфиг) + Если ПараметрыХТТПСервисовОбщие.Количество() > 0 Тогда Конфиг.ЗаписатьСтроку(" http-services:"); ЗаполнитьСекцию(Конфиг, ПараметрыХТТПСервисовОбщие, 2); @@ -685,6 +719,10 @@ КонецЕсли; КонецЕсли; +КонецПроцедуры + +Процедура ЗаписатьПараметрыВеб_ПубликацииДистрибутивов(Конфиг) + Если ПараметрыПубликацииДистрибутивов.Количество() > 0 Тогда Конфиг.ЗаписатьСтроку(" pubdst:"); ЗаполнитьСекцию(Конфиг, ПараметрыПубликацииДистрибутивов, 2); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" index edeb44f..478f6a2 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" @@ -1,7 +1,8 @@ // BSLLS:LatinAndCyrillicSymbolInWord-off #Использовать v8find -#Использовать 1commands +#Использовать 1commands +#Использовать asserts #Область ОписаниеПеременных @@ -94,7 +95,7 @@ // Установить порт установки прямого соединения с сервером. // // Параметры: -// НомерПорта - Число - порт установки прямого соединения с сервером +// НомерПорта - Число - порт установки прямого соединения с сервером (от 1000 до 65535) // Процедура УстановитьПортПрямогоДоступа(Знач НомерПорта) Экспорт @@ -109,7 +110,7 @@ // Установить порт установки http-соединения с сервером. // // Параметры: -// НомерПорта - Число - порт установки http соединения с сервером +// НомерПорта - Число - порт установки http соединения с сервером (от 1000 до 65535) // Процедура УстановитьПортHttpДоступа(Знач НомерПорта) Экспорт From 141e69897c016fbae4d1887fb1fb34586b65f3cb Mon Sep 17 00:00:00 2001 From: Yuri Goncharuk Date: Fri, 15 Nov 2024 09:18:31 +0200 Subject: [PATCH 16/16] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=87=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D1=80=D0=B5=D0=B2=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ibsrvrunner.os" | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" index 478f6a2..e85d196 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/ibsrvrunner.os" @@ -27,7 +27,7 @@ Функция Версия() Экспорт Если Версия = "8.3" Тогда - ibsrv_Версия(Версия, Неопределено); + ВычислитьВерсиюIbsrv(Версия, Неопределено); КонецЕсли; Возврат Версия; @@ -43,9 +43,11 @@ Процедура УстановитьВерсиюПлатформы(Знач НомерВерсии, Знач Разрядность = Неопределено) Экспорт Ожидаем.Что(НомерВерсии).ИмеетТип("Строка"); - Ожидаем.Что(Разрядность).ИмеетТип("Строка"); + Если Разрядность <> Неопределено Тогда + Ожидаем.Что(Разрядность).ИмеетТип("Строка"); + КонецЕсли; - ibsrv_Версия(НомерВерсии, Разрядность); + ВычислитьВерсиюIbsrv(НомерВерсии, Разрядность); КонецПроцедуры @@ -103,7 +105,7 @@ Ожидаем.Что(НомерПорта).Больше(1000); // BSLLS:MagicNumber-off Ожидаем.Что(НомерПорта).Меньше(65535); // BSLLS:MagicNumber-off - ПараметрыЗапускаАС.Вставить("direct-regport", XMLСтрока(НомерПорта)); + ПараметрыЗапускаАС.Вставить("direct-regport", НомерПорта); КонецПроцедуры @@ -118,7 +120,7 @@ Ожидаем.Что(НомерПорта).Больше(1000); // BSLLS:MagicNumber-off Ожидаем.Что(НомерПорта).Меньше(65535); // BSLLS:MagicNumber-off - ПараметрыЗапускаАС.Вставить("http-port", XMLСтрока(НомерПорта)); + ПараметрыЗапускаАС.Вставить("http-port", НомерПорта); КонецПроцедуры @@ -214,7 +216,7 @@ Возврат СтрШаблон("""%1""", Строка); КонецФункции -Процедура ibsrv_Версия(НомерВерсии, Разрядность) +Процедура ВычислитьВерсиюIbsrv(НомерВерсии, Разрядность) ПутьКIbsrv = Платформа1С.ПутьКIBSRV(НомерВерсии, Разрядность); Ожидаем.Что(ПутьКIbsrv, "Не найдена установленная версия платформы: " + НомерВерсии).Заполнено();