1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-08-10 22:41:43 +02:00

Main build (Jenkins)

This commit is contained in:
Vitaly the Alpaca (bot)
2025-07-17 22:02:56 +03:00
parent 702e44b3e0
commit 22134bbb23
41 changed files with 10660 additions and 8237 deletions

View File

@@ -0,0 +1,5 @@
{
"Domain": "127.0.0.1",
"Password": "12we...",
"ProxyAddress": "127.0.0.1"
}

View File

@@ -0,0 +1,4 @@
{
"Domain": "127.0.0.1",
"Password": "12we..."
}

View File

@@ -0,0 +1,19 @@
 Domain = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
// Simple connection
FTPSettings = OPI_FTP.GetConnectionSettings(Domain, 21);
Result = OPI_FTP.CreateConnection(FTPSettings);
// TLS connection through proxy
FTPDomain = "172.33.0.11";
ProxyAddress = "127.0.0.1";
FTPSettings = OPI_FTP.GetConnectionSettings(FTPDomain, 21, Login, "12we3456!2154");
ProxySettings = OPI_FTP.GetProxySettings(ProxyAddress, 1080, "socks5", "proxyuser", Password);
TLSSettings = OPI_FTP.GetTlsSettings(True);
Result = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings);

View File

@@ -0,0 +1,8 @@
 Domain = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
FTPSettings = OPI_FTP.GetConnectionSettings(Domain, 21, Login, Password);
Connection = OPI_FTP.CreateConnection(FTPSettings);
Result = OPI_FTP.GetWelcomeMessage(Connection);

View File

@@ -0,0 +1,41 @@
---
sidebar_position: 3
description: Close connection and other functions to work with FTP in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, FTP]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Close connection
Explicitly closes the passed connection
`Function CloseConnection(Val Connection) Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Connection | - | Arbitrary | ✔ | AddIn object with open connection |
Returns: Structure Of KeyAndValue - Result of connection termination
<br/>
:::caution
**NOCLI:** this method is not available in CLI version
:::
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

View File

@@ -0,0 +1,61 @@
---
sidebar_position: 1
description: Create Connection and other functions to work with FTP in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, FTP]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Create Connection
Creates an FTP connection with the specified settings
`Function CreateConnection(Val FTPSettings, Val Proxy = Undefined, Val Tls = Undefined) Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| FTPSettings | - | Structure Of KeyAndValue | &#x2714; | FTP settings. See GetConnectionSettings |
| Proxy | - | Structure Of KeyAndValue | &#x2716; | Proxy settings, if required. See GetProxySettings |
| Tls | - | Structure Of KeyAndValue | &#x2716; | TLS settings, if necessary. See GetTlsSettings |
Returns: Arbitrary - Client object or map with error information
<br/>
:::caution
**NOCLI:** this method is not available in CLI version
:::
<br/>
```bsl title="1C:Enterprise/OneScript code example"
Domain = "127.0.0.1";
Login = "bayselonarrend";
Password = "12we...";
// Simple connection
FTPSettings = OPI_FTP.GetConnectionSettings(Domain, 21);
Result = OPI_FTP.CreateConnection(FTPSettings);
// TLS connection through proxy
FTPDomain = "172.33.0.11";
ProxyAddress = "127.0.0.1";
FTPSettings = OPI_FTP.GetConnectionSettings(FTPDomain, 21, Login, "12we3456!2154");
ProxySettings = OPI_FTP.GetProxySettings(ProxyAddress, 1080, "socks5", "proxyuser", Password);
TLSSettings = OPI_FTP.GetTlsSettings(True);
Result = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings);
```

View File

@@ -0,0 +1,46 @@
---
sidebar_position: 2
description: Get connection configuration and other functions to work with FTP in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, FTP]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Get connection configuration
Forms a complete structure of connection settings that can be used instead of the actual connection when calling other functions
`Function GetConnectionConfiguration(Val FTPSettings, Val Proxy = Undefined, Val Tls = Undefined) Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| FTPSettings | --set | Structure Of KeyAndValue | &#x2714; | FTP settings. See GetConnectionSettings |
| Proxy | --proxy | Structure Of KeyAndValue | &#x2716; | Proxy settings, if required. See GetProxySettings |
| Tls | --tls | Structure Of KeyAndValue | &#x2716; | TLS settings, if necessary. See GetTlsSettings |
Returns: Structure Of KeyAndValue - Connection settings structure
<br/>
:::tip
Can be passed as the `Connection` parameter in other functions instead of the actual connection from the `CreateConnection` function.
At the same time, a new connection will be opened and closed within the called function
Using the connection configuration is not recommended for multiple requests to the FTP server. This functionality is primarily intended for the CLI version of OInt, where maintaining a connection between calls is not possible
:::
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

View File

@@ -0,0 +1,42 @@
---
sidebar_position: 5
description: Get connection settings and other functions to work with FTP in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, FTP]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Get connection settings
Creates a structure of FTP connection settings
`Function GetConnectionSettings(Val Domain, Val Port = 21, Val Login = Undefined, Val Password = Undefined, Val Passive = True, Val ReadTimeout = 120, Val WriteTimeout = 120) Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Domain | --host | String | &#x2714; | Server domain |
| Port | --port | Number | &#x2716; | Server port |
| Login | --login | String, Undefined | &#x2716; | Username for authorization, if required |
| Password | --pass | String, Undefined | &#x2716; | User password for authorization, if required |
| Passive | --passive | Boolean | &#x2716; | Passive connection mode |
| ReadTimeout | --rtout | Number | &#x2716; | Read timeout |
| WriteTimeout | --wtout | Number | &#x2716; | Write timeout |
Returns: Structure Of KeyAndValue - Connection settings structure
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

View File

@@ -0,0 +1,40 @@
---
sidebar_position: 6
description: Get proxy settings and other functions to work with FTP in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, FTP]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Get proxy settings
Creates a structure of proxy server settings for the connection
`Function GetProxySettings(Val Address, Val Port, Val View = "socks5", Val Login = Undefined, Val Password = Undefined) Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Address | --addr | String | &#x2714; | Proxy address |
| Port | --port | Number | &#x2714; | Proxy port |
| View | --type | String | &#x2716; | Proxy type: socks5, socks4, http |
| Login | --login | String, Undefined | &#x2716; | Authorization login, if required |
| Password | --pass | String, Undefined | &#x2716; | Authorization password, if required |
Returns: Structure Of KeyAndValue - Proxy settings structure
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

View File

@@ -0,0 +1,41 @@
---
sidebar_position: 7
description: Get TLS Settings and other functions to work with FTP in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, FTP]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Get TLS Settings
Forms settings for using TLS
`Function GetTlsSettings(Val DisableCertVerification, Val CertFilepath = "") Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| DisableCertVerification | --trust | Boolean | &#x2714; | Allows to work with invalid certificates, including self signed |
| CertFilepath | --cert | String | &#x2716; | Path to the root PEM file of the certificate if it is not in the system repository |
Returns: Structure Of KeyAndValue - Structure of TLS connection settings
<br/>
:::tip
Tls settings can only be set when a connection is created: explicitly, by using the `OpenConnection` function or implicit, when passing settings
:::
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

View File

@@ -0,0 +1,41 @@
---
sidebar_position: 4
description: Is connector and other functions to work with FTP in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, FTP]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Is connector
Checks that the value is an AddIn object for working with FTP
`Function IsConnector(Val Value) Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Value | - | Arbitrary | &#x2714; | Value to check |
Returns: Boolean - Is connector
<br/>
:::caution
**NOCLI:** this method is not available in CLI version
:::
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

View File

@@ -0,0 +1,4 @@
{
"label": "Common methods",
"position": "2"
}

View File

@@ -0,0 +1,5 @@
{
"Домен": "127.0.0.1",
"Пароль": "12we...",
"АдресПрокси": "127.0.0.1"
}

View File

@@ -0,0 +1,4 @@
{
"Домен": "127.0.0.1",
"Пароль": "12we..."
}

View File

@@ -0,0 +1,19 @@
 Домен = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
// Простое подключение
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Домен, 21);
Результат = OPI_FTP.ОткрытьСоединение(НастройкиFTP);
// Подключение по TLS через прокси
ДоменFTP = "172.33.0.11";
АдресПрокси = "127.0.0.1";
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(ДоменFTP, 21, Логин, "12we3456!2154");
НастройкиПрокси = OPI_FTP.ПолучитьНастройкиПрокси(АдресПрокси, 1080, "socks5", "proxyuser", Пароль);
НастройкиTLS = OPI_FTP.ПолучитьНастройкиTls(Истина);
Результат = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS);

View File

@@ -0,0 +1,8 @@
 Домен = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Домен, 21, Логин, Пароль);
Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP);
Результат = OPI_FTP.ПолучитьПриветственноеСообщение(Соединение);

View File

@@ -0,0 +1,41 @@
---
sidebar_position: 3
description: Закрыть соединение и другие функции для работы с FTP в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, FTP]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Закрыть соединение
Явно закрывает переданное соединение
`Функция ЗакрытьСоединение(Знач Соединение) Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Соединение | - | Произвольный | &#x2714; | Объект компоненты с открытым соединением |
Возвращаемое значение: Структура Из КлючИЗначение - Результат закрытия соединения
<br/>
:::caution
**NOCLI:** данный метод недоступен для использования в CLI версии
:::
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```

View File

@@ -0,0 +1,61 @@
---
sidebar_position: 1
description: Открыть соединение и другие функции для работы с FTP в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, FTP]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Открыть соединение
Открывает FTP соединение с указанными настройками
`Функция ОткрытьСоединение(Знач НастройкиFTP, Знач Прокси = Неопределено, Знач Tls = Неопределено) Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| НастройкиFTP | - | Структура Из КлючИЗначение | &#x2714; | Настройки FTP. См. ПолучитьНастройкиСоединения |
| Прокси | - | Структура Из КлючИЗначение | &#x2716; | Настройки прокси, если необходимо. См ПолучитьНастройкиПрокси |
| Tls | - | Структура Из КлючИЗначение | &#x2716; | Настройки TLS, если необходимо. См. ПолучитьНастройкиTls |
Возвращаемое значение: Произвольный - Объект коннектора или соответствие с информацией об ошибке
<br/>
:::caution
**NOCLI:** данный метод недоступен для использования в CLI версии
:::
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
Домен = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
// Простое подключение
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Домен, 21);
Результат = OPI_FTP.ОткрытьСоединение(НастройкиFTP);
// Подключение по TLS через прокси
ДоменFTP = "172.33.0.11";
АдресПрокси = "127.0.0.1";
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(ДоменFTP, 21, Логин, "12we3456!2154");
НастройкиПрокси = OPI_FTP.ПолучитьНастройкиПрокси(АдресПрокси, 1080, "socks5", "proxyuser", Пароль);
НастройкиTLS = OPI_FTP.ПолучитьНастройкиTls(Истина);
Результат = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS);
```

View File

@@ -0,0 +1,44 @@
---
sidebar_position: 2
description: Получить конфигурацию соединения и другие функции для работы с FTP в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, FTP]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Получить конфигурацию соединения
Формирует полную структуру настроек соединения, которая может быть использована вместо самого соединения при вызове других функций
`Функция ПолучитьКонфигурациюСоединиения(Знач НастройкиFTP, Знач Прокси = Неопределено, Знач Tls = Неопределено) Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| НастройкиFTP | --set | Структура Из КлючИЗначение | &#x2714; | Настройки FTP. См. ПолучитьНастройкиСоединения |
| Прокси | --proxy | Структура Из КлючИЗначение | &#x2716; | Настройки прокси, если необходимо. См ПолучитьНастройкиПрокси |
| Tls | --tls | Структура Из КлючИЗначение | &#x2716; | Настройки TLS, если необходимо. См. ПолучитьНастройкиTls |
Возвращаемое значение: Структура Из КлючИЗначение - Структура настроек соединения
<br/>
:::tip
Может быть передана в качестве параметра `Соединение` в других функциях вместо настоящего соединения из функции `ОткрытьСоединение`. При этом новое соединение будет открыто и закрыто в рамках вызываемой функции
Не рекомендуется использовать конфигурацию соединения при множественных обращениях к серверу FTP. Данный фунционал предназначен, в первую очередь для CLI версии ОПИ, где хранение соединения между вызовами невозможно
:::
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```

View File

@@ -0,0 +1,42 @@
---
sidebar_position: 5
description: Получить настройки соединения и другие функции для работы с FTP в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, FTP]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Получить настройки соединения
Формирует структуру настроек подключения FTP
`Функция ПолучитьНастройкиСоединения(Знач Домен, Знач Порт = 21, Знач Логин = Неопределено, Знач Пароль = Неопределено, Знач Пассивный = Истина, Знач ТаймаутЧтения = 120, Знач ТаймаутЗаписи = 120) Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Домен | --host | Строка | &#x2714; | Домен сервера |
| Порт | --port | Число | &#x2716; | Порт сервера |
| Логин | --login | Строка, Неопределено | &#x2716; | Имя пользователя авторизации, если необходимо |
| Пароль | --pass | Строка, Неопределено | &#x2716; | Пароль пользователя для авторизации, если необходимо |
| Пассивный | --passive | Булево | &#x2716; | Пассивный режим соединения |
| ТаймаутЧтения | --rtout | Число | &#x2716; | Таймаут чтения |
| ТаймаутЗаписи | --wtout | Число | &#x2716; | Таймаут записи |
Возвращаемое значение: Структура Из КлючИЗначение - Структура настроек соединения
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```

View File

@@ -0,0 +1,40 @@
---
sidebar_position: 6
description: Получить настройки прокси и другие функции для работы с FTP в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, FTP]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Получить настройки прокси
Формирует структуру настроек прокси-сервера для соединения
`Функция ПолучитьНастройкиПрокси(Знач Адрес, Знач Порт, Знач Вид = "socks5", Знач Логин = Неопределено, Знач Пароль = Неопределено) Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Адрес | --addr | Строка | &#x2714; | Адрес прокси |
| Порт | --port | Число | &#x2714; | Порт прокси |
| Вид | --type | Строка | &#x2716; | Вид прокси: socks5, socks4, http |
| Логин | --login | Строка, Неопределено | &#x2716; | Логин авторизации, если необходимо |
| Пароль | --pass | Строка, Неопределено | &#x2716; | Пароль для авторизации, если необходимо |
Возвращаемое значение: Структура Из КлючИЗначение - Структура настроек прокси
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```

View File

@@ -0,0 +1,41 @@
---
sidebar_position: 7
description: Получить настройки TLS и другие функции для работы с FTP в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, FTP]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Получить настройки TLS
Формирует настройки для использования TLS при выполнении запросов
`Функция ПолучитьНастройкиTls(Знач ОтключитьПроверкуСертификатов, Знач ПутьКСертификату = "") Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| ОтключитьПроверкуСертификатов | --trust | Булево | &#x2714; | Позволяет работать с некорретными сертификатами, в т.ч. самоподписанными |
| ПутьКСертификату | --cert | Строка | &#x2716; | Путь к корневому PEM файлу сертификата, если его нет в системном хранилище |
Возвращаемое значение: Структура Из КлючИЗначение - Структура настроек TLS соединения
<br/>
:::tip
Настройки Tls могут быть установлены только в момент создания соединения: явного, при использовании функции `ОткрытьСоединение` или неявного, при передаче настроек
:::
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```

View File

@@ -0,0 +1,41 @@
---
sidebar_position: 4
description: Это коннектор и другие функции для работы с FTP в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, FTP]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Это коннектор
Проверяет, что значение является объектом внешней компоненты для работы с FTP
`Функция ЭтоКоннектор(Знач Значение) Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Значение | - | Произвольный | &#x2714; | Значение для проверки |
Возвращаемое значение: Булево - Это коннектор
<br/>
:::caution
**NOCLI:** данный метод недоступен для использования в CLI версии
:::
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```

View File

@@ -0,0 +1,4 @@
{
"label": "Основные методы",
"position": "2"
}

View File

@@ -4,6 +4,7 @@
|![Bitrix24](../Bitrix24.png)| `Bitrix24`| bitrix24, b24, bitrix |
|![CDEK](../CDEK.png)| `CDEK`| cdek |
|![Dropbox](../Dropbox.png)| `Dropbox`| dropbox |
|![FTP](../FTP.png)| `FTP`| ftp, ftps |
|![Google Calendar](../GoogleCalendar.png)| `Google Calendar`| google calendar, googlecalendar, gcalendar |
|![Google Drive](../GoogleDrive.png)| `Google Drive`| google drive, googledrive, gdrive, google disk |
|![Google Sheets](../GoogleSheets.png)| `Google Sheets`| googlesheets, google sheets, spreadsheets |
@@ -25,4 +26,3 @@
|![VK](../VK.png)| `VK`| vk, vkontakte |
|![VKTeams](../VKTeams.png)| `VKTeams`| vkteams, vk teams |
|![Yandex Disk](../YandexDisk.png)| `Yandex Disk`| yandexdisk, yandex.disk, yandex disk, yandex drive, yadisk, ya disk |
|![FTP](../FTP.png)| `FTP`| ftp, ftps |

File diff suppressed because it is too large Load Diff

417
src/en/OInt/core/Modules/OPI_FTP.os vendored Normal file
View File

@@ -0,0 +1,417 @@
// OneScript: ./OInt/core/Modules/OPI_FTP.os
// Lib: FTP
// CLI: ftp
// Keywords: ftp, ftps
// MIT License
// Copyright (c) 2023-2025 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
// BSLLS:UsingSynchronousCalls-off
// BSLLS:MagicNumber-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
#Region Public
#Region CommonMethods
// Create Connection !NOCLI
// Creates an FTP connection with the specified settings
//
// Parameters:
// FTPSettings - Structure Of KeyAndValue - FTP settings. See GetConnectionSettings - set
// Proxy - Structure Of KeyAndValue - Proxy settings, if required. See GetProxySettings - proxy
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Arbitrary - Client object or map with error information
Function CreateConnection(Val FTPSettings, Val Proxy = Undefined, Val Tls = Undefined) Export
If IsConnector(FTPSettings) Then
Return FTPSettings;
EndIf;
Connector = OPI_AddIns.GetAddIn("FTP");
SetSettings = SetFtpSettings(Connector, FTPSettings);
If Not OPI_Tools.GetOr(SetSettings, "result", False) Then
Return SetSettings;
EndIf;
Tls = OPI_AddIns.SetTls(Connector, Tls);
If Not OPI_Tools.GetOr(Tls, "result", False) Then
Return Tls;
EndIf;
SetProxy = SetProxySettings(Connector, Proxy);
If Not OPI_Tools.GetOr(SetProxy, "result", False) Then
Return SetProxy;
EndIf;
Result = Connector.Connect();
Result = OPI_Tools.JSONToStructure(Result);
Return ?(Result["result"], Connector, Result);
EndFunction
// Get connection configuration
// Forms a complete structure of connection settings that can be used instead of the actual connection when calling other functions
//
// Note
// Can be passed as the `Connection` parameter in other functions instead of the actual connection from the `CreateConnection` function.
// At the same time, a new connection will be opened and closed within the called function
// Using the connection configuration is not recommended for multiple requests to the FTP server.^^
// This functionality is primarily intended for the CLI version of OInt, where maintaining a connection between calls is not possible
//
// Parameters:
// FTPSettings - Structure Of KeyAndValue - FTP settings. See GetConnectionSettings - set
// Proxy - Structure Of KeyAndValue - Proxy settings, if required. See GetProxySettings - proxy
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Structure Of KeyAndValue - Connection settings structure
Function GetConnectionConfiguration(Val FTPSettings, Val Proxy = Undefined, Val Tls = Undefined) Export
ConfigurationStructure = New Structure;
OPI_Tools.AddField("set" , FTPSettings, "Collection", ConfigurationStructure);
OPI_Tools.AddField("proxy", Proxy , "Collection", ConfigurationStructure);
OPI_Tools.AddField("tls" , Tls , "Collection", ConfigurationStructure);
Return ConfigurationStructure;
EndFunction
// Close connection !NOCLI
// Explicitly closes the passed connection
//
// Parameters:
// Connection - Arbitrary - AddIn object with open connection - conn
//
// Returns:
// Structure Of KeyAndValue - Result of connection termination
Function CloseConnection(Val Connection) Export
CheckCreateConnection(Connection);
Result = Connection.Close();
Return Result;
EndFunction
Function GetWelcomeMessage(Val Connection) Export
CloseConnection = CheckCreateConnection(Connection);
If Not IsConnector(Connection) Then
Result = Connection;
Else
Result = Connection.GetWelcomeMsg();
Result = OPI_Tools.JsonToStructure(Result);
EndIf;
If CloseConnection Then
Result.Insert("close_connection", CloseConnection(Connection));
EndIf;
Return Result;
EndFunction
// Is connector !NOCLI
// Checks that the value is an AddIn object for working with FTP
//
// Parameters:
// Value - Arbitrary - Value to check - value
//
// Returns:
// Boolean - Is connector
Function IsConnector(Val Value) Export
Return String(TypeOf(Value)) = "AddIn.OPI_FTP.Main";
EndFunction
// Get connection settings
// Creates a structure of FTP connection settings
//
// Parameters:
// Domain - String - Server domain - host
// Port - Number - Server port - port
// Login - String, Undefined - Username for authorization, if required - login
// Password - String, Undefined - User password for authorization, if required - pass
// Passive - Boolean - Passive connection mode - passive
// ReadTimeout - Number - Read timeout - rtout
// WriteTimeout - Number - Write timeout - wtout
//
// Returns:
// Structure Of KeyAndValue - Connection settings structure
Function GetConnectionSettings(Val Domain
, Val Port = 21
, Val Login = Undefined
, Val Password = Undefined
, Val Passive = True
, Val ReadTimeout = 120
, Val WriteTimeout = 120) Export
SettingsStructure = New Structure;
OPI_Tools.AddField("domain" , Domain , "String" , SettingsStructure);
OPI_Tools.AddField("port" , Port , "Number" , SettingsStructure);
OPI_Tools.AddField("passive" , Passive , "Boolean", SettingsStructure);
OPI_Tools.AddField("read_timeout" , ReadTimeout , "Number" , SettingsStructure);
OPI_Tools.AddField("write_timeout", WriteTimeout , "Number" , SettingsStructure);
If Not Login = Undefined Then
OPI_TypeConversion.GetLine(Login);
SettingsStructure.Insert("login", Login);
EndIf;
If Not Password = Undefined Then
OPI_TypeConversion.GetLine(Password);
SettingsStructure.Insert("password", Password);
EndIf;
//@skip-check constructor-function-return-section
Return SettingsStructure;
EndFunction
// Get proxy settings
// Creates a structure of proxy server settings for the connection
//
// Parameters:
// Address - String - Proxy address - addr
// Port - Number - Proxy port - port
// View - String - Proxy type: socks5, socks4, http - type
// Login - String, Undefined - Authorization login, if required - login
// Password - String, Undefined - Authorization password, if required - pass
//
// Returns:
// Structure Of KeyAndValue - Proxy settings structure
Function GetProxySettings(Val Address
, Val Port
, Val View = "socks5"
, Val Login = Undefined
, Val Password = Undefined) Export
SettingsStructure = New Structure;
OPI_Tools.AddField("server" , Address, "String" , SettingsStructure);
OPI_Tools.AddField("port" , Port , "Number" , SettingsStructure);
OPI_Tools.AddField("proxy_type", View , "String" , SettingsStructure);
If Not Login = Undefined Then
OPI_TypeConversion.GetLine(Login);
SettingsStructure.Insert("login", Login);
EndIf;
If Not Password = Undefined Then
OPI_TypeConversion.GetLine(Password);
SettingsStructure.Insert("password", Password);
EndIf;
//@skip-check constructor-function-return-section
Return SettingsStructure;
EndFunction
// Get TLS Settings
// Forms settings for using TLS
//
// Note
// Tls settings can only be set when a connection is created: explicitly, by using the `OpenConnection` function^^
// or implicit, when passing settings
//
// Parameters:
// DisableCertVerification - Boolean - Allows to work with invalid certificates, including self signed - trust
// CertFilepath - String - Path to the root PEM file of the certificate if it is not in the system repository - cert
//
// Returns:
// Structure Of KeyAndValue - Structure of TLS connection settings
Function GetTlsSettings(Val DisableCertVerification, Val CertFilepath = "") Export
Return OPI_AddIns.GetTlsSettings(DisableCertVerification, CertFilepath);
EndFunction
#EndRegion
#EndRegion
#Region Private
Function SetFtpSettings(Val Connector, Val FTPSettings)
ErrorText = "FTP settings are not a valid key-value structure";
Settings = SettingAsJson(FTPSettings, ErrorText);
If TypeOf(Settings) = Type("Map") Then
Return Settings;
EndIf;
Result = Connector.UpdateSettings(Settings);
Result = OPI_Tools.JsonToStructure(Result);
Return Result;
EndFunction
Function SetProxySettings(Val Connector, Val ProxySettings)
If ProxySettings = Undefined Then
Result = New Map;
Result.Insert("result", True);
Return Result;
EndIf;
ErrorText = "Proxy settings are not a valid key-value structure";
Settings = SettingAsJson(ProxySettings, ErrorText);
If TypeOf(Settings) = Type("Map") Then
Return Settings;
EndIf;
Result = Connector.UpdateProxy(Settings);
Result = OPI_Tools.JsonToStructure(Result);
Return Result;
EndFunction
Function SettingAsJson(Val Collection, Val ErrorText)
OPI_TypeConversion.GetKeyValueCollection(Collection);
Try
Result = OPI_Tools.JSONString(Collection);
Except
Result = New Map;
Result.Insert("result", False);
Result.Insert("error" , "FTP settings must contain only serializable values");
EndTry;
Return Result;
EndFunction
Function CreateConnectionByConfiguration(Val ConfigurationStructure)
If IsConnector(ConfigurationStructure) Then
Return ConfigurationStructure;
EndIf;
ErrorText = "Unexpected connection configuration";
Try
OPI_TypeConversion.GetKeyValueCollection(ConfigurationStructure);
Except
Result = New Map;
Result.Insert("result", False);
Result.Insert("error" , ErrorText);
Return Result;
EndTry;
If Not OPI_Tools.CollectionFieldExist(ConfigurationStructure, "set") Then
Result = New Map;
Result.Insert("result", False);
Result.Insert("error" , ErrorText);
Return Result;
EndIf;
FTPSettings = ConfigurationStructure["set"];
Proxy = OPI_Tools.GetOr(ConfigurationStructure, "proxy", Undefined);
Tls = OPI_Tools.GetOr(ConfigurationStructure, "tls", Undefined);
Return CreateConnection(FTPSettings, Proxy, Tls);
EndFunction
Function CheckCreateConnection(Connection)
If IsConnector(Connection) Then
CloseConnection = False;
Else
CloseConnection = True;
Connection = CreateConnectionByConfiguration(Connection);
EndIf;
Return CloseConnection;
EndFunction
#EndRegion
#Region Alternate
Function ОткрытьСоединение(Val НастройкиFTP, Val Прокси = Undefined, Val Tls = Undefined) Export
Return CreateConnection(НастройкиFTP, Прокси, Tls);
EndFunction
Function ПолучитьКонфигурациюСоединиения(Val НастройкиFTP, Val Прокси = Undefined, Val Tls = Undefined) Export
Return GetConnectionConfiguration(НастройкиFTP, Прокси, Tls);
EndFunction
Function ЗакрытьСоединение(Val Соединение) Export
Return CloseConnection(Соединение);
EndFunction
Function ПолучитьПриветственноеСообщение(Val Соединение) Export
Return GetWelcomeMessage(Соединение);
EndFunction
Function ЭтоКоннектор(Val Значение) Export
Return IsConnector(Значение);
EndFunction
Function ПолучитьНастройкиСоединения(Val Домен, Val Порт = 21, Val Логин = Undefined, Val Пароль = Undefined, Val Пассивный = True, Val ТаймаутЧтения = 120, Val ТаймаутЗаписи = 120) Export
Return GetConnectionSettings(Домен, Порт, Логин, Пароль, Пассивный, ТаймаутЧтения, ТаймаутЗаписи);
EndFunction
Function ПолучитьНастройкиПрокси(Val Адрес, Val Порт, Val Вид = "socks5", Val Логин = Undefined, Val Пароль = Undefined) Export
Return GetProxySettings(Адрес, Порт, Вид, Логин, Пароль);
EndFunction
Function ПолучитьНастройкиTls(Val ОтключитьПроверкуСертификатов, Val ПутьКСертификату = "") Export
Return GetTlsSettings(ОтключитьПроверкуСертификатов, ПутьКСертификату);
EndFunction
#EndRegion

View File

@@ -2864,6 +2864,21 @@ EndProcedure
#EndRegion
#Region FTP
Procedure FT_CommonMethods() Export
TestParameters = New Structure;
OPI_TestDataRetrieval.ParameterToCollection("PG_IP" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("PG_Password", TestParameters);
FTP_CreateConnection(TestParameters);
FTP_GetWelcomeMessage(TestParameters);
EndProcedure
#EndRegion
#EndRegion
#EndRegion
@@ -24739,6 +24754,60 @@ EndProcedure
#EndRegion
#Region FTP
Procedure FTP_CreateConnection(FunctionParameters)
Domain = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
// Simple connection
FTPSettings = OPI_FTP.GetConnectionSettings(Domain, 21);
Result = OPI_FTP.CreateConnection(FTPSettings);
OPI_TestDataRetrieval.WriteLog(Result, "CreateConnection", "FTP"); // SKIP
OPI_TestDataRetrieval.Check_AddIn(Result, "AddIn.OPI_FTP.Main"); // SKIP
// TLS connection through proxy
FTPDomain = "172.33.0.11";
ProxyAddress = FunctionParameters["PG_IP"];
FTPSettings = OPI_FTP.GetConnectionSettings(FTPDomain, 21, Login, "12we3456!2154");
ProxySettings = OPI_FTP.GetProxySettings(ProxyAddress, 1080, "socks5", "proxyuser", Password);
TLSSettings = OPI_FTP.GetTlsSettings(True);
Result = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings);
// END
OPI_TestDataRetrieval.WriteLog(Result, "CreateConnection (proxy + tls)", "FTP");
OPI_TestDataRetrieval.Check_AddIn(Result, "AddIn.OPI_FTP.Main");
EndProcedure
Procedure FTP_GetWelcomeMessage(FunctionParameters)
Domain = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
FTPSettings = OPI_FTP.GetConnectionSettings(Domain, 21, Login, Password);
Connection = OPI_FTP.CreateConnection(FTPSettings);
Result = OPI_FTP.GetWelcomeMessage(Connection);
// END
OPI_TestDataRetrieval.WriteLog(Result, "GetWelcomeMessage", "FTP");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
EndProcedure
#EndRegion
#EndRegion
#EndRegion

View File

@@ -55,6 +55,7 @@ Function GetTestingSectionMapping() Export
Sections.Insert("VK" , 5);
Sections.Insert("Viber" , 5);
Sections.Insert("Twitter" , 4);
Sections.Insert("FTP" , 5);
Sections.Insert("PostgreSQL" , 5);
Sections.Insert("MySQL" , 5);
Sections.Insert("MSSQL" , 5);
@@ -96,6 +97,7 @@ Function GetTestingSectionMappingGA() Export
Sections.Insert("VK" , StandardDependencies);
Sections.Insert("Viber" , StandardDependencies);
Sections.Insert("Twitter" , StandardDependencies);
Sections.Insert("FTP" , StandardDependencies);
Sections.Insert("PostgreSQL" , StandardDependencies);
Sections.Insert("MySQL" , StandardDependencies);
Sections.Insert("MSSQL" , StandardDependencies);
@@ -159,6 +161,7 @@ Function GetTestTable() Export
Http = "HTTPClient";
OpenAI = "OpenAI";
MSSQL = "MSSQL";
FTP = "FTP";
TestTable = New ValueTable;
TestTable.Columns.Add("Method");
@@ -324,6 +327,7 @@ Function GetTestTable() Export
NewTest(TestTable, "OAI_FileManagement" , "Files management" , OpenAI);
NewTest(TestTable, "OAI_AudioProcessing" , "Audio processing" , OpenAI);
NewTest(TestTable, "OAI_ModelsManagement" , "Models management" , OpenAI);
NewTest(TestTable, "FT_CommonMethods" , "Common methods" , FTP);
Return TestTable;

View File

@@ -45,6 +45,337 @@
#Region CommonMethods
// Create Connection !NOCLI
// Creates an FTP connection with the specified settings
//
// Parameters:
// FTPSettings - Structure Of KeyAndValue - FTP settings. See GetConnectionSettings - set
// Proxy - Structure Of KeyAndValue - Proxy settings, if required. See GetProxySettings - proxy
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Arbitrary - Client object or map with error information
Function CreateConnection(Val FTPSettings, Val Proxy = Undefined, Val Tls = Undefined) Export
If IsConnector(FTPSettings) Then
Return FTPSettings;
EndIf;
Connector = OPI_AddIns.GetAddIn("FTP");
SetSettings = SetFtpSettings(Connector, FTPSettings);
If Not OPI_Tools.GetOr(SetSettings, "result", False) Then
Return SetSettings;
EndIf;
Tls = OPI_AddIns.SetTls(Connector, Tls);
If Not OPI_Tools.GetOr(Tls, "result", False) Then
Return Tls;
EndIf;
SetProxy = SetProxySettings(Connector, Proxy);
If Not OPI_Tools.GetOr(SetProxy, "result", False) Then
Return SetProxy;
EndIf;
Result = Connector.Connect();
Result = OPI_Tools.JSONToStructure(Result);
Return ?(Result["result"], Connector, Result);
EndFunction
// Get connection configuration
// Forms a complete structure of connection settings that can be used instead of the actual connection when calling other functions
//
// Note
// Can be passed as the `Connection` parameter in other functions instead of the actual connection from the `CreateConnection` function.
// At the same time, a new connection will be opened and closed within the called function
// Using the connection configuration is not recommended for multiple requests to the FTP server.^^
// This functionality is primarily intended for the CLI version of OInt, where maintaining a connection between calls is not possible
//
// Parameters:
// FTPSettings - Structure Of KeyAndValue - FTP settings. See GetConnectionSettings - set
// Proxy - Structure Of KeyAndValue - Proxy settings, if required. See GetProxySettings - proxy
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
//
// Returns:
// Structure Of KeyAndValue - Connection settings structure
Function GetConnectionConfiguration(Val FTPSettings, Val Proxy = Undefined, Val Tls = Undefined) Export
ConfigurationStructure = New Structure;
OPI_Tools.AddField("set" , FTPSettings, "Collection", ConfigurationStructure);
OPI_Tools.AddField("proxy", Proxy , "Collection", ConfigurationStructure);
OPI_Tools.AddField("tls" , Tls , "Collection", ConfigurationStructure);
Return ConfigurationStructure;
EndFunction
// Close connection !NOCLI
// Explicitly closes the passed connection
//
// Parameters:
// Connection - Arbitrary - AddIn object with open connection - conn
//
// Returns:
// Structure Of KeyAndValue - Result of connection termination
Function CloseConnection(Val Connection) Export
CheckCreateConnection(Connection);
Result = Connection.Close();
Return Result;
EndFunction
Function GetWelcomeMessage(Val Connection) Export
CloseConnection = CheckCreateConnection(Connection);
If Not IsConnector(Connection) Then
Result = Connection;
Else
Result = Connection.GetWelcomeMsg();
Result = OPI_Tools.JsonToStructure(Result);
EndIf;
If CloseConnection Then
Result.Insert("close_connection", CloseConnection(Connection));
EndIf;
Return Result;
EndFunction
// Is connector !NOCLI
// Checks that the value is an AddIn object for working with FTP
//
// Parameters:
// Value - Arbitrary - Value to check - value
//
// Returns:
// Boolean - Is connector
Function IsConnector(Val Value) Export
Return String(TypeOf(Value)) = "AddIn.OPI_FTP.Main";
EndFunction
// Get connection settings
// Creates a structure of FTP connection settings
//
// Parameters:
// Domain - String - Server domain - host
// Port - Number - Server port - port
// Login - String, Undefined - Username for authorization, if required - login
// Password - String, Undefined - User password for authorization, if required - pass
// Passive - Boolean - Passive connection mode - passive
// ReadTimeout - Number - Read timeout - rtout
// WriteTimeout - Number - Write timeout - wtout
//
// Returns:
// Structure Of KeyAndValue - Connection settings structure
Function GetConnectionSettings(Val Domain
, Val Port = 21
, Val Login = Undefined
, Val Password = Undefined
, Val Passive = True
, Val ReadTimeout = 120
, Val WriteTimeout = 120) Export
SettingsStructure = New Structure;
OPI_Tools.AddField("domain" , Domain , "String" , SettingsStructure);
OPI_Tools.AddField("port" , Port , "Number" , SettingsStructure);
OPI_Tools.AddField("passive" , Passive , "Boolean", SettingsStructure);
OPI_Tools.AddField("read_timeout" , ReadTimeout , "Number" , SettingsStructure);
OPI_Tools.AddField("write_timeout", WriteTimeout , "Number" , SettingsStructure);
If Not Login = Undefined Then
OPI_TypeConversion.GetLine(Login);
SettingsStructure.Insert("login", Login);
EndIf;
If Not Password = Undefined Then
OPI_TypeConversion.GetLine(Password);
SettingsStructure.Insert("password", Password);
EndIf;
//@skip-check constructor-function-return-section
Return SettingsStructure;
EndFunction
// Get proxy settings
// Creates a structure of proxy server settings for the connection
//
// Parameters:
// Address - String - Proxy address - addr
// Port - Number - Proxy port - port
// View - String - Proxy type: socks5, socks4, http - type
// Login - String, Undefined - Authorization login, if required - login
// Password - String, Undefined - Authorization password, if required - pass
//
// Returns:
// Structure Of KeyAndValue - Proxy settings structure
Function GetProxySettings(Val Address
, Val Port
, Val View = "socks5"
, Val Login = Undefined
, Val Password = Undefined) Export
SettingsStructure = New Structure;
OPI_Tools.AddField("server" , Address, "String" , SettingsStructure);
OPI_Tools.AddField("port" , Port , "Number" , SettingsStructure);
OPI_Tools.AddField("proxy_type", View , "String" , SettingsStructure);
If Not Login = Undefined Then
OPI_TypeConversion.GetLine(Login);
SettingsStructure.Insert("login", Login);
EndIf;
If Not Password = Undefined Then
OPI_TypeConversion.GetLine(Password);
SettingsStructure.Insert("password", Password);
EndIf;
//@skip-check constructor-function-return-section
Return SettingsStructure;
EndFunction
// Get TLS Settings
// Forms settings for using TLS
//
// Note
// Tls settings can only be set when a connection is created: explicitly, by using the `OpenConnection` function^^
// or implicit, when passing settings
//
// Parameters:
// DisableCertVerification - Boolean - Allows to work with invalid certificates, including self signed - trust
// CertFilepath - String - Path to the root PEM file of the certificate if it is not in the system repository - cert
//
// Returns:
// Structure Of KeyAndValue - Structure of TLS connection settings
Function GetTlsSettings(Val DisableCertVerification, Val CertFilepath = "") Export
Return OPI_AddIns.GetTlsSettings(DisableCertVerification, CertFilepath);
EndFunction
#EndRegion
#EndRegion
#Region Private
Function SetFtpSettings(Val Connector, Val FTPSettings)
ErrorText = "FTP settings are not a valid key-value structure";
Settings = SettingAsJson(FTPSettings, ErrorText);
If TypeOf(Settings) = Type("Map") Then
Return Settings;
EndIf;
Result = Connector.UpdateSettings(Settings);
Result = OPI_Tools.JsonToStructure(Result);
Return Result;
EndFunction
Function SetProxySettings(Val Connector, Val ProxySettings)
If ProxySettings = Undefined Then
Result = New Map;
Result.Insert("result", True);
Return Result;
EndIf;
ErrorText = "Proxy settings are not a valid key-value structure";
Settings = SettingAsJson(ProxySettings, ErrorText);
If TypeOf(Settings) = Type("Map") Then
Return Settings;
EndIf;
Result = Connector.UpdateProxy(Settings);
Result = OPI_Tools.JsonToStructure(Result);
Return Result;
EndFunction
Function SettingAsJson(Val Collection, Val ErrorText)
OPI_TypeConversion.GetKeyValueCollection(Collection);
Try
Result = OPI_Tools.JSONString(Collection);
Except
Result = New Map;
Result.Insert("result", False);
Result.Insert("error" , "FTP settings must contain only serializable values");
EndTry;
Return Result;
EndFunction
Function CreateConnectionByConfiguration(Val ConfigurationStructure)
If IsConnector(ConfigurationStructure) Then
Return ConfigurationStructure;
EndIf;
ErrorText = "Unexpected connection configuration";
Try
OPI_TypeConversion.GetKeyValueCollection(ConfigurationStructure);
Except
Result = New Map;
Result.Insert("result", False);
Result.Insert("error" , ErrorText);
Return Result;
EndTry;
If Not OPI_Tools.CollectionFieldExists(ConfigurationStructure, "set") Then
Result = New Map;
Result.Insert("result", False);
Result.Insert("error" , ErrorText);
Return Result;
EndIf;
FTPSettings = ConfigurationStructure["set"];
Proxy = OPI_Tools.GetOr(ConfigurationStructure, "proxy", Undefined);
Tls = OPI_Tools.GetOr(ConfigurationStructure, "tls", Undefined);
Return CreateConnection(FTPSettings, Proxy, Tls);
EndFunction
Function CheckCreateConnection(Connection)
If IsConnector(Connection) Then
CloseConnection = False;
Else
CloseConnection = True;
Connection = CreateConnectionByConfiguration(Connection);
EndIf;
Return CloseConnection;
EndFunction
#EndRegion

View File

@@ -55,6 +55,7 @@ Function GetTestingSectionMapping() Export
Sections.Insert("VK" , 5);
Sections.Insert("Viber" , 5);
Sections.Insert("Twitter" , 4);
Sections.Insert("FTP" , 5);
Sections.Insert("PostgreSQL" , 5);
Sections.Insert("MySQL" , 5);
Sections.Insert("MSSQL" , 5);
@@ -96,6 +97,7 @@ Function GetTestingSectionMappingGA() Export
Sections.Insert("VK" , StandardDependencies);
Sections.Insert("Viber" , StandardDependencies);
Sections.Insert("Twitter" , StandardDependencies);
Sections.Insert("FTP" , StandardDependencies);
Sections.Insert("PostgreSQL" , StandardDependencies);
Sections.Insert("MySQL" , StandardDependencies);
Sections.Insert("MSSQL" , StandardDependencies);
@@ -159,6 +161,7 @@ Function GetTestTable() Export
Http = "HTTPClient";
OpenAI = "OpenAI";
MSSQL = "MSSQL";
FTP = "FTP";
TestTable = New ValueTable;
TestTable.Columns.Add("Method");
@@ -324,6 +327,7 @@ Function GetTestTable() Export
NewTest(TestTable, "OAI_FileManagement" , "Files management" , OpenAI);
NewTest(TestTable, "OAI_AudioProcessing" , "Audio processing" , OpenAI);
NewTest(TestTable, "OAI_ModelsManagement" , "Models management" , OpenAI);
NewTest(TestTable, "FT_CommonMethods" , "Common methods" , FTP);
Return TestTable;

View File

@@ -2864,6 +2864,21 @@ EndProcedure
#EndRegion
#Region FTP
Procedure FT_CommonMethods() Export
TestParameters = New Structure;
OPI_TestDataRetrieval.ParameterToCollection("PG_IP" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("PG_Password", TestParameters);
FTP_CreateConnection(TestParameters);
FTP_GetWelcomeMessage(TestParameters);
EndProcedure
#EndRegion
#EndRegion
#EndRegion
@@ -24739,6 +24754,60 @@ EndProcedure
#EndRegion
#Region FTP
Procedure FTP_CreateConnection(FunctionParameters)
Domain = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
// Simple connection
FTPSettings = OPI_FTP.GetConnectionSettings(Domain, 21);
Result = OPI_FTP.CreateConnection(FTPSettings);
OPI_TestDataRetrieval.WriteLog(Result, "CreateConnection", "FTP"); // SKIP
OPI_TestDataRetrieval.Check_AddIn(Result, "AddIn.OPI_FTP.Main"); // SKIP
// TLS connection through proxy
FTPDomain = "172.33.0.11";
ProxyAddress = FunctionParameters["PG_IP"];
FTPSettings = OPI_FTP.GetConnectionSettings(FTPDomain, 21, Login, "12we3456!2154");
ProxySettings = OPI_FTP.GetProxySettings(ProxyAddress, 1080, "socks5", "proxyuser", Password);
TLSSettings = OPI_FTP.GetTlsSettings(True);
Result = OPI_FTP.CreateConnection(FTPSettings, ProxySettings, TLSSettings);
// END
OPI_TestDataRetrieval.WriteLog(Result, "CreateConnection (proxy + tls)", "FTP");
OPI_TestDataRetrieval.Check_AddIn(Result, "AddIn.OPI_FTP.Main");
EndProcedure
Procedure FTP_GetWelcomeMessage(FunctionParameters)
Domain = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
FTPSettings = OPI_FTP.GetConnectionSettings(Domain, 21, Login, Password);
Connection = OPI_FTP.CreateConnection(FTPSettings);
Result = OPI_FTP.GetWelcomeMessage(Connection);
// END
OPI_TestDataRetrieval.WriteLog(Result, "GetWelcomeMessage", "FTP");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
EndProcedure
#EndRegion
#EndRegion
#EndRegion

View File

@@ -28,6 +28,7 @@ Procedure InitializeCommonLists() Export
ModuleCommandMapping.Insert("bitrix24", "OPI_Bitrix24");
ModuleCommandMapping.Insert("cdek", "OPI_CDEK");
ModuleCommandMapping.Insert("dropbox", "OPI_Dropbox");
ModuleCommandMapping.Insert("ftp", "OPI_FTP");
ModuleCommandMapping.Insert("gcalendar", "OPI_GoogleCalendar");
ModuleCommandMapping.Insert("gdrive", "OPI_GoogleDrive");
ModuleCommandMapping.Insert("gsheets", "OPI_GoogleSheets");

View File

@@ -0,0 +1,211 @@

Var CompositionTable;
Function GetComposition() Export
If CompositionTable <> Undefined Then
Return CompositionTable;
EndIf;
CompositionTable = New ValueTable();
CompositionTable.Columns.Add("Library");
CompositionTable.Columns.Add("Module");
CompositionTable.Columns.Add("Method");
CompositionTable.Columns.Add("SearchMethod");
CompositionTable.Columns.Add("Parameter");
CompositionTable.Columns.Add("Description");
CompositionTable.Columns.Add("MethodDescription");
CompositionTable.Columns.Add("Region");
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "GetConnectionConfiguration";
NewLine.SearchMethod = "GETCONNECTIONCONFIGURATION";
NewLine.Parameter = "--set";
NewLine.Description = "FTP settings. See GetConnectionSettings";
NewLine.Region = "Common methods";
NewLine.MethodDescription = "Forms a complete structure of connection settings that can be used instead of the actual connection when calling other functions";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "GetConnectionConfiguration";
NewLine.SearchMethod = "GETCONNECTIONCONFIGURATION";
NewLine.Parameter = "--proxy";
NewLine.Description = "Proxy settings, if required. See GetProxySettings (optional, def. val. - Empty value)";
NewLine.Region = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "GetConnectionConfiguration";
NewLine.SearchMethod = "GETCONNECTIONCONFIGURATION";
NewLine.Parameter = "--tls";
NewLine.Description = "TLS settings, if necessary. See GetTlsSettings (optional, def. val. - Empty value)";
NewLine.Region = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "GetConnectionSettings";
NewLine.SearchMethod = "GETCONNECTIONSETTINGS";
NewLine.Parameter = "--host";
NewLine.Description = "Server domain";
NewLine.Region = "Common methods";
NewLine.MethodDescription = "Creates a structure of FTP connection settings";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "GetConnectionSettings";
NewLine.SearchMethod = "GETCONNECTIONSETTINGS";
NewLine.Parameter = "--port";
NewLine.Description = "Server port (optional, def. val. - 21)";
NewLine.Region = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "GetConnectionSettings";
NewLine.SearchMethod = "GETCONNECTIONSETTINGS";
NewLine.Parameter = "--login";
NewLine.Description = "Username for authorization, if required (optional, def. val. - Empty value)";
NewLine.Region = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "GetConnectionSettings";
NewLine.SearchMethod = "GETCONNECTIONSETTINGS";
NewLine.Parameter = "--pass";
NewLine.Description = "User password for authorization, if required (optional, def. val. - Empty value)";
NewLine.Region = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "GetConnectionSettings";
NewLine.SearchMethod = "GETCONNECTIONSETTINGS";
NewLine.Parameter = "--passive";
NewLine.Description = "Passive connection mode (optional, def. val. - True)";
NewLine.Region = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "GetConnectionSettings";
NewLine.SearchMethod = "GETCONNECTIONSETTINGS";
NewLine.Parameter = "--rtout";
NewLine.Description = "Read timeout (optional, def. val. - 120)";
NewLine.Region = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "GetConnectionSettings";
NewLine.SearchMethod = "GETCONNECTIONSETTINGS";
NewLine.Parameter = "--wtout";
NewLine.Description = "Write timeout (optional, def. val. - 120)";
NewLine.Region = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "GetProxySettings";
NewLine.SearchMethod = "GETPROXYSETTINGS";
NewLine.Parameter = "--addr";
NewLine.Description = "Proxy address";
NewLine.Region = "Common methods";
NewLine.MethodDescription = "Creates a structure of proxy server settings for the connection";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "GetProxySettings";
NewLine.SearchMethod = "GETPROXYSETTINGS";
NewLine.Parameter = "--port";
NewLine.Description = "Proxy port";
NewLine.Region = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "GetProxySettings";
NewLine.SearchMethod = "GETPROXYSETTINGS";
NewLine.Parameter = "--type";
NewLine.Description = "Proxy type: socks5, socks4, http (optional, def. val. - socks5)";
NewLine.Region = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "GetProxySettings";
NewLine.SearchMethod = "GETPROXYSETTINGS";
NewLine.Parameter = "--login";
NewLine.Description = "Authorization login, if required (optional, def. val. - Empty value)";
NewLine.Region = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "GetProxySettings";
NewLine.SearchMethod = "GETPROXYSETTINGS";
NewLine.Parameter = "--pass";
NewLine.Description = "Authorization password, if required (optional, def. val. - Empty value)";
NewLine.Region = "Common methods";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "GetTlsSettings";
NewLine.SearchMethod = "GETTLSSETTINGS";
NewLine.Parameter = "--trust";
NewLine.Description = "Allows to work with invalid certificates, including self signed";
NewLine.Region = "Common methods";
NewLine.MethodDescription = "Forms settings for using TLS";
NewLine = CompositionTable.Add();
NewLine.Library = "ftp";
NewLine.Module = "OPI_FTP";
NewLine.Method = "GetTlsSettings";
NewLine.SearchMethod = "GETTLSSETTINGS";
NewLine.Parameter = "--cert";
NewLine.Description = "Path to the root PEM file of the certificate if it is not in the system repository (optional, def. val. - Empty value)";
NewLine.Region = "Common methods";
Return CompositionTable;
EndFunction
Function GetConnectionString() Export
Return "
|Context = New Structure;
|Context.Insert(""OPI_FTP"", Undefined);
|
|OPI_FTP = LoadScript(""%1/oint/core/Modules/OPI_FTP.os"", Context);
|Context.Insert(""OPI_FTP"", OPI_FTP);
|
|OPI_FTP = LoadScript(""%1/oint/core/Modules/OPI_FTP.os"", Context);
|" + Chars.LF;
EndFunction

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_FTP.os
// OneScript: ./OInt/core/Modules/OPI_FTP.os
// Lib: FTP
// CLI: ftp
// Keywords: ftp, ftps
@@ -45,6 +45,373 @@
#Область ОсновныеМетоды
// Открыть соединение !NOCLI
// Открывает FTP соединение с указанными настройками
//
// Параметры:
// НастройкиFTP - Структура Из КлючИЗначение - Настройки FTP. См. ПолучитьНастройкиСоединения - set
// Прокси - Структура Из КлючИЗначение - Настройки прокси, если необходимо. См ПолучитьНастройкиПрокси - proxy
// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls
//
// Возвращаемое значение:
// Произвольный - Объект коннектора или соответствие с информацией об ошибке
Функция ОткрытьСоединение(Знач НастройкиFTP, Знач Прокси = Неопределено, Знач Tls = Неопределено) Экспорт
Если ЭтоКоннектор(НастройкиFTP) Тогда
Возврат НастройкиFTP;
КонецЕсли;
Коннектор = OPI_Компоненты.ПолучитьКомпоненту("FTP");
УстановкаНастроек = УстановитьНастройкиFtp(Коннектор, НастройкиFTP);
Если Не OPI_Инструменты.ПолучитьИли(УстановкаНастроек, "result", Ложь) Тогда
Возврат УстановкаНастроек;
КонецЕсли;
Tls = OPI_Компоненты.УстановитьTls(Коннектор, Tls);
Если Не OPI_Инструменты.ПолучитьИли(Tls, "result", Ложь) Тогда
Возврат Tls;
КонецЕсли;
УстановитьПрокси = УстановитьНастройкиПрокси(Коннектор, Прокси);
Если Не OPI_Инструменты.ПолучитьИли(УстановитьПрокси, "result", Ложь) Тогда
Возврат УстановитьПрокси;
КонецЕсли;
Результат = Коннектор.Connect();
Результат = OPI_Инструменты.JSONВСтруктуру(Результат);
Возврат ?(Результат["result"], Коннектор, Результат);
КонецФункции
// Получить конфигурацию соединения
// Формирует полную структуру настроек соединения, которая может быть использована вместо самого соединения при вызове других функций
//
// Примечание:
// Может быть передана в качестве параметра `Соединение` в других функциях вместо настоящего соединения из функции `ОткрытьСоединение`.^^
// При этом новое соединение будет открыто и закрыто в рамках вызываемой функции
// Не рекомендуется использовать конфигурацию соединения при множественных обращениях к серверу FTP.^^
// Данный фунционал предназначен, в первую очередь для CLI версии ОПИ, где хранение соединения между вызовами невозможно
//
// Параметры:
// НастройкиFTP - Структура Из КлючИЗначение - Настройки FTP. См. ПолучитьНастройкиСоединения - set
// Прокси - Структура Из КлючИЗначение - Настройки прокси, если необходимо. См ПолучитьНастройкиПрокси - proxy
// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура настроек соединения
Функция ПолучитьКонфигурациюСоединиения(Знач НастройкиFTP, Знач Прокси = Неопределено, Знач Tls = Неопределено) Экспорт
СтруктураКонфигурации = Новый Структура;
OPI_Инструменты.ДобавитьПоле("set" , НастройкиFTP, "Коллекция", СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("proxy", Прокси , "Коллекция", СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("tls" , Tls , "Коллекция", СтруктураКонфигурации);
Возврат СтруктураКонфигурации;
КонецФункции
// Закрыть соединение !NOCLI
// Явно закрывает переданное соединение
//
// Параметры:
// Соединение - Произвольный - Объект компоненты с открытым соединением - conn
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Результат закрытия соединения
Функция ЗакрытьСоединение(Знач Соединение) Экспорт
ПроверитьСоздатьСоединение(Соединение);
Результат = Соединение.Close();
Возврат Результат;
КонецФункции
Функция ПолучитьПриветственноеСообщение(Знач Соединение) Экспорт
ЗакрыватьСоединение = ПроверитьСоздатьСоединение(Соединение);
Если Не ЭтоКоннектор(Соединение) Тогда
Результат = Соединение;
Иначе
Результат = Соединение.GetWelcomeMsg();
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
КонецЕсли;
Если ЗакрыватьСоединение Тогда
Результат.Вставить("close_connection", ЗакрытьСоединение(Соединение));
КонецЕсли;
Возврат Результат;
КонецФункции
// Это коннектор !NOCLI
// Проверяет, что значение является объектом внешней компоненты для работы с FTP
//
// Параметры:
// Значение - Произвольный - Значение для проверки - value
//
// Возвращаемое значение:
// Булево - Это коннектор
Функция ЭтоКоннектор(Знач Значение) Экспорт
Возврат Строка(ТипЗнч(Значение)) = "AddIn.OPI_FTP.Main";
КонецФункции
// Получить настройки соединения
// Формирует структуру настроек подключения FTP
//
// Параметры:
// Домен - Строка - Домен сервера - host
// Порт - Число - Порт сервера - port
// Логин - Строка, Неопределено - Имя пользователя авторизации, если необходимо - login
// Пароль - Строка, Неопределено - Пароль пользователя для авторизации, если необходимо - pass
// Пассивный - Булево - Пассивный режим соединения - passive
// ТаймаутЧтения - Число - Таймаут чтения - rtout
// ТаймаутЗаписи - Число - Таймаут записи - wtout
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура настроек соединения
Функция ПолучитьНастройкиСоединения(Знач Домен
, Знач Порт = 21
, Знач Логин = Неопределено
, Знач Пароль = Неопределено
, Знач Пассивный = Истина
, Знач ТаймаутЧтения = 120
, Знач ТаймаутЗаписи = 120) Экспорт
СтруктураНастроек = Новый Структура;
OPI_Инструменты.ДобавитьПоле("domain" , Домен , "Строка", СтруктураНастроек);
OPI_Инструменты.ДобавитьПоле("port" , Порт , "Число" , СтруктураНастроек);
OPI_Инструменты.ДобавитьПоле("passive" , Пассивный , "Булево", СтруктураНастроек);
OPI_Инструменты.ДобавитьПоле("read_timeout" , ТаймаутЧтения , "Число" , СтруктураНастроек);
OPI_Инструменты.ДобавитьПоле("write_timeout", ТаймаутЗаписи , "Число" , СтруктураНастроек);
Если Не Логин = Неопределено Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(Логин);
СтруктураНастроек.Вставить("login", Логин);
КонецЕсли;
Если Не Пароль = Неопределено Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль);
СтруктураНастроек.Вставить("password", Пароль);
КонецЕсли;
//@skip-check constructor-function-return-section
Возврат СтруктураНастроек;
КонецФункции
// Получить настройки прокси
// Формирует структуру настроек прокси-сервера для соединения
//
// Параметры:
// Адрес - Строка - Адрес прокси - addr
// Порт - Число - Порт прокси - port
// Вид - Строка - Вид прокси: socks5, socks4, http - type
// Логин - Строка, Неопределено - Логин авторизации, если необходимо - login
// Пароль - Строка, Неопределено - Пароль для авторизации, если необходимо - pass
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура настроек прокси
Функция ПолучитьНастройкиПрокси(Знач Адрес
, Знач Порт
, Знач Вид = "socks5"
, Знач Логин = Неопределено
, Знач Пароль = Неопределено) Экспорт
СтруктураНастроек = Новый Структура;
OPI_Инструменты.ДобавитьПоле("server" , Адрес, "Строка", СтруктураНастроек);
OPI_Инструменты.ДобавитьПоле("port" , Порт , "Число" , СтруктураНастроек);
OPI_Инструменты.ДобавитьПоле("proxy_type", Вид , "Строка", СтруктураНастроек);
Если Не Логин = Неопределено Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(Логин);
СтруктураНастроек.Вставить("login", Логин);
КонецЕсли;
Если Не Пароль = Неопределено Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль);
СтруктураНастроек.Вставить("password", Пароль);
КонецЕсли;
//@skip-check constructor-function-return-section
Возврат СтруктураНастроек;
КонецФункции
// Получить настройки TLS
// Формирует настройки для использования TLS при выполнении запросов
//
// Примечание:
// Настройки Tls могут быть установлены только в момент создания соединения: явного, при использовании функции `ОткрытьСоединение`^^
// или неявного, при передаче настроек
//
// Параметры:
// ОтключитьПроверкуСертификатов - Булево - Позволяет работать с некорретными сертификатами, в т.ч. самоподписанными - trust
// ПутьКСертификату - Строка - Путь к корневому PEM файлу сертификата, если его нет в системном хранилище - cert
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура настроек TLS соединения
Функция ПолучитьНастройкиTls(Знач ОтключитьПроверкуСертификатов, Знач ПутьКСертификату = "") Экспорт
Возврат OPI_Компоненты.ПолучитьНастройкиTls(ОтключитьПроверкуСертификатов, ПутьКСертификату);
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция УстановитьНастройкиFtp(Знач Коннектор, Знач НастройкиFTP)
ТекстОшибки = "Настройки FTP не являются валидной структурой ключ-значение";
Настройки = НастройкиВJson(НастройкиFTP, ТекстОшибки);
Если ТипЗнч(Настройки) = Тип("Соответствие") Тогда
Возврат Настройки;
КонецЕсли;
Результат = Коннектор.UpdateSettings(Настройки);
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Возврат Результат;
КонецФункции
Функция УстановитьНастройкиПрокси(Знач Коннектор, Знач НастройкиПрокси)
Если НастройкиПрокси = Неопределено Тогда
Результат = Новый Соответствие;
Результат.Вставить("result", Истина);
Возврат Результат;
КонецЕсли;
ТекстОшибки = "Настройки прокси не являются валидной структурой ключ-значение";
Настройки = НастройкиВJson(НастройкиПрокси, ТекстОшибки);
Если ТипЗнч(Настройки) = Тип("Соответствие") Тогда
Возврат Настройки;
КонецЕсли;
Результат = Коннектор.UpdateProxy(Настройки);
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Возврат Результат;
КонецФункции
Функция НастройкиВJson(Знач Коллекция, Знач ТекстОшибки)
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Коллекция);
Попытка
Результат = OPI_Инструменты.JSONСтрокой(Коллекция);
Исключение
Результат = Новый Соответствие;
Результат.Вставить("result", Ложь);
Результат.Вставить("error" , "Настройки FTP должны содержать только сериализуемые значения");
КонецПопытки;
Возврат Результат;
КонецФункции
Функция ОткрытьСоединениеПоКонфигурации(Знач СтруктураКонфигурации)
Если ЭтоКоннектор(СтруктураКонфигурации) Тогда
Возврат СтруктураКонфигурации;
КонецЕсли;
ТекстОшибки = "Передана некорректная конфигурация соединения";
Попытка
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(СтруктураКонфигурации);
Исключение
Результат = Новый Соответствие;
Результат.Вставить("result", Ложь);
Результат.Вставить("error" , ТекстОшибки);
Возврат Результат;
КонецПопытки;
Если Не OPI_Инструменты.ПолеКоллекцииСуществует(СтруктураКонфигурации, "set") Тогда
Результат = Новый Соответствие;
Результат.Вставить("result", Ложь);
Результат.Вставить("error" , ТекстОшибки);
Возврат Результат;
КонецЕсли;
НастройкиFTP = СтруктураКонфигурации["set"];
Прокси = OPI_Инструменты.ПолучитьИли(СтруктураКонфигурации, "proxy", Неопределено);
Tls = OPI_Инструменты.ПолучитьИли(СтруктураКонфигурации, "tls", Неопределено);
Возврат ОткрытьСоединение(НастройкиFTP, Прокси, Tls);
КонецФункции
Функция ПроверитьСоздатьСоединение(Соединение)
Если ЭтоКоннектор(Соединение) Тогда
ЗакрыватьСоединение = Ложь;
Иначе
ЗакрыватьСоединение = Истина;
Соединение = ОткрытьСоединениеПоКонфигурации(Соединение);
КонецЕсли;
Возврат ЗакрыватьСоединение;
КонецФункции
#КонецОбласти
#Region Alternate
Function CreateConnection(Val FTPSettings, Val Proxy = Undefined, Val Tls = Undefined) Export
Return ОткрытьСоединение(FTPSettings, Proxy, Tls);
EndFunction
Function GetConnectionConfiguration(Val FTPSettings, Val Proxy = Undefined, Val Tls = Undefined) Export
Return ПолучитьКонфигурациюСоединиения(FTPSettings, Proxy, Tls);
EndFunction
Function CloseConnection(Val Connection) Export
Return ЗакрытьСоединение(Connection);
EndFunction
Function GetWelcomeMessage(Val Connection) Export
Return ПолучитьПриветственноеСообщение(Connection);
EndFunction
Function IsConnector(Val Value) Export
Return ЭтоКоннектор(Value);
EndFunction
Function GetConnectionSettings(Val Domain, Val Port = 21, Val Login = Undefined, Val Password = Undefined, Val Passive = True, Val ReadTimeout = 120, Val WriteTimeout = 120) Export
Return ПолучитьНастройкиСоединения(Domain, Port, Login, Password, Passive, ReadTimeout, WriteTimeout);
EndFunction
Function GetProxySettings(Val Address, Val Port, Val View = "socks5", Val Login = Undefined, Val Password = Undefined) Export
Return ПолучитьНастройкиПрокси(Address, Port, View, Login, Password);
EndFunction
Function GetTlsSettings(Val DisableCertVerification, Val CertFilepath = "") Export
Return ПолучитьНастройкиTls(DisableCertVerification, CertFilepath);
EndFunction
#EndRegion

View File

@@ -2864,6 +2864,21 @@
#КонецОбласти
#Область FTP
Процедура FT_ОсновныеМетоды() Экспорт
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста);
FTP_ОткрытьСоединение(ПараметрыТеста);
FTP_ПолучитьПриветственноеСообщение(ПараметрыТеста);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти
@@ -24739,6 +24754,60 @@
#КонецОбласти
#Область FTP
Процедура FTP_ОткрытьСоединение(ПараметрыФункции)
Домен = ПараметрыФункции["PG_IP"];
Логин = "bayselonarrend";
Пароль = ПараметрыФункции["PG_Password"];
// Простое подключение
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Домен, 21);
Результат = OPI_FTP.ОткрытьСоединение(НастройкиFTP);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОткрытьСоединение", "FTP"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_Компонента(Результат, "AddIn.OPI_FTP.Main"); // SKIP
// Подключение по TLS через прокси
ДоменFTP = "172.33.0.11";
АдресПрокси = ПараметрыФункции["PG_IP"];
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(ДоменFTP, 21, Логин, "12we3456!2154");
НастройкиПрокси = OPI_FTP.ПолучитьНастройкиПрокси(АдресПрокси, 1080, "socks5", "proxyuser", Пароль);
НастройкиTLS = OPI_FTP.ПолучитьНастройкиTls(Истина);
Результат = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОткрытьСоединение (прокси + tls)", "FTP");
OPI_ПолучениеДанныхТестов.Проверка_Компонента(Результат, "AddIn.OPI_FTP.Main");
КонецПроцедуры
Процедура FTP_ПолучитьПриветственноеСообщение(ПараметрыФункции)
Домен = ПараметрыФункции["PG_IP"];
Логин = "bayselonarrend";
Пароль = ПараметрыФункции["PG_Password"];
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Домен, 21, Логин, Пароль);
Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP);
Результат = OPI_FTP.ПолучитьПриветственноеСообщение(Соединение);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьПриветственноеСообщение", "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти

View File

@@ -55,6 +55,7 @@
Разделы.Вставить("VK" , 5);
Разделы.Вставить("Viber" , 5);
Разделы.Вставить("Twitter" , 4);
Разделы.Вставить("FTP" , 5);
Разделы.Вставить("PostgreSQL" , 5);
Разделы.Вставить("MySQL" , 5);
Разделы.Вставить("MSSQL" , 5);
@@ -96,6 +97,7 @@
Разделы.Вставить("VK" , СтандартныеЗависимости);
Разделы.Вставить("Viber" , СтандартныеЗависимости);
Разделы.Вставить("Twitter" , СтандартныеЗависимости);
Разделы.Вставить("FTP" , СтандартныеЗависимости);
Разделы.Вставить("PostgreSQL" , СтандартныеЗависимости);
Разделы.Вставить("MySQL" , СтандартныеЗависимости);
Разделы.Вставить("MSSQL" , СтандартныеЗависимости);
@@ -159,6 +161,7 @@
Http = "HTTPКлиент";
OpenAI = "OpenAI";
MSSQL = "MSSQL";
FTP = "FTP";
ТаблицаТестов = Новый ТаблицаЗначений;
ТаблицаТестов.Колонки.Добавить("Метод");
@@ -324,6 +327,7 @@
НовыйТест(ТаблицаТестов, "OAI_РаботаСФайлами" , "Работа с файлами" , OpenAI);
НовыйТест(ТаблицаТестов, "OAI_РаботаСАудио" , "Работа с аудио" , OpenAI);
НовыйТест(ТаблицаТестов, "OAI_РаботаСМоделями" , "Работа с моделями" , OpenAI);
НовыйТест(ТаблицаТестов, "FT_ОсновныеМетоды" , "Основные методы" , FTP);
Возврат ТаблицаТестов;

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_FTP.os
// OneScript: ./OInt/core/Modules/OPI_FTP.os
// Lib: FTP
// CLI: ftp
// Keywords: ftp, ftps
@@ -47,7 +47,7 @@
// Открыть соединение !NOCLI
// Открывает FTP соединение с указанными настройками
//
//
// Параметры:
// НастройкиFTP - Структура Из КлючИЗначение - Настройки FTP. См. ПолучитьНастройкиСоединения - set
// Прокси - Структура Из КлючИЗначение - Настройки прокси, если необходимо. См ПолучитьНастройкиПрокси - proxy
@@ -56,41 +56,41 @@
// Возвращаемое значение:
// Произвольный - Объект коннектора или соответствие с информацией об ошибке
Функция ОткрытьСоединение(Знач НастройкиFTP, Знач Прокси = Неопределено, Знач Tls = Неопределено) Экспорт
Если ЭтоКоннектор(НастройкиFTP) Тогда
Возврат НастройкиFTP;
КонецЕсли;
Коннектор = OPI_Компоненты.ПолучитьКомпоненту("FTP");
УстановкаНастроек = УстановитьНастройкиFtp(Коннектор, НастройкиFTP);
Если Не OPI_Инструменты.ПолучитьИли(УстановкаНастроек, "result", Ложь) Тогда
Возврат УстановкаНастроек;
КонецЕсли;
Tls = OPI_Компоненты.УстановитьTls(Коннектор, Tls);
Если Не OPI_Инструменты.ПолучитьИли(Tls, "result", Ложь) Тогда
Возврат Tls;
КонецЕсли;
КонецЕсли;
УстановитьПрокси = УстановитьНастройкиПрокси(Коннектор, Прокси);
Если Не OPI_Инструменты.ПолучитьИли(УстановитьПрокси, "result", Ложь) Тогда
Возврат УстановитьПрокси;
КонецЕсли;
КонецЕсли;
Результат = Коннектор.Connect();
Результат = OPI_Инструменты.JSONВСтруктуру(Результат);
Возврат ?(Результат["result"], Коннектор, Результат);
КонецФункции
// Получить конфигурацию соединения
// Формирует полную структуру настроек соединения, которая может быть использована вместо самого соединения при вызове других функций
//
//
// Примечание:
// Может быть передана в качестве параметра `Соединение` в других функциях вместо настоящего соединения из функции `ОткрытьСоединение`.^^
// При этом новое соединение будет открыто и закрыто в рамках вызываемой функции
@@ -101,19 +101,19 @@
// НастройкиFTP - Структура Из КлючИЗначение - Настройки FTP. См. ПолучитьНастройкиСоединения - set
// Прокси - Структура Из КлючИЗначение - Настройки прокси, если необходимо. См ПолучитьНастройкиПрокси - proxy
// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls
//
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура настроек соединения
Функция ПолучитьКонфигурациюСоединиения(Знач НастройкиFTP, Знач Прокси = Неопределено, Знач Tls = Неопределено) Экспорт
СтруктураКонфигурации = Новый Структура;
СтруктураКонфигурации = Новый Структура;
OPI_Инструменты.ДобавитьПоле("set" , НастройкиFTP, "Коллекция", СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("proxy", Прокси , "Коллекция", СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("tls" , Tls , "Коллекция", СтруктураКонфигурации);
Возврат СтруктураКонфигурации;
Возврат СтруктураКонфигурации;
КонецФункции
// Закрыть соединение !NOCLI
@@ -125,31 +125,31 @@
// Возвращаемое значение:
// Структура Из КлючИЗначение - Результат закрытия соединения
Функция ЗакрытьСоединение(Знач Соединение) Экспорт
ПроверитьСоздатьСоединение(Соединение);
Результат = Соединение.Close();
Возврат Результат;
ПроверитьСоздатьСоединение(Соединение);
Результат = Соединение.Close();
Возврат Результат;
КонецФункции
Функция ПолучитьПриветственноеСообщение(Знач Соединение) Экспорт
ЗакрыватьСоединение = ПроверитьСоздатьСоединение(Соединение);
Если Не ЭтоКоннектор(Соединение) Тогда
ЗакрыватьСоединение = ПроверитьСоздатьСоединение(Соединение);
Если Не ЭтоКоннектор(Соединение) Тогда
Результат = Соединение;
Иначе
Результат = Соединение.GetWelcomeMsg();
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
КонецЕсли;
Если ЗакрыватьСоединение Тогда
Результат.Вставить("close_connection", ЗакрытьСоединение(Соединение));
КонецЕсли;
Возврат Результат;
Иначе
Результат = Соединение.GetWelcomeMsg();
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
КонецЕсли;
Если ЗакрыватьСоединение Тогда
Результат.Вставить("close_connection", ЗакрытьСоединение(Соединение));
КонецЕсли;
Возврат Результат;
КонецФункции
// Это коннектор !NOCLI
@@ -168,7 +168,7 @@
// Получить настройки соединения
// Формирует структуру настроек подключения FTP
//
//
// Параметры:
// Домен - Строка - Домен сервера - host
// Порт - Число - Порт сервера - port
@@ -177,7 +177,7 @@
// Пассивный - Булево - Пассивный режим соединения - passive
// ТаймаутЧтения - Число - Таймаут чтения - rtout
// ТаймаутЗаписи - Число - Таймаут записи - wtout
//
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура настроек соединения
Функция ПолучитьНастройкиСоединения(Знач Домен
@@ -187,39 +187,39 @@
, Знач Пассивный = Истина
, Знач ТаймаутЧтения = 120
, Знач ТаймаутЗаписи = 120) Экспорт
СтруктураНастроек = Новый Структура;
OPI_Инструменты.ДобавитьПоле("domain" , Домен , "Строка", СтруктураНастроек);
OPI_Инструменты.ДобавитьПоле("port" , Порт , "Число" , СтруктураНастроек);
OPI_Инструменты.ДобавитьПоле("passive" , Пассивный , "Булево", СтруктураНастроек);
OPI_Инструменты.ДобавитьПоле("read_timeout" , ТаймаутЧтения , "Число" , СтруктураНастроек);
OPI_Инструменты.ДобавитьПоле("write_timeout", ТаймаутЗаписи , "Число" , СтруктураНастроек);
Если Не Логин = Неопределено Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(Логин);
СтруктураНастроек.Вставить("login", Логин);
КонецЕсли;
Если Не Пароль = Неопределено Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль);
СтруктураНастроек.Вставить("password", Пароль);
КонецЕсли;
//@skip-check constructor-function-return-section
Возврат СтруктураНастроек;
КонецФункции
// Получить настройки прокси
// Формирует структуру настроек прокси-сервера для соединения
//
//
// Параметры:
// Адрес - Строка - Адрес прокси - addr
// Порт - Число - Порт прокси - port
// Вид - Строка - Вид прокси: socks5, socks4, http - type
// Логин - Строка, Неопределено - Логин авторизации, если необходимо - login
// Пароль - Строка, Неопределено - Пароль для авторизации, если необходимо - pass
//
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура настроек прокси
Функция ПолучитьНастройкиПрокси(Знач Адрес
@@ -232,20 +232,20 @@
OPI_Инструменты.ДобавитьПоле("server" , Адрес, "Строка", СтруктураНастроек);
OPI_Инструменты.ДобавитьПоле("port" , Порт , "Число" , СтруктураНастроек);
OPI_Инструменты.ДобавитьПоле("proxy_type", Вид , "Строка", СтруктураНастроек);
Если Не Логин = Неопределено Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(Логин);
СтруктураНастроек.Вставить("login", Логин);
КонецЕсли;
Если Не Пароль = Неопределено Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль);
СтруктураНастроек.Вставить("password", Пароль);
КонецЕсли;
//@skip-check constructor-function-return-section
Возврат СтруктураНастроек;
КонецФункции
// Получить настройки TLS
@@ -277,16 +277,16 @@
ТекстОшибки = "Настройки FTP не являются валидной структурой ключ-значение";
Настройки = НастройкиВJson(НастройкиFTP, ТекстОшибки);
Если ТипЗнч(Настройки) = Тип("Соответствие") Тогда
Возврат Настройки;
КонецЕсли;
Результат = Коннектор.UpdateSettings(Настройки);
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Возврат Результат;
КонецФункции
Функция УстановитьНастройкиПрокси(Знач Коннектор, Знач НастройкиПрокси)
@@ -296,86 +296,86 @@
Результат.Вставить("result", Истина);
Возврат Результат;
КонецЕсли;
ТекстОшибки = "Настройки прокси не являются валидной структурой ключ-значение";
Настройки = НастройкиВJson(НастройкиПрокси, ТекстОшибки);
Если ТипЗнч(Настройки) = Тип("Соответствие") Тогда
Возврат Настройки;
КонецЕсли;
Результат = Коннектор.UpdateProxy(Настройки);
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Возврат Результат;
КонецФункции
Функция НастройкиВJson(Знач Коллекция, Знач ТекстОшибки)
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Коллекция);
Попытка
Попытка
Результат = OPI_Инструменты.JSONСтрокой(Коллекция);
Исключение
Результат = Новый Соответствие;
Результат.Вставить("result", Ложь);
Результат.Вставить("error" , "Настройки FTP должны содержать только сериализуемые значения");
КонецПопытки;
Возврат Результат;
КонецФункции
Функция ОткрытьСоединениеПоКонфигурации(Знач СтруктураКонфигурации)
Если ЭтоКоннектор(СтруктураКонфигурации) Тогда
Возврат СтруктураКонфигурации;
КонецЕсли;
ТекстОшибки = "Передана некорректная конфигурация соединения";
Попытка
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(СтруктураКонфигурации);
Исключение
Результат = Новый Соответствие;
Результат.Вставить("result", Ложь);
Результат.Вставить("error" , ТекстОшибки);
Возврат Результат;
КонецПопытки;
Если Не OPI_Инструменты.ПолеКоллекцииСуществует(СтруктураКонфигурации, "set") Тогда
Результат = Новый Соответствие;
Результат.Вставить("result", Ложь);
Результат.Вставить("error" , ТекстОшибки);
Возврат Результат;
КонецЕсли;
НастройкиFTP = СтруктураКонфигурации["set"];
Прокси = OPI_Инструменты.ПолучитьИли(СтруктураКонфигурации, "proxy", Неопределено);
Tls = OPI_Инструменты.ПолучитьИли(СтруктураКонфигурации, "tls", Неопределено);
Возврат ОткрытьСоединение(НастройкиFTP, Прокси, Tls);
Если ЭтоКоннектор(СтруктураКонфигурации) Тогда
Возврат СтруктураКонфигурации;
КонецЕсли;
ТекстОшибки = "Передана некорректная конфигурация соединения";
Попытка
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(СтруктураКонфигурации);
Исключение
Результат = Новый Соответствие;
Результат.Вставить("result", Ложь);
Результат.Вставить("error" , ТекстОшибки);
Возврат Результат;
КонецПопытки;
Если Не OPI_Инструменты.ПолеКоллекцииСуществует(СтруктураКонфигурации, "set") Тогда
Результат = Новый Соответствие;
Результат.Вставить("result", Ложь);
Результат.Вставить("error" , ТекстОшибки);
Возврат Результат;
КонецЕсли;
НастройкиFTP = СтруктураКонфигурации["set"];
Прокси = OPI_Инструменты.ПолучитьИли(СтруктураКонфигурации, "proxy", Неопределено);
Tls = OPI_Инструменты.ПолучитьИли(СтруктураКонфигурации, "tls", Неопределено);
Возврат ОткрытьСоединение(НастройкиFTP, Прокси, Tls);
КонецФункции
Функция ПроверитьСоздатьСоединение(Соединение)
Если ЭтоКоннектор(Соединение) Тогда
Если ЭтоКоннектор(Соединение) Тогда
ЗакрыватьСоединение = Ложь;
Иначе
ЗакрыватьСоединение = Истина;
Соединение = ОткрытьСоединениеПоКонфигурации(Соединение);
КонецЕсли;
Возврат ЗакрыватьСоединение;
КонецЕсли;
Возврат ЗакрыватьСоединение;
КонецФункции
#КонецОбласти

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os
// OneScript: ./OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os
// MIT License
@@ -55,7 +55,7 @@
Разделы.Вставить("VK" , 5);
Разделы.Вставить("Viber" , 5);
Разделы.Вставить("Twitter" , 4);
Разделы.Вставить("FTP" , 5);
Разделы.Вставить("FTP" , 5);
Разделы.Вставить("PostgreSQL" , 5);
Разделы.Вставить("MySQL" , 5);
Разделы.Вставить("MSSQL" , 5);
@@ -97,7 +97,7 @@
Разделы.Вставить("VK" , СтандартныеЗависимости);
Разделы.Вставить("Viber" , СтандартныеЗависимости);
Разделы.Вставить("Twitter" , СтандартныеЗависимости);
Разделы.Вставить("FTP" , СтандартныеЗависимости);
Разделы.Вставить("FTP" , СтандартныеЗависимости);
Разделы.Вставить("PostgreSQL" , СтандартныеЗависимости);
Разделы.Вставить("MySQL" , СтандартныеЗависимости);
Разделы.Вставить("MSSQL" , СтандартныеЗависимости);
@@ -161,7 +161,7 @@
Http = "HTTPКлиент";
OpenAI = "OpenAI";
MSSQL = "MSSQL";
FTP = "FTP";
FTP = "FTP";
ТаблицаТестов = Новый ТаблицаЗначений;
ТаблицаТестов.Колонки.Добавить("Метод");
@@ -327,7 +327,7 @@
НовыйТест(ТаблицаТестов, "OAI_РаботаСФайлами" , "Работа с файлами" , OpenAI);
НовыйТест(ТаблицаТестов, "OAI_РаботаСАудио" , "Работа с аудио" , OpenAI);
НовыйТест(ТаблицаТестов, "OAI_РаботаСМоделями" , "Работа с моделями" , OpenAI);
НовыйТест(ТаблицаТестов, "FT_ОсновныеМетоды" , "Основные методы" , FTP);
НовыйТест(ТаблицаТестов, "FT_ОсновныеМетоды" , "Основные методы" , FTP);
Возврат ТаблицаТестов;

View File

@@ -1,4 +1,4 @@
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
// MIT License
@@ -2871,10 +2871,10 @@
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста);
FTP_ОткрытьСоединение(ПараметрыТеста);
FTP_ПолучитьПриветственноеСообщение(ПараметрыТеста);
FTP_ПолучитьПриветственноеСообщение(ПараметрыТеста);
КонецПроцедуры
#КонецОбласти
@@ -24761,49 +24761,49 @@
Домен = ПараметрыФункции["PG_IP"];
Логин = "bayselonarrend";
Пароль = ПараметрыФункции["PG_Password"];
// Простое подключение
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Домен, 21);
Результат = OPI_FTP.ОткрытьСоединение(НастройкиFTP);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОткрытьСоединение", "FTP"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_Компонента(Результат, "AddIn.OPI_FTP.Main"); // SKIP
// Подключение по TLS через прокси
ДоменFTP = "172.33.0.11";
АдресПрокси = ПараметрыФункции["PG_IP"];
ДоменFTP = "172.33.0.11";
АдресПрокси = ПараметрыФункции["PG_IP"];
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(ДоменFTP, 21, Логин, "12we3456!2154");
НастройкиПрокси = OPI_FTP.ПолучитьНастройкиПрокси(АдресПрокси, 1080, "socks5", "proxyuser", Пароль);
НастройкиTLS = OPI_FTP.ПолучитьНастройкиTls(Истина);
Результат = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS);
Результат = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОткрытьСоединение (прокси + tls)", "FTP");
OPI_ПолучениеДанныхТестов.Проверка_Компонента(Результат, "AddIn.OPI_FTP.Main");
OPI_ПолучениеДанныхТестов.Проверка_Компонента(Результат, "AddIn.OPI_FTP.Main");
КонецПроцедуры
Процедура FTP_ПолучитьПриветственноеСообщение(ПараметрыФункции)
Домен = ПараметрыФункции["PG_IP"];
Домен = ПараметрыФункции["PG_IP"];
Логин = "bayselonarrend";
Пароль = ПараметрыФункции["PG_Password"];
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Домен, 21, Логин, Пароль);
Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP);
Результат = OPI_FTP.ПолучитьПриветственноеСообщение(Соединение);
Результат = OPI_FTP.ПолучитьПриветственноеСообщение(Соединение);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьПриветственноеСообщение", "FTP");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
КонецПроцедуры
#КонецОбласти

View File

@@ -16,6 +16,180 @@
ТаблицаСостава.Колонки.Добавить("Описание");
ТаблицаСостава.Колонки.Добавить("ОписаниеМетода");
ТаблицаСостава.Колонки.Добавить("Область");
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ПолучитьКонфигурациюСоединиения";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬКОНФИГУРАЦИЮСОЕДИНИЕНИЯ";
НоваяСтрока.Параметр = "--set";
НоваяСтрока.Описание = "Настройки FTP. См. ПолучитьНастройкиСоединения";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока.ОписаниеМетода = "Формирует полную структуру настроек соединения, которая может быть использована вместо самого соединения при вызове других функций";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ПолучитьКонфигурациюСоединиения";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬКОНФИГУРАЦИЮСОЕДИНИЕНИЯ";
НоваяСтрока.Параметр = "--proxy";
НоваяСтрока.Описание = "Настройки прокси, если необходимо. См ПолучитьНастройкиПрокси (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ПолучитьКонфигурациюСоединиения";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬКОНФИГУРАЦИЮСОЕДИНИЕНИЯ";
НоваяСтрока.Параметр = "--tls";
НоваяСтрока.Описание = "Настройки TLS, если необходимо. См. ПолучитьНастройкиTls (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ПолучитьНастройкиСоединения";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИСОЕДИНЕНИЯ";
НоваяСтрока.Параметр = "--host";
НоваяСтрока.Описание = "Домен сервера";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока.ОписаниеМетода = "Формирует структуру настроек подключения FTP";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ПолучитьНастройкиСоединения";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИСОЕДИНЕНИЯ";
НоваяСтрока.Параметр = "--port";
НоваяСтрока.Описание = "Порт сервера (необяз. по ум. - 21)";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ПолучитьНастройкиСоединения";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИСОЕДИНЕНИЯ";
НоваяСтрока.Параметр = "--login";
НоваяСтрока.Описание = "Имя пользователя авторизации, если необходимо (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ПолучитьНастройкиСоединения";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИСОЕДИНЕНИЯ";
НоваяСтрока.Параметр = "--pass";
НоваяСтрока.Описание = "Пароль пользователя для авторизации, если необходимо (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ПолучитьНастройкиСоединения";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИСОЕДИНЕНИЯ";
НоваяСтрока.Параметр = "--passive";
НоваяСтрока.Описание = "Пассивный режим соединения (необяз. по ум. - True)";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ПолучитьНастройкиСоединения";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИСОЕДИНЕНИЯ";
НоваяСтрока.Параметр = "--rtout";
НоваяСтрока.Описание = "Таймаут чтения (необяз. по ум. - 120)";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ПолучитьНастройкиСоединения";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИСОЕДИНЕНИЯ";
НоваяСтрока.Параметр = "--wtout";
НоваяСтрока.Описание = "Таймаут записи (необяз. по ум. - 120)";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ПолучитьНастройкиПрокси";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИПРОКСИ";
НоваяСтрока.Параметр = "--addr";
НоваяСтрока.Описание = "Адрес прокси";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока.ОписаниеМетода = "Формирует структуру настроек прокси-сервера для соединения";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ПолучитьНастройкиПрокси";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИПРОКСИ";
НоваяСтрока.Параметр = "--port";
НоваяСтрока.Описание = "Порт прокси";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ПолучитьНастройкиПрокси";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИПРОКСИ";
НоваяСтрока.Параметр = "--type";
НоваяСтрока.Описание = "Вид прокси: socks5, socks4, http (необяз. по ум. - socks5)";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ПолучитьНастройкиПрокси";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИПРОКСИ";
НоваяСтрока.Параметр = "--login";
НоваяСтрока.Описание = "Логин авторизации, если необходимо (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ПолучитьНастройкиПрокси";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИПРОКСИ";
НоваяСтрока.Параметр = "--pass";
НоваяСтрока.Описание = "Пароль для авторизации, если необходимо (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ПолучитьНастройкиTls";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИTLS";
НоваяСтрока.Параметр = "--trust";
НоваяСтрока.Описание = "Позволяет работать с некорретными сертификатами, в т.ч. самоподписанными";
НоваяСтрока.Область = "Основные методы";
НоваяСтрока.ОписаниеМетода = "Формирует настройки для использования TLS при выполнении запросов";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "ftp";
НоваяСтрока.Модуль = "OPI_FTP";
НоваяСтрока.Метод = "ПолучитьНастройкиTls";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИTLS";
НоваяСтрока.Параметр = "--cert";
НоваяСтрока.Описание = "Путь к корневому PEM файлу сертификата, если его нет в системном хранилище (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Основные методы";
Возврат ТаблицаСостава;
КонецФункции
@@ -25,9 +199,10 @@
Возврат "
|Контекст = Новый Структура;
|Контекст.Вставить(""OPI_FTP"", Неопределено);
|
|OPI_FTP = ЗагрузитьСценарий(""%1/oint/core/Modules/OPI_FTP.os"", Контекст);
|Контекст.Вставить(""OPI_FTP"", OPI_FTP);
|
|OPI_FTP = ЗагрузитьСценарий(""%1/oint/core/Modules/OPI_FTP.os"", Контекст);
|" + Символы.ПС;