private void LogConnectionInfo() { RoyalRDSConnection rdpData = Data as RoyalRDSConnection; bool autologon = rdpData.TemporaryGet(() => { return(rdpData.CredentialAutologon); }); CredentialInfo effectiveCred = rdpData.TemporaryGet(() => { return(rdpData.GetEffectiveCredential()); }); string hostname = rdpData.TemporaryGet(() => { return(rdpData.URI.ResolveTokensApi(rdpData)); }); int port = rdpData.TemporaryGet(() => { return(rdpData.RDPPort); }); string username = string.Empty; string password = string.Empty; if (autologon && effectiveCred != null) { username = effectiveCred.Username; password = effectiveCred.Password; } int screenWidth = 0; int screenHeight = 0; rdpData.TemporaryAction(() => { if (rdpData.DesktopWidth == 0 && rdpData.DesktopHeight == 0) { NSView connectionPlaceholderView = TabViewItem.View.CastTo <NSView>(); screenWidth = (int)connectionPlaceholderView.Frame.Width; screenHeight = (int)connectionPlaceholderView.Frame.Height; } else { screenWidth = rdpData.DesktopWidth; screenHeight = rdpData.DesktopHeight; } }); bool console = rdpData.TemporaryGet(() => { return(rdpData.ConnectToAdministerOrConsole); }); StringBuilder details = new StringBuilder(); details.AppendLine(string.Format("Hostname: {0}", hostname)); details.AppendLine(string.Format("Port: {0}", port)); details.AppendLine(string.Format("Console: {0}", console)); details.AppendLine(string.Format("AutoLogon: {0}", autologon)); details.AppendLine(string.Format("Username: {0}", username)); details.AppendLine(string.Format("Password: {0}", password)); details.AppendLine(string.Format("Resolution: {0}x{1}", screenWidth, screenHeight)); ApiUtils.Log.Add(new RoyalLogEntry() { Severity = RoyalLogEntry.Severities.Debug, Action = "DummyConnection", PluginID = PLUGIN_ID, PluginName = PLUGIN_NAME, Message = "Connection Info", Details = details.ToString() }); }
public override void Connect() { string sel = "connectWithOptions:"; RoyalRDSConnection rdpData = Data as RoyalRDSConnection; rdpData.BeginTemporaryMode(); bool autologon = rdpData.CredentialAutologon; NSString hostname = rdpData.URI.ResolveTokensApi(rdpData).NS(); int port = rdpData.RDPPort; rdpData.EndTemporaryMode(); NSString username = NSString.Empty; //NSString domain = NSString.Empty; NSString password = NSString.Empty; rdpData.BeginTemporaryMode(); CredentialInfo effectiveCred = rdpData.GetEffectiveCredential(); rdpData.EndTemporaryMode(); if (autologon && effectiveCred != null) { string usernameStr = effectiveCred.Username; string passwordStr = effectiveCred.Password; username = usernameStr.NS(); password = passwordStr.NS(); } int screenWidth = 0; int screenHeight = 0; if (rdpData.DesktopWidth == 0 && rdpData.DesktopHeight == 0) { screenWidth = (int)TabViewItem.View.CastTo <NSView>().Frame.Width; screenHeight = (int)TabViewItem.View.CastTo <NSView>().Frame.Height; } else { rdpData.BeginTemporaryMode(); screenWidth = rdpData.DesktopWidth; screenHeight = rdpData.DesktopHeight; rdpData.EndTemporaryMode(); } // TODO: Screen Width should actually be a multitude of 4, not 8, but 8 seems to work just fine with rdesktop if (screenWidth % 8 != 0) { screenWidth = (screenWidth / 8) * 8; } m_screenWidth = screenWidth; m_screenHeight = screenHeight; CordRdpOptions options = new CordRdpOptions(); rdpData.BeginTemporaryMode(); options.Hostname = hostname; options.Port = port; options.Username = username; //options.Domain = domain; options.Password = password; options.ConnectToConsole = rdpData.ConnectToAdministerOrConsole; options.SmartSize = false; //rdpData.SmartSizing; options.ScreenWidth = screenWidth; options.ScreenHeight = screenHeight; options.ColorDepth = rdpData.ColorDepth; options.AllowWallpaper = rdpData.AllowWallpaper; options.AllowAnimations = rdpData.AllowMenuAnimations; options.FontSmoothing = rdpData.AllowFontSmoothing; options.ShowWindowContentsWhileDragging = rdpData.AllowFullWindowDrag; options.ShowThemes = rdpData.AllowThemes; options.RedirectPrinters = rdpData.RedirectPrinters; options.RedirectDiskDrives = rdpData.RedirectDrives; options.AudioRedirectionMode = rdpData.AudioRedirectionMode; rdpData.EndTemporaryMode(); if (m_nativeController.RespondsToSelector(sel)) { m_nativeController.SendMessage(sel, options); } options.Release(); }