public void SetSecuritySettings(SecuritySettingsInfo securitySettings) { SecuritySettings = null; if (securitySettings.SecurityMode == SecurityMode.None) { securitySettings.Data = null; var result = ConnectorExtension.SendData <SecuritySettingsInfo>(this, new Shared.Models.MethodCallInfo() { Guid = Guid.NewGuid().ToString(), ServiceName = "/SetSettings", Data = JsonConvert.SerializeObject(securitySettings) }); } else if (securitySettings.SecurityMode == SecurityMode.RSA_AESSecurity) { var keys = RSASecurity.GenerateRandomKey(); securitySettings.Data = new RSAAESEncryptionData() { RSAEncryptionKey = keys.PublicKey }; var result = ConnectorExtension.SendData <SecuritySettingsInfo>(this, new Shared.Models.MethodCallInfo() { Guid = Guid.NewGuid().ToString(), ServiceName = "/SetSettings", Data = JsonConvert.SerializeObject(securitySettings) }); SecuritySettings = new SecuritySettingsInfo() { Data = new RSAAESEncryptionData() { Key = RSASecurity.Decrypt(result.Data.Key, RSASecurity.StringToKey(keys.PrivateKey)), IV = RSASecurity.Decrypt(result.Data.IV, RSASecurity.StringToKey(keys.PrivateKey)) }, SecurityMode = securitySettings.SecurityMode }; } }
public void Connect(string url, bool isWebsocket = false) #endif { IsWebSocket = isWebsocket; if (!Uri.TryCreate(url, UriKind.Absolute, out Uri uri)) { throw new Exception("url is not valid"); } else if (uri.Port <= 0) { throw new Exception("port is not valid"); } #if (NETSTANDARD1_6 || NETCOREAPP1_1) IPHostEntry Host = await Dns.GetHostEntryAsync(uri.Host); #else IPHostEntry Host = Dns.GetHostEntry(uri.Host); #endif //IPHostEntry server = Dns.Resolve(uri.Host); base.Connect(Host.AddressList.Length == 0 ? uri.Host : Host.AddressList.FirstOrDefault().ToString(), uri.Port); Connect(); ConnectToUrl(uri.AbsolutePath); StartToReadingClientData(); var isConnected = ConnectorExtension.SendData <bool>(this, new Shared.Models.MethodCallInfo() { Guid = Guid.NewGuid().ToString(), ServiceName = "/CheckConnection" }); Console.WriteLine("isConnected " + isConnected); if (!isConnected) { Dispose(); throw new Exception("server is available but connection address is not true"); } }