You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-10 22:41:43 +02:00
FTP: Автоматическое переподключение
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
"MAIN ---"
|
||||
linux-vdso.so.1 (0x00007fff63ba5000)
|
||||
libpthread.so.0 => /lib64/libpthread.so.0 (0x000073ba6ee00000)
|
||||
libc.so.6 => /lib64/libc.so.6 (0x000073ba6ea00000)
|
||||
libdl.so.2 => /lib64/libdl.so.2 (0x000073ba6e600000)
|
||||
/lib64/ld-linux-x86-64.so.2 (0x000073ba6f400000)
|
||||
linux-vdso.so.1 (0x00007ffd7fdf6000)
|
||||
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ec7c5000000)
|
||||
libc.so.6 => /lib64/libc.so.6 (0x00007ec7c4c00000)
|
||||
libdl.so.2 => /lib64/libdl.so.2 (0x00007ec7c4800000)
|
||||
/lib64/ld-linux-x86-64.so.2 (0x00007ec7c5600000)
|
||||
GLIBC_2.2.5
|
||||
GLIBC_2.3
|
||||
GLIBC_2.3.4
|
||||
|
@@ -257,6 +257,20 @@ impl FtpClient {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn ping(&mut self) -> bool {
|
||||
|
||||
let result = match self {
|
||||
FtpClient::Secure(stream) => stream.noop(),
|
||||
FtpClient::Insecure(stream) => stream.noop(),
|
||||
};
|
||||
|
||||
match result {
|
||||
Ok(_) => true,
|
||||
Err(e) => false
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fn upload_from_reader<R: Read>(
|
||||
&mut self,
|
||||
path: &str,
|
||||
|
@@ -37,6 +37,7 @@ pub const METHODS: &[&[u16]] = &[
|
||||
name!("RenameObject"),
|
||||
name!("DownloadToFile"),
|
||||
name!("DownloadToBuffer"),
|
||||
name!("Ping"),
|
||||
];
|
||||
|
||||
// Число параметров функций компоненты
|
||||
@@ -60,6 +61,7 @@ pub fn get_params_amount(num: usize) -> usize {
|
||||
15 => 2,
|
||||
16 => 2,
|
||||
17 => 1,
|
||||
18 => 0,
|
||||
_ => 0,
|
||||
}
|
||||
}
|
||||
@@ -204,6 +206,12 @@ pub fn cal_func(obj: &mut AddIn, num: usize, params: &mut [Variant]) -> Box<dyn
|
||||
Err(e) => Box::new(e.to_string())
|
||||
}
|
||||
},
|
||||
18 => {
|
||||
Box::new(match &mut obj.get_client(){
|
||||
Ok(c) => c.ping(),
|
||||
Err(_) => false
|
||||
})
|
||||
}
|
||||
_ => Box::new(false), // Неверный номер команды
|
||||
};
|
||||
|
||||
|
@@ -137,6 +137,9 @@ pub fn connect_via_http_proxy(proxy_settings: &FtpProxySettings, target_addr: (&
|
||||
.ok_or_else(|| "Proxy address resolution returned no results".to_string())?
|
||||
).map_err(|e| format!("Failed to connect to HTTP proxy: {}", e))?;
|
||||
|
||||
stream.set_read_timeout(Some(Duration::from_secs(20))).ok();
|
||||
stream.set_write_timeout(Some(Duration::from_secs(20))).ok();
|
||||
|
||||
let host_port = format!("{}:{}", target_addr.0, target_addr.1);
|
||||
let mut request = format!(
|
||||
"CONNECT {} HTTP/1.1\r\nHost: {}\r\nConnection: keep-alive\r\n",
|
||||
|
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.
@@ -380,12 +380,7 @@
|
||||
|
||||
Путь = ?(Путь = ".", "", Путь);
|
||||
|
||||
Сообщить("A: " + Путь);
|
||||
|
||||
Результат = Соединение.ListDirectory(Путь);
|
||||
|
||||
Сообщить("B: " + Результат);
|
||||
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
|
||||
Если Результат["result"] Тогда
|
||||
@@ -402,7 +397,6 @@
|
||||
ПутьОбъекта = ИмяОбъекта;
|
||||
КонецЕсли;
|
||||
|
||||
Сообщить("C: " + ПутьОбъекта);
|
||||
Объект.Вставить("path", ПутьОбъекта);
|
||||
|
||||
Если Рекурсивно Тогда
|
||||
@@ -759,7 +753,15 @@
|
||||
Функция ПроверитьСоздатьСоединение(Соединение)
|
||||
|
||||
Если ЭтоКоннектор(Соединение) Тогда
|
||||
|
||||
Проверка = Соединение.Ping();
|
||||
|
||||
Если Не Проверка Тогда
|
||||
Соединение = ПолучитьКопиюСоединения(Соединение);
|
||||
КонецЕсли;
|
||||
|
||||
ЗакрыватьСоединение = Ложь;
|
||||
|
||||
Иначе
|
||||
ЗакрыватьСоединение = Истина;
|
||||
Соединение = ОткрытьСоединениеПоКонфигурации(Соединение);
|
||||
|
Binary file not shown.
Reference in New Issue
Block a user