1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-11-23 22:05:15 +02:00

Доработка тестов TCP

This commit is contained in:
Anton Titovets
2025-11-13 15:38:44 +03:00
parent 4703ef28b4
commit b4ec3643e1
3 changed files with 116 additions and 21 deletions

View File

@@ -49,12 +49,13 @@
// Создает TCP соединение // Создает TCP соединение
// //
// Параметры: // Параметры:
// Адрес - Строка - Адрес и порт для подключения - address // Адрес - Строка - Адрес и порт для подключения - address
// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls // Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls
// Прокси - Структура Из КлючИЗначение - Настройки прокси, если необходимо. См. ПолучитьНастройкиПрокси - proxy
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение, Произвольный - Возвращает объект TCP клиента при успешном подключении или информацию об ошибке // Соответствие Из КлючИЗначение, Произвольный - Возвращает объект TCP клиента при успешном подключении или информацию об ошибке
Функция ОткрытьСоединение(Знач Адрес, Знач Tls = "") Экспорт Функция ОткрытьСоединение(Знач Адрес, Знач Tls = "", Знач Прокси = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Адрес); OPI_ПреобразованиеТипов.ПолучитьСтроку(Адрес);
OPI_Инструменты.ВернутьУправляющиеПоследовательности(Адрес); OPI_Инструменты.ВернутьУправляющиеПоследовательности(Адрес);
@@ -72,6 +73,20 @@
Если Не OPI_Инструменты.ПолучитьИли(Tls, "result", Ложь) Тогда Если Не OPI_Инструменты.ПолучитьИли(Tls, "result", Ложь) Тогда
Возврат Tls; Возврат Tls;
КонецЕсли; КонецЕсли;
Если ЗначениеЗаполнено(Прокси) Тогда
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Прокси);
ПроксиСтрокой = OPI_Инструменты.JSONСтрокой(Прокси);
Установка = TCPКлиент.SetProxySettings(ПроксиСтрокой);
Установка = OPI_Инструменты.JsonВСтруктуру(Установка);
Если Не OPI_Инструменты.ПолучитьИли(Установка, "result", Ложь) Тогда
Возврат Установка;
КонецЕсли;
КонецЕсли;
Успех = TCPКлиент.Connect(); Успех = TCPКлиент.Connect();
@@ -87,7 +102,7 @@
// Явно закрывает созданное ранее соединение // Явно закрывает созданное ранее соединение
// //
// Параметры: // Параметры:
// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp // Соединение - Произвольный - Соединение, См. ОткрытьСоединение - tcp
// //
// Возвращаемое значение: // Возвращаемое значение:
// Булево - всегда возвращает Истина // Булево - всегда возвращает Истина
@@ -106,7 +121,7 @@
// При закрытии соединения, ошибке или обнаружении EOF чтение завершается в любом случае // При закрытии соединения, ошибке или обнаружении EOF чтение завершается в любом случае
// //
// Параметры: // Параметры:
// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp // Соединение - Произвольный - Соединение, См. ОткрытьСоединение - tcp
// МаксимальныйРазмер - Число - Максимальный размер данных (байт). 0 > без ограничений - size // МаксимальныйРазмер - Число - Максимальный размер данных (байт). 0 > без ограничений - size
// Маркер - Строка, ДвоичныеДанные - Маркер конца сообщения. Пусто > без маркера - marker // Маркер - Строка, ДвоичныеДанные - Маркер конца сообщения. Пусто > без маркера - marker
// Таймаут - Число - Таймаут ожидания данных (мс). 0 > без ограничений - timeout // Таймаут - Число - Таймаут ожидания данных (мс). 0 > без ограничений - timeout
@@ -140,10 +155,10 @@
// При закрытии соединения, ошибке или обнаружении EOF чтение завершается в любом случае // При закрытии соединения, ошибке или обнаружении EOF чтение завершается в любом случае
// //
// Параметры: // Параметры:
// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp // Соединение - Произвольный - Соединение, См. ОткрытьСоединение - tcp
// Кодировка - Строка - Кодировка преобразования данных в строку - enc // Кодировка - Строка - Кодировка преобразования данных в строку - enc
// Маркер - Строка, ДвоичныеДанные - Маркер конца сообщения. Пусто > без маркера - marker // Маркер - Строка, ДвоичныеДанные - Маркер конца сообщения. Пусто > без маркера - marker
// Таймаут - Число - Таймаут ожидания данных (мс). 0 > без ограничений - timeout // Таймаут - Число - Таймаут ожидания данных (мс). 0 > без ограничений - timeout
// //
// Возвращаемое значение: // Возвращаемое значение:
// Строка - Полученные данные в виде строки // Строка - Полученные данные в виде строки
@@ -165,7 +180,7 @@
// Отправляет двоичные данные через указанное соединение // Отправляет двоичные данные через указанное соединение
// //
// Параметры: // Параметры:
// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp // Соединение - Произвольный - Соединение, См. ОткрытьСоединение - tcp
// Данные - ДвоичныеДанные - Данные для отправки - data // Данные - ДвоичныеДанные - Данные для отправки - data
// Таймаут - Число - Таймаут ожидания записи (мс). 0 > без ограничений - timeout // Таймаут - Число - Таймаут ожидания записи (мс). 0 > без ограничений - timeout
// //
@@ -186,7 +201,7 @@
// Отправляет данные в виде строки через указанное соединение // Отправляет данные в виде строки через указанное соединение
// //
// Параметры: // Параметры:
// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp // Соединение - Произвольный - Соединение, См. ОткрытьСоединение - tcp
// Данные - Строка - Данные для отправки в виде строки - data // Данные - Строка - Данные для отправки в виде строки - data
// Кодировка - Строка - Кодировка для записи исходящей строки в поток - enc // Кодировка - Строка - Кодировка для записи исходящей строки в поток - enc
// Таймаут - Число - Таймаут ожидания записи (мс). 0 > без ограничений - timeout // Таймаут - Число - Таймаут ожидания записи (мс). 0 > без ограничений - timeout
@@ -210,19 +225,24 @@
// Отправляет одиночный запрос на указанный адрес и получает ответ, используя стандартные настройки // Отправляет одиночный запрос на указанный адрес и получает ответ, используя стандартные настройки
// //
// Параметры: // Параметры:
// Адрес - Строка - Адрес и порт для подключения - address // Адрес - Строка - Адрес и порт для подключения - address
// Данные - Строка, ДвоичныеДанные - Данные или текст для отправки - data // Данные - Строка, ДвоичныеДанные - Данные или текст для отправки - data
// ОтветСтрокой - Булево - Признак получения ответа как строки - string // ОтветСтрокой - Булево - Признак получения ответа как строки - string
// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls // Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls
// Прокси - Структура Из КлючИЗначение - Настройки прокси, если необходимо. См. ПолучитьНастройкиПрокси - proxy
// //
// Возвращаемое значение: // Возвращаемое значение:
// ДвоичныеДанные, Строка - Ответ на запрос или информация об ошибке // ДвоичныеДанные, Строка - Ответ на запрос или информация об ошибке
Функция ОбработатьЗапрос(Знач Адрес, Знач Данные = "", Знач ОтветСтрокой = Истина, Знач Tls = "") Экспорт Функция ОбработатьЗапрос(Знач Адрес
, Знач Данные = ""
, Знач ОтветСтрокой = Истина
, Знач Tls = ""
, Знач Прокси = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные, Истина, Ложь); OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные, Истина, Ложь);
OPI_ПреобразованиеТипов.ПолучитьБулево(ОтветСтрокой); OPI_ПреобразованиеТипов.ПолучитьБулево(ОтветСтрокой);
Соединение = ОткрытьСоединение(Адрес, Tls); Соединение = ОткрытьСоединение(Адрес, Tls, Прокси);
Если Не OPI_Компоненты.ЭтоКомпонента(Соединение) Тогда Если Не OPI_Компоненты.ЭтоКомпонента(Соединение) Тогда
Возврат Соединение; Возврат Соединение;
@@ -266,7 +286,7 @@
// Получает информацию о последней ошибке в соединении // Получает информацию о последней ошибке в соединении
// //
// Параметры: // Параметры:
// Соединение - Произвольный - Соединение, см. ОткрытьСоединение - tcp // Соединение - Произвольный - Соединение, См. ОткрытьСоединение - tcp
// //
// Возвращаемое значение: // Возвращаемое значение:
// Соответствие Из КлючИЗначение, Неопределено - Информация об ошибке или неопределено, если ошибки нет // Соответствие Из КлючИЗначение, Неопределено - Информация об ошибке или неопределено, если ошибки нет
@@ -284,6 +304,29 @@
КонецФункции КонецФункции
// Получить настройки прокси
// Формирует структуру настроек прокси-сервера для соединения
//
// Параметры:
// Адрес - Строка - Адрес прокси - addr
// Порт - Число - Порт прокси - port
// Вид - Строка - Вид прокси: socks5, socks4, http - type
// Логин - Строка, Неопределено - Логин авторизации, если необходимо - login
// Пароль - Строка, Неопределено - Пароль для авторизации, если необходимо - pass
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура настроек прокси
Функция ПолучитьНастройкиПрокси(Знач Адрес
, Знач Порт
, Знач Вид = "socks5"
, Знач Логин = Неопределено
, Знач Пароль = Неопределено) Экспорт
//@skip-check constructor-function-return-section
Возврат OPI_Компоненты.ПолучитьНастройкиПрокси(Адрес, Порт, Вид, Логин, Пароль);
КонецФункции
// Получить настройки TLS // Получить настройки TLS
// Формирует настройки для использования TLS при выполнении запросов // Формирует настройки для использования TLS при выполнении запросов
// //

View File

@@ -7772,6 +7772,16 @@
КонецФункции КонецФункции
Функция Проверка_TCP_ПолучитьНастройкиПрокси(Знач Результат, Знач Вариант)
ОжидаетЧто(OPI_Инструменты.ЭтоКоллекция(Результат, Истина)).Равно(Истина);
Результат["password"] = "***";
Возврат Результат;
КонецФункции
Функция Проверка_SQLite_ОткрытьСоединение(Знач Результат, Знач Вариант) Функция Проверка_SQLite_ОткрытьСоединение(Знач Результат, Знач Вариант)
Если Вариант = "Закрытие" Тогда Если Вариант = "Закрытие" Тогда

View File

@@ -2246,6 +2246,10 @@
ПараметрыТеста = Новый Структура; ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("TCP_Address" , ПараметрыТеста); OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("TCP_Address" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("TCP_AddressTLS", ПараметрыТеста); OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("TCP_AddressTLS", ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Proxy_User" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Proxy_Password", ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Socks5_IP" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Socks5_Port" , ПараметрыТеста);
TCP_ОткрытьСоединение(ПараметрыТеста); TCP_ОткрытьСоединение(ПараметрыТеста);
TCP_ЗакрытьСоединение(ПараметрыТеста); TCP_ЗакрытьСоединение(ПараметрыТеста);
@@ -2256,6 +2260,7 @@
TCP_ОбработатьЗапрос(ПараметрыТеста); TCP_ОбработатьЗапрос(ПараметрыТеста);
TCP_ПолучитьНастройкиTLS(ПараметрыТеста); TCP_ПолучитьНастройкиTLS(ПараметрыТеста);
TCP_ПолучитьПоследнююОшибку(ПараметрыТеста); TCP_ПолучитьПоследнююОшибку(ПараметрыТеста);
TCP_ПолучитьНастройкиПрокси(ПараметрыТеста);
КонецПроцедуры КонецПроцедуры
@@ -14822,7 +14827,18 @@
Адрес = "tcpbin.com:4243"; Адрес = "tcpbin.com:4243";
Tls = OPI_TCP.ПолучитьНастройкиTLS(Истина); Tls = OPI_TCP.ПолучитьНастройкиTLS(Истина);
Соединение = OPI_TCP.ОткрытьСоединение(Адрес, TLS);
ПроксиПользователь = ПараметрыФункции["Proxy_User"];
ПроксиПароль = ПараметрыФункции["Proxy_Password"];
ПроксиАдрес = ПараметрыФункции["Socks5_IP"];
ПроксиПорт = ПараметрыФункции["Socks5_Port"];
ПроксиАдрес = ?(ПроксиАдрес = "127.0.0.1", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПроксиАдрес); // SKIP
Прокси = OPI_TCP.ПолучитьНастройкиПрокси(ПроксиАдрес, ПроксиПорт, "socks5", ПроксиПользователь, ПроксиПароль);
Tls = OPI_TCP.ПолучитьНастройкиTLS(Истина);
Соединение = OPI_TCP.ОткрытьСоединение(Адрес, TLS, Прокси);
// END // END
@@ -14915,9 +14931,18 @@
Обработать(Результат, "TCP", "ОбработатьЗапрос", , "Echo this!" + Символы.ПС); // SKIP Обработать(Результат, "TCP", "ОбработатьЗапрос", , "Echo this!" + Символы.ПС); // SKIP
Адрес = ПараметрыФункции["TCP_AddressTLS"]; Адрес = ПараметрыФункции["TCP_AddressTLS"];
Tls = OPI_TCP.ПолучитьНастройкиTLS(Истина);
ПроксиПользователь = ПараметрыФункции["Proxy_User"];
ПроксиПароль = ПараметрыФункции["Proxy_Password"];
ПроксиАдрес = ПараметрыФункции["Socks5_IP"];
ПроксиПорт = ПараметрыФункции["Socks5_Port"];
Результат = OPI_TCP.ОбработатьЗапрос(Адрес, Данные, , Tls); ПроксиАдрес = ?(ПроксиАдрес = "127.0.0.1", OPI_ПолучениеДанныхТестов.ПолучитьLocalhost(), ПроксиАдрес); // SKIP
Прокси = OPI_TCP.ПолучитьНастройкиПрокси(ПроксиАдрес, ПроксиПорт, "socks5", ПроксиПользователь, ПроксиПароль);
Tls = OPI_TCP.ПолучитьНастройкиTLS(Истина);
Результат = OPI_TCP.ОбработатьЗапрос(Адрес, Данные, , Tls, Прокси);
// END // END
@@ -15010,6 +15035,23 @@
КонецПроцедуры КонецПроцедуры
Процедура TCP_ПолучитьНастройкиПрокси(ПараметрыФункции)
ТипПрокси = "socks5"; // http, socks5, socks4
АдресПрокси = ПараметрыФункции["Proxy_IP"];
ПортПрокси = ПараметрыФункции["Proxy_Port"];
ЛогинПрокси = ПараметрыФункции["Proxy_User"];
ПарольПрокси = ПараметрыФункции["Proxy_Password"];
Результат = OPI_TCP.ПолучитьНастройкиПрокси(АдресПрокси, ПортПрокси, ТипПрокси, ЛогинПрокси, ПарольПрокси);
// END
Обработать(Результат, "TCP", "ПолучитьНастройкиПрокси");
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область SQLite #Область SQLite