Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Как правильно записать uri с пользователем

787  1 2 все
AlexNek патриот18.11.22 18:20
AlexNek
NEW 18.11.22 18:20 

вроде как бы так - ftp://usertest:password@192.168.2.105:2222/

но энта фигня отчего-то не распознает UserInfo

Uri uri = new Uri(uriStr);

#1 
Murr патриот18.11.22 18:49
Murr
18.11.22 18:49 
в ответ AlexNek 18.11.22 18:20

RFC 959.

У тебя вроде правильно.


энта фигня

-----

А что это за фигня?

Если мелкомягкая - смотри как определил строку - там с собакой нужно.

#2 
AlexNek патриот18.11.22 20:15
AlexNek
NEW 18.11.22 20:15 
в ответ Murr 18.11.22 18:49

Написал отдельный тест - работает. смущ Надо еще в исходники глянуть внимательней.


смотри как определил строку

Там нет определения строки, из кода поступает. А на входе в текстовом файле. По дороге видимо, что то потерялось

#3 
AlexNek патриот18.11.22 20:29
AlexNek
NEW 18.11.22 20:29 
в ответ Murr 18.11.22 18:49

Нашёл блин смущ

там поступает немного другая строка, которая показывается как:sftp:\\user..., хотя на самом деле "sftp:\user..."

Тогда другой вопрос - как сделать чтобы в пароле можно было использовать любые символы (типа - фыв:@12/) и для ввода пароля в текст не требовалось проги кодировщика

#4 
alex445 коренной житель18.11.22 21:21
AlexNek патриот18.11.22 22:07
AlexNek
NEW 18.11.22 22:07 
в ответ alex445 18.11.22 21:21

Файл "управления" с паролями и прочей ерундой будет вводит совершенно другой человек. Любое "сложное" кодирование потребует дополнительной проги.

Нужно "простое" кодирование, типа вместо @ записать @@ или \@, хотя с этим работы много. Проще, видимо, пароль записать в другом месте, а на месте пароля давать только ссылку на него, типа "password35"

#6 
alex445 коренной житель18.11.22 23:10
NEW 18.11.22 23:10 
в ответ AlexNek 18.11.22 22:07, Последний раз изменено 18.11.22 23:13 (alex445)

Не понял, какая дополнительная прога? А ваш собственный метод кодирования - не такая же дополнительная прога?


Если что, этих HTML-кодирующих классов в дотнете минимум 3 штуки (МС развёл бардак):


.NET 4.8 - System.Web.dll - https://learn.microsoft.com/en-us/dotnet/api/system.web.ht...

.NET 7 - System.Runtime.dll - https://learn.microsoft.com/en-us/dotnet/api/system.net.we...

.NET 7 - System.Web.HttpUtility.dll - https://learn.microsoft.com/en-us/dotnet/api/system.web.ht...


Ну или вот ещё

https://learn.microsoft.com/en-us/dotnet/api/system.uri.es...

#7 
uscheswoi_82 коренной житель19.11.22 00:25
uscheswoi_82
NEW 19.11.22 00:25 
в ответ AlexNek 18.11.22 18:20
вроде как бы так - ftp://usertest:password@192.168.2.105:2222/
но энта фигня отчего-то не распознает
UserInfoUri uri = new Uri(uriStr);

Имхо всегда было через NetworkCredintal - см. https://learn.microsoft.com/ru-ru/dotnet/api/system.net.ne.... Пример тут https://codingvision.net/c-connecting-to-ftp-server:

FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://myFtpAddress.tld/myFile.txt");
ftpRequest.Credentials = new NetworkCredential("username", "password");


кто как обзывается, тот так сам называется... маску ношу чтобы не заразить антиваксеров... Дневник тяжелобольного инвалида
#8 
AlexNek патриот19.11.22 11:05
AlexNek
NEW 19.11.22 11:05 
в ответ alex445 18.11.22 23:10
Не понял, какая дополнительная прога?

ну вот пароль

Q1":@/<\
дайте ка мне его допустимое представление без использования "компа" и пр.
#9 
AlexNek патриот19.11.22 11:19
AlexNek
NEW 19.11.22 11:19 
в ответ uscheswoi_82 19.11.22 00:25
Имхо всегда было через NetworkCredintal

А причем здесь NetworkCredintal и доступ к ФТП?

Нужно правильно разобрать входные данные. Вопрос с доступом решен. Не решен вопрос как узнать, что файл полностью закачан на сервер? Office тоже выдает "интересный " сценарий записи файла.


Вообще-то в итоге должно получиться следующее: Есть текстовый сценарий наблюдения за фтп и другими хранилищами, как только туда загружается определенный файл, с ним делаются какие то операции, например записывается в какую-то базу, в зависимости от различных критериев.


Кстати, интересен также вопрос Юнит тестирования подобных штук с различными файловыми системами. На любой пук делать интерфейс не хочется.


#10 
alex445 коренной житель19.11.22 12:15
NEW 19.11.22 12:15 
в ответ AlexNek 19.11.22 11:05, Последний раз изменено 19.11.22 12:16 (alex445)
Q1":@/<\
дайте ка мне его допустимое представление без использования "компа" и пр.

Не понял. Как ввести пароль в комп без компа, или что?


Ну на листочке запишите ему удобный для вас пароль. Или на листочке же напишите ему, какие символы нельзя использовать (или какие можно - там буквы, цифры, и пару знаков).


Вообще, по жизни многие программистские проблемы решаются разговором по душам или волшебным пенделем - абстракции всякие и алгоритмы зачастую не нужны.

#11 
AlexNek патриот19.11.22 13:30
AlexNek
NEW 19.11.22 13:30 
в ответ alex445 19.11.22 12:15
Как ввести пароль в комп без компа

Нет конечно. Как преобразовать без компа. Ссылки то кто написал?

#12 
Murr патриот19.11.22 18:25
Murr
NEW 19.11.22 18:25 
в ответ AlexNek 18.11.22 20:29, Последний раз изменено 19.11.22 18:32 (Murr)

sftp:\\user.

-----

sftp://user:pass@host:port/path

см. forward-slash.

#13 
AlexNek патриот19.11.22 18:33
AlexNek
NEW 19.11.22 18:33 
в ответ Murr 19.11.22 18:25

записано в исходном файле было правильно, но это я уже нашел. Вот как найти что файл уже полностью записан на фтп сервер?

#14 
Murr патриот19.11.22 18:37
Murr
NEW 19.11.22 18:37 
в ответ uscheswoi_82 19.11.22 00:25
Имхо всегда было через NetworkCredintal

-----

FTP несколько более старый протокол, чем первый из .Net.

#15 
uscheswoi_82 коренной житель19.11.22 20:07
uscheswoi_82
NEW 19.11.22 20:07 
в ответ AlexNek 19.11.22 11:19
А причем здесь NetworkCredintal и доступ к ФТП?

Чтобы залогиниться как надо, и чтобы хакеры не увидели ту строчку, даже у PHP через ftp_login делается см. https://www.php.net/manual/ru/function.ftp-login.php. Во многих примерах именно через NetworkCredintal логинятся к FTP, например https://www.c-sharpcorner.com/article/working-with-ftp-usi....


Не решен вопрос как узнать, что файл полностью закачан на сервер?

Вот пример:https://web.archive.org/web/20150207155137/http://codular....

кто как обзывается, тот так сам называется... маску ношу чтобы не заразить антиваксеров... Дневник тяжелобольного инвалида
#16 
AlexNek патриот19.11.22 21:06
AlexNek
NEW 19.11.22 21:06 
в ответ uscheswoi_82 19.11.22 20:07
Чтобы залогиниться как надо

Типа, как бонус к вопросу, понятно...


Во многих примерах именно через NetworkCredintal логинятся к FTP

А никто не говорил как именно логинятся к ФТП. Скажу по секрету - без мелкософта.


Вот пример

Это пример загрузки файла на сервер. Задача же совсем другая - есть ФТП сервер и нужно узнать со стороны сервера, когда файл полностью загрузится.

Как появляется новый файл, можно узнать периодическим опросом каталога.

#17 
Murr патриот20.11.22 00:25
Murr
NEW 20.11.22 00:25 
в ответ AlexNek 19.11.22 18:33

Вот как найти что файл уже полностью записан на фтп сервер?

-------

Никак.

Я решал загрузкой в отдельную область и мовом по окончанию. Но там можно было - хорошая сеть без обрывов соединения.

#18 
vlasow коренной житель20.11.22 00:34
NEW 20.11.22 00:34 
в ответ AlexNek 19.11.22 21:06

Наверняка ftpd держит файл залоченным пока не закончит. Можно периодически проверять на предмет залоченности.

#19 
AlexNek патриот20.11.22 13:17
AlexNek
NEW 20.11.22 13:17 
в ответ Murr 20.11.22 00:25
Никак.

тута аж 5 вариантов, хотя большинстов на клиенте

https://stackoverflow.com/questions/29238153/how-to-detect...


Как раз один совпадает с тем что делается смущ

#20 
1 2 все