From 1c4d9e1e7d6ab14b204e529a3aef5c7077a7f832 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Tue, 4 Jun 2024 22:28:42 +0300 Subject: [PATCH 1/7] =?UTF-8?q?#216=20=D0=9D=D0=B0=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=B9=D0=BA=D0=B0=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=D0=BE?= =?UTF-8?q?=D0=B2=20=D0=BA=20=D1=85=D0=B0=D0=B1=D1=83.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлены параметры передачи заголовка авторизации и дополнительных заголовков при получении пакетов с сервера. --- ...20\260\320\275\320\264\320\260Opm_Push.os" | 11 +++- ...266\320\265\320\275\320\270\321\217Opm.os" | 45 ++++++++------ ...20\272\320\265\321\202\320\276\320\262.os" | 10 +-- ...20\272\320\265\321\202\320\276\320\262.os" | 61 ++++++++++++++++--- ...200\320\276\320\271\320\272\320\270Opm.os" | 31 ++-------- ...20\272\320\265\321\202\320\276\320\262.os" | 59 ++++++++++++++++++ 6 files changed, 153 insertions(+), 64 deletions(-) create mode 100644 "src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\265\321\200\320\262\320\265\321\200\321\213\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Push.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Push.os" index feda711..41b0ddb 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Push.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Push.os" @@ -171,7 +171,7 @@ Ответ = Соединение.ОтправитьДляОбработки(Запрос); ТелоОтвета = Ответ.ПолучитьТелоКакСтроку(); - Если Ответ.КодСостояния <> 200 Тогда + Если Не КодУспешнойОтправки(Ответ.КодСостояния) Тогда ВызватьИсключение ТелоОтвета; КонецЕсли; @@ -179,6 +179,15 @@ КонецПроцедуры +Функция КодУспешнойОтправки(Знач КодСостояния) + + Возврат КодСостояния = 200 // OK + Или КодСостояния = 201 // CREATED + Или КодСостояния = 202 // ACCEPTED + ; + +КонецФункции + Лог = Логирование.ПолучитьЛог("oscript.app.opm"); ДопустимыеИменаКаналов = Новый Структура; diff --git "a/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" "b/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" index 1a441ad..4d6e0ca 100644 --- "a/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" +++ "b/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" @@ -18,7 +18,7 @@ Если Не НастройкиПроксиЕсть = Неопределено Тогда - НастройкиПрокси = НастройкиOpmИзФайлов.Прокси; + НастройкиПрокси = НастройкиКакСтруктура(НастройкиOpmИзФайлов.Прокси); Сервер = ПолучитьЗначение(НастройкиПрокси, "Сервер", ""); Порт = Число(ПолучитьЗначение(НастройкиПрокси, "Порт", 80)); @@ -57,21 +57,16 @@ Индекс = 1; Для каждого ТекущийСерверПакетов Из СервераПакетов Цикл - - Сервер = ПолучитьЗначение(ТекущийСерверПакетов, "Сервер", ""); - Порт = Число(ПолучитьЗначение(ТекущийСерверПакетов, "Порт", 80)); - ПутьНаСервере = ПолучитьЗначение(ТекущийСерверПакетов, "ПутьНаСервере", "/"); - Имя = ПолучитьЗначение(ТекущийСерверПакетов, "Имя", СтрШаблон("ДопСервер_%1", Индекс)); - РесурсПубликацииПакетов = ПолучитьЗначение(ТекущийСерверПакетов, "РесурсПубликацииПакетов", "/"); - Приоритет = Число(ПолучитьЗначение(ТекущийСерверПакетов, "Приоритет", 0)); - - Если ПустаяСтрока(Сервер) Тогда - Лог.Отладка("Для сервера <%1> не задан адрес", Индекс); + + Попытка + СерверПакетов = СерверыПакетов.ИзНастроек(НастройкиКакСтруктура(ТекущийСерверПакетов), Индекс); + Исключение + Лог.Отладка(ОписаниеОшибки()); Продолжить; - КонецЕсли; - - НастройкиOpm.ДобавитьСерверПакетов(Имя, Сервер, ПутьНаСервере, РесурсПубликацииПакетов, Порт, Приоритет); - Индекс = Индекс +1; + КонецПопытки; + + НастройкиOpm.ДобавитьСерверПакетов(СерверПакетов); + Индекс = Индекс + 1; КонецЦикла; @@ -176,7 +171,7 @@ Для каждого НастройкаСервера Из ТекущиеНастройки.СервераПакетов Цикл - МассивСерверовПакетов.Добавить(НастройкаСервера); + МассивСерверовПакетов.Добавить(НастройкаСервера.НастройкаДляВыгрузки()); КонецЦикла; @@ -222,13 +217,23 @@ ЧтениеJSON = Новый ЧтениеJSON(); ЧтениеJSON.УстановитьСтроку(Текст); - Настройки = ПрочитатьJSON(ЧтениеJSON, Ложь); + НастройкиКакСоответствие = ПрочитатьJSON(ЧтениеJSON, Истина); ЧтениеJSON.Закрыть(); - Возврат Настройки; + Возврат НастройкиКакСтруктура(НастройкиКакСоответствие); КонецФункции +Функция НастройкиКакСтруктура(Знач НастройкиКакСоответствие) + + Настройки = Новый Структура; + Для Каждого мЭлемент Из НастройкиКакСоответствие Цикл + Настройки.Вставить(мЭлемент.Ключ, мЭлемент.Значение); + КонецЦикла; + + Возврат Настройки; +КонецФункции + Функция ПрочитатьФайл(Знач Путь) Чтение = Новый ЧтениеТекста(Путь); @@ -256,8 +261,10 @@ Функция СформироватьТекстНастроек(Знач Настройки) + НастройкиЗаписи = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Unix, " "); + Json = Новый ЗаписьJSON(); - Json.УстановитьСтроку(); + Json.УстановитьСтроку(НастройкиЗаписи); ЗаписатьJSON(Json, Настройки); diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\321\217\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\321\217\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" index 3f83964..13e053c 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\321\217\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\321\217\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" @@ -229,12 +229,7 @@ Функция СоздатьСерверПакетовПоНастройке(Знач НастройкаСервера) - Возврат Новый СерверПакетов(НастройкаСервера.Имя, - НастройкаСервера.Сервер, - НастройкаСервера.ПутьНаСервере, - НастройкаСервера.РесурсПубликацииПакетов, - НастройкаСервера.Порт, - НастройкаСервера.Приоритет) + Возврат НастройкаСервера; КонецФункции @@ -257,8 +252,7 @@ Процедура ОбновитьИндексыКешейПакетов() Если Не ЗначениеЗаполнено(ИндексКешаПакетов) - Или Не ЗначениеЗаполнено(ИндексДоступныхПакетов)Тогда - + Или Не ЗначениеЗаполнено(ИндексДоступныхПакетов) Тогда ОбновитьИндексКешаПакетов(); ОбновитьИндексДоступныхПакетов(); КонецЕсли; diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" index a940782..e52b8db 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" @@ -1,16 +1,20 @@ Перем Лог; -Перем Имя; -Перем Сервер; -Перем ПутьНаСервере; -Перем Порт; -Перем Приоритет; +Перем Имя Экспорт; +Перем Сервер Экспорт; +Перем ПутьНаСервере Экспорт; +Перем Порт Экспорт; +Перем Приоритет Экспорт; Перем Соединение; -Перем РесурсПубликацииПакетов; +Перем РесурсПубликацииПакетов Экспорт; +Перем Авторизация Экспорт; +Перем ДополнительныеЗаголовки Экспорт; Перем ПакетыХаба; -Процедура ПриСозданииОбъекта(Знач ИмяСервера, Знач АдресСервер, Знач ВходящийПутьНаСервере = "", Знач ВходящийРесурсПубликацииПакетов = "", Знач ВходящийПорт = 80, Знач ВходящийПриоритет = 0) +Процедура ПриСозданииОбъекта(Знач ИмяСервера, Знач АдресСервер, Знач ВходящийПутьНаСервере = "", + Знач ВходящийРесурсПубликацииПакетов = "", Знач ВходящийПорт = 80, Знач ВходящийПриоритет = 0, + Знач ВходящаяАвторизация = Неопределено, Знач Заголовки = Неопределено) Имя = ИмяСервера; Сервер = АдресСервер; @@ -18,6 +22,8 @@ Порт = ВходящийПорт; Приоритет = ВходящийПриоритет; РесурсПубликацииПакетов = ВходящийРесурсПубликацииПакетов; + Авторизация = ВходящаяАвторизация; + ДополнительныеЗаголовки = Заголовки; КонецПроцедуры @@ -37,11 +43,12 @@ Порт = ?(Порт = Неопределено, 80, Порт); Настройки = НастройкиOpm.ПолучитьНастройки(); + Таймаут = 60; Если Настройки.ИспользоватьПрокси Тогда НастройкиПрокси = НастройкиOpm.ПолучитьИнтернетПрокси(); - Соединение = Новый HTTPСоединение(Сервер, Порт, , , НастройкиПрокси); + Соединение = Новый HTTPСоединение(Сервер, Порт, , , НастройкиПрокси, Таймаут); Иначе - Соединение = Новый HTTPСоединение(Сервер, Порт); + Соединение = Новый HTTPСоединение(Сервер, Порт, , , , Таймаут); КонецЕсли; Возврат Соединение; @@ -55,6 +62,7 @@ Соединение = ИнициализироватьСоединение(); Ресурс = ПутьНаСервере + ИмяРесурса; Запрос = Новый HTTPЗапрос(Ресурс); + ДобавитьЗаголовки(Запрос); Попытка @@ -132,4 +140,39 @@ КонецФункции +Процедура ДобавитьЗаголовки(Знач Запрос) + + Если ЗначениеЗаполнено(ДополнительныеЗаголовки) Тогда + Для Каждого мЗаголовок Из ДополнительныеЗаголовки Цикл + ДобавитьЗаголовокКЗапросу(Запрос, мЗаголовок.Ключ, мЗаголовок.Значение); + КонецЦикла; + КонецЕсли; + + Если ЗначениеЗаполнено(Авторизация) Тогда + ДобавитьЗаголовокКЗапросу(Запрос, "Authorization", Авторизация); + КонецЕсли; + +КонецПроцедуры + +Процедура ДобавитьЗаголовокКЗапросу(Знач Запрос, Знач Заголовок, Знач Значение) + Запрос.Заголовки.Вставить(Заголовок, Значение); +КонецПроцедуры + +Функция НастройкаДляВыгрузки() Экспорт + + Результат = Новый Структура; + Результат.Вставить("Имя", Имя); + Результат.Вставить("Сервер", Сервер); + Результат.Вставить("ПутьНаСервере", ПутьНаСервере); + Результат.Вставить("РесурсПубликацииПакетов", РесурсПубликацииПакетов); + Результат.Вставить("Порт", Порт); + Результат.Вставить("Авторизация", Авторизация); + Результат.Вставить("Заголовки", ДополнительныеЗаголовки); + Результат.Вставить("Приоритет", Приоритет); + + Возврат Результат; + +КонецФункции // + Лог = Логирование.ПолучитьЛог("oscript.app.opm"); +ДополнительныеЗаголовки = Новый Соответствие; \ No newline at end of file diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270Opm.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270Opm.os" index 40f745c..da71e7c 100644 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270Opm.os" +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270Opm.os" @@ -85,31 +85,8 @@ КонецПроцедуры -Функция НастройкиСервераПакетов(Знач Имя, Знач Сервер, Знач ПутьНаСервере, Знач РесурсПубликацииПакетов, Знач Порт, Знач Приоритет) - - Результат = Новый Структура; - Результат.Вставить("Имя", Имя); - Результат.Вставить("Сервер", Сервер); - Результат.Вставить("ПутьНаСервере", ПутьНаСервере); - Результат.Вставить("РесурсПубликацииПакетов", РесурсПубликацииПакетов); - Результат.Вставить("Порт", Порт); - Результат.Вставить("Приоритет", Приоритет); - - Возврат Результат; - -КонецФункции // - -Процедура ДобавитьСерверПакетов(Знач Имя, - Знач Сервер, - Знач ПутьНаСервере = "", - Знач РесурсПубликацииПакетов = "", - Знач Порт = 80, - Знач Приоритет = Неопределено) Экспорт - - мНастройки.СервераПакетов.Добавить(НастройкиСервераПакетов(Имя, Сервер, ПутьНаСервере, РесурсПубликацииПакетов, Порт, Приоритет)); - Лог.Отладка("Добавлен сервер <%1>, Адрес <%2>, ПутьНаСервере <%3>, РесурсПубликацииПакетов <%4>, Порт <%5>, Приоритет <%6>", - Имя, Сервер, ПутьНаСервере, РесурсПубликацииПакетов, Порт, Приоритет); - +Процедура ДобавитьСерверПакетов(Знач СерверПакетов) Экспорт + мНастройки.СервераПакетов.Добавить(СерверПакетов); КонецПроцедуры @@ -121,8 +98,8 @@ Процедура ИнициализацияСерверовПакетов() // Сервера пакетов по умолчанию - ДобавитьСерверПакетов("ОсновнойСерверПакетов", КонстантыOpm.СерверУдаленногоХранилища, КонстантыOpm.ПутьВХранилище, КонстантыOpm.РесурсПубликацииПакетов, 80, 0); - ДобавитьСерверПакетов("ЗапаснойСерверПакетов", КонстантыOpm.СерверЗапасногоХранилища, КонстантыOpm.ПутьВЗапасномХранилище, Неопределено, 80, 1); + ДобавитьСерверПакетов(СерверыПакетов.ОсновнойСервер()); + ДобавитьСерверПакетов(СерверыПакетов.ЗапаснойСервер()); КонецПроцедуры Процедура Инициализация() diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\265\321\200\320\262\320\265\321\200\321\213\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\265\321\200\320\262\320\265\321\200\321\213\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" new file mode 100644 index 0000000..45e93c9 --- /dev/null +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\265\321\200\320\262\320\265\321\200\321\213\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" @@ -0,0 +1,59 @@ + +Функция ИзНастроек(Знач ТекущийСерверПакетов, Знач Индекс) Экспорт + + Сервер = ПолучитьЗначение(ТекущийСерверПакетов, "Сервер", ""); + Порт = Число(ПолучитьЗначение(ТекущийСерверПакетов, "Порт", 80)); + ПутьНаСервере = ПолучитьЗначение(ТекущийСерверПакетов, "ПутьНаСервере", "/"); + Имя = ПолучитьЗначение(ТекущийСерверПакетов, "Имя", СтрШаблон("ДопСервер_%1", Индекс)); + РесурсПубликацииПакетов = ПолучитьЗначение(ТекущийСерверПакетов, "РесурсПубликацииПакетов", "/"); + Приоритет = Число(ПолучитьЗначение(ТекущийСерверПакетов, "Приоритет", 0)); + Авторизация = ПолучитьЗначение(ТекущийСерверПакетов, "Авторизация", ""); + ДополнительныеЗаголовки = ПолучитьЗначение(ТекущийСерверПакетов, "Заголовки", Новый Соответствие); + + Если ПустаяСтрока(Сервер) Тогда + ВызватьИсключение СтрШаблон("Для сервера <%1> не задан адрес", Индекс); + КонецЕсли; + + СерверПакетов = Новый СерверПакетов(Имя, Сервер, ПутьНаСервере, РесурсПубликацииПакетов, + Порт, Приоритет, Авторизация, ДополнительныеЗаголовки + ); + + Возврат СерверПакетов; + +КонецФункции + +Функция ОсновнойСервер() Экспорт + Возврат Новый СерверПакетов("ОсновнойСерверПакетов", + КонстантыOpm.СерверУдаленногоХранилища, + КонстантыOpm.ПутьВХранилище, + КонстантыOpm.РесурсПубликацииПакетов, + 80, + 0 + ); +КонецФункции + +Функция ЗапаснойСервер() Экспорт + Возврат Новый СерверПакетов("ЗапаснойСерверПакетов", + КонстантыOpm.СерверЗапасногоХранилища, + КонстантыOpm.ПутьВЗапасномХранилище, + Неопределено, + 80, + 1 + ); +КонецФункции + +Функция ПолучитьЗначение(Знач ВходящаяСтруктура, Знач Ключ, Знач ЗначениеПоУмолчанию) + + Перем ЗначениеКлюча; + + Если Не ВходящаяСтруктура.Свойство(Ключ, ЗначениеКлюча) Тогда + Возврат ЗначениеПоУмолчанию; + КонецЕсли; + + Если ЗначениеКлюча = Неопределено Тогда + Возврат ЗначениеПоУмолчанию; + КонецЕсли; + + Возврат ЗначениеКлюча; + +КонецФункции From df0976dbca3398219cb9469c34c97aff445c36e3 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Wed, 5 Jun 2024 22:30:05 +0300 Subject: [PATCH 2/7] =?UTF-8?q?#216=20=D0=9F=D0=B5=D1=80=D0=B5=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D0=B5=20=D1=81=D1=80=D0=B5=D0=B4=D1=8B=20?= =?UTF-8?q?=D0=B2=20=D0=B7=D0=B0=D0=B3=D0=BE=D0=BB=D0=BE=D0=B2=D0=BA=D0=B0?= =?UTF-8?q?=D1=85.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 1 + ...20\272\320\265\321\202\320\276\320\262.os" | 35 ++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/packagedef b/packagedef index 72005f6..93455bb 100644 --- a/packagedef +++ b/packagedef @@ -19,6 +19,7 @@ Описание.Имя("opm") .Версия(ВерсияПродукта) .ВерсияСреды("1.8.3") + .ЗависитОт("strings", "0.5.0") .ЗависитОт("fs", "1.2.0") .ЗависитОт("asserts", "1.3.0") .ЗависитОт("fluent", "0.4.0") diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" index e52b8db..df0051f 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" @@ -1,3 +1,5 @@ +#Использовать strings + Перем Лог; Перем Имя Экспорт; @@ -155,9 +157,40 @@ КонецПроцедуры Процедура ДобавитьЗаголовокКЗапросу(Знач Запрос, Знач Заголовок, Знач Значение) - Запрос.Заголовки.Вставить(Заголовок, Значение); + Запрос.Заголовки.Вставить(Заголовок, ПрименитьПеременныеСреды(Значение)); КонецПроцедуры +Функция ПрименитьПеременныеСреды(Знач Значение) + ПеременныеСреды = КакМассив(ПеременныеСреды()); + Возврат ПрименитьПеременныеСредыШаг(Значение, ПеременныеСреды, 0); +КонецФункции + +Функция ПрименитьПеременныеСредыШаг(Знач Значение, Знач ПеременныеСреды, Знач Индекс) + + ПеременнаяИмя = СтрШаблон("${%1}", ПеременныеСреды[Индекс].Ключ); + Части = СтроковыеФункции.РазложитьСтрокуВМассивПодстрок(Значение, ПеременнаяИмя); + Если Индекс < ПеременныеСреды.Количество() - 1 Тогда + Для Инд = 0 По Части.ВГраница() Цикл + Части[Инд] = ПрименитьПеременныеСредыШаг(Части[Инд], ПеременныеСреды, Индекс + 1); + КонецЦикла; + КонецЕсли; + + Результат = СтрСоединить(Части, ПеременныеСреды[Индекс].Значение); + Возврат Результат; + +КонецФункции + +Функция КакМассив(Знач Соответствие) + + Массив = Новый Массив; + Для Каждого мКлючИЗанчение Из Соответствие Цикл + Массив.Добавить(мКлючИЗанчение); + КонецЦикла; + + Возврат Массив; + +КонецФункции + Функция НастройкаДляВыгрузки() Экспорт Результат = Новый Структура; From e1654f5e354f3a58718e2a14233387e9f0c02f16 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Thu, 6 Jun 2024 02:03:36 +0300 Subject: [PATCH 3/7] =?UTF-8?q?#216=20=D0=A2=D0=B5=D1=81=D1=82=D1=8B=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B4=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B9=20=D1=84?= =?UTF-8?q?=D0=BE=D1=80=D0=BC=D0=B0=D1=82=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8?= =?UTF-8?q?=D0=B3=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...21\200\320\276\320\271\320\272\320\270.os" | 42 +++++++++++-------- ...266\320\265\320\275\320\270\321\217Opm.os" | 3 ++ tests/fixtures/opm-servers.cfg | 6 ++- tests/packagelist.os | 3 ++ 4 files changed, 35 insertions(+), 19 deletions(-) diff --git "a/features/step_definitions/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.os" "b/features/step_definitions/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.os" index 25e44b2..9aa5618 100644 --- "a/features/step_definitions/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.os" +++ "b/features/step_definitions/\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270.os" @@ -32,10 +32,8 @@ //я читаю настройки из файла "opm.cfg" Процедура ЯЧитаюНастройкиИзФайла(Знач ПутьФайла) Экспорт Файл = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьФайла)); - // Ожидаем.Что(Файл.Существует(), СтрШаблон("Ожидали, что файл <%1> существует, а это не так!", Файл.ПолноеИмя)).ЭтоИстина(); НастройкиOpm.СброситьНастройки(); НастроитьOpmИзФайла(Файл.ПолноеИмя); - // НастройкиOpm.УстановитьФайлНастроек(Файл.ПолноеИмя); Настройки = НастройкиOpm.ПолучитьНастройки(); БДД.СохранитьВКонтекст(КлючКонтекста(), Настройки); @@ -88,7 +86,7 @@ Если Не НастройкиПроксиЕсть = Неопределено Тогда - НастройкиПрокси = НастройкиOpmИзФайлов.Прокси; + НастройкиПрокси = НастройкиКакСтруктура(НастройкиOpmИзФайлов.Прокси); Сервер = ПолучитьЗначение(НастройкиПрокси, "Сервер", ""); Порт = Число(ПолучитьЗначение(НастройкиПрокси, "Порт", 0)); @@ -129,20 +127,15 @@ Индекс = 1; Для каждого ТекущийСерверПакетов Из СервераПакетов Цикл - - Сервер = ПолучитьЗначение(ТекущийСерверПакетов, "Сервер", ""); - Порт = Число(ПолучитьЗначение(ТекущийСерверПакетов, "Порт", 80)); - ПутьНаСервере = ПолучитьЗначение(ТекущийСерверПакетов, "ПутьНаСервере", "/"); - РесурсПубликацииПакетов = ПолучитьЗначение(ТекущийСерверПакетов, "РесурсПубликацииПакетов", "/"); - Имя = ПолучитьЗначение(ТекущийСерверПакетов, "Имя", СтрШаблон("ДопСервер_%1",Индекс)); - Приоритет = Число(ПолучитьЗначение(ТекущийСерверПакетов, "Приоритет", 0)); - - Если ПустаяСтрока(Сервер) Тогда + + Попытка + СерверПакетов = СерверыПакетов.ИзНастроек(НастройкиКакСтруктура(ТекущийСерверПакетов), Индекс); + Исключение Продолжить; - КонецЕсли; - - НастройкиOpm.ДобавитьТекущийСерверПакетов(Имя, Сервер, ПутьНаСервере, РесурсПубликацииПакетов, Порт, Приоритет); - Индекс = Индекс +1; + КонецПопытки; + + НастройкиOpm.ДобавитьСерверПакетов(СерверПакетов); + Индекс = Индекс + 1; КонецЦикла; @@ -153,16 +146,29 @@ Функция ПрочитатьФайлНастроек(Знач ПутьФайлаНастроек) Если НЕ Новый Файл(ПутьФайлаНастроек).Существует() Тогда - Возврат НОвый Соответствие; + Возврат Новый Структура; КонецЕсли; Текст = ПрочитатьФайл(ПутьФайлаНастроек); ЧтениеJSON = Новый ЧтениеJSON(); ЧтениеJSON.УстановитьСтроку(Текст); - Настройки = ПрочитатьJSON(ЧтениеJSON, Ложь); + НастройкиКакСоответствие = ПрочитатьJSON(ЧтениеJSON, Истина); ЧтениеJSON.Закрыть(); + + Возврат НастройкиКакСтруктура(НастройкиКакСоответствие); + +КонецФункции + +Функция НастройкиКакСтруктура(Знач НастройкиКакСоответствие) + Перем Настройки; + + Настройки = Новый Структура; + Для Каждого мЭлемент Из НастройкиКакСоответствие Цикл + Настройки.Вставить(мЭлемент.Ключ, мЭлемент.Значение); + КонецЦикла; + Возврат Настройки; КонецФункции diff --git "a/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" "b/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" index 4d6e0ca..4545a45 100644 --- "a/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" +++ "b/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" @@ -226,12 +226,15 @@ Функция НастройкиКакСтруктура(Знач НастройкиКакСоответствие) + Перем Настройки; + Настройки = Новый Структура; Для Каждого мЭлемент Из НастройкиКакСоответствие Цикл Настройки.Вставить(мЭлемент.Ключ, мЭлемент.Значение); КонецЦикла; Возврат Настройки; + КонецФункции Функция ПрочитатьФайл(Знач Путь) diff --git a/tests/fixtures/opm-servers.cfg b/tests/fixtures/opm-servers.cfg index 5e0f772..70a48a5 100644 --- a/tests/fixtures/opm-servers.cfg +++ b/tests/fixtures/opm-servers.cfg @@ -11,7 +11,11 @@ "Имя":"mylocalhost", "Сервер": "http://localhost", "Порт": 8000, - "ПутьНаСервере":"/" + "ПутьНаСервере":"/", + "Авторизация": "", + "Заголовки": { + "X-Dummy": "${USERNAME}" + } } ] } diff --git a/tests/packagelist.os b/tests/packagelist.os index 0efa2a7..3680657 100644 --- a/tests/packagelist.os +++ b/tests/packagelist.os @@ -17,6 +17,9 @@ КонецФункции Процедура ПередЗапускомТеста() Экспорт + // Завязаны на основной хаб. + НастройкиOpm.СброситьНастройки(); + НастройкиOpm.ДобавитьСерверПакетов(СерверыПакетов.ОсновнойСервер()); КонецПроцедуры Процедура ПослеЗапускаТеста() Экспорт From 977aa148fc5b96b16ef83aadfc704898e021f3a4 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Sun, 9 Jun 2024 12:22:45 +0300 Subject: [PATCH 4/7] =?UTF-8?q?#216=20=D0=9F=D1=80=D0=B8=D0=BC=D0=B5=D1=80?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- tests/fixtures/opm-example.cfg | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 tests/fixtures/opm-example.cfg diff --git a/README.md b/README.md index d3945cc..a07f560 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ opm update -all ## Настройка прокси-сервера для скачивания пакетов -Настройка производится с помощью создания служебного файла [opm.cfg](./tests/fixtures/opm.cfg) данный файл настроек можно расположить по таким путям (список приведен в порядке убывания приоритета): +Настройка производится с помощью создания служебного файла [opm.cfg](./tests/fixtures/opm-example.cfg) данный файл настроек можно расположить по таким путям (список приведен в порядке убывания приоритета): - ```./opm.cfg``` - текущий каталог запуска + /opm.cfg - каталог настроек пользователя - linux: ```~/.opm.cfg```, **внимание файла должен называться с точкой ```.opm.cfg```** diff --git a/tests/fixtures/opm-example.cfg b/tests/fixtures/opm-example.cfg new file mode 100644 index 0000000..76d23b0 --- /dev/null +++ b/tests/fixtures/opm-example.cfg @@ -0,0 +1,32 @@ +{ + "Прокси": { + "ИспользоватьПрокси": false, + "ПроксиПоУмолчанию": false, + "Сервер": "", + "Порт": "", + "Пользователь": "", + "Пароль": "", + "ИспользоватьАутентификациюОС": false + }, + "СоздаватьShСкриптЗапуска": false, + "СервераПакетов": [ + { + "Имя":"defaultrepo", + "Сервер": "http://hub.oscript.io", + "Порт": 80, + "ПутьНаСервере":"/download/", + "РесурсПубликацииПакетов": "/push", + }, + { + "Имя":"mylocalhost", + "Сервер": "http://localhost", + "Порт": 8000, + "ПутьНаСервере":"/", + "Авторизация": "OAUTH_TOKEN ${OPM_OAUTH_TOKEN}", + "Заголовки": { + "X-Dummy": "${USERNAME}", + "Any-Header": "Any value with ${ENVIRONMENT_VARIABLE}" + } + } + ] +} From d09eb99340a095ee3f62c0faeb31777e1dfa0110 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Mon, 10 Jun 2024 13:04:51 +0300 Subject: [PATCH 5/7] =?UTF-8?q?#216=20=D0=97=D0=B0=D0=B3=D0=BE=D0=BB=D0=BE?= =?UTF-8?q?=D0=B2=D0=BA=D0=B8=20=D0=B4=D0=BB=D1=8F=20push?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\260\320\275\320\264\320\260Opm_Push.os" | 18 ++++++++- ...20\272\320\265\321\202\320\276\320\262.os" | 35 +---------------- ...207\320\265\320\275\320\270\321\217Opm.os" | 39 +++++++++++++++++++ 3 files changed, 56 insertions(+), 36 deletions(-) create mode 100644 "src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217Opm.os" diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Push.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Push.os" index 41b0ddb..713329c 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Push.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Push.os" @@ -145,12 +145,17 @@ // Для настроек по умолчанию Сервер = КонстантыOpm.СерверУдаленногоХранилища; Ресурс = КонстантыOpm.РесурсПубликацииПакетов; + Авторизация = Неопределено; + ДополнительныеЗаголовки = Неопределено; + Таймаут = 60; Для Каждого НастройкаСервера Из ДоступныеСервераПакетов Цикл Если СтрСравнить(НастройкаСервера.Имя, ИмяСервераПакетов) = 0 Тогда Сервер = НастройкаСервера.Сервер; Ресурс = НастройкаСервера.РесурсПубликацииПакетов; + Авторизация = НастройкаСервера.Авторизация; + ДополнительныеЗаголовки = НастройкаСервера.ДополнительныеЗаголовки; Прервать; КонецЕсли; @@ -160,11 +165,20 @@ Лог.Отладка("Ресурс = %1", Ресурс); Заголовки = Новый Соответствие(); - Заголовки.Вставить("OAUTH-TOKEN", ТокенАвторизации); + Если ЗначениеЗаполнено(Авторизация) Тогда + Заголовки.Вставить("Authorization", ОбщегоНазначенияOpm.ПрименитьПеременныеСреды(Авторизация)); + Иначе + Заголовки.Вставить("OAUTH-TOKEN", ТокенАвторизации); + КонецЕсли; Заголовки.Вставить("FILE-NAME", ФайлПакета.Имя); Заголовки.Вставить("CHANNEL", Канал); + Если ЗначениеЗаполнено(ДополнительныеЗаголовки) Тогда + Для Каждого мЗаголовок Из ДополнительныеЗаголовки Цикл + Заголовки.Вставить(мЗаголовок.Ключ, ОбщегоНазначенияOpm.ПрименитьПеременныеСреды(мЗаголовок.Значение)); + КонецЦикла; + КонецЕсли; - Соединение = Новый HTTPСоединение(Сервер); + Соединение = Новый HTTPСоединение(Сервер,,,,, Таймаут); Запрос = Новый HTTPЗапрос(Ресурс, Заголовки); Запрос.УстановитьТелоИзДвоичныхДанных(ДвоичныеДанныеФайла); diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" index df0051f..8c427a6 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" @@ -1,5 +1,3 @@ -#Использовать strings - Перем Лог; Перем Имя Экспорт; @@ -157,40 +155,9 @@ КонецПроцедуры Процедура ДобавитьЗаголовокКЗапросу(Знач Запрос, Знач Заголовок, Знач Значение) - Запрос.Заголовки.Вставить(Заголовок, ПрименитьПеременныеСреды(Значение)); + Запрос.Заголовки.Вставить(Заголовок, ОбщегоНазначенияOpm.ПрименитьПеременныеСреды(Значение)); КонецПроцедуры -Функция ПрименитьПеременныеСреды(Знач Значение) - ПеременныеСреды = КакМассив(ПеременныеСреды()); - Возврат ПрименитьПеременныеСредыШаг(Значение, ПеременныеСреды, 0); -КонецФункции - -Функция ПрименитьПеременныеСредыШаг(Знач Значение, Знач ПеременныеСреды, Знач Индекс) - - ПеременнаяИмя = СтрШаблон("${%1}", ПеременныеСреды[Индекс].Ключ); - Части = СтроковыеФункции.РазложитьСтрокуВМассивПодстрок(Значение, ПеременнаяИмя); - Если Индекс < ПеременныеСреды.Количество() - 1 Тогда - Для Инд = 0 По Части.ВГраница() Цикл - Части[Инд] = ПрименитьПеременныеСредыШаг(Части[Инд], ПеременныеСреды, Индекс + 1); - КонецЦикла; - КонецЕсли; - - Результат = СтрСоединить(Части, ПеременныеСреды[Индекс].Значение); - Возврат Результат; - -КонецФункции - -Функция КакМассив(Знач Соответствие) - - Массив = Новый Массив; - Для Каждого мКлючИЗанчение Из Соответствие Цикл - Массив.Добавить(мКлючИЗанчение); - КонецЦикла; - - Возврат Массив; - -КонецФункции - Функция НастройкаДляВыгрузки() Экспорт Результат = Новый Структура; diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217Opm.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217Opm.os" new file mode 100644 index 0000000..9d79b2d --- /dev/null +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217Opm.os" @@ -0,0 +1,39 @@ +#Использовать strings + +// Подставляет переменные среды в строку +// +// Параметры: +// Значение - Строка - Исходная строка. Подстроки вида ${ИМЯ_ПЕРЕМЕННОЙ} заменяются на значение переменной +// +// Возвращаемое значение: +// Строка - Строка с подставленными значениями переменных +Функция ПрименитьПеременныеСреды(Знач Значение) Экспорт + ПеременныеСреды = КакМассив(ПеременныеСреды()); + Возврат ПрименитьПеременныеСредыШаг(Значение, ПеременныеСреды, 0); +КонецФункции + +Функция ПрименитьПеременныеСредыШаг(Знач Значение, Знач ПеременныеСреды, Знач Индекс) + + ПеременнаяИмя = СтрШаблон("${%1}", ПеременныеСреды[Индекс].Ключ); + Части = СтроковыеФункции.РазложитьСтрокуВМассивПодстрок(Значение, ПеременнаяИмя); + Если Индекс < ПеременныеСреды.Количество() - 1 Тогда + Для Инд = 0 По Части.ВГраница() Цикл + Части[Инд] = ПрименитьПеременныеСредыШаг(Части[Инд], ПеременныеСреды, Индекс + 1); + КонецЦикла; + КонецЕсли; + + Результат = СтрСоединить(Части, ПеременныеСреды[Индекс].Значение); + Возврат Результат; + +КонецФункции + +Функция КакМассив(Знач Соответствие) + + Массив = Новый Массив; + Для Каждого мКлючИЗанчение Из Соответствие Цикл + Массив.Добавить(мКлючИЗанчение); + КонецЦикла; + + Возврат Массив; + +КонецФункции \ No newline at end of file From 1dfbcc3e785259ea3bf858a1d9841ceacc77bb00 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Thu, 13 Jun 2024 10:51:22 +0300 Subject: [PATCH 6/7] =?UTF-8?q?#216=20=D0=A2=D0=B0=D0=B9=D0=BC=D0=B0=D1=83?= =?UTF-8?q?=D1=82=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=D1=84=D0=B8=D0=B3.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...6\320\274\320\260\320\275\320\264\320\260Opm_Push.os" | 3 ++- ...7\320\260\320\272\320\265\321\202\320\276\320\262.os" | 9 +-------- ...7\320\260\320\272\320\265\321\202\320\276\320\262.os" | 6 ++++-- ...7\320\260\320\272\320\265\321\202\320\276\320\262.os" | 3 ++- 4 files changed, 9 insertions(+), 12 deletions(-) diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Push.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Push.os" index 713329c..9a91d73 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Push.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Push.os" @@ -147,7 +147,7 @@ Ресурс = КонстантыOpm.РесурсПубликацииПакетов; Авторизация = Неопределено; ДополнительныеЗаголовки = Неопределено; - Таймаут = 60; + Таймаут = 600; Для Каждого НастройкаСервера Из ДоступныеСервераПакетов Цикл @@ -156,6 +156,7 @@ Ресурс = НастройкаСервера.РесурсПубликацииПакетов; Авторизация = НастройкаСервера.Авторизация; ДополнительныеЗаголовки = НастройкаСервера.ДополнительныеЗаголовки; + Таймаут = НастройкаСервера.Таймаут; Прервать; КонецЕсли; diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\321\217\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\321\217\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" index 13e053c..046b48b 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\321\217\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\321\217\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" @@ -200,8 +200,7 @@ Для каждого НастройкаСервера Из СервераПакетов Цикл - ТекущийСерверПакетов = СоздатьСерверПакетовПоНастройке(НастройкаСервера); - ИндексСерверовПакетов.Вставить(НастройкаСервера.Имя, ТекущийСерверПакетов); + ИндексСерверовПакетов.Вставить(НастройкаСервера.Имя, НастройкаСервера); КонецЦикла; @@ -227,12 +226,6 @@ КонецФункции -Функция СоздатьСерверПакетовПоНастройке(Знач НастройкаСервера) - - Возврат НастройкаСервера; - -КонецФункции - Процедура ОбновитьИндексДоступныхПакетов() // Учесть версии пакетов diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" index 8c427a6..e412030 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" @@ -9,12 +9,13 @@ Перем РесурсПубликацииПакетов Экспорт; Перем Авторизация Экспорт; Перем ДополнительныеЗаголовки Экспорт; +Перем Таймаут Экспорт; Перем ПакетыХаба; Процедура ПриСозданииОбъекта(Знач ИмяСервера, Знач АдресСервер, Знач ВходящийПутьНаСервере = "", Знач ВходящийРесурсПубликацииПакетов = "", Знач ВходящийПорт = 80, Знач ВходящийПриоритет = 0, - Знач ВходящаяАвторизация = Неопределено, Знач Заголовки = Неопределено) + Знач ВходящаяАвторизация = Неопределено, Знач Заголовки = Неопределено, Знач ВходящийТаймаут = 60) Имя = ИмяСервера; Сервер = АдресСервер; @@ -24,6 +25,7 @@ РесурсПубликацииПакетов = ВходящийРесурсПубликацииПакетов; Авторизация = ВходящаяАвторизация; ДополнительныеЗаголовки = Заголовки; + Таймаут = ВходящийТаймаут; КонецПроцедуры @@ -43,7 +45,6 @@ Порт = ?(Порт = Неопределено, 80, Порт); Настройки = НастройкиOpm.ПолучитьНастройки(); - Таймаут = 60; Если Настройки.ИспользоватьПрокси Тогда НастройкиПрокси = НастройкиOpm.ПолучитьИнтернетПрокси(); Соединение = Новый HTTPСоединение(Сервер, Порт, , , НастройкиПрокси, Таймаут); @@ -166,6 +167,7 @@ Результат.Вставить("ПутьНаСервере", ПутьНаСервере); Результат.Вставить("РесурсПубликацииПакетов", РесурсПубликацииПакетов); Результат.Вставить("Порт", Порт); + Результат.Вставить("Таймаут", Таймаут); Результат.Вставить("Авторизация", Авторизация); Результат.Вставить("Заголовки", ДополнительныеЗаголовки); Результат.Вставить("Приоритет", Приоритет); diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\265\321\200\320\262\320\265\321\200\321\213\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\265\321\200\320\262\320\265\321\200\321\213\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" index 45e93c9..fe3a432 100644 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\265\321\200\320\262\320\265\321\200\321\213\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\265\321\200\320\262\320\265\321\200\321\213\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" @@ -9,13 +9,14 @@ Приоритет = Число(ПолучитьЗначение(ТекущийСерверПакетов, "Приоритет", 0)); Авторизация = ПолучитьЗначение(ТекущийСерверПакетов, "Авторизация", ""); ДополнительныеЗаголовки = ПолучитьЗначение(ТекущийСерверПакетов, "Заголовки", Новый Соответствие); + Таймаут = ПолучитьЗначение(ТекущийСерверПакетов, "Таймаут", 600); Если ПустаяСтрока(Сервер) Тогда ВызватьИсключение СтрШаблон("Для сервера <%1> не задан адрес", Индекс); КонецЕсли; СерверПакетов = Новый СерверПакетов(Имя, Сервер, ПутьНаСервере, РесурсПубликацииПакетов, - Порт, Приоритет, Авторизация, ДополнительныеЗаголовки + Порт, Приоритет, Авторизация, ДополнительныеЗаголовки, Таймаут ); Возврат СерверПакетов; From 2d0eee28d1c04b8a1adf0b764f70e00131253038 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Thu, 13 Jun 2024 11:09:52 +0300 Subject: [PATCH 7/7] =?UTF-8?q?#216=20=D0=A2=D0=B0=D0=B9=D0=BC=D0=B0=D1=83?= =?UTF-8?q?=D1=82=20=D0=B2=20=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D1=80=D0=B5=20?= =?UTF-8?q?opm.cfg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/fixtures/opm-example.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/fixtures/opm-example.cfg b/tests/fixtures/opm-example.cfg index 76d23b0..f4bf635 100644 --- a/tests/fixtures/opm-example.cfg +++ b/tests/fixtures/opm-example.cfg @@ -21,6 +21,7 @@ "Имя":"mylocalhost", "Сервер": "http://localhost", "Порт": 8000, + "Таймаут": 600, "ПутьНаСервере":"/", "Авторизация": "OAUTH_TOKEN ${OPM_OAUTH_TOKEN}", "Заголовки": {