/// <summary> /// Locals the account for server. /// </summary> /// <param name="server"> /// The server. /// </param> /// <param name="username"> /// The username. /// </param> /// <param name="rasApplicationId"> /// The ras application identifier. /// </param> /// <returns> /// The <see cref="Task"/>. /// </returns> public static async Task <ServerAccount> LocalAccountForServer( RemoteServer server, string username, string rasApplicationId) { if (server == null) { return(null); } // set the username var checkedUserName = username; if (server.AuthenticationType == ServerAuthenticationType.Revolution && string.IsNullOrWhiteSpace(rasApplicationId)) { // Get the RAS application Id from the mappings rasApplicationId = RasLoginAppMapping.CurrentMapping() .AppIdForServerIdRasLoginName(server.ServerIdentification, username.ToLower()); if (!string.IsNullOrWhiteSpace(rasApplicationId)) { var usernameTokens = username.Split('\\'); if (usernameTokens.Length > 1 && !rasApplicationId.Equals(server.ServerIdentification)) { checkedUserName = usernameTokens[1]; } } else { return(null); } } var accountFolder = AccountPathForServer(server, checkedUserName, rasApplicationId); Logger?.LogMessage(new LogMessage($"ServerAccount - Try account folder {accountFolder}", LogLevel.Info)); if (PlatformService?.StorageProvider == null || !PlatformService.StorageProvider.DirectoryExists(accountFolder)) { return(null); } Logger?.LogMessage(new LogMessage($"ServerAccount - Use account Folder {accountFolder}", LogLevel.Info)); var accountConfigurationFile = Path.Combine(accountFolder, "account.crmpad"); if (!PlatformService.StorageProvider.FileExists(accountConfigurationFile)) { return(null); } var platform = SimpleIoc.Default.GetInstance <IPlatformService>(); if (platform == null) { return(null); } return(await platform.StorageProvider.LoadObject <ServerAccount>(accountConfigurationFile)); }
/// <summary> /// Currents the mapping. /// </summary> /// <returns> /// The <see cref="RasLoginAppMapping"/>. /// </returns> public static RasLoginAppMapping CurrentMapping() { if (instance != null) { return(instance); } lock (SingletonLock) { if (instance != null) { return(instance); } instance = new RasLoginAppMapping(); var readObject = PListService.LoadPropertiesAsArray( PListService.LoginAppMapping, PListService.DocumentPath); if (readObject != null && readObject.Count > 1) { instance.SetInstanceMapping(readObject[0].Value); instance.SetAppIdMapping(readObject[1].Value); } } return(instance); }