using System; using System.Collections.Generic; using System.Net; using System.Security.Cryptography; namespace ScreenConnect; [SingletonType("ScreenConnect.WindowsClientToolkit", "ScreenConnect.Windows, Version={0}, PublicKeyToken={1}", EnvironmentFlags.FullMicrosoftClr, EnvironmentFlags.UnknownRuntime)] [SingletonType("ScreenConnect.MonoTouchClientToolkit", "MonoTouchCore, Version={0}, PublicKeyToken={1}", EnvironmentFlags.Mono | EnvironmentFlags.IOS, EnvironmentFlags.UnknownRuntime)] [SingletonType("ScreenConnect.WindowsAppClientToolkit", "ScreenConnect.WindowsApp, Version={0}, PublicKeyToken={1}", EnvironmentFlags.PortableMicrosoftClr, EnvironmentFlags.UnknownRuntime)] public class ClientToolkit : Singleton { private class EmptyProxyAttempter : IProxyAttempter { public IEnumerable GetPossibleProxyUris(Uri endPointUri) { return new Uri[1]; } public void NotifyProxyUriWorking(Uri proxyUri) { } } public virtual NetworkConnection ConnectNetworkConnection(Uri endPointUri, Uri httpProxyUri) { return new SocketNetworkConnection(ClientNetworkExtensions.ConnectTcpSocket(endPointUri)); } public virtual IPAddress[] GetIPAddresses(string hostOrIPAddressString) { return NetworkExtensions.GetIPAddresses(hostOrIPAddressString); } public virtual int GetKeepAliveTimeSeconds() { return 60; } public virtual int GetClientConnectionMaxRetrySleepMilliseconds() { return 1800000; } public virtual int GetClientConnectionLimitPeriodMilliseconds() { return 21600000; } public virtual int GetClientConnectionLimitPerPeriodBeforeMaxWait() { return 30; } public virtual byte[] EncryptRSA(byte[] key, byte[] data) { using RSACryptoServiceProvider rSACryptoServiceProvider = new RSACryptoServiceProvider(); rSACryptoServiceProvider.ImportCspBlob(key); return rSACryptoServiceProvider.Encrypt(data, fOAEP: false); } public virtual IVideoFileEncoder CreateVideoFileEncoder() { throw new NotSupportedException(); } public virtual string ExpandEnvironmentVariables(string s) { return s; } public virtual Guid GetMachineBasedSessionID() { return default(Guid); } public virtual ResourceManagerEx CreateClientResourceManager() { throw new NotImplementedException(); } public virtual long GetApplicationPingTimeMilliseconds() { return 1800000L; } public virtual IProxyAttempter CreateProxyAttempter() { return new EmptyProxyAttempter(); } }