private void OnAuthChange(Steamworks.SteamId steamID, Steamworks.SteamId ownerID, Steamworks.AuthResponse status) { RemotePeer remotePeer = remotePeers.Find(p => p.SteamID == steamID); DebugConsole.Log(steamID + " validation: " + status + ", " + (remotePeer != null)); if (remotePeer == null) { return; } if (remotePeer.Authenticated) { if (status != Steamworks.AuthResponse.OK) { DisconnectPeer(remotePeer, DisconnectReason.SteamAuthenticationFailed.ToString() + "/ Steam authentication status changed: " + status.ToString()); } return; } if (status == Steamworks.AuthResponse.OK) { remotePeer.OwnerSteamID = ownerID; remotePeer.Authenticated = true; remotePeer.Authenticating = false; foreach (var msg in remotePeer.UnauthedMessages) { //rewrite the owner id before //forwarding the messages to //the server, since it's only //known now int prevBitPosition = msg.Message.BitPosition; msg.Message.BitPosition = sizeof(ulong) * 8; msg.Message.Write(ownerID); msg.Message.BitPosition = prevBitPosition; byte[] msgToSend = (byte[])msg.Message.Buffer.Clone(); Array.Resize(ref msgToSend, msg.Message.LengthBytes); ChildServerRelay.Write(msgToSend); } remotePeer.UnauthedMessages.Clear(); } else { DisconnectPeer(remotePeer, DisconnectReason.SteamAuthenticationFailed.ToString() + "/ Steam authentication failed: " + status.ToString()); return; } }
private void OnAuthChange(Steamworks.SteamId steamID, Steamworks.SteamId ownerID, Steamworks.AuthResponse status) { RemotePeer remotePeer = remotePeers.Find(p => p.SteamID == steamID); DebugConsole.Log(steamID + " validation: " + status + ", " + (remotePeer != null)); if (remotePeer == null) { return; } if (remotePeer.Authenticated) { if (status != Steamworks.AuthResponse.OK) { DisconnectPeer(remotePeer, DisconnectReason.SteamAuthenticationFailed.ToString() + "/ Steam authentication status changed: " + status.ToString()); } return; } if (status == Steamworks.AuthResponse.OK) { remotePeer.Authenticated = true; remotePeer.Authenticating = false; foreach (var msg in remotePeer.UnauthedMessages) { byte[] msgToSend = (byte[])msg.Message.Buffer.Clone(); Array.Resize(ref msgToSend, msg.Message.LengthBytes); ChildServerRelay.Write(msgToSend); } remotePeer.UnauthedMessages.Clear(); } else { DisconnectPeer(remotePeer, DisconnectReason.SteamAuthenticationFailed.ToString() + "/ Steam authentication failed: " + status.ToString()); return; } }
private void OnAuthChange(Steamworks.SteamId steamID, Steamworks.SteamId ownerID, Steamworks.AuthResponse status) { if (netServer == null) { return; } PendingClient pendingClient = pendingClients.Find(c => c.SteamID == steamID); DebugConsole.Log(steamID + " validation: " + status + ", " + (pendingClient != null)); if (pendingClient == null) { if (status != Steamworks.AuthResponse.OK) { LidgrenConnection connection = connectedClients.Find(c => c.SteamID == steamID); if (connection != null) { Disconnect(connection, DisconnectReason.SteamAuthenticationFailed.ToString() + "/ Steam authentication status changed: " + status.ToString()); } } return; } if (serverSettings.BanList.IsBanned(pendingClient.Connection.RemoteEndPoint.Address, steamID, out string banReason)) { RemovePendingClient(pendingClient, DisconnectReason.Banned, banReason); return; } if (status == Steamworks.AuthResponse.OK) { pendingClient.InitializationStep = serverSettings.HasPassword ? ConnectionInitialization.Password : ConnectionInitialization.ContentPackageOrder; pendingClient.UpdateTime = Timing.TotalTime; } else { RemovePendingClient(pendingClient, DisconnectReason.SteamAuthenticationFailed, "Steam authentication failed: " + status.ToString()); return; } }