/// <summary> /// When a client connects, assign them a unique RSA keypair for handshake. /// </summary> /// <param name="clientSocket"></param> private static void HandleConnect(WebSocket clientSocket) { var connectionId = CookieManager.GetConnectionId(clientSocket); AuthClient authClient; AllClients.TryGetValue(connectionId, out authClient); if (authClient != null) { MessageQueueManager manager; //check if a manager for that port exist, if not, create one if (!authClient.MessageQueueManagers.TryGetValue(clientSocket.LocalEndpoint.Port, out manager)) { if (authClient.MessageQueueManagers.TryAdd(clientSocket.LocalEndpoint.Port, new MessageQueueManager())) { Console.WriteLine("Manager started for " + clientSocket.LocalEndpoint.Port); } } return; } Console.WriteLine("Connection from " + clientSocket.RemoteEndpoint); var rsa = new Rsa(); rsa.GenerateKeyPairs(); var client = new AuthClient { PublicKey = rsa.PublicKey, PrivateKey = rsa.PrivateKey, MessageQueueManagers = new ConcurrentDictionary <int, MessageQueueManager>() }; client.MessageQueueManagers.TryAdd(clientSocket.LocalEndpoint.Port, new MessageQueueManager()); AllClients.AddOrUpdate(connectionId, client, (key, value) => value); SendWelcomeMessage(client, clientSocket); }
/// <summary> /// When a client connects, assign them a unique RSA keypair for handshake. /// </summary> /// <param name="clientSocket"></param> private static void HandleConnect(WebSocket clientSocket) { Console.WriteLine("Connection from " + clientSocket.RemoteEndpoint); var client = new AuthClient(clientSocket); var rsa = new Rsa(); rsa.GenerateKeyPairs(); client.PublicKey = rsa.PublicKey; client.PrivateKey = rsa.PrivateKey; AllClients.AddOrUpdate(clientSocket.GetHashCode().ToString(), client, (key, value) => value); SendWelcomeMessage(client, clientSocket); }
/// <summary> /// When a client connects, assign them a unique RSA keypair for handshake. /// </summary> /// <param name="clientSocket"></param> private static async void HandleConnect(WebSocket clientSocket) { var connectionId = CookieManager.GetConnectionId(clientSocket); AuthClient authClient; AllClients.TryGetValue(connectionId, out authClient); var host = new Uri($"ws://{clientSocket.HttpRequest.Headers[RequestHeader.Host]}", UriKind.Absolute); if (authClient != null) { if (RunningAsService) { MessageQueueManager agentManager; if (!authClient.MessageQueueManagers.TryGetValue(22005, out agentManager)) { if (authClient.MessageQueueManagers.TryAdd(22005, new MessageQueueManager())) { Console.WriteLine("Service Manager Started"); } } } MessageQueueManager manager; //check if a manager for that port exist, if not, create one if (!authClient.MessageQueueManagers.TryGetValue(host.Port, out manager)) { if (authClient.MessageQueueManagers.TryAdd(host.Port, new MessageQueueManager())) { Console.WriteLine($"Manager started for {host.Port}"); } } return; } Console.WriteLine("Connection from " + clientSocket.RemoteEndpoint); var rsa = new Rsa(); rsa.GenerateKeyPairs(); var client = new AuthClient { PublicKey = rsa.PublicKey, PrivateKey = rsa.PrivateKey, MessageQueueManagers = new ConcurrentDictionary <int, MessageQueueManager>() }; client.MessageQueueManagers.TryAdd(host.Port, new MessageQueueManager()); AllClients.AddOrUpdate(connectionId, client, (key, value) => value); await SendWelcomeMessage(client, clientSocket); }
private void HandleConnect(WebSocket websocket) { var authClient = new AuthClient(websocket); var rsa = new Rsa(); rsa.GenerateKeyPairs(); authClient.PublicKey = rsa.PublicKey; authClient.PrivateKey = rsa.PrivateKey; if (Clients.TryAdd(websocket.GetHashCode().ToString(), authClient)) { Handshake(authClient); Console.WriteLine("New Client Connected"); } }
public void Init() { var rsa = new Rsa(); rsa.GenerateKeyPairs(); PrivateKey = rsa.PrivateKey; PublicKey = rsa.PublicKey; Push(new SessionStateEvent { ConnectionId = ConnectionId, UserId = UserId, AesShook = AesShook, PublicKey = Rsa.SecureStringToString(PublicKey), Terminals = _cliSessions.Select(kv => new TerminalDescriptor { TerminalId = kv.Key, TerminalType = kv.Value.Type, CurrentPath = kv.Value.CurrentPath }).ToArray() }); }