You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-11-29 22:27:42 +02:00
FTP: Произвольные команды, смена рабочего каталога
This commit is contained in:
49
docs/ru/md/Instructions/FTP.md
vendored
49
docs/ru/md/Instructions/FTP.md
vendored
@@ -8,6 +8,53 @@ keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3,
|
||||
|
||||
# FTP(s)
|
||||
|
||||
|
||||
Этот раздел посвящен библиотеке для работы с протоколом FTP(s) в 1С:Предприятие, OneScript и CLI. На данной странице описаны все действия, необходимые для полноценного начала работы
|
||||
|
||||
## Начало работы
|
||||
|
||||
Данная библиотека предоставляет различные методы работы с FTP(s) на стороне клиента. Каждый из них принимает в качестве первого параметра `Соединение`, значение для которого может быть инициализировано одним из двух способов:
|
||||
|
||||
1. При помощи функции `ОткрытьСоединение`. В этом случае возвращается объект компоненты, поддерживающий единое соединение для множества запросов
|
||||
2. При помощи функции `ПолучитьКонфигурациюСоединения`. В этом случае возвращается лишь структура описания соединения. Каждая функция, в которую эта структура будет передана в качестве `Соединения`, будет создавать новое подключение внутри себя и закрывать его по окончанию работы
|
||||
|
||||
При выполнении множественных последовательных запросов к серверу FTP рекомендуется использовать полноценное соединение, получаемое при помощи функции `ОткрытьСоединение`
|
||||
|
||||
## Использование прокси
|
||||
|
||||
Данные клиент поддерживает создание соединения через прокси сервер. Получить структуру настроек прокси можно при помощи функции `ПолучитьНастройкиПрокси`. Полученная структура далее должна быть передана в функцию `ОткрытьСоединение` или `ПолучитьКонфигурациюСоединения` при начале работы
|
||||
|
||||
```bsl
|
||||
|
||||
...
|
||||
|
||||
ТипПрокси = "http"; // http, socks5, socks4
|
||||
|
||||
АдресПрокси = "127.0.0.1";
|
||||
ПортПрокси = "8071";
|
||||
ЛогинПрокси = "proxyuser";
|
||||
ПарольПрокси = "12we...";
|
||||
|
||||
НастройкиПрокси = OPI_FTP.ПолучитьНастройкиПрокси(АдресПрокси, ПортПрокси, ТипПрокси, ЛогинПрокси, ПарольПрокси);
|
||||
|
||||
Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS);
|
||||
|
||||
```
|
||||
|
||||
Поддерживается работа через socks4, socks5 и http-прокси сервера
|
||||
|
||||
:::warning
|
||||
Работа через http-прокси является эксперементальной и может быть нестабильной в зависимости от реализации прокси-сервера, его настроек и возможностей. Рекомендуется по возможности использовать socks-прокси для стабильной передачи трафика
|
||||
:::
|
||||
|
||||
## FTPS (TLS)
|
||||
|
||||
Также клиент поддерживает защищенное соединение через TLS. Для его включения необходимо передать структуру настроек в функцию `ОткрытьСоединение` или `ПолучитьКонфигурациюСоединения` при начале работы. Структура настроек может быть получена при помощий функции `ПолучитьНастройкиTls`
|
||||
|
||||
```bsl
|
||||
|
||||
...
|
||||
|
||||
НастройкиTLS = OPI_FTP.ПолучитьНастройкиTLS(Истина);
|
||||
Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS);
|
||||
|
||||
```
|
||||
|
||||
17992
service/dictionaries/en.json
vendored
17992
service/dictionaries/en.json
vendored
File diff suppressed because it is too large
Load Diff
@@ -1,9 +1,9 @@
|
||||
"MAIN ---"
|
||||
linux-vdso.so.1 (0x00007fffbf1b3000)
|
||||
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007d660d600000)
|
||||
libc.so.6 => /lib64/libc.so.6 (0x00007d660d200000)
|
||||
libdl.so.2 => /lib64/libdl.so.2 (0x00007d660ce00000)
|
||||
/lib64/ld-linux-x86-64.so.2 (0x00007d660dc00000)
|
||||
linux-vdso.so.1 (0x00007ffc25bf7000)
|
||||
libpthread.so.0 => /lib64/libpthread.so.0 (0x000075e3af200000)
|
||||
libc.so.6 => /lib64/libc.so.6 (0x000075e3aee00000)
|
||||
libdl.so.2 => /lib64/libdl.so.2 (0x000075e3aea00000)
|
||||
/lib64/ld-linux-x86-64.so.2 (0x000075e3af800000)
|
||||
GLIBC_2.2.5
|
||||
GLIBC_2.3
|
||||
GLIBC_2.3.4
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use std::io::{copy, BufReader, Cursor, ErrorKind, Read, Write};
|
||||
use std::net::{SocketAddr, TcpStream};
|
||||
use serde_json::json;
|
||||
use suppaftp::{FtpError, FtpResult, FtpStream, Mode, RustlsConnector, RustlsFtpStream};
|
||||
use suppaftp::{FtpError, FtpResult, FtpStream, Mode, RustlsConnector, RustlsFtpStream, Status};
|
||||
use suppaftp::list::File;
|
||||
use std::str::FromStr;
|
||||
use chrono::{DateTime, Utc};
|
||||
@@ -10,6 +10,7 @@ use std::string::String;
|
||||
use std::time::{Duration, Instant};
|
||||
use base64::Engine;
|
||||
use base64::engine::general_purpose;
|
||||
use suppaftp::types::Response;
|
||||
use crate::component::configuration::{FtpProxySettings, FtpSettings, FtpTlsSettings};
|
||||
use crate::component::tls_establish;
|
||||
use crate::component::tcp_establish;
|
||||
@@ -229,7 +230,7 @@ impl FtpClient {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn execute_custom_command(&mut self, command: &str) -> String {
|
||||
pub fn execute_command(&mut self, command: &str) -> String {
|
||||
|
||||
let result = match self {
|
||||
FtpClient::Secure(stream) => stream.site(command),
|
||||
@@ -237,22 +238,20 @@ impl FtpClient {
|
||||
};
|
||||
|
||||
match result {
|
||||
Ok(r) => {
|
||||
let code = r.status.code();
|
||||
let body = r.body;
|
||||
Ok(r) => process_ftp_response(r),
|
||||
Err(e) => format_json_error(&e.to_string())
|
||||
}
|
||||
}
|
||||
|
||||
let body_json = match String::from_utf8(body) {
|
||||
Ok(text) => {
|
||||
json!(text)
|
||||
}
|
||||
Err(original_bytes) => {
|
||||
let base64 = general_purpose::STANDARD.encode(&original_bytes.into_bytes());
|
||||
json!({ "BYTES": base64 })
|
||||
}
|
||||
};
|
||||
pub fn execute_standard_command(&mut self, command: &str) -> String {
|
||||
|
||||
json!({"result": true, "data": body_json, "status": code}).to_string()
|
||||
},
|
||||
let result = match self {
|
||||
FtpClient::Secure(stream) => stream.custom_command(command, all_status_variants().as_slice()),
|
||||
FtpClient::Insecure(stream) => stream.custom_command(command, all_status_variants().as_slice()),
|
||||
};
|
||||
|
||||
match result {
|
||||
Ok(r) => process_ftp_response(r),
|
||||
Err(e) => format_json_error(&e.to_string())
|
||||
}
|
||||
}
|
||||
@@ -271,6 +270,46 @@ impl FtpClient {
|
||||
|
||||
}
|
||||
|
||||
pub fn get_features(&mut self) -> String {
|
||||
|
||||
let result = match self {
|
||||
FtpClient::Secure(stream) => stream.feat(),
|
||||
FtpClient::Insecure(stream) => stream.feat(),
|
||||
};
|
||||
|
||||
match result {
|
||||
Ok(f) => json!({"result": true, "data": f}).to_string(),
|
||||
Err(e) => format_json_error(&e.to_string())
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
pub fn get_current_directory(&mut self) -> String {
|
||||
let result = match self {
|
||||
FtpClient::Secure(stream) => stream.pwd(),
|
||||
FtpClient::Insecure(stream) => stream.pwd(),
|
||||
};
|
||||
|
||||
match result {
|
||||
Ok(p) => json!({"result": true, "path": p}).to_string(),
|
||||
Err(e) => format_json_error(&e.to_string())
|
||||
}
|
||||
}
|
||||
|
||||
pub fn change_current_directory(&mut self, path: &str) -> String {
|
||||
|
||||
let result = match self {
|
||||
FtpClient::Secure(stream) => stream.cwd(path),
|
||||
FtpClient::Insecure(stream) => stream.cwd(path),
|
||||
};
|
||||
|
||||
match result {
|
||||
Ok(_) => json!({"result": true}).to_string(),
|
||||
Err(e) => format_json_error(&e.to_string())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fn upload_from_reader<R: Read>(
|
||||
&mut self,
|
||||
path: &str,
|
||||
@@ -345,6 +384,7 @@ impl FtpClient {
|
||||
FtpClient::Insecure(stream) => stream.size(path),
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
pub fn configure_ftp_client(
|
||||
@@ -429,4 +469,76 @@ where
|
||||
Err(e) => return Err(format!("Check error: {}", e.to_string())),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn process_ftp_response(response: Response) -> String{
|
||||
|
||||
let code = response.status.code();
|
||||
let body = response.body;
|
||||
|
||||
let body_json = match String::from_utf8(body) {
|
||||
Ok(text) => {
|
||||
json!(text)
|
||||
}
|
||||
Err(original_bytes) => {
|
||||
let base64 = general_purpose::STANDARD.encode(&original_bytes.into_bytes());
|
||||
json!({ "BYTES": base64 })
|
||||
}
|
||||
};
|
||||
|
||||
json!({"result": true, "data": body_json, "status": code}).to_string()
|
||||
|
||||
}
|
||||
|
||||
pub fn all_status_variants() -> Vec<Status> {
|
||||
use Status::*;
|
||||
vec![
|
||||
RestartMarker,
|
||||
ReadyMinute,
|
||||
AlreadyOpen,
|
||||
AboutToSend,
|
||||
CommandOk,
|
||||
CommandNotImplemented,
|
||||
System,
|
||||
Directory,
|
||||
File,
|
||||
Help,
|
||||
Name,
|
||||
Ready,
|
||||
Closing,
|
||||
DataConnectionOpen,
|
||||
ClosingDataConnection,
|
||||
PassiveMode,
|
||||
LongPassiveMode,
|
||||
ExtendedPassiveMode,
|
||||
LoggedIn,
|
||||
LoggedOut,
|
||||
LogoutAck,
|
||||
AuthOk,
|
||||
RequestedFileActionOk,
|
||||
PathCreated,
|
||||
NeedPassword,
|
||||
LoginNeedAccount,
|
||||
RequestFilePending,
|
||||
NotAvailable,
|
||||
CannotOpenDataConnection,
|
||||
TransferAborted,
|
||||
InvalidCredentials,
|
||||
HostUnavailable,
|
||||
RequestFileActionIgnored,
|
||||
ActionAborted,
|
||||
RequestedActionNotTaken,
|
||||
BadCommand,
|
||||
BadArguments,
|
||||
NotImplemented,
|
||||
BadSequence,
|
||||
NotImplementedParameter,
|
||||
NotLoggedIn,
|
||||
StoringNeedAccount,
|
||||
FileUnavailable,
|
||||
PageTypeUnknown,
|
||||
ExceededStorage,
|
||||
BadFilename,
|
||||
Unknown,
|
||||
]
|
||||
}
|
||||
@@ -38,6 +38,11 @@ pub const METHODS: &[&[u16]] = &[
|
||||
name!("DownloadToFile"),
|
||||
name!("DownloadToBuffer"),
|
||||
name!("Ping"),
|
||||
name!("ExecuteCommand"),
|
||||
name!("GetCurrentDirectory"),
|
||||
name!("ChangeCurrentDirectory"),
|
||||
name!("GetFeatures"),
|
||||
name!("ExecuteStandardCommand"),
|
||||
];
|
||||
|
||||
// Число параметров функций компоненты
|
||||
@@ -62,6 +67,11 @@ pub fn get_params_amount(num: usize) -> usize {
|
||||
16 => 2,
|
||||
17 => 1,
|
||||
18 => 0,
|
||||
19 => 1,
|
||||
20 => 0,
|
||||
21 => 1,
|
||||
22 => 0,
|
||||
23 => 1,
|
||||
_ => 0,
|
||||
}
|
||||
}
|
||||
@@ -211,7 +221,46 @@ pub fn cal_func(obj: &mut AddIn, num: usize, params: &mut [Variant]) -> Box<dyn
|
||||
Ok(c) => c.ping(),
|
||||
Err(_) => false
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
19 => {
|
||||
let command = params[0].get_string().unwrap_or("".to_string());
|
||||
|
||||
Box::new(match &mut obj.get_client(){
|
||||
Ok(c) => c.execute_command(&command),
|
||||
Err(e) => e.to_string()
|
||||
})
|
||||
},
|
||||
20 => {
|
||||
Box::new(match &mut obj.get_client(){
|
||||
Ok(c) => c.get_current_directory(),
|
||||
Err(e) => e.to_string()
|
||||
})
|
||||
},
|
||||
|
||||
21 => {
|
||||
let path = params[0].get_string().unwrap_or("".to_string());
|
||||
|
||||
Box::new(match &mut obj.get_client(){
|
||||
Ok(c) => c.change_current_directory(&path),
|
||||
Err(e) => e.to_string()
|
||||
})
|
||||
},
|
||||
|
||||
22 => {
|
||||
Box::new(match &mut obj.get_client(){
|
||||
Ok(c) => c.get_features(),
|
||||
Err(e) => e.to_string()
|
||||
})
|
||||
},
|
||||
23 => {
|
||||
let command = params[0].get_string().unwrap_or("".to_string());
|
||||
|
||||
Box::new(match &mut obj.get_client(){
|
||||
Ok(c) => c.execute_standard_command(&command),
|
||||
Err(e) => e.to_string()
|
||||
})
|
||||
},
|
||||
_ => Box::new(false), // Неверный номер команды
|
||||
};
|
||||
|
||||
|
||||
BIN
src/en/OInt/addins/OPI_FTP.zip
vendored
BIN
src/en/OInt/addins/OPI_FTP.zip
vendored
Binary file not shown.
Binary file not shown.
BIN
src/ru/OInt/addins/OPI_FTP.zip
vendored
BIN
src/ru/OInt/addins/OPI_FTP.zip
vendored
Binary file not shown.
@@ -162,8 +162,138 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить список расширений протокола
|
||||
// Получает список расширений протокола FTP, поддерживаемых сервером
|
||||
//
|
||||
// Примечание:
|
||||
// Команда FTP: `FEAT`
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат обработки
|
||||
Функция ПолучитьСписокРасширенийПротокола(Знач Соединение) Экспорт
|
||||
|
||||
ЗакрыватьСоединение = ПроверитьСоздатьСоединение(Соединение);
|
||||
|
||||
Если Не ЭтоКоннектор(Соединение) Тогда
|
||||
Возврат Соединение;
|
||||
Иначе
|
||||
Результат = Соединение.GetFeatures();
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗакрыватьСоединение Тогда
|
||||
Результат.Вставить("close_connection", ЗакрытьСоединение(Соединение));
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Пинг
|
||||
// Проверяет активность соединения и сбрасывает таймаут до его автоматического закрытия
|
||||
//
|
||||
// Примечание:
|
||||
// Команда FTP: `NOOP`
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Успешность обращения к серверу
|
||||
Функция Пинг(Знач Соединение) Экспорт
|
||||
|
||||
ЗакрыватьСоединение = ПроверитьСоздатьСоединение(Соединение);
|
||||
|
||||
Если Не ЭтоКоннектор(Соединение) Тогда
|
||||
Возврат Соединение;
|
||||
Иначе
|
||||
Результат = Соединение.Ping();
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗакрыватьСоединение Тогда
|
||||
Результат.Вставить("close_connection", ЗакрытьСоединение(Соединение));
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Выполнить нестандартную команду
|
||||
// Выполняет специфическую (SITE) команду сервера и возвращает ответ
|
||||
//
|
||||
// Примечание:
|
||||
// Результат может быть возвращен как текст или Base64 довичные данные в структуре `{"BYTES": <B64 строка>}`
|
||||
// Команда FTP: `SITE`
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
|
||||
// ТекстКоманды - Строка - Текст выполняемой команды - cmd
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат обработки
|
||||
Функция ВыполнитьНестандартнуюКоманду(Знач Соединение, Знач ТекстКоманды) Экспорт
|
||||
|
||||
ЗакрыватьСоединение = ПроверитьСоздатьСоединение(Соединение);
|
||||
|
||||
Если Не ЭтоКоннектор(Соединение) Тогда
|
||||
Возврат Соединение;
|
||||
Иначе
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстКоманды);
|
||||
|
||||
Результат = Соединение.ExecuteCommand(ТекстКоманды);
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗакрыватьСоединение Тогда
|
||||
Результат.Вставить("close_connection", ЗакрытьСоединение(Соединение));
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Выполнить произвольную команду
|
||||
// Отправляет произвольный текстовый запрос на сервер для обработки
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
|
||||
// ТекстКоманды - Строка - Текст выполняемой команды - cmd
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат обработки
|
||||
Функция ВыполнитьПроизвольнуюКоманду(Знач Соединение, Знач ТекстКоманды) Экспорт
|
||||
|
||||
ЗакрыватьСоединение = ПроверитьСоздатьСоединение(Соединение);
|
||||
|
||||
Если Не ЭтоКоннектор(Соединение) Тогда
|
||||
Возврат Соединение;
|
||||
Иначе
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстКоманды);
|
||||
|
||||
Результат = Соединение.ExecuteStandardCommand(ТекстКоманды);
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗакрыватьСоединение Тогда
|
||||
Результат.Вставить("close_connection", ЗакрытьСоединение(Соединение));
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить размер объекта
|
||||
// Получает размер файла или директории, если она существуют
|
||||
//
|
||||
// Примечание:
|
||||
// Команда FTP: `SIZE`
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
|
||||
@@ -198,7 +328,8 @@
|
||||
// Изменяет путь объекта на указанный
|
||||
//
|
||||
// Примечание:
|
||||
// Возможность перемещения объекта из одного каталога в другой при помощи переименования зависит от настроек сервера
|
||||
// Возможность перемещения объекта из одного каталога в другой при помощи изменения пути зависит от настроек сервера
|
||||
// Команда FTP: `RNFR + RNTO`
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
|
||||
@@ -359,6 +490,9 @@
|
||||
|
||||
// Получить список объектов
|
||||
// Получает информацию о содержимом директории по выбранному пути
|
||||
//
|
||||
// Примечание:
|
||||
// Команда FTP: `LIST`
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
|
||||
@@ -433,6 +567,9 @@
|
||||
|
||||
// Создать директорию
|
||||
// Создает директорию по указанному пути
|
||||
//
|
||||
// Примечание:
|
||||
// Команда FTP: `MKD`
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
|
||||
@@ -465,6 +602,9 @@
|
||||
|
||||
// Удалить директорию
|
||||
// Удаляет существующую директорию
|
||||
//
|
||||
// Примечание:
|
||||
// Команда FTP: `RMD`
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
|
||||
@@ -493,12 +633,80 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить текущий каталог
|
||||
// Получает текущий каталог, от которого вычисляются относительные пути
|
||||
//
|
||||
// Примечание:
|
||||
// Команда FTP: `PWD`
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат обработки
|
||||
Функция ПолучитьТекущийКаталог(Знач Соединение) Экспорт
|
||||
|
||||
ЗакрыватьСоединение = ПроверитьСоздатьСоединение(Соединение);
|
||||
|
||||
Если Не ЭтоКоннектор(Соединение) Тогда
|
||||
Возврат Соединение;
|
||||
Иначе
|
||||
Результат = Соединение.GetCurrentDirectory();
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗакрыватьСоединение Тогда
|
||||
Результат.Вставить("close_connection", ЗакрытьСоединение(Соединение));
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Изменить текущий каталог !NOCLI
|
||||
// Изменяет текущий каталог, от которого вычисляются относительные пути
|
||||
//
|
||||
// Примечание:
|
||||
// Команда FTP: `CWD`
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
|
||||
// Путь - Строка - Путь к новой директории - path
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат обработки
|
||||
Функция ИзменитьТекущийКаталог(Знач Соединение, Знач Путь) Экспорт
|
||||
|
||||
ЗакрыватьСоединение = ПроверитьСоздатьСоединение(Соединение);
|
||||
|
||||
Если Не ЭтоКоннектор(Соединение) Тогда
|
||||
Возврат Соединение;
|
||||
Иначе
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Путь);
|
||||
|
||||
Результат = Соединение.ChangeCurrentDirectory(Путь);
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗакрыватьСоединение Тогда
|
||||
Результат.Вставить("close_connection", ЗакрытьСоединение(Соединение));
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РаботаСФайлами
|
||||
|
||||
// Загрузить файл
|
||||
// Загружает файл с диска или двоичные данные на сервер FTP
|
||||
//
|
||||
// Примечание:
|
||||
// Команда FTP: `STOR`
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
|
||||
@@ -564,6 +772,9 @@
|
||||
|
||||
// Удалить файл
|
||||
// Удаляет файл с сервера
|
||||
//
|
||||
// Примечание:
|
||||
// Команда FTP: `DELE`
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
|
||||
@@ -596,6 +807,9 @@
|
||||
|
||||
// Сохранить файл
|
||||
// Сохраняет файл с сервера по указанному пути
|
||||
//
|
||||
// Примечание:
|
||||
// Команда FTP: `RETR`
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
|
||||
@@ -630,6 +844,9 @@
|
||||
|
||||
// Получить данные файла !NOCLI
|
||||
// Получает файл с сервера как двоичные данные
|
||||
//
|
||||
// Примечание:
|
||||
// Команда FTP: `RETR`
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Существующее соединение или конфигурация соединения - conn
|
||||
|
||||
@@ -10983,6 +10983,93 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_FTP_ПолучитьСписокРасширенийПротокола(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
ОжидаетЧто(Результат["data"]).Заполнено();
|
||||
|
||||
Если СтрНайти(Вариант, "HTTP") Тогда
|
||||
OPI_Инструменты.Пауза(5);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_FTP_Пинг(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(Результат).Равно(Истина);
|
||||
|
||||
Если СтрНайти(Вариант, "HTTP") Тогда
|
||||
OPI_Инструменты.Пауза(5);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_FTP_ВыполнитьНестандартнуюКоманду(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
ОжидаетЧто(Результат["status"]).Заполнено();
|
||||
ОжидаетЧто(Результат["data"]).Заполнено();
|
||||
|
||||
Если СтрНайти(Вариант, "HTTP") Тогда
|
||||
OPI_Инструменты.Пауза(5);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_FTP_ВыполнитьПроизвольнуюКоманду(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
ОжидаетЧто(Результат["status"]).Заполнено();
|
||||
ОжидаетЧто(Результат["data"]).Заполнено();
|
||||
|
||||
Если СтрНайти(Вариант, "HTTP") Тогда
|
||||
OPI_Инструменты.Пауза(5);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_FTP_ПолучитьТекущийКаталог(Знач Результат, Знач Вариант, Параметры = "")
|
||||
|
||||
Путь = Результат["path"];
|
||||
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
ОжидаетЧто(Путь).Заполнено();
|
||||
|
||||
ЗаписатьПараметр("FTP_RootPath", Путь);
|
||||
OPI_Инструменты.ДобавитьПоле("FTP_RootPath", Путь, "Строка", Параметры);
|
||||
|
||||
Если СтрНайти(Вариант, "HTTP") Тогда
|
||||
OPI_Инструменты.Пауза(5);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_FTP_ИзменитьТекущийКаталог(Знач Результат, Знач Вариант, Путь = "")
|
||||
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
|
||||
Если СтрНайти(Вариант, "Проверка") Тогда
|
||||
ОжидаетЧто(СтрЗаканчиваетсяНа(Результат["path"], Путь)).Равно(Истина);
|
||||
КонецЕсли;
|
||||
|
||||
Если СтрНайти(Вариант, "HTTP") Тогда
|
||||
OPI_Инструменты.Пауза(5);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_FTP_ПолучитьКонфигурациюСоединения(Знач Результат, Знач Вариант, Параметры = "")
|
||||
|
||||
Если СтрНайти(Вариант, "Проверка") > 0 Тогда
|
||||
|
||||
334
src/ru/OPI/src/CommonModules/OPI_Тесты/Module.bsl
vendored
334
src/ru/OPI/src/CommonModules/OPI_Тесты/Module.bsl
vendored
@@ -2880,9 +2880,11 @@
|
||||
|
||||
FTP_ОчиститьДиректорию(ПараметрыТеста);
|
||||
FTP_СоздатьДиректорию(ПараметрыТеста);
|
||||
FTP_ПолучитьТекущийКаталог(ПараметрыТеста);
|
||||
FTP_ИзменитьТекущийКаталог(ПараметрыТеста);
|
||||
FTP_ПолучитьСписокОбъектов(ПараметрыТеста);
|
||||
FTP_УдалитьДиректорию(ПараметрыТеста);
|
||||
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -2910,6 +2912,7 @@
|
||||
|
||||
FTP_ОткрытьСоединение(ПараметрыТеста);
|
||||
FTP_ПолучитьПриветственноеСообщение(ПараметрыТеста);
|
||||
FTP_ПолучитьСписокРасширенийПротокола(ПараметрыТеста);
|
||||
FTP_ПолучитьКонфигурациюСоединения(ПараметрыТеста);
|
||||
FTP_ЗакрытьСоединение(ПараметрыТеста);
|
||||
FTP_ЭтоКоннектор(ПараметрыТеста);
|
||||
@@ -2918,6 +2921,9 @@
|
||||
FTP_ПолучитьНастройкиTLS(ПараметрыТеста);
|
||||
FTP_ПолучитьРазмерОбъекта(ПараметрыТеста);
|
||||
FTP_ИзменитьПуть(ПараметрыТеста);
|
||||
FTP_ВыполнитьНестандартнуюКоманду(ПараметрыТеста);
|
||||
FTP_ВыполнитьПроизвольнуюКоманду(ПараметрыТеста);
|
||||
FTP_Пинг(ПараметрыТеста);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
@@ -22364,6 +22370,332 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура FTP_Пинг(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"]; // SKIP
|
||||
|
||||
Хост = ПараметрыФункции["FTP_IP"];
|
||||
Порт = ПараметрыФункции["FTP_Port"];
|
||||
Логин = ПараметрыФункции["FTP_User"];
|
||||
Пароль = ПараметрыФункции["FTP_Password"];
|
||||
|
||||
ИспользоватьПрокси = Истина;
|
||||
FTPS = Истина;
|
||||
|
||||
НастройкиПрокси = Неопределено;
|
||||
НастройкиTLS = Неопределено; // FTPS
|
||||
|
||||
ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP
|
||||
FTPS = ПараметрыФункции["TLS"]; // SKIP
|
||||
|
||||
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Хост, Порт, Логин, Пароль);
|
||||
|
||||
Если ИспользоватьПрокси Тогда
|
||||
|
||||
ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4
|
||||
|
||||
АдресПрокси = ПараметрыФункции["Proxy_IP"];
|
||||
ПортПрокси = ПараметрыФункции["Proxy_Port"];
|
||||
ЛогинПрокси = ПараметрыФункции["Proxy_User"];
|
||||
ПарольПрокси = ПараметрыФункции["Proxy_Password"];
|
||||
|
||||
НастройкиПрокси = OPI_FTP.ПолучитьНастройкиПрокси(АдресПрокси, ПортПрокси, ТипПрокси, ЛогинПрокси, ПарольПрокси);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если FTPS Тогда
|
||||
НастройкиTLS = OPI_FTP.ПолучитьНастройкиTLS(Истина);
|
||||
КонецЕсли;
|
||||
|
||||
Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS);
|
||||
|
||||
Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда
|
||||
Результат = OPI_FTP.Пинг(Соединение);
|
||||
Иначе
|
||||
Результат = Соединение; // Ошибка соединения
|
||||
КонецЕсли;
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "FTP", "Пинг", Постфикс);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура FTP_ВыполнитьНестандартнуюКоманду(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"]; // SKIP
|
||||
|
||||
Хост = ПараметрыФункции["FTP_IP"];
|
||||
Порт = ПараметрыФункции["FTP_Port"];
|
||||
Логин = ПараметрыФункции["FTP_User"];
|
||||
Пароль = ПараметрыФункции["FTP_Password"];
|
||||
|
||||
ИспользоватьПрокси = Истина;
|
||||
FTPS = Истина;
|
||||
|
||||
НастройкиПрокси = Неопределено;
|
||||
НастройкиTLS = Неопределено; // FTPS
|
||||
|
||||
ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP
|
||||
FTPS = ПараметрыФункции["TLS"]; // SKIP
|
||||
|
||||
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Хост, Порт, Логин, Пароль);
|
||||
|
||||
Если ИспользоватьПрокси Тогда
|
||||
|
||||
ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4
|
||||
|
||||
АдресПрокси = ПараметрыФункции["Proxy_IP"];
|
||||
ПортПрокси = ПараметрыФункции["Proxy_Port"];
|
||||
ЛогинПрокси = ПараметрыФункции["Proxy_User"];
|
||||
ПарольПрокси = ПараметрыФункции["Proxy_Password"];
|
||||
|
||||
НастройкиПрокси = OPI_FTP.ПолучитьНастройкиПрокси(АдресПрокси, ПортПрокси, ТипПрокси, ЛогинПрокси, ПарольПрокси);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если FTPS Тогда
|
||||
НастройкиTLS = OPI_FTP.ПолучитьНастройкиTLS(Истина);
|
||||
КонецЕсли;
|
||||
|
||||
Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS);
|
||||
|
||||
Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда
|
||||
|
||||
ТекстКоманды = "UMASK";
|
||||
Результат = OPI_FTP.ВыполнитьНестандартнуюКоманду(Соединение, ТекстКоманды);
|
||||
|
||||
Иначе
|
||||
Результат = Соединение; // Ошибка соединения
|
||||
КонецЕсли;
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "FTP", "ВыполнитьНестандартнуюКоманду", Постфикс);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура FTP_ВыполнитьПроизвольнуюКоманду(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"]; // SKIP
|
||||
|
||||
Хост = ПараметрыФункции["FTP_IP"];
|
||||
Порт = ПараметрыФункции["FTP_Port"];
|
||||
Логин = ПараметрыФункции["FTP_User"];
|
||||
Пароль = ПараметрыФункции["FTP_Password"];
|
||||
|
||||
ИспользоватьПрокси = Истина;
|
||||
FTPS = Истина;
|
||||
|
||||
НастройкиПрокси = Неопределено;
|
||||
НастройкиTLS = Неопределено; // FTPS
|
||||
|
||||
ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP
|
||||
FTPS = ПараметрыФункции["TLS"]; // SKIP
|
||||
|
||||
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Хост, Порт, Логин, Пароль);
|
||||
|
||||
Если ИспользоватьПрокси Тогда
|
||||
|
||||
ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4
|
||||
|
||||
АдресПрокси = ПараметрыФункции["Proxy_IP"];
|
||||
ПортПрокси = ПараметрыФункции["Proxy_Port"];
|
||||
ЛогинПрокси = ПараметрыФункции["Proxy_User"];
|
||||
ПарольПрокси = ПараметрыФункции["Proxy_Password"];
|
||||
|
||||
НастройкиПрокси = OPI_FTP.ПолучитьНастройкиПрокси(АдресПрокси, ПортПрокси, ТипПрокси, ЛогинПрокси, ПарольПрокси);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если FTPS Тогда
|
||||
НастройкиTLS = OPI_FTP.ПолучитьНастройкиTLS(Истина);
|
||||
КонецЕсли;
|
||||
|
||||
Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS);
|
||||
|
||||
Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда
|
||||
|
||||
ТекстКоманды = "PWD";
|
||||
Результат = OPI_FTP.ВыполнитьПроизвольнуюКоманду(Соединение, ТекстКоманды);
|
||||
|
||||
Иначе
|
||||
Результат = Соединение; // Ошибка соединения
|
||||
КонецЕсли;
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "FTP", "ВыполнитьПроизвольнуюКоманду", Постфикс);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура FTP_ПолучитьТекущийКаталог(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"]; // SKIP
|
||||
|
||||
Хост = ПараметрыФункции["FTP_IP"];
|
||||
Порт = ПараметрыФункции["FTP_Port"];
|
||||
Логин = ПараметрыФункции["FTP_User"];
|
||||
Пароль = ПараметрыФункции["FTP_Password"];
|
||||
|
||||
ИспользоватьПрокси = Истина;
|
||||
FTPS = Истина;
|
||||
|
||||
НастройкиПрокси = Неопределено;
|
||||
НастройкиTLS = Неопределено; // FTPS
|
||||
|
||||
ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP
|
||||
FTPS = ПараметрыФункции["TLS"]; // SKIP
|
||||
|
||||
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Хост, Порт, Логин, Пароль);
|
||||
|
||||
Если ИспользоватьПрокси Тогда
|
||||
|
||||
ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4
|
||||
|
||||
АдресПрокси = ПараметрыФункции["Proxy_IP"];
|
||||
ПортПрокси = ПараметрыФункции["Proxy_Port"];
|
||||
ЛогинПрокси = ПараметрыФункции["Proxy_User"];
|
||||
ПарольПрокси = ПараметрыФункции["Proxy_Password"];
|
||||
|
||||
НастройкиПрокси = OPI_FTP.ПолучитьНастройкиПрокси(АдресПрокси, ПортПрокси, ТипПрокси, ЛогинПрокси, ПарольПрокси);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если FTPS Тогда
|
||||
НастройкиTLS = OPI_FTP.ПолучитьНастройкиTLS(Истина);
|
||||
КонецЕсли;
|
||||
|
||||
Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS);
|
||||
|
||||
Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда
|
||||
Результат = OPI_FTP.ПолучитьТекущийКаталог(Соединение);
|
||||
Иначе
|
||||
Результат = Соединение; // Ошибка соединения
|
||||
КонецЕсли;
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "FTP", "ПолучитьТекущийКаталог", Постфикс, ПараметрыФункции);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура FTP_ИзменитьТекущийКаталог(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"]; // SKIP
|
||||
|
||||
Хост = ПараметрыФункции["FTP_IP"];
|
||||
Порт = ПараметрыФункции["FTP_Port"];
|
||||
Логин = ПараметрыФункции["FTP_User"];
|
||||
Пароль = ПараметрыФункции["FTP_Password"];
|
||||
|
||||
ИспользоватьПрокси = Истина;
|
||||
FTPS = Истина;
|
||||
|
||||
НастройкиПрокси = Неопределено;
|
||||
НастройкиTLS = Неопределено; // FTPS
|
||||
|
||||
ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP
|
||||
FTPS = ПараметрыФункции["TLS"]; // SKIP
|
||||
|
||||
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Хост, Порт, Логин, Пароль);
|
||||
|
||||
Если ИспользоватьПрокси Тогда
|
||||
|
||||
ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4
|
||||
|
||||
АдресПрокси = ПараметрыФункции["Proxy_IP"];
|
||||
ПортПрокси = ПараметрыФункции["Proxy_Port"];
|
||||
ЛогинПрокси = ПараметрыФункции["Proxy_User"];
|
||||
ПарольПрокси = ПараметрыФункции["Proxy_Password"];
|
||||
|
||||
НастройкиПрокси = OPI_FTP.ПолучитьНастройкиПрокси(АдресПрокси, ПортПрокси, ТипПрокси, ЛогинПрокси, ПарольПрокси);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если FTPS Тогда
|
||||
НастройкиTLS = OPI_FTP.ПолучитьНастройкиTLS(Истина);
|
||||
КонецЕсли;
|
||||
|
||||
Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS);
|
||||
|
||||
Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда
|
||||
Путь = "new_dir";
|
||||
Результат = OPI_FTP.ИзменитьТекущийКаталог(Соединение, Путь);
|
||||
Иначе
|
||||
Результат = Соединение; // Ошибка соединения
|
||||
КонецЕсли;
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "FTP", "ИзменитьТекущийКаталог", Постфикс);
|
||||
|
||||
Результат = OPI_FTP.ПолучитьТекущийКаталог(Соединение);
|
||||
|
||||
Обработать(Результат, "FTP", "ИзменитьТекущийКаталог", "Проверка, " + Постфикс, Путь);
|
||||
|
||||
Путь = ПараметрыФункции["FTP_RootPath"];
|
||||
Результат = OPI_FTP.ИзменитьТекущийКаталог(Соединение, Путь);
|
||||
|
||||
Обработать(Результат, "FTP", "ИзменитьТекущийКаталог", "Обратно, " + Постфикс);
|
||||
|
||||
Результат = OPI_FTP.ПолучитьТекущийКаталог(Соединение);
|
||||
|
||||
Обработать(Результат, "FTP", "ИзменитьТекущийКаталог", "Проверка, обратно, " + Постфикс, Путь);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура FTP_ПолучитьСписокРасширенийПротокола(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"]; // SKIP
|
||||
|
||||
Хост = ПараметрыФункции["FTP_IP"];
|
||||
Порт = ПараметрыФункции["FTP_Port"];
|
||||
Логин = ПараметрыФункции["FTP_User"];
|
||||
Пароль = ПараметрыФункции["FTP_Password"];
|
||||
|
||||
ИспользоватьПрокси = Истина;
|
||||
FTPS = Истина;
|
||||
|
||||
НастройкиПрокси = Неопределено;
|
||||
НастройкиTLS = Неопределено; // FTPS
|
||||
|
||||
ИспользоватьПрокси = ПараметрыФункции["Proxy"]; // SKIP
|
||||
FTPS = ПараметрыФункции["TLS"]; // SKIP
|
||||
|
||||
НастройкиFTP = OPI_FTP.ПолучитьНастройкиСоединения(Хост, Порт, Логин, Пароль);
|
||||
|
||||
Если ИспользоватьПрокси Тогда
|
||||
|
||||
ТипПрокси = ПараметрыФункции["Proxy_Type"]; // http, socks5, socks4
|
||||
|
||||
АдресПрокси = ПараметрыФункции["Proxy_IP"];
|
||||
ПортПрокси = ПараметрыФункции["Proxy_Port"];
|
||||
ЛогинПрокси = ПараметрыФункции["Proxy_User"];
|
||||
ПарольПрокси = ПараметрыФункции["Proxy_Password"];
|
||||
|
||||
НастройкиПрокси = OPI_FTP.ПолучитьНастройкиПрокси(АдресПрокси, ПортПрокси, ТипПрокси, ЛогинПрокси, ПарольПрокси);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если FTPS Тогда
|
||||
НастройкиTLS = OPI_FTP.ПолучитьНастройкиTLS(Истина);
|
||||
КонецЕсли;
|
||||
|
||||
Соединение = OPI_FTP.ОткрытьСоединение(НастройкиFTP, НастройкиПрокси, НастройкиTLS);
|
||||
|
||||
Если OPI_FTP.ЭтоКоннектор(Соединение) Тогда
|
||||
Результат = OPI_FTP.ПолучитьСписокРасширенийПротокола(Соединение);
|
||||
Иначе
|
||||
Результат = Соединение; // Ошибка соединения
|
||||
КонецЕсли;
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "FTP", "ПолучитьСписокРасширенийПротокола", Постфикс);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ReportPortal
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user