public ServerConnection(ServerConnectionStatus status, IDiagnosticPullStream diagnosticPullStream, IDiagnosticPushStream diagnosticPushStream, byte[] newGameKey, uint loginSeed, LoginEncryptionKey loginKey) : this(status, diagnosticPullStream, diagnosticPushStream, PacketDefinitionRegistryFactory.CreateClassicClient(), EncryptionSetup.Autodetect) { InitNewGameEncryption(newGameKey); this.loginStream = new LoginPushStream(loginSeed, loginKey); }
public UltimaClientConnection(UltimaClientConnectionStatus status, IDiagnosticPullStream diagnosticPullStream, IDiagnosticPushStream diagnosticPushStream) { this.diagnosticPullStream = diagnosticPullStream; this.diagnosticPushStream = diagnosticPushStream; Status = status; }
private ServerConnection CreateEncryptedConnection(ServerConnectionStatus status, IDiagnosticPullStream diagnosticPullStream, IDiagnosticPushStream diagnosticPushStream) { return(new ServerConnection(status, diagnosticPullStream, diagnosticPushStream, newGameKey: new byte[] { 127, 0, 0, 1 }, loginSeed: 0xA9FE5050, loginKey: new LoginEncryptionKey(0x2cc3ed9d, 0xa374227f, 0))); }
public ServerConnection(ServerConnectionStatus status, IDiagnosticPullStream diagnosticPullStream, IDiagnosticPushStream diagnosticPushStream) { this.Status = status; this.diagnosticPullStream = diagnosticPullStream; this.diagnosticPushStream = diagnosticPushStream; huffmanStream = new HuffmanStream(receiveNewGameStream); preLoginStream = new PullStreamToStreamAdapter(diagnosticPullStream); }
public UltimaClientConnection(UltimaClientConnectionStatus status, IDiagnosticPullStream diagnosticPullStream, IDiagnosticPushStream diagnosticPushStream, PacketDefinitionRegistry packetRegistry, EncryptionSetup encryption, LoginEncryptionKey? configuedLoginEncryptionKey) { this.diagnosticPullStream = diagnosticPullStream; this.diagnosticPushStream = diagnosticPushStream; this.encryption = encryption; this.configuedLoginEncryptionKey = configuedLoginEncryptionKey; Status = status; packetLogParser = new PacketLogParser(packetRegistry); loginStream = new LoginPullStream(); loginStream.BaseStream = diagnosticPullStream; receiveNewGameStream = new ClientNewGamePullStream(); receiveNewGameStream.BaseStream = diagnosticPullStream; sendNewGameStream = new ClientNewGamePushStream(); }
public ServerConnection(ServerConnectionStatus status, IDiagnosticPullStream diagnosticPullStream, IDiagnosticPushStream diagnosticPushStream, PacketDefinitionRegistry packetRegistry, EncryptionSetup encryptionSetup) { this.Status = status; this.diagnosticPullStream = diagnosticPullStream; this.diagnosticPushStream = diagnosticPushStream; this.packetRegistry = packetRegistry; this.encryptionSetup = encryptionSetup; this.loginStream = new LoginPushStream(); this.receiveNewGameStream = new ServerNewGamePullStream(); this.sendNewGameStream = new ServerNewGamePushStream(); huffmanStream = new HuffmanStream(new PullStreamToStreamAdapter(receiveNewGameStream)); preLoginStream = new PullStreamToStreamAdapter(diagnosticPullStream); }
private void DetectEncryption(IDiagnosticPullStream inputStream) { if (!inputStream.DataAvailable) return; var result = loginEncryptionDetector.Detect(this.loginSeed, inputStream, encryptionVersion); switch (encryption) { case EncryptionSetup.Autodetect: case EncryptionSetup.EncryptedClient: if (result.Encryption != null) { requiresEncryption = true; loginStream = new LoginPullStream(result.Encryption); loginStream.BaseStream = diagnosticPullStream; LoginEncryptionStarted?.Invoke(loginSeed, result.Key.Value); } break; case EncryptionSetup.EncryptedServer: if (!configuedLoginEncryptionKey.HasValue) throw new InvalidOperationException("Unecrypted client and encrypted server specified, without encryption key"); requiresEncryption = false; loginStream = new LoginPullStream(result.Encryption); loginStream.BaseStream = diagnosticPullStream; LoginEncryptionStarted?.Invoke(loginSeed, configuedLoginEncryptionKey.Value); break; default: throw new NotImplementedException($"EncryptionSetup {encryption}"); } var packet = packetLogParser.ParsePacket(result.DecryptedPacket); OnPacketReceived(packet); Status = UltimaClientConnectionStatus.ServerLogin; }
public ServerConnection(ServerConnectionStatus status, IDiagnosticPullStream diagnosticPullStream, IDiagnosticPushStream diagnosticPushStream) : this(status, diagnosticPullStream, diagnosticPushStream, PacketDefinitionRegistryFactory.CreateClassicClient(), EncryptionSetup.Autodetect) { }