https://github.com/diev/ftpsreportsdownloader
Downloads all files from a remote FTPS server to a local path. Reference code v1.0 (c) MOEX 2016 updated to v2.0 2023
https://github.com/diev/ftpsreportsdownloader
csharp downloader ftps-client net-framework
Last synced: about 1 month ago
JSON representation
Downloads all files from a remote FTPS server to a local path. Reference code v1.0 (c) MOEX 2016 updated to v2.0 2023
- Host: GitHub
- URL: https://github.com/diev/ftpsreportsdownloader
- Owner: diev
- License: apache-2.0
- Created: 2023-12-01T15:53:34.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2025-09-04T01:51:49.000Z (11 months ago)
- Last Synced: 2025-09-04T03:11:06.019Z (11 months ago)
- Topics: csharp, downloader, ftps-client, net-framework
- Language: C#
- Homepage:
- Size: 101 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# FTPSReportsDownloader
[](https://ci.appveyor.com/project/diev/ftpsreportsdownloader)
[](https://github.com/diev/FTPSReportsDownloader/actions/workflows/dotnet8-desktop.yml)
[](https://github.com/diev/FTPSReportsDownloader/actions/workflows/dotnet8.yml)
[](https://github.com/diev/FTPSReportsDownloader/releases/latest)
Downloads all files from a remote FTPS server to a local path.
Reference code v1 (c) MOEX 2016 updated by me to v2.2023, to v9.2025.
## v9.2025
- Update project to .NET 8-9 for Windows and Linux.
- Refactor config to `json`.
- Refactor to use `Diev.Extensions` (//TODO NuGet).
- Secure the network credential with *Windows Credential Manager*.
### Settings / Параметры
*Appsettings* с именем исполняемой программы - в отличие от принятого при
разработке в .NET единого имени, так можно все файлы настроек разных
программ размещать в одной папке для скриптов, но при этом какие-то общие
параметры (будут иметь приоритет) вынести из папки с программой, где они
могут быть нечаянно затерты при обновлении версии или конфиденциальная
информация может попасть в дистрибутивный архив:
- `FTPSReportsDownloader.config.json` (located with App `exe`)
- `%ProgramData%\Diev\FTPSReportsDownloader.config.json` (these settings
overwrite if exist)
Однако, при запуске в Linux программа может не получать путь к папке
с программой - тогда она будет искать традиционный `appsettings.json`
в текущей папке.
*Windows Credential Manager* в Панели управления - *Диспетчер учетных данных*
(все пароли для всех программ меняются в одном месте и скрыты от
пользователей, как было бы при хранении в индивидуальных файлах настроек
к каждой программе). Программа использует поле `"TargetName"` из `json`
для указания, где искать `username` и `password`:
- `"host"` (name: `{host}`, user: `{username}`, pass: `{password}`)
Однако в Linux такой программы нет, и все параметры надо написать в JSON
открытым текстом (в Windows тоже так можно, игнорируя безопасность, или
же можно вынести в отдаленную папку в `%ProgramData%`):
- `"TargetName": "{host} {username} {password}"` (три параметра)
### Build / Построение
Build an app with many dlls.
В папке дистрибутива будет `exe` и очень много сопутствующих отдельных
`dll` - вариант разработки в .NET по умолчанию:
dotnet publish \FTPSReportsDownloader.csproj -o Distr
Build a single-file app when NET Desktop runtime required.
Будет один исполняемый файл `exe`, но требуется установка .NET -
предпочитаемый мною вариант:
dotnet publish FTPSReportsDownloader\FTPSReportsDownloader.csproj -o Distr -r win-x64 -p:PublishSingleFile=true --no-self-contained
Build a single-file app when no runtime required.
Вариант, когда .NET устанавливать не нужно - всё есть в одном большом файле,
который можно перенести в закрытую систему, где ничего устанавливать нельзя:
dotnet publish FTPSReportsDownloader\FTPSReportsDownloader.csproj -o Distr -r win-x64 -p:PublishSingleFile=true
Build an app on Windows and transfer binary files to Linux.
Вариант, когда папку с файлами, собранную на Windows, можно просто перенести
на Linux и там запустить, ничего там не устанавливая:
dotnet publish FTPSReportsDownloader\FTPSReportsDownloader.csproj -o Distr -r linux-x64 --self-contained
Для использования одного/нескольких из этих вариантов можно применять
`build.cmd` - он создаст нужный дистрибутив(ы) с архивом исходных файлов
текущей версии.
Исходный код [здесь](v9).
### Breaking Notes
.NET still supports `(FtpWebRequest)WebRequest.Create()`
because just `WebRequest.Create()` is marked as obsoleted only!
### Requirements / Требования
- .NET 8-9 Runtime
## v2.2023
- Update project to .Net Framework 4.8.
- Refactor sync alghoritm completely (use new lines in `/UpdateHistory.txt`
or download `days` before files).
- Change ``
to write dated logs if specified.
- Add checking SIZE of `/UpdateHistory.txt` before new download.
- Add resume download of `/UpdateHistory.txt`.
- Add ``
(optional, default in `DownloadDirectory`).
- Add `` (optional, default up to 14 days
before).
- Remove use of `lastSync.file` - it is simple to delete few last lines
from local `UpdateHistory.txt` instead.
### Обновленная логика программы
1. Сверить размер файла `/UpdateHistory.txt` на сервере и локально.
2. Если есть разница в большую сторону - докачать разницу.
3. По списку в этой разнице скачать файлы с отчетами.
4. Если разница в меньшую сторону или файла нет - скачать его целиком
и по нему скачать файлы с отчетами за указанное число последних дней.
- Поэтому в случае любых ошибок с отчетами - надо удалить некоторое
число последних строк из файла истории - программа их перекачает.
- Если поврежден файл истории - удалить его.
Исходный код [здесь](v2).
### Breaking Notes
.NET 6+ does not contain FTP functionality anymore.
It has been suggested to use other libraries.
### Requirements / Требования
- .Net Framework 4.7.2-4.8
## v1.0 (c) MOEX 2016
Из Руководства пользователя "Личного кабинета участника":
> Раздел «Отчеты» содержит ссылки на торговые и клиринговые отчеты
в подписанном и/или зашифрованном виде. Скачивание отчета возможно
осуществить в течение 14 календарных дней с момента размещения
ссылки. В правом верхнем углу расположен пример ~~Инструмента для
скачивания отчетов "FTPSReportsDownloader"~~ с FTPS (исходный код
программы по скачиванию отчетов возможно дописать с учетом
собственных требований).
Ссылка на пример (лицензия MIT) у них устарела.
Исходный код [здесь](v1).
### Requirements / Требования
- .Net Framework 4.5
## Versioning / Порядок версий
Номер версии программы указывается по нарастающему принципу:
* Протестированная максимальная версия .NET (9);
* Год текущей разработки (2025);
* Месяц без первого нуля и день редакции (902 - 02.09.2025);
* Номер билда - просто нарастающее число для внутренних отличий.
Если настроен сервис AppVeyor, то это его автоинкремент.
Или часто просто 0.
Продукт развивается для собственных нужд, а не по коробочной
стратегии, и поэтому *Breaking Changes* могут случаться чаще,
чем это принято в *SemVer*.
## License / Лицензия
Licensed under the [Apache License, Version 2.0](LICENSE).
Вы можете использовать эти материалы под свою ответственность.
[](https://t.me/dievdo)