private void handleData(string recv) { Console.WriteLine("\nReceived " + recv); if (recv.StartsWith("DEVINFO")) { recv = recv.Substring("DEVINFO".Length); ClientInformation dev = new ClientInformation(); dev = JSONManager.deserialize <ClientInformation>(recv); dev.LastConnected = DateTime.Now; dev.IP = clientEP.Address.ToString(); dev.Connected = true; device = dev; } else { if (recv.StartsWith("AUTH")) { string encryptedPassword = recv.Remove(0, 4); string decryptedPasswordHash = decryptMessage(encryptedPassword); if (AuthentificationManager.Instance.checkPasswordHash(decryptedPasswordHash)) { device.verifiedUntil = DateTime.Now + AuthentificationManager.timeToReAuth; Console.WriteLine("Client authenticated for another period"); if (string.IsNullOrEmpty(unprocessedReceiveUntilAuthentication)) { return; //No data to handle } else { recv = unprocessedReceiveUntilAuthentication; } unprocessedReceiveUntilAuthentication = ""; } else { Console.WriteLine("Wrong password\ngot:" + decryptedPasswordHash + "\nexp:" + AuthentificationManager.Instance.getPasswordHash()); send("AUTHWPW");//Code for Wrong Password disconnect(); } } else if (AuthentificationManager.Instance.usesPassword && device.verifiedUntil < DateTime.Now) { Console.WriteLine("Client Authentification Expired, requesting new authentication"); unprocessedReceiveUntilAuthentication = recv; send("AUTH"); return; } if (device != null && ClientMangager.knownDevices.ContainsKey(device.id)) { ClientMangager.knownDevices[device.id] = device; } else { if (device != null) { ClientMangager.knownDevices.Add(device.id, device); } } ClientMangager.saveDevices(); MainWindow.Instance.NotifyDeviceDatasetChanged(); if (recv.Equals("GETAUDIOSESSIONS")) { int sessionsSent = sendAllAudioSessions(); Console.WriteLine("\tSent " + sessionsSent + "Sessions"); } else if (recv.StartsWith("EDIT")) { recv = recv.Substring(4); AudioSession session = JSONManager.deserialize <AudioSession>(recv).toSessionId(); Main.Instance.audioManager.updateChangedSession(session); } else if (recv.StartsWith("TRACK")) { recv = recv.Substring(5); sendVolumeBlacklist.Add(AudioSession.getSessionId(recv)); } else if (recv.StartsWith("ENDTRACK")) { recv = recv.Substring(8); sendVolumeBlacklist.Remove(AudioSession.getSessionId(recv)); AudioSession session = Main.Instance.audioManager.getAudioSessionWithID(AudioSession.getSessionId(recv)); } else { Console.WriteLine("\nReceived unknown command: " + recv); } } }
public Authentication(ClientInformation information) { this.information = information; filePath = Constants.APPLICATION_DATA_ROOT_DIR + information.id + ".xml"; }