Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
707b425
накидал провайдер параметров Vault
Jun 25, 2025
f2e7719
получение данных из волта работает
Jun 26, 2025
88a985d
чуток добавил доку
Jun 26, 2025
e50f298
Новая версия
Golovanoff Aug 24, 2025
627d314
Сделал Лог.Ошибка, если не указан адрес сервера vault.
Golovanoff Aug 24, 2025
8111197
Указал зависимость от версии коннектора
Golovanoff Aug 24, 2025
87c8053
накидал - не работает, ругается на КоннекторHTTPСлужебный и реально п…
Aug 24, 2025
5dd3115
тесты работают в отладке, но сыпят странным при opm test
Oct 31, 2025
ce5d5a3
это было лишнее
Oct 31, 2025
8d610c4
вернул текущий каталог, поправил очепятку
Nov 1, 2025
9924e7a
рабочий вариант
Nov 3, 2025
db67ba5
поправил зависимости, замечания. нет обработки ошибок HTTP
Nov 3, 2025
0cadaad
добавил логирование ответа HTTP и ошибок от волта
Nov 4, 2025
ab9c1f1
Merge pull request #1 from Golovanoff/Тесты_на_vault
Golovanoff Nov 4, 2025
973be2d
* Поднята зависимости от 1connector до требуемой
sfaqer Nov 4, 2025
0a826bf
* Переделано ожидание запуска вина, вместо константного ожидания отпр…
sfaqer Nov 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,24 @@

Сообщить(ПроксиСервер);

```
* Чтение параметров из vault
```bsl

НастройкиVault = Новый Структура;
НастройкиVault.Вставить("Адрес", "https://vault.server.local");
НастройкиVault.Вставить("Токен", ПолучитьПеременнуюСреды("VAULT_TOKEN"));
НастройкиVault.Вставить("Запрос", "v1/my_secret_store/super_secret");

МенеджерПараметров = Новый МенеджерПараметров();
МенеджерПараметров.ИспользоватьПровайдерVAULT();
МенеджерПараметров.УстановитьНастройкиVault(НастройкиVault);
МенеджерПараметров.Прочитать();

ПроксиСервер = МенеджерПараметров.Параметр("Настройки.Глобальные.НастройкиПрокси.Сервер")

Сообщить(ПроксиСервер);

```

* Чтения параметров через конструктор параметров
Expand Down
3 changes: 2 additions & 1 deletion packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
//

Описание.Имя("configor")
.Версия("0.9.1")
.Версия("0.9.2")
.Автор("Khorev Aleksey")
.АдресАвтора("[email protected]")
.Описание("Библиотека для работы с конфигурационными файлами в формате json, yaml")
Expand All @@ -18,6 +18,7 @@
.ЗависитОт("fluent", "0.6.0")
.ЗависитОт("notify", "0.2.0")
.ЗависитОт("tempfiles")
.ЗависитОт("1connector")
.ЗависитОт("reflector", "0.3.1")
.РазработкаЗависитОт("coverage", "0.6.1")
.РазработкаЗависитОт("1testrunner", "1.8.0")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@

Перем Адрес; // Строка
Перем Токен; // Строка
Перем Запрос; // Строка

#Область Публичное_API

// Устанавливает путь к корню API
//
// Параметры:
// АдресАпи - Строка - URL сервера + корень API
//
// Возвращаемое значение:
// Объект.НастройкиПровайдераVault - ссылка на текущий элемент класса <НастройкиПровайдераVault>
//
Функция УстановитьАдрес(Знач АдресАпи) Экспорт
Адрес = АдресАпи;
Возврат ЭтотОбъект;
КонецФункции

// Устанавливает токен авторизации
//
// Параметры:
// ТокенАвторизации - Строка - токен авторизации
//
// Возвращаемое значение:
// Объект.НастройкиПровайдераVault - ссылка на текущий элемент класса <НастройкиПровайдераVault>
//
Функция УстановитьТокен(Знач ТокенАвторизации) Экспорт
Токен = ТокенАвторизации;
Возврат ЭтотОбъект;
КонецФункции

// Устанавливает путь к корню API
//
// Параметры:
// УРЛЗапроса - Строка - URL запроса данных vault
//
// Возвращаемое значение:
// Объект.НастройкиПровайдераVault - ссылка на текущий элемент класса <НастройкиПровайдераVault>
//
Функция УстановитьЗапрос(Знач УРЛЗапроса) Экспорт
Запрос = УРЛЗапроса;
Возврат ЭтотОбъект;
КонецФункции

// Возвращает структуру настроек провайдера
//
// Возвращаемое значение:
// Структура - подготовленная структура настроек для файловых провайдеров
// * Адрес - Строка - путь к API
// * Токен - Строка - токен авторизации
// * Запрос - Строка - путь к данным vault
//
Функция ПолучитьНастройки() Экспорт

Настройка = Новый Структура();
Настройка.Вставить("Адрес", Адрес);
Настройка.Вставить("Токен", Токен);
Настройка.Вставить("Запрос", Запрос);

Возврат Настройка;
КонецФункции

#КонецОбласти

#Область Вспомогательные_процедуры_и_функции

#КонецОбласти
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,10 @@

КонецФункции

Функция ЭтоПровайдерVault() Экспорт
Возврат ВРег(ТипПровайдера) = ВРег("vault");
КонецФункции

Процедура ПриСозданииОбъекта(Знач ВходящийКлассПровайдера)

ИнтерфейсПровайдера = Новый ИнтерфейсОбъекта;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
#Использовать asserts
#Использовать logos
#Использовать 1connector

Перем Лог;

#Область ПрограммныйИнтерфейс

// Возвращает приоритет провайдера
//
// Возвращаемое значение:
// Число - текущий приоритет провайдера
//
Функция Приоритет() Экспорт
Возврат 1;
КонецФункции

// Возвращает идентификатор провайдера
//
// Возвращаемое значение:
// Строка - текущий идентификатор провайдера
//
Функция Идентификатор() Экспорт
Возврат "vault";
КонецФункции

// Возвращает тип провайдера
//
// Возвращаемое значение:
// Строка - текущий тип провайдера
//
Функция ТипПровайдера() Экспорт
Возврат "vault";
КонецФункции

// Выполняет чтение параметров для провайдера
//
// Параметры:
// НастройкиПровайдера - Структура - структура настроек провайдера
//
// Возвращаемое значение:
// Соответствие - результат чтения провайдера
//
Функция ПрочитатьПараметры(Знач НастройкиПровайдера) Экспорт

ПрочитанныеПараметры = Новый Соответствие;

Адрес = НастройкиПровайдера.Адрес;
Токен = НастройкиПровайдера.Токен;
Запрос = НастройкиПровайдера.Запрос;

Если Не ЗначениеЗаполнено(Адрес) Тогда
Лог.Отладка("Не указан адрес сервера. Чтение невозможно");
Возврат ПрочитанныеПараметры;
КонецЕсли;

Лог.Отладка("Выполняю чтение файла параметров из <%1>/%2", Адрес, Запрос);
ПрочитанныеПараметры = Прочитать(Адрес, Токен, Запрос);

Возврат ПрочитанныеПараметры;
КонецФункции

#КонецОбласти

// Выполнить чтение настроек из vault
//
// Параметры:
// Адрес - Cтрока - URL сервера vault
// Токен - Cтрока - токен авторизации
// Запрос - Cтрока - путь к данным vault
// Возвращаемое значение:
// Соответствие - итоговые параметры
//
Функция Прочитать(Знач Адрес, Знач Токен, Знач Запрос)

Настройки = Новый Соответствие;

Попытка

URL = СтрШаблон("%1/%2", Адрес, Запрос);

Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен));

ДопПараметры = Новый Структура("Заголовки", Заголовки);

Настройки = КоннекторHTTP.Get(URL, , ДопПараметры).Json()["data"];

Лог.Отладка("Итоговые параметры:");
ПоказатьПараметрыВРежимеОтладки(Настройки);

Исключение

Лог.Ошибка("Ошибка чтения настроек
|%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));

ВызватьИсключение;

КонецПопытки;

Возврат Настройки;

КонецФункции

Процедура ПоказатьПараметрыВРежимеОтладки(ЗначенияПараметров)

ПроцессорВывода = Новый ВыводВРежимеОтладки(Лог);
ПроцессорВывода.ПоказатьНастройкиВРежимеОтладки(ЗначенияПараметров);

КонецПроцедуры

Лог = Логирование.ПолучитьЛог("oscript.lib.configor.vault");
43 changes: 41 additions & 2 deletions src/Классы/МенеджерПараметров.os
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
Перем ПровайдерыПараметров; // Соответствие

Перем НастройкаФайловогоПровайдера; // Класс НастройкиФайловогоПровайдера
Перем НастройкаПровайдераVault; // Класс НастройкиПровайдераVault

Перем ИнтерфейсПриемника; // Класс ИнтерфейсОбъекта

Expand Down Expand Up @@ -112,6 +113,20 @@

КонецПроцедуры

// Устанавливает настройки провайдера параметров
//
// Параметры:
// Настройки - Структура - настройки провайдера
//
Процедура УстановитьНастройкиVault(Знач Настройки) Экспорт

НастройкаПровайдераVault = ПолучитьНастройкуПровайдераVault();

НастройкаПровайдераVault.УстановитьАдрес(Настройки.Сервер)
.УстановитьТокен(Настройки.Токен)
.УстановитьЗапрос(Настройки.Запрос);
КонецПроцедуры

// Добавляет в таблицу провайдеров произвольный класс-провайдер
//
// Параметры:
Expand Down Expand Up @@ -180,6 +195,17 @@

КонецПроцедуры

// Добавляет и включает встроенный провайдер VAULT
//
// Параметры:
// Приоритет - Число - Числовой приоритет выполнения провайдеры (по умолчанию 0)
//
Процедура ИспользоватьПровайдерVAULT(Знач Приоритет = 0) Экспорт

ДобавитьПровайдерПараметров(Новый ПровайдерПараметровVAULT, Приоритет);

КонецПроцедуры

// Производит автоматическую настройку провайдеров
//
// Параметры:
Expand Down Expand Up @@ -324,9 +350,12 @@

ИдентификаторПровайдера = КлассПровайдера.Идентификатор;

ПараметрыПровайдера = Новый Структура;
Если КлассПровайдера.ЭтоФайловыйПровайдер() Тогда
ПараметрыПровайдера = ПолучитьНастройкуФайловогоПровайдера().ПолучитьНастройки();
ИначеЕсли КлассПровайдера.ЭтоПровайдерVault() Тогда
ПараметрыПровайдера = ПолучитьНастройкуПровайдераVault().ПолучитьНастройки();
Иначе
ПараметрыПровайдера = Новый Структура;
КонецЕсли;

Попытка
Expand Down Expand Up @@ -419,6 +448,16 @@

КонецФункции

Функция ПолучитьНастройкуПровайдераVault()

Если НастройкаПровайдераVault = Неопределено Тогда
НастройкаПровайдераVault = Новый НастройкиПровайдераVault;
КонецЕсли;

Возврат НастройкаПровайдераVault;

КонецФункции

#КонецОбласти

#Область Инициализация
Expand Down Expand Up @@ -450,4 +489,4 @@

#КонецОбласти

Лог = Логирование.ПолучитьЛог("oscript.lib.configor");
Лог = Логирование.ПолучитьЛог("oscript.lib.configor");