public async Task Connect(ServerCandidates candidates, Profile profile) { var servers = Servers(candidates); var sortedServers = Sorted(servers, profile.ProfileType); await Connect(sortedServers, VpnProtocol(profile.Protocol)); }
public ServerCandidates ServerCandidates(Profile profile) { if (profile == null) { return(_serverCandidatesFactory.ServerCandidates(new Server[0])); } var serverSpec = ProfileServerSpec(profile); var servers = _serverManager.GetServers(serverSpec); return(_serverCandidatesFactory.ServerCandidates(servers)); }
public bool CanConnect(ServerCandidates candidates, Profile profile) { var servers = Servers(candidates); if (servers.Any()) { return(SwitchSecureCoreMode(servers.First().IsSecureCore())); } HandleNoServersAvailable(candidates.Items, profile); return(false); }
public async Task <bool> UpdateServers(ServerCandidates candidates, Profile profile) { var servers = Servers(candidates); if (!servers.Any()) { return(false); } var sortedServers = Sorted(servers, profile.ProfileType); await UpdateServers(sortedServers); return(true); }
private Specification <LogicalServerContract> ProfileServerSpec(Profile profile) { if (profile.ProfileType == ProfileType.Custom) { return(new ServerById(profile.ServerId)); } Specification <LogicalServerContract> spec = new ServerByFeatures(ServerFeatures(profile)); if (!string.IsNullOrEmpty(profile.CountryCode)) { spec &= new ExitCountryServer(profile.CountryCode); } return(spec); }
private void HandleNoServersAvailable(IReadOnlyCollection <Server> candidates, Profile profile) { if (profile.ProfileType == ProfileType.Custom) { HandleNoCustomServerAvailable(candidates.FirstOrDefault()); return; } if ((profile.Features.IsSecureCore() || profile.IsPredefined && _appSettings.SecureCore) && _userStorage.User().MaxTier < ServerTiers.Plus) { _modals.Show <ScUpsellModalViewModel>(); return; } if (!string.IsNullOrEmpty(profile.CountryCode)) { HandleNoCountryServersAvailable(candidates); return; } if (!candidates.Any()) { _dialogs.ShowWarning(StringResources.Get("Profiles_msg_NoServersAvailable")); return; } var userTierServers = candidates.UpToTierServers(_userStorage.User().MaxTier); if (!userTierServers.Any()) { if (candidates.BasicServers().Any()) { _modals.Show <UpsellModalViewModel>(); return; } if (candidates.PlusServers().Any()) { _modals.Show <PlusUpsellModalViewModel>(); return; } } if (!candidates.OnlineServers().Any()) { _dialogs.ShowWarning(StringResources.Get("Profiles_msg_AllServersOffline")); return; } _modals.Show <NoServerDueTierUpsellModalViewModel>(); }
private Features ServerFeatures(Profile profile) { return(profile.IsPredefined ? _appSettings.SecureCore ? Features.SecureCore : Features.None : profile.Features); }
public async Task <bool> OtherProfileWithNameExists(Profile profile) { var profiles = await GetProfiles(); return(profiles.Any(p => !ProfileByIdEqualityComparer.Equals(p, profile) && ProfileByNameEqualityComparer.Equals(p, profile))); }
public Task UpdateProfile(Profile profile) { AddCountryCode(profile); return(_profiles.Update(profile)); }
public Task RemoveProfile(Profile profile) { return(_profiles.Delete(profile)); }
public Task AddProfile(Profile profile) { AddCountryCode(profile); return(_profiles.Create(profile)); }