private static MailRuCloud.Api.MailRuCloud CreateCloud(HttpListenerBasicIdentity identity) { Logger.Info($"Cloud instance created for {identity.Name}"); if (!ConstSettings.AvailDomains.Any(d => identity.Name.Contains($"@{d}."))) { string domains = ConstSettings.AvailDomains.Aggregate((c, n) => c + ", @" + n); Logger.Warn($"Missing domain part ({domains}) in login, file and folder deleting will be denied"); } //2FA authorization ITwoFaHandler twoFaHandler = null; if (!string.IsNullOrEmpty(TwoFactorHandlerName)) { twoFaHandler = TwoFaHandlers.Get(TwoFactorHandlerName); if (null == twoFaHandler) { Logger.Error($"Cannot load two-factor auth handler {TwoFactorHandlerName}"); } } var cloud = new MailRuCloud.Api.MailRuCloud(identity.Name, identity.Password, twoFaHandler); return(cloud); }
/// <summary> /// Initializes a new instance of the <see cref="Account" /> class. /// </summary> /// <param name="cloudApi"></param> /// <param name="login">Login name as email.</param> /// <param name="password">Password related with this login</param> /// <param name="twoFaHandler"></param> public Account(CloudApi cloudApi, string login, string password, ITwoFaHandler twoFaHandler) { _cloudApi = cloudApi; LoginName = login; Password = password; WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials; Proxy = WebRequest.DefaultWebProxy; var twoFaHandler1 = twoFaHandler; if (twoFaHandler1 != null) { AuthCodeRequiredEvent += twoFaHandler1.Get; } _bannedShards = new Cached <List <ShardInfo> >(() => new List <ShardInfo>(), TimeSpan.FromMinutes(4)); _cachedShards = new Cached <Dictionary <ShardType, ShardInfo> >(() => new ShardInfoRequest(_cloudApi).MakeRequestAsync().Result.ToShardInfo(), TimeSpan.FromSeconds(ShardsExpiresInSec)); DownloadToken = new Cached <string>(() => new DownloadTokenRequest(_cloudApi).MakeRequestAsync().Result.ToToken(), TimeSpan.FromSeconds(DownloadTokenExpiresSec)); AuthToken = new Cached <string>(() => { Logger.Debug("AuthToken expired, refreshing."); var token = new AuthTokenRequest(_cloudApi).MakeRequestAsync().Result.ToToken(); DownloadToken.Expire(); return(token); }, TimeSpan.FromSeconds(AuthTokenExpiresInSec)); }
/// <summary> /// Initializes a new instance of the <see cref="MailRuCloud" /> class. /// </summary> /// <param name="login">Login name as the email.</param> /// <param name="password">Password, associated with this email.</param> /// <param name="twoFaHandler"></param> public MailRuCloud(string login, string password, ITwoFaHandler twoFaHandler) { CloudApi = new CloudApi(login, password, twoFaHandler); //TODO: wow very dummy linking, refact cache realization globally! _itemCache = new StoreItemCache(TimeSpan.FromSeconds(60)) { CleanUpPeriod = TimeSpan.FromMinutes(5) }; _linkManager = new LinkManager(this); }
public CloudApi(string login, string password, ITwoFaHandler twoFaHandler) { Account = new Account(this, login, password, twoFaHandler); if (!Account.Login()) { throw new AuthenticationException("Auth token has't been retrieved."); } //_cachedShards = new Cached<Dictionary<ShardType, ShardInfo>>(() => new ShardInfoRequest(this).MakeRequestAsync().Result.ToShardInfo(), // TimeSpan.FromMinutes(2)); }
private static ITwoFaHandler LoadHandler(TwoFactorAuthHandlerInfo handlerInfo) { ITwoFaHandler twoFaHandler = null; if (!string.IsNullOrEmpty(handlerInfo.Name)) { twoFaHandler = TwoFaHandlers.Get(handlerInfo); if (null == twoFaHandler) { Logger.Error($"Cannot load two-factor auth handler {handlerInfo.Name}"); } } return(twoFaHandler); }
public static ITwoFaHandler Get(TwoFactorAuthHandlerInfo handlerInfo) { var type = HandlerTypes.FirstOrDefault(t => t.Name == handlerInfo.Name); if (null == type) { return(null); } ITwoFaHandler inst = null; try { inst = (ITwoFaHandler)Activator.CreateInstance(type, handlerInfo.Parames); } catch (Exception e) { Logger.Error($"Cannot create instance of 2FA handler {handlerInfo.Name}. {e}"); } return(inst); }