You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-10 22:41:43 +02:00
Начало прокси
This commit is contained in:
13764
service/dictionaries/en.json
vendored
13764
service/dictionaries/en.json
vendored
File diff suppressed because it is too large
Load Diff
67
src/en/cli/core/Classes/app.os
vendored
67
src/en/cli/core/Classes/app.os
vendored
@@ -1,8 +1,10 @@
|
||||
#Использовать cmdline
|
||||
#Использовать oint
|
||||
// #Использовать oint
|
||||
#Использовать "../../../OInt"
|
||||
#Использовать "../../tools"
|
||||
#Использовать "../../help"
|
||||
#Использовать "../../data"
|
||||
#Использовать "internal"
|
||||
|
||||
Перем Версия; // Версия программы
|
||||
Перем Отладка; // Флаг вывода отладочной информации
|
||||
@@ -125,7 +127,7 @@
|
||||
Справка.ВывестиСправкуПоПараметрам(ПараметрыМетода);
|
||||
КонецЕсли;
|
||||
|
||||
ТекстВыполнения = СформироватьСтрокуВызоваМетода(Параметры, ПараметрыМетода, Модуль, Метод);
|
||||
ТекстВыполнения = ОбработкаКоманд.СформироватьСтрокуВызоваМетода(Параметры, ПараметрыМетода, Модуль, Метод);
|
||||
|
||||
Если Отладка Или Тестирование Тогда
|
||||
Сообщить(ТекстВыполнения, СтатусСообщения.Внимание);
|
||||
@@ -174,55 +176,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СформироватьСтрокуВызоваМетода(Знач ПереданныеПараметры, Знач ПараметрыМетода, Знач Модуль, Знач Метод)
|
||||
|
||||
ТекстВыполнения = "";
|
||||
СтрокаВызова = Модуль + "." + Метод + "(";
|
||||
Счетчик = 0;
|
||||
|
||||
Для Каждого НеобходимыйПараметр Из ПараметрыМетода Цикл
|
||||
|
||||
ИмяПараметра = НеобходимыйПараметр.Параметр;
|
||||
ЗначениеПараметра = ПереданныеПараметры.Получить(ИмяПараметра);
|
||||
|
||||
Если ЗначениеЗаполнено(ЗначениеПараметра) Тогда
|
||||
|
||||
ИмяПараметра = "Параметр" + СтрЗаменить(ИмяПараметра, "--", "_");
|
||||
|
||||
ТекстВыполнения = ТекстВыполнения
|
||||
+ Символы.ПС
|
||||
+ ИмяПараметра
|
||||
+ " = """
|
||||
+ СтрЗаменить(ЗначениеПараметра, """", """""")
|
||||
+ """;";
|
||||
|
||||
Если ТребуетсяОбработкаУправляющихПоследовательностей(ИмяПараметра, ЗначениеПараметра) Тогда
|
||||
|
||||
ТекстВыполнения = ТекстВыполнения + "
|
||||
|OPI_Tools.ReplaceEscapeSequences(" + ИмяПараметра + ");
|
||||
|";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
СтрокаВызова = СтрокаВызова + ИмяПараметра + ", ";
|
||||
Счетчик = Счетчик + 1;
|
||||
|
||||
Иначе
|
||||
СтрокаВызова = СтрокаВызова + " , ";
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ЛишниеСимволы = 2;
|
||||
СтрокаВызова = Лев(СтрокаВызова, СтрДлина(СтрокаВызова) - ЛишниеСимволы);
|
||||
СтрокаВызова = СтрокаВызова + ");";
|
||||
СтрокаВызова = "Ответ = " + СтрокаВызова;
|
||||
ТекстВыполнения = ТекстВыполнения + Символы.ПС + СтрокаВызова;
|
||||
|
||||
Возврат ТекстВыполнения;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура УстановитьРежимОтладки(Знач Параметры)
|
||||
|
||||
Если Параметры["--debug"] Тогда
|
||||
@@ -354,18 +307,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТребуетсяОбработкаУправляющихПоследовательностей(Знач ИмяПараметра, Знач ЗначениеПараметра)
|
||||
|
||||
ФайлПараметра = Новый Файл(ЗначениеПараметра);
|
||||
ЗначениеПараметраСокр = СокрЛП(ЗначениеПараметра);
|
||||
|
||||
Возврат Не СтрНачинаетсяС(ЗначениеПараметраСокр, "{")
|
||||
И Не СтрНачинаетсяС(ЗначениеПараметраСокр, "[")
|
||||
И Не ФайлПараметра.Существует()
|
||||
И Не ИмяПараметра = "Параметр_out";
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
60
src/en/cli/core/Classes/internal/Modules/ОбработкаКоманд.os
vendored
Normal file
60
src/en/cli/core/Classes/internal/Modules/ОбработкаКоманд.os
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
Функция СформироватьСтрокуВызоваМетода(Знач ПереданныеПараметры, Знач ПараметрыМетода, Знач Модуль, Знач Метод) Экспорт
|
||||
|
||||
ТекстВыполнения = "";
|
||||
СтрокаВызова = Модуль + "." + Метод + "(";
|
||||
Счетчик = 0;
|
||||
|
||||
Для Каждого НеобходимыйПараметр Из ПараметрыМетода Цикл
|
||||
|
||||
ИмяПараметра = НеобходимыйПараметр.Параметр;
|
||||
ЗначениеПараметра = ПереданныеПараметры.Получить(ИмяПараметра);
|
||||
|
||||
Если ЗначениеЗаполнено(ЗначениеПараметра) Тогда
|
||||
|
||||
ИмяПараметра = "Параметр" + СтрЗаменить(ИмяПараметра, "--", "_");
|
||||
|
||||
ТекстВыполнения = ТекстВыполнения
|
||||
+ Символы.ПС
|
||||
+ ИмяПараметра
|
||||
+ " = """
|
||||
+ СтрЗаменить(ЗначениеПараметра, """", """""")
|
||||
+ """;";
|
||||
|
||||
Если ТребуетсяОбработкаУправляющихПоследовательностей(ИмяПараметра, ЗначениеПараметра) Тогда
|
||||
|
||||
ТекстВыполнения = ТекстВыполнения + "
|
||||
|OPI_Инструменты.ЗаменитьУправляющиеПоследовательности(" + ИмяПараметра + ");
|
||||
|";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
СтрокаВызова = СтрокаВызова + ИмяПараметра + ", ";
|
||||
Счетчик = Счетчик + 1;
|
||||
|
||||
Иначе
|
||||
СтрокаВызова = СтрокаВызова + " , ";
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ЛишниеСимволы = 2;
|
||||
СтрокаВызова = Лев(СтрокаВызова, СтрДлина(СтрокаВызова) - ЛишниеСимволы);
|
||||
СтрокаВызова = СтрокаВызова + ");";
|
||||
СтрокаВызова = "Ответ = " + СтрокаВызова;
|
||||
ТекстВыполнения = ТекстВыполнения + Символы.ПС + СтрокаВызова;
|
||||
|
||||
Возврат ТекстВыполнения;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТребуетсяОбработкаУправляющихПоследовательностей(Знач ИмяПараметра, Знач ЗначениеПараметра)
|
||||
|
||||
ФайлПараметра = Новый Файл(ЗначениеПараметра);
|
||||
ЗначениеПараметраСокр = СокрЛП(ЗначениеПараметра);
|
||||
|
||||
Возврат Не СтрНачинаетсяС(ЗначениеПараметраСокр, "{")
|
||||
И Не СтрНачинаетсяС(ЗначениеПараметраСокр, "[")
|
||||
И Не ФайлПараметра.Существует()
|
||||
И Не ИмяПараметра = "Параметр_out";
|
||||
|
||||
КонецФункции
|
45
src/en/cli/data/Classes/internal/Classes/proxy.os
vendored
Normal file
45
src/en/cli/data/Classes/internal/Classes/proxy.os
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
Function ПолучитьСостав() Export
|
||||
|
||||
CompositionTable = New ValueTable();
|
||||
CompositionTable.Columns.Add("Библиотека");
|
||||
CompositionTable.Columns.Add("Модуль");
|
||||
CompositionTable.Columns.Add("Метод");
|
||||
CompositionTable.Columns.Add("МетодПоиска");
|
||||
CompositionTable.Columns.Add("Параметр");
|
||||
CompositionTable.Columns.Add("Описание");
|
||||
CompositionTable.Columns.Add("ОписаниеМетода");
|
||||
CompositionTable.Columns.Add("Область");
|
||||
|
||||
NewLine = CompositionTable.Add();
|
||||
NewLine.Библиотека = "proxy";
|
||||
NewLine.Модуль = "ПроtowithandHost";
|
||||
NewLine.Метод = "Start";
|
||||
NewLine.МетодПоиска = "ЗАПУСТAndТЬ";
|
||||
NewLine.Параметр = "--port";
|
||||
NewLine.Описание = "Servers port";
|
||||
NewLine.Область = "Service";
|
||||
NewLine.ОписаниеМетода = "Launches integration proxy server";
|
||||
|
||||
|
||||
NewLine = CompositionTable.Add();
|
||||
NewLine.Библиотека = "proxy";
|
||||
NewLine.Модуль = "ПроtowithandHost";
|
||||
NewLine.Метод = "Start";
|
||||
NewLine.МетодПоиска = "ЗАПУСТAndТЬ";
|
||||
NewLine.Параметр = "--proj";
|
||||
NewLine.Описание = "Project filepath";
|
||||
NewLine.Область = "Service";
|
||||
|
||||
|
||||
NewLine = CompositionTable.Add();
|
||||
NewLine.Библиотека = "proxy";
|
||||
NewLine.Модуль = "ПроtowithandHost";
|
||||
NewLine.Метод = "Start";
|
||||
NewLine.МетодПоиска = "ЗАПУСТAndТЬ";
|
||||
NewLine.Параметр = "--pass";
|
||||
NewLine.Описание = "Project password";
|
||||
NewLine.Область = "Service";
|
||||
|
||||
Return CompositionTable;
|
||||
EndFunction
|
||||
|
1
src/en/cli/data/Classes/СоставБиблиотеки.os
vendored
1
src/en/cli/data/Classes/СоставБиблиотеки.os
vendored
@@ -6,6 +6,7 @@
|
||||
|
||||
Функция ПолучитьСоответствиеКомандМодулей() Экспорт
|
||||
СоответствиеКомандМодулей = Новый Соответствие();
|
||||
СоответствиеКомандМодулей.Вставить("proxy", "ПроксиСервер");
|
||||
СоответствиеКомандМодулей.Вставить("tools", "Утилиты");
|
||||
СоответствиеКомандМодулей.Вставить("airtable", "OPI_Airtable");
|
||||
СоответствиеКомандМодулей.Вставить("bitrix24", "OPI_Bitrix24");
|
||||
|
3
src/en/cli/tools/Modules/internal/Classes/ОбработчикЗапросов.os
vendored
Normal file
3
src/en/cli/tools/Modules/internal/Classes/ОбработчикЗапросов.os
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
Процедура ОсновнаяОбработка(Контекст, СледующийОбработчик) Экспорт
|
||||
|
||||
КонецПроцедуры
|
34
src/en/cli/tools/Modules/ПроксиСервер.os
vendored
Normal file
34
src/en/cli/tools/Modules/ПроксиСервер.os
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
// CLI: proxy
|
||||
|
||||
#Использовать "internal"
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
// Запустить
|
||||
// Запускает прокси сервер интеграций
|
||||
//
|
||||
// Параметры:
|
||||
// Порт - Число - Порт запуска сервера - port
|
||||
// Проект - Строка - Путь к файлу проекта - proj
|
||||
// Пароль - Строка - Пароль проекта - pass
|
||||
// Возвращаемое значение:
|
||||
// Строка - пустая строка
|
||||
Функция Запустить(Знач Порт, Знач Проект, Знач Пароль) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьЧисло(Порт);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Проект);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль);
|
||||
|
||||
ВебСервер = Новый ВебСервер(Порт);
|
||||
Обработчик = Новый ОбработчикЗапросов();
|
||||
|
||||
ВебСервер.ДобавитьОбработчикЗапросов(Обработчик, "ОсновнаяОбработка");
|
||||
ВебСервер.Запустить();
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#КонецОбласти
|
@@ -1,5 +1,6 @@
|
||||
#Использовать cmdline
|
||||
#Использовать oint
|
||||
// #Использовать oint
|
||||
#Использовать "../../../OInt"
|
||||
#Использовать "../../tools"
|
||||
#Использовать "../../help"
|
||||
#Использовать "../../data"
|
||||
|
45
src/ru/cli/data/Classes/internal/Classes/proxy.os
Normal file
45
src/ru/cli/data/Classes/internal/Classes/proxy.os
Normal file
@@ -0,0 +1,45 @@
|
||||
Функция ПолучитьСостав() Экспорт
|
||||
|
||||
ТаблицаСостава = Новый ТаблицаЗначений();
|
||||
ТаблицаСостава.Колонки.Добавить("Библиотека");
|
||||
ТаблицаСостава.Колонки.Добавить("Модуль");
|
||||
ТаблицаСостава.Колонки.Добавить("Метод");
|
||||
ТаблицаСостава.Колонки.Добавить("МетодПоиска");
|
||||
ТаблицаСостава.Колонки.Добавить("Параметр");
|
||||
ТаблицаСостава.Колонки.Добавить("Описание");
|
||||
ТаблицаСостава.Колонки.Добавить("ОписаниеМетода");
|
||||
ТаблицаСостава.Колонки.Добавить("Область");
|
||||
|
||||
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||
НоваяСтрока.Библиотека = "proxy";
|
||||
НоваяСтрока.Модуль = "ПроксиСервер";
|
||||
НоваяСтрока.Метод = "Запустить";
|
||||
НоваяСтрока.МетодПоиска = "ЗАПУСТИТЬ";
|
||||
НоваяСтрока.Параметр = "--port";
|
||||
НоваяСтрока.Описание = "Порт запуска сервера";
|
||||
НоваяСтрока.Область = "Служебный программный интерфейс";
|
||||
НоваяСтрока.ОписаниеМетода = "Запускает прокси сервер интеграций";
|
||||
|
||||
|
||||
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||
НоваяСтрока.Библиотека = "proxy";
|
||||
НоваяСтрока.Модуль = "ПроксиСервер";
|
||||
НоваяСтрока.Метод = "Запустить";
|
||||
НоваяСтрока.МетодПоиска = "ЗАПУСТИТЬ";
|
||||
НоваяСтрока.Параметр = "--proj";
|
||||
НоваяСтрока.Описание = "Путь к файлу проекта";
|
||||
НоваяСтрока.Область = "Служебный программный интерфейс";
|
||||
|
||||
|
||||
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||
НоваяСтрока.Библиотека = "proxy";
|
||||
НоваяСтрока.Модуль = "ПроксиСервер";
|
||||
НоваяСтрока.Метод = "Запустить";
|
||||
НоваяСтрока.МетодПоиска = "ЗАПУСТИТЬ";
|
||||
НоваяСтрока.Параметр = "--pass";
|
||||
НоваяСтрока.Описание = "Пароль проекта";
|
||||
НоваяСтрока.Область = "Служебный программный интерфейс";
|
||||
|
||||
Возврат ТаблицаСостава;
|
||||
КонецФункции
|
||||
|
@@ -6,6 +6,7 @@
|
||||
|
||||
Функция ПолучитьСоответствиеКомандМодулей() Экспорт
|
||||
СоответствиеКомандМодулей = Новый Соответствие();
|
||||
СоответствиеКомандМодулей.Вставить("proxy", "ПроксиСервер");
|
||||
СоответствиеКомандМодулей.Вставить("tools", "Утилиты");
|
||||
СоответствиеКомандМодулей.Вставить("airtable", "OPI_Airtable");
|
||||
СоответствиеКомандМодулей.Вставить("bitrix24", "OPI_Bitrix24");
|
||||
|
@@ -0,0 +1,8 @@
|
||||
Процедура ОбработатьМеню(Контекст) Экспорт
|
||||
|
||||
Контекст.Ответ.Записать("
|
||||
|<li hx-get=""/api/content/1"" hx-target=""#content"">Action 1</li>
|
||||
|<li hx-get=""/api/content/2"" hx-target=""#content"">Action 2</li>
|
||||
|<li hx-get=""/api/content/3"" hx-target=""#content"">Action 3</li>");
|
||||
|
||||
КонецПроцедуры
|
@@ -0,0 +1,33 @@
|
||||
Процедура ВернутьСтатику(Контекст, ПутьКФайлу) Экспорт
|
||||
|
||||
ПутьКФайлуСтатики = КаталогСтатики() + ПутьКФайлу;
|
||||
ФайлСтатики = Новый Файл(ПутьКФайлуСтатики);
|
||||
|
||||
Если ФайлСтатики.Существует() Тогда
|
||||
Данные = Новый ФайловыйПоток(ПутьКФайлуСтатики, РежимОткрытияФайла.Открыть);
|
||||
Данные.КопироватьВ(Контекст.Ответ.Тело);
|
||||
Данные.Закрыть();
|
||||
Иначе
|
||||
Контекст.Ответ.КодСостояния = 404;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция КаталогСтатики()
|
||||
|
||||
КаталогОбработчика = СтрЗаменить(ТекущийСценарий().Каталог, "\", "/");
|
||||
|
||||
ЭлементыПути = СтрРазделить(КаталогОбработчика, "/");
|
||||
|
||||
Для Н = 1 По 6 Цикл
|
||||
ЭлементыПути.Удалить(ЭлементыПути.ВГраница());
|
||||
КонецЦикла;
|
||||
|
||||
ЭлементыПути.Добавить("web");
|
||||
|
||||
ПутьСтатики = СтрСоединить(ЭлементыПути, "/");
|
||||
ПутьСтатики = ПутьСтатики + "/";
|
||||
|
||||
Возврат ПутьСтатики;
|
||||
|
||||
КонецФункции
|
@@ -1,3 +1,34 @@
|
||||
#Использовать "internal"
|
||||
|
||||
Процедура ОсновнаяОбработка(Контекст, СледующийОбработчик) Экспорт
|
||||
|
||||
КонецПроцедуры
|
||||
Попытка
|
||||
ОбработатьЗапрос(Контекст);
|
||||
Исключение
|
||||
Контекст.Ответ.КодСостояния = 500;
|
||||
Контекст.Ответ.Записать(ОписаниеОшибки());
|
||||
КонецПопытки
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработатьЗапрос(Контекст)
|
||||
|
||||
Путь = Контекст.Запрос.Путь;
|
||||
|
||||
Если Путь = "/web" Тогда
|
||||
|
||||
Статика.ВернутьСтатику(Контекст, "index.html");
|
||||
|
||||
ИначеЕсли Путь = "/api/menu" Тогда
|
||||
|
||||
Меню.ОбработатьМеню(Контекст);
|
||||
|
||||
Иначе
|
||||
|
||||
Контекст.Ответ.КодСостояния = 404;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
|
@@ -1,19 +1,16 @@
|
||||
// CLI: proxy
|
||||
|
||||
#Использовать "internal"
|
||||
#Использовать "oint"
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
// Разложить JSON на параметры
|
||||
// Показывает значения, которые можно получить из переданного JSON и возвращает
|
||||
// Запустить
|
||||
// Запускает прокси сервер интеграций
|
||||
//
|
||||
// Параметры:
|
||||
// JSON - Строка - JSON данные - json
|
||||
// МаксимальныйУровеньВложенности - Число - Ограничение на ур. вложенности разбора. На всю глубину по умолчанию - nesting
|
||||
// ИмяПараметра - Строка - Имя поля для получения. Выводит весь список, если не указано - name
|
||||
// Кодировка - Строка - Кодировка, в которой записаны JSON данные - enc
|
||||
//
|
||||
// Порт - Число - Порт запуска сервера - port
|
||||
// Проект - Строка - Путь к файлу проекта - proj
|
||||
// Пароль - Строка - Пароль проекта - pass
|
||||
// Возвращаемое значение:
|
||||
// Строка - пустая строка
|
||||
Функция Запустить(Знач Порт, Знач Проект, Знач Пароль) Экспорт
|
||||
|
59
src/ru/cli/web/index.html
Normal file
59
src/ru/cli/web/index.html
Normal file
@@ -0,0 +1,59 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>GitHub Actions Interface with HTMX</title>
|
||||
<script src="https://unpkg.com/htmx.org@1.9.10"></script>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
height: 100vh;
|
||||
}
|
||||
.sidebar {
|
||||
width: 200px;
|
||||
background-color: #f4f4f4;
|
||||
padding: 20px;
|
||||
box-shadow: 2px 0 5px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.sidebar ul {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
}
|
||||
.sidebar ul li {
|
||||
margin: 15px 0;
|
||||
cursor: pointer;
|
||||
color: #0366d6;
|
||||
}
|
||||
.sidebar ul li:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.main-content {
|
||||
flex-grow: 1;
|
||||
padding: 20px;
|
||||
background-color: #fff;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Боковое меню -->
|
||||
<div class="sidebar">
|
||||
<ul id="menu" hx-get="/api/menu" hx-trigger="load">
|
||||
<!-- Пункты меню будут загружены сюда -->
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Основная область -->
|
||||
<div class="main-content" id="content">
|
||||
<!-- Рабочая область будет обновляться здесь -->
|
||||
</div>
|
||||
|
||||
<!-- Шаблон для пунктов меню -->
|
||||
<template id="menu-item-template">
|
||||
<li hx-get="/api/content/{id}" hx-target="#content">{name}</li>
|
||||
</template>
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user