Closed evsmorodin closed 1 year ago
Поддерживаю вопрос. Пробовал с паролем приложения и основным паролем. Ubuntu 21.10, 1.13.4.3-dotNet48, Mono 6.8.0.105
Быстро, к сожалению, не могу гарантировать, но постараюсь посмотреть в ближайшую неделю
Походу протокол яндекса поломан, alpine 3.12+ под докером.
at System.Threading.Tasks.Task`1.get_Result()
at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebAuth..ctor(HttpCommonSettings settings, IBasicCredentials creds) in D:\a\1\s\MailRuCloud\MailRuCloudApi\Base\Repos\YandexDisk\YadWeb\YadWebAuth.cs:line 19
at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebRequestRepo.<get_CachedAuth>b__10_0(YadWebAuth auth) in D:\a\1\s\MailRuCloud\MailRuCloudApi\Base\Repos\YandexDisk\YadWeb\YadWebRequestRepo.cs:line 56
at YaR.Clouds.Common.Cached`1.<>c__DisplayClass8_0.<RefreshValueIfNeeded>b__0() in D:\a\1\s\MailRuCloud\MailRuCloudApi\Common\Cached.cs:line 40
at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
at System.Lazy`1.CreateValue()
at System.Lazy`1.get_Value()
at YaR.Clouds.Common.Cached`1.RefreshValueIfNeeded() in D:\a\1\s\MailRuCloud\MailRuCloudApi\Common\Cached.cs:line 42
at YaR.Clouds.Common.Cached`1..ctor(Func`2 valueFactory, Func`2 duration) in D:\a\1\s\MailRuCloud\MailRuCloudApi\Common\Cached.cs:line 26
at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebRequestRepo.get_CachedAuth() in D:\a\1\s\MailRuCloud\MailRuCloudApi\Base\Repos\YandexDisk\YadWeb\YadWebRequestRepo.cs:line 56
at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebRequestRepo.get_Authent() in D:\a\1\s\MailRuCloud\MailRuCloudApi\Base\Repos\YandexDisk\YadWeb\YadWebRequestRepo.cs:line 54
at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebRequestRepo.AccountInfo() in D:\a\1\s\MailRuCloud\MailRuCloudApi\Base\Repos\YandexDisk\YadWeb\YadWebRequestRepo.cs:line 284
at YaR.Clouds.Base.Account.LoginAsync() in D:\a\1\s\MailRuCloud\MailRuCloudApi\Base\Account.cs:line 54
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
at System.Threading.Tasks.Task`1.get_Result()
at YaR.Clouds.Base.Account.Login() in D:\a\1\s\MailRuCloud\MailRuCloudApi\Base\Account.cs:line 44
at YaR.Clouds.Cloud..ctor(CloudSettings settings, Credentials credentials) in D:\a\1\s\MailRuCloud\MailRuCloudApi\Cloud.cs:line 60
at YaR.Clouds.WebDavStore.CloudManager.CreateCloud(HttpListenerBasicIdentity identity) in D:\a\1\s\WebDavMailRuCloudStore\CloudManager.cs:line 46
at YaR.Clouds.WebDavStore.CloudManager.Instance(IIdentity identityi) in D:\a\1\s\WebDavMailRuCloudStore\CloudManager.cs:line 28
at YaR.Clouds.WebDavStore.StoreBase.LocalStore.GetItemAsync(WebDavUri uri, IHttpContext httpContext) in D:\a\1\s\WebDavMailRuCloudStore\StoreBase\LocalStore.cs:line 37
at NWebDav.Server.Handlers.PropFindHandler.HandleRequestAsync(IHttpContext httpContext, IStore store) in D:\a\1\s\NWebDav\NWebDav.Server\Handlers\PropFindHandler.cs:line 76
at NWebDav.Server.WebDavDispatcher.DispatchRequestAsync(IHttpContext httpContext) in D:\a\1\s\NWebDav\NWebDav.Server\WebDavDispatcher.cs:line 137
Походу протокол яндекса поломан, alpine 3.12+ под докером.
Под .NET Core?
WebDAVCloudMailRu-1.13.5.0-dotNet48 "C:\Program Files\WebDAVCloudMailRu\wdmrc.exe" --port 777 --protocol YadWeb
[8]: PROPFIND:http://127.0.0.1:777/:127.0.0.1:777 - Start processing [8]: Cloud instance created for xxxx
[8]: Unexpected exception while handling request (method=PROPFIND, url=http://127.0.0.1:777/, source=127.0.0.1:777
System.AggregateException: One or more errors occurred. ---> System.AggregateException: One or more errors occurred. ---> System.Security.Authentication.AuthenticationException: Cannot get X-Default-UID
at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.Requests.YadAuthPasswordRequest.DeserializeMessage(NameValueCollection responseHeaders, Stream stream)
at YaR.Clouds.Base.Requests.BaseRequest2.<MakeRequestAsync>d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebAuth.<MakeLogin>d__3.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task
1.GetResultCore(Boolean waitCompletionNotification)
at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebRequestRepo.1.CreateValue() at System.Lazy
1.LazyInitValue()
at YaR.Clouds.Common.Cached1.RefreshValueIfNeeded() at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebRequestRepo.get_CachedAuth() at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebRequestRepo.<AccountInfo>d__31.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at YaR.Clouds.Base.Account.<LoginAsync>d__14.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task
1.GetResultCore(Boolean waitCompletionNotification)
at YaR.Clouds.Cloud..ctor(CloudSettings settings, Credentials credentials)
at YaR.Clouds.WebDavStore.CloudManager.CreateCloud(HttpListenerBasicIdentity identity)
at YaR.Clouds.WebDavStore.CloudManager.Instance(IIdentity identityi)
at YaR.Clouds.WebDavStore.StoreBase.LocalStore.1.CreateValue() at System.Lazy
1.LazyInitValue()
at YaR.Clouds.Common.Cached1.RefreshValueIfNeeded() at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebRequestRepo.get_CachedAuth() at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebRequestRepo.<AccountInfo>d__31.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at YaR.Clouds.Base.Account.<LoginAsync>d__14.MoveNext() ---> (Inner Exception #0) System.Security.Authentication.AuthenticationException: Cannot get X-Default-UID at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.Requests.YadAuthPasswordRequest.DeserializeMessage(NameValueCollection responseHeaders, Stream stream) at YaR.Clouds.Base.Requests.BaseRequest
2.
Не исключаю, что за год с хвостиком на учетной записи могли поменяться какие-то настройки что вход не работает. Но даже в таком случае exception вроде как должен обрабатываться, а здесь падает сразу. На учетной записи яндекса стоит вход по паролю для приложения, соответственно, в пароль аутентификации webdav передается он.
WebDAVCloudMailRu: WebDAV emulator for Cloud.mail.ru
v.1.13.5.1
yar229@yandex.ru
[1]: OS Version: Unix 5.4.0.107
[1]: CLR: .NET 5.0.15
[1]: User interactive: True
[1]: Version: 1.13.5.1
[1]: Using proxy:
[1]: Max threads count: 5
[1]: Cloud protocol: YadWeb
[1]: Cache listings, sec: 30
[1]: List query folder depth: 1
[1]: Use locks: False
[1]: Use deduplicate: False
[1]: Start as service: False
[1]: WebDAV server running at http://*:8888/
[5]: GET:http://192.168.2.106:8888/:192.168.2.106:8888 - Start processing
[5]: Cloud instance created for **********@yandex.ru
[4]: HTTP:GET:https://passport.yandex.ru/auth (41 ms)
[9]: HTTP:POST:https://passport.yandex.ru/registration-validations/auth/multi_step/start (666 ms)
[4]: HTTP:POST:https://passport.yandex.ru/registration-validations/auth/multi_step/commit_password (215 ms)
[5]: Unexpected exception while handling request (method=GET, url=http://192.168.2.106:8888/, source=192.168.2.106:8888
System.AggregateException: One or more errors occurred. (One or more errors occurred. (Cannot get X-Default-UID))
---> System.AggregateException: One or more errors occurred. (Cannot get X-Default-UID)
---> System.Security.Authentication.AuthenticationException: Cannot get X-Default-UID
at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.Requests.YadAuthPasswordRequest.DeserializeMessage(NameValueCollection responseHeaders, Stream stream) in D:\a\1\s\MailRuCloud\MailRuCloudApi\Base\Repos\YandexDisk\YadWeb\Requests\YadAuthPasswordRequest.cs:line 73
at YaR.Clouds.Base.Requests.BaseRequest`2.MakeRequestAsync() in D:\a\1\s\MailRuCloud\MailRuCloudApi\Base\Requests\BaseRequest.cs:line 95
at YaR.Clouds.Base.Requests.BaseRequest`2.MakeRequestAsync() in D:\a\1\s\MailRuCloud\MailRuCloudApi\Base\Requests\BaseRequest.cs:line 95
at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebAuth.MakeLogin() in D:\a\1\s\MailRuCloud\MailRuCloudApi\Base\Repos\YandexDisk\YadWeb\YadWebAuth.cs:line 41
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
at System.Threading.Tasks.Task`1.get_Result()
at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebAuth..ctor(HttpCommonSettings settings, IBasicCredentials creds) in D:\a\1\s\MailRuCloud\MailRuCloudApi\Base\Repos\YandexDisk\YadWeb\YadWebAuth.cs:line 19
at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebRequestRepo.<get_CachedAuth>b__10_0(YadWebAuth _) in D:\a\1\s\MailRuCloud\MailRuCloudApi\Base\Repos\YandexDisk\YadWeb\YadWebRequestRepo.cs:line 56
at YaR.Clouds.Common.Cached`1.<>c__DisplayClass8_0.<RefreshValueIfNeeded>b__0() in D:\a\1\s\MailRuCloud\MailRuCloudApi\Common\Cached.cs:line 40
at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
at System.Lazy`1.CreateValue()
at System.Lazy`1.get_Value()
at YaR.Clouds.Common.Cached`1.RefreshValueIfNeeded() in D:\a\1\s\MailRuCloud\MailRuCloudApi\Common\Cached.cs:line 42
at YaR.Clouds.Common.Cached`1..ctor(Func`2 valueFactory, Func`2 duration) in D:\a\1\s\MailRuCloud\MailRuCloudApi\Common\Cached.cs:line 26
at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebRequestRepo.get_CachedAuth() in D:\a\1\s\MailRuCloud\MailRuCloudApi\Base\Repos\YandexDisk\YadWeb\YadWebRequestRepo.cs:line 56
at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebRequestRepo.get_Authent() in D:\a\1\s\MailRuCloud\MailRuCloudApi\Base\Repos\YandexDisk\YadWeb\YadWebRequestRepo.cs:line 54
at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebRequestRepo.AccountInfo() in D:\a\1\s\MailRuCloud\MailRuCloudApi\Base\Repos\YandexDisk\YadWeb\YadWebRequestRepo.cs:line 284
at YaR.Clouds.Base.Account.LoginAsync() in D:\a\1\s\MailRuCloud\MailRuCloudApi\Base\Account.cs:line 54
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
at System.Threading.Tasks.Task`1.get_Result()
at YaR.Clouds.Base.Account.Login() in D:\a\1\s\MailRuCloud\MailRuCloudApi\Base\Account.cs:line 44
at YaR.Clouds.Cloud..ctor(CloudSettings settings, Credentials credentials) in D:\a\1\s\MailRuCloud\MailRuCloudApi\Cloud.cs:line 60
at YaR.Clouds.WebDavStore.CloudManager.CreateCloud(HttpListenerBasicIdentity identity) in D:\a\1\s\WebDavMailRuCloudStore\CloudManager.cs:line 46
at YaR.Clouds.WebDavStore.CloudManager.Instance(IIdentity identityi) in D:\a\1\s\WebDavMailRuCloudStore\CloudManager.cs:line 28
at YaR.Clouds.WebDavStore.StoreBase.LocalStore.GetItemAsync(WebDavUri uri, IHttpContext httpContext) in D:\a\1\s\WebDavMailRuCloudStore\StoreBase\LocalStore.cs:line 37
at YaR.Clouds.WebDavStore.CustomHandlers.GetAndHeadHandler.HandleRequestAsync(IHttpContext httpContext, IStore store) in D:\a\1\s\WebDavMailRuCloudStore\CustomHandlers\GetAndHeadHandler.cs:line 52
at NWebDav.Server.WebDavDispatcher.DispatchRequestAsync(IHttpContext httpContext) in D:\a\1\s\NWebDav\NWebDav.Server\WebDavDispatcher.cs:line 137
Отлично Пробуйте 1.13.5.2 Если будет выдавать "Browser login required to accept additional confirmations" - значит, Яндекс что-то заподозрил и требует всякие там подтверждения и все такое, надо зайти из браузера (почистив предварительно куки), залогиниться, ввести ему код из СМС и после этого должно работать.
WebDAVCloudMailRu: WebDAV emulator for Cloud.mail.ru v.1.13.5.2 yar229@yandex.ru [1]: OS Version: Microsoft Windows NT 6.2.9200.0 [1]: CLR: .NET Framework 4.0.30319.42000 [1]: User interactive: True [1]: Version: 1.13.5.2 [1]: Using proxy: [1]: Max threads count: 5 [1]: Cloud protocol: YadWeb [1]: Cache listings, sec: 30 [1]: List query folder depth: 1 [1]: Use locks: False [1]: Use deduplicate: False [1]: Start as service: False [1]: WebDAV server running at http://127.0.0.1:777/ [5]: OPTIONS:http://127.0.0.1:777/:127.0.0.1:777 - Start processing [5]: OPTIONS:http://127.0.0.1:777/:127.0.0.1:777 - Finished processing (5ms, HTTP result: 200) [5]: PROPFIND:http://127.0.0.1:777/:127.0.0.1:777 - Start processing [5]: Cloud instance created for xxxx
[5]: Unexpected exception while handling request (method=PROPFIND, url=http://127.0.0.1:777/, source=127.0.0.1:777
System.AggregateException: One or more errors occurred. ---> System.AggregateException: One or more errors occurred. ---> System.Security.Authentication.AuthenticationException: Cannot get X-Default-UID
at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.Requests.YadAuthPasswordRequest.DeserializeMessage(NameValueCollection responseHeaders, Stream stream)
at YaR.Clouds.Base.Requests.BaseRequest2.<MakeRequestAsync>d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebAuth.<MakeLogin>d__3.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task
1.GetResultCore(Boolean waitCompletionNotification)
at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebRequestRepo.1.CreateValue() at System.Lazy
1.LazyInitValue()
at YaR.Clouds.Common.Cached`1.RefreshValueIfNeeded()
at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebRequestRepo.get_CachedAuth()
...
Что такое X-Default-UID, который никак не находится?
А если токен для oauth сделать, это не поможет делу? Указывать вместо логина и пароля пустой логин и токен, а токен получать ручками штатными средствами через браузер. Нет такого варианта аутентификации?
К сожалению, не вариант Или мб вариант, но через, скажем, год :)
Слишком много надо дописывать и придумывать, плюс хорошо бы отрефакторить проект кардинально, а я не готов к этому, нет времени
в браузере disk.yandex.ru - почистить куки passport.yandex.ru - почистить куки залогиниться на disk.yandex.ru лучше пару раз, с очисткой куков обязательно
пароль приложения не подходит, если что
Очистка куки от яндекса для меня не комильфо - слишком на много учеток потом входить, поэтому я просто взял и создал новый профиль в Google Chrome. Дважды зашел с выходом в учетную запись. Последний раз не выходил. При входе вводить код из СМС нужно было. В настройках стоит: [Пароль + СМС] - это проблема? В качестве пароля для webdav указал пароль учетной записи, получил вот такое
[12]: PROPFIND:http://127.0.0.1:777/:127.0.0.1:777 - Start processing [12]: Cloud instance created for xxxx
[12]: Unexpected exception while handling request (method=PROPFIND, url=http://127.0.0.1:777/, source=127.0.0.1:777
System.AggregateException: One or more errors occurred. ---> System.AggregateException: One or more errors occurred. ---> System.Security.Authentication.AuthenticationException: Browser login required to accept additional confirmations
at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.Requests.YadAuthPasswordRequest.DeserializeMessage(NameValueCollection responseHeaders, Stream stream)
at YaR.Clouds.Base.Requests.BaseRequest2.<MakeRequestAsync>d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebAuth.<MakeLogin>d__3.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task
1.GetResultCore(Boolean waitCompletionNotification)
at YaR.Clouds.Base.Repos.YandexDisk.YadWeb.YadWebRequestRepo.1.CreateValue() at System.Lazy
1.LazyInitValue()
Мне пробовать вход только по паролю без СМС?
System.Security.Authentication.AuthenticationException: Browser login required to accept additional confirmations
да, это оно пароль+СМС - проблема к сожалению, только авторизация по основному паролю, без двухфакторки
тут подсказали мысль - чтобы не "палить" основной пароль - создать новую учетку и дать ей права на папку из основной учетки, если вот прямо очень-очень надо - попробуйте )
А у меня так уже года 3 сделано :-) Только не из-за подпала пароля, а потому что в браузере есть хрень при работе с файлами. В папку войти - двойной клик. Но если папка внизу, первый клик приводит к скроллированию, а второй вместо клика выходит как drag&drop. В результате случайная папка уходит внутрь другой. А если эту другую стереть, к примеру за ненадобностью, то и первая - давай - до свиданья. Потому У меня аж три учетных записи. Подписка платная на одной с кучей места, из нее папки шарю на другие учетки и с ними работаю - где из браузера, где из программ разных :-)
Так. При отключении двухфакторной аутентификации все заработало. Подтверждаю. Файл на 14 ГБ примерно на 1/3 залился. Так что работает!
Огромное Вам спасибо!
Пошел перенастраивать бэкапы... ;-)
В чём может быть причина?