internal static bool CheckValid(ValidateAuthTicketResponse_t r)
        {
            ESteamRejection?reason = null;

            if (OnJoinRequested != null)
            {
                foreach (var handler in OnJoinRequested.GetInvocationList().Cast <JoinRequested>())
                {
                    try
                    {
                        handler(r.m_SteamID, ref reason);
                        if (reason != null)
                        {
                            Provider.Reject(r.m_SteamID, reason.Value);
                            return(false);
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.LogException(ex);
                    }
                }
            }
            return(true);
        }
示例#2
0
 private void OnValidateAuthTicketResponse(ValidateAuthTicketResponse_t pResponse)
 {
     Debug.Log("OnValidateAuthTicketResponse Called steamID: " + pResponse.m_SteamID);
     if (pResponse.m_eAuthSessionResponse == EAuthSessionResponse.k_EAuthSessionResponseOK)
     {
     }
 }
        private void OnCheckValid(ValidateAuthTicketResponse_t callback, ref bool isValid)
        {
            var pendingPlayer = Provider.pending.FirstOrDefault(c => c.playerID.steamID.Equals(callback.m_SteamID));

            if (pendingPlayer == null)
            {
                return;
            }

            PreConnectUnturnedPlayer      player = new PreConnectUnturnedPlayer(container, pendingPlayer, playerManager);
            UnturnedPlayerPreConnectEvent @event = new UnturnedPlayerPreConnectEvent(player, callback);

            eventManager.Emit(this, @event);

            if (@event.UnturnedRejectionReason != null)
            {
                Provider.reject(callback.m_SteamID, @event.UnturnedRejectionReason.Value);
                isValid = false;
                return;
            }

            if (@event.IsCancelled)
            {
                Provider.reject(callback.m_SteamID, ESteamRejection.PLUGIN);
                isValid = false;
                return;
            }

            isValid = true;
        }
示例#4
0
 private void OnCheckValid(ValidateAuthTicketResponse_t callback, ref bool isValid)
 {
     if (isValid)
     {
         isValid = UnturnedPermissions.CheckValid(callback);
     }
 }
        public static void Prefix(ValidateAuthTicketResponse_t callback)
        {
            foreach (SteamPending pendingPlayer in Provider.pending)
            {
                pendingPlayer.skinItems    = new int[0];
                pendingPlayer.packageSkins = new ulong[0];

                pendingPlayer.packageHat = 0UL;
                pendingPlayer.hatItem    = 0;

                pendingPlayer.maskItem    = 0;
                pendingPlayer.packageMask = 0UL;

                pendingPlayer.packageGlasses = 0UL;
                pendingPlayer.glassesItem    = 0;

                pendingPlayer.shirtItem    = 0;
                pendingPlayer.packageShirt = 0UL;

                pendingPlayer.vestItem    = 0;
                pendingPlayer.packageVest = 0UL;

                pendingPlayer.packageBackpack = 0UL;
                pendingPlayer.backpackItem    = 0;

                pendingPlayer.pantsItem    = 0;
                pendingPlayer.packagePants = 0UL;
            }
        }
示例#6
0
        internal static void CheckValid(ValidateAuthTicketResponse_t r, ref bool isValid, ref string explain)
        {
            if (!isValid)
            {
                return;
            }

            ESteamRejection?reason = null;

            try
            {
                var playerGroups = R.Permissions.GetGroups(new RocketPlayer(r.m_SteamID.ToString()), true);

                string prefix = playerGroups.FirstOrDefault(x => !string.IsNullOrEmpty(x.Prefix))?.Prefix;
                string suffix = playerGroups.FirstOrDefault(x => !string.IsNullOrEmpty(x.Suffix))?.Suffix;

                if (prefix != null || suffix != null)
                {
                    SteamPending steamPending = Provider.pending.FirstOrDefault(x => x.playerID.steamID == r.m_SteamID);
                    if (steamPending != null)
                    {
                        if (prefix != null && !steamPending.playerID.characterName.StartsWith(prefix))
                        {
                            steamPending.playerID.characterName = $"{prefix}{steamPending.playerID.characterName}";
                        }
                        if (suffix != null && !steamPending.playerID.characterName.EndsWith(suffix))
                        {
                            steamPending.playerID.characterName = $"{steamPending.playerID.characterName}{suffix}";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Core.Logging.Logger.Log($"Failed adding prefix/suffix to player {r.m_SteamID}: {ex}");
            }

            if (OnJoinRequested != null)
            {
                foreach (var handler in OnJoinRequested.GetInvocationList())
                {
                    try
                    {
                        ((JoinRequested)handler)(r.m_SteamID, ref reason);
                        if (reason != null)
                        {
                            Provider.reject(r.m_SteamID, reason.Value);
                            isValid = false;
                            return;
                        }
                    }
                    catch (Exception ex)
                    {
                        Core.Logging.Logger.LogException(ex);
                    }
                }
            }
            return;
        }
示例#7
0
        protected virtual void OnPendingPlayerConnecting(ValidateAuthTicketResponse_t callback, ref bool isValid, ref string explanation)
        {
            if (m_PendingUsers.Any(d => d.SteamId == callback.m_SteamID))
            {
                return;
            }

            if (!isValid)
            {
                return;
            }

            //todo check if it is working, if not this should be patched
            var isPendingValid    = isValid;
            var rejectExplanation = explanation;

            AsyncHelper.RunSync(async() =>
            {
                var steamPending = Provider.pending.FirstOrDefault(d => d.playerID.steamID == callback.m_SteamID);
                if (steamPending == null)
                {
                    return;
                }

                var pendingUser = new UnturnedPendingUser(this, m_UserDataStore, steamPending);
                var userData    = await m_UserDataStore.GetUserDataAsync(pendingUser.Id, pendingUser.Type);
                if (userData != null)
                {
                    userData.LastSeen        = DateTime.Now;
                    userData.LastDisplayName = pendingUser.DisplayName;
                    await m_UserDataStore.SetUserDataAsync(userData);
                }
                else
                {
                    await m_DataSeeder.SeedUserDataAsync(pendingUser.Id, pendingUser.Type, pendingUser.DisplayName);
                    await m_EventBus.EmitAsync(m_Runtime, this, new UserFirstConnectEvent(pendingUser));
                }

                m_PendingUsers.Add(pendingUser);

                var userConnectingEvent = new UserConnectEvent(pendingUser);
                await m_EventBus.EmitAsync(m_Runtime, this, userConnectingEvent);

                if (!string.IsNullOrEmpty(userConnectingEvent.RejectionReason))
                {
                    isPendingValid    = false;
                    rejectExplanation = userConnectingEvent.RejectionReason;
                }

                if (userConnectingEvent.IsCancelled)
                {
                    isPendingValid = false;
                }
            });

            isValid     = isPendingValid;
            explanation = rejectExplanation;
        }
示例#8
0
        private void OnValidateAuthTicketResponse(ValidateAuthTicketResponse_t callback)
        {
            Identity ident = (SteamIdentity)callback.m_SteamID;

            if (callback.m_eAuthSessionResponse != EAuthSessionResponse.k_EAuthSessionResponseOK)
            {
                if (callback.m_eAuthSessionResponse == EAuthSessionResponse.k_EAuthSessionResponseUserNotConnectedToSteam)
                {
                    ((ServerConnection)Connection).Reject(ident, ERejectionReason.AUTH_NO_STEAM);
                }
                else if (callback.m_eAuthSessionResponse == EAuthSessionResponse.k_EAuthSessionResponseNoLicenseOrExpired)
                {
                    ((ServerConnection)Connection).Reject(ident, ERejectionReason.AUTH_LICENSE_EXPIRED);
                }
                else if (callback.m_eAuthSessionResponse == EAuthSessionResponse.k_EAuthSessionResponseVACBanned)
                {
                    ((ServerConnection)Connection).Reject(ident, ERejectionReason.AUTH_VAC_BAN);
                }
                else if (callback.m_eAuthSessionResponse == EAuthSessionResponse.k_EAuthSessionResponseLoggedInElseWhere)
                {
                    ((ServerConnection)Connection).Reject(ident, ERejectionReason.AUTH_ELSEWHERE);
                }
                else if (callback.m_eAuthSessionResponse == EAuthSessionResponse.k_EAuthSessionResponseVACCheckTimedOut)
                {
                    ((ServerConnection)Connection).Reject(ident, ERejectionReason.AUTH_TIMED_OUT);
                }
                else if (callback.m_eAuthSessionResponse == EAuthSessionResponse.k_EAuthSessionResponseAuthTicketCanceled)
                {
                    ((ServerConnection)Connection).DisconnectClient(ident);
                }
                else if (callback.m_eAuthSessionResponse == EAuthSessionResponse.k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed)
                {
                    ((ServerConnection)Connection).Reject(ident, ERejectionReason.AUTH_USED);
                }
                else if (callback.m_eAuthSessionResponse == EAuthSessionResponse.k_EAuthSessionResponseAuthTicketInvalid)
                {
                    ((ServerConnection)Connection).Reject(ident, ERejectionReason.AUTH_NO_USER);
                }
                else if (callback.m_eAuthSessionResponse == EAuthSessionResponse.k_EAuthSessionResponsePublisherIssuedBan)
                {
                    ((ServerConnection)Connection).Reject(ident, ERejectionReason.AUTH_PUB_BAN);
                }
                return;
            }

            PendingUser pending = ((ServerConnection)Connection).PendingPlayers.FirstOrDefault(pendingPlayer => pendingPlayer.Identity == ident);

            if (pending == null)
            {
                ((ServerConnection)Connection).Reject(ident, ERejectionReason.NOT_PENDING);
                return;
            }

            pending.HasAuthentication = true;
            ((ServerConnection)Connection).Accept(pending);
        }
示例#9
0
 void OnValidateAuthTicketResponse(ValidateAuthTicketResponse_t pResponse)
 {
     print(pResponse.m_SteamID);
     if (pResponse.m_eAuthSessionResponse == EAuthSessionResponse.k_EAuthSessionResponseOK)
     {
     }
     else
     {
     }
 }
        internal static bool CheckValid(ValidateAuthTicketResponse_t r)
        {
            ESteamRejection?reason = null;

            try
            {
                IOrderedEnumerable <RocketPermissionsGroup> playerGroups =
                    R.Permissions.GetGroups(new RocketPlayer(r.m_SteamID.ToString()), true).OrderBy(x => x.Priority);

                string prefix = playerGroups.FirstOrDefault(x => x.Prefix != null)?.Prefix ?? "";
                string suffix = playerGroups.FirstOrDefault(x => x.Suffix != null)?.Suffix ?? "";

                if (prefix != "" || suffix != "")
                {
                    SteamPending steamPending = Provider.pending.FirstOrDefault(x => x.playerID.steamID == r.m_SteamID);
                    if (steamPending != null)
                    {
                        if (prefix != "" && !steamPending.playerID.characterName.StartsWith(prefix))
                        {
                            steamPending.playerID.characterName = $"{prefix}{steamPending.playerID.characterName}";
                        }
                        if (suffix != "" && !steamPending.playerID.characterName.EndsWith(suffix))
                        {
                            steamPending.playerID.characterName = $"{steamPending.playerID.characterName}{suffix}";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Core.Logging.Logger.Log($"Failed adding prefix/suffix to player {r.m_SteamID}: {ex}");
            }

            if (OnJoinRequested != null)
            {
                foreach (var handler in OnJoinRequested.GetInvocationList().Cast <JoinRequested>())
                {
                    try
                    {
                        handler(r.m_SteamID, ref reason);
                        if (reason != null)
                        {
                            Provider.reject(r.m_SteamID, reason.Value);
                            return(false);
                        }
                    }
                    catch (Exception ex)
                    {
                        Core.Logging.Logger.LogException(ex);
                    }
                }
            }
            return(true);
        }
        internal static bool CheckValid(ValidateAuthTicketResponse_t r)
        {
            ESteamRejection?reason = null;

            try
            {
                RocketPermissionsGroup g = R.Permissions.GetGroups(new Rocket.API.RocketPlayer(r.m_SteamID.ToString()), true).FirstOrDefault();
                if (g != null)
                {
                    SteamPending steamPending = Provider.pending.FirstOrDefault(x => x.playerID.steamID == r.m_SteamID);
                    if (steamPending != null)
                    {
                        string prefix = g.Prefix ?? "";
                        string suffix = g.Suffix ?? "";
                        if (prefix != "" && !steamPending.playerID.characterName.StartsWith(g.Prefix))
                        {
                            steamPending.playerID.characterName = prefix + steamPending.playerID.characterName;
                        }
                        if (suffix != "" && !steamPending.playerID.characterName.EndsWith(g.Suffix))
                        {
                            steamPending.playerID.characterName = steamPending.playerID.characterName + suffix;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Core.Logging.Logger.Log("Failed adding prefix/suffix to player " + r.m_SteamID + ": " + ex.ToString());
            }

            if (OnJoinRequested != null)
            {
                foreach (var handler in OnJoinRequested.GetInvocationList().Cast <JoinRequested>())
                {
                    try
                    {
                        handler(r.m_SteamID, ref reason);
                        if (reason != null)
                        {
                            Provider.reject(r.m_SteamID, reason.Value);
                            return(false);
                        }
                    }
                    catch (Exception ex)
                    {
                        Core.Logging.Logger.LogException(ex);
                    }
                }
            }
            return(true);
        }
示例#12
0
        protected virtual void OnPendingPlayerConnected(ValidateAuthTicketResponse_t callback, ref bool isvalid, ref string explanation)
        {
            var isvalid_     = isvalid;
            var explanation_ = explanation;

            AsyncHelper.RunSync(async() =>
            {
                if (!isvalid_)
                {
                    return;
                }

                var steamPending = Provider.pending.First(d => d.playerID.steamID == callback.m_SteamID);
                var pendingUser  = new UnturnedPendingUser(steamPending);
                await m_DataSeeder.SeedUserDataAsync(pendingUser.Id, pendingUser.Type, pendingUser.DisplayName);

                var userData             = await m_UserDataStore.GetUserDataAsync(pendingUser.Type, pendingUser.Id);
                userData.LastSeen        = DateTime.Now;
                userData.LastDisplayName = pendingUser.DisplayName;
                await m_UserDataStore.SaveUserDataAsync(userData);

                pendingUser.PersistentData = userData.Data;
                m_PendingUsers.Add(pendingUser);

                var userConnectingEvent = new UserConnectingEvent(pendingUser);
                await m_EventBus.EmitAsync(m_Runtime, this, userConnectingEvent);

                if (!string.IsNullOrEmpty(userConnectingEvent.RejectionReason))
                {
                    isvalid_     = false;
                    explanation_ = userConnectingEvent.RejectionReason;
                }

                if (userConnectingEvent.IsCancelled)
                {
                    isvalid_ = false;
                }
            });

            isvalid     = isvalid_;
            explanation = explanation_;
        }
示例#13
0
        private static void HandleValidateAuthTicketResponse(ValidateAuthTicketResponse_t param)
        {
            if (ActiveSessions != null && ActiveSessions.Any(p => p.User == param.m_SteamID))
            {
                var session = ActiveSessions.First(p => p.User == param.m_SteamID);
                session.Responce  = param.m_eAuthSessionResponse;
                session.GameOwner = param.m_OwnerSteamID;

                Debug.Log("Processing session request data for " + param.m_SteamID.m_SteamID.ToString() + " status = " + param.m_eAuthSessionResponse);

                if (session.OnStartCallback != null)
                {
                    session.OnStartCallback.Invoke(session);
                }
            }
            else
            {
                Debug.LogWarning("Recieved an authentication ticket responce for user " + param.m_SteamID.m_SteamID + " no matching session was found for this user.");
            }
        }
    //-----------------------------------------------------------------------------
    // Purpose: Tells us Steam3 (VAC and newer license checking) has accepted the user connection
    //-----------------------------------------------------------------------------
    void OnValidateAuthTicketResponse(ValidateAuthTicketResponse_t pResponse)
    {
        Debug.Log("OnValidateAuthTicketResponse Called steamID: " + pResponse.m_SteamID);         // Riley

        if (pResponse.m_eAuthSessionResponse == EAuthSessionResponse.k_EAuthSessionResponseOK)
        {
            // This is the final approval, and means we should let the client play (find the pending auth by steamid)

            /* TODO Riley: Disabled
             * for (uint i = 0; i < MAX_PLAYERS_PER_SERVER; ++i) {
             *      if (!m_rgPendingClientData[i].m_bActive)
             *              continue;
             *      else if (m_rgPendingClientData[i].m_SteamIDUser == pResponse.m_SteamID) {
             *              Debug.Log("Auth completed for a client");
             *              OnAuthCompleted(true, i);
             *              return;
             *      }
             * }
             */
        }
        else
        {
            // Looks like we shouldn't let this user play, kick them

            /* TODO Riley: Disabled
             * for (uint i = 0; i < MAX_PLAYERS_PER_SERVER; ++i) {
             *      if (!m_rgPendingClientData[i].m_bActive)
             *              continue;
             *      else if (m_rgPendingClientData[i].m_SteamIDUser == pResponse.m_SteamID) {
             *              Debug.Log("Auth failed for a client");
             *              OnAuthCompleted(false, i);
             *              return;
             *      }
             * }
             */
        }
    }
示例#15
0
        protected virtual void OnPendingPlayerConnecting(ValidateAuthTicketResponse_t callback, ref bool isValid,
                                                         ref string?explanation)
        {
            var user = GetUser(callback.m_SteamID);

            if (user != null || m_PendingUsers.Any(d => d.SteamId == callback.m_SteamID))
            {
                return;
            }

            var steamPending = Provider.pending.FirstOrDefault(d => d.playerID.steamID == callback.m_SteamID);

            if (steamPending == null)
            {
                return;
            }

            var pendingUser = new UnturnedPendingUser(this, m_UserDataStore, steamPending);

            m_PendingUsers.Add(pendingUser);

            var isPendingValid    = isValid;
            var rejectExplanation = explanation;

            AsyncHelper.RunSync(async() =>
            {
                UnturnedUserConnectingEvent userEvent;

                var userData = await m_UserDataStore.GetUserDataAsync(pendingUser.Id, pendingUser.Type);
                if (userData != null)
                {
                    userEvent = new UnturnedUserConnectingEvent(pendingUser);

                    userData.LastSeen        = DateTime.Now;
                    userData.LastDisplayName = pendingUser.DisplayName;
                    UniTask.RunOnThreadPool(() => m_UserDataStore.SetUserDataAsync(userData)).Forget();
                }
                else
                {
                    userEvent = new UnturnedUserFirstConnectingEvent(pendingUser);
                    UniTask.RunOnThreadPool(() => m_DataSeeder.SeedUserDataAsync(pendingUser.Id, pendingUser.Type, pendingUser.DisplayName)).Forget();
                }

                userEvent.IsCancelled = !isPendingValid;
                if (rejectExplanation != null)
                {
                    await userEvent.RejectAsync(rejectExplanation);
                }

                await m_EventBus.EmitAsync(m_Runtime, this, userEvent);
                if (!string.IsNullOrEmpty(userEvent.RejectionReason))
                {
                    isPendingValid    = false;
                    rejectExplanation = userEvent.RejectionReason;
                }
                else if (userEvent.IsCancelled)
                {
                    isPendingValid = false;
                }
            });
            isValid     = isPendingValid;
            explanation = rejectExplanation;
        }
示例#16
0
 public static bool CheckValid(ValidateAuthTicketResponse_t r)
 {
     return(UnturnedPermissions.CheckValid(r));
 }
 void OnValidateAuthTicketResponse(ValidateAuthTicketResponse_t pCallback)
 {
     Debug.Log("[" + ValidateAuthTicketResponse_t.k_iCallback + " - ValidateAuthTicketResponse] - " + pCallback.m_SteamID + " -- " + pCallback.m_eAuthSessionResponse + " -- " + pCallback.m_OwnerSteamID);
 }
 public UnturnedPlayerPreConnectEvent(PreConnectUnturnedPlayer player, ValidateAuthTicketResponse_t steamworksAuthResponse, bool global = true) : base(player, global)
 {
     SteamworksAuthResponse = steamworksAuthResponse;
     PendingPlayer          = player.PendingPlayer;
 }
 public UnturnedPlayerPreConnectEvent(PreConnectUnturnedPlayer player, ValidateAuthTicketResponse_t steamworksAuthResponse, string name = null, EventExecutionTargetContext executionTarget = EventExecutionTargetContext.Sync, bool global = true) : base(player, name, executionTarget, global)
 {
     SteamworksAuthResponse = steamworksAuthResponse;
     PendingPlayer          = player.PendingPlayer;
 }
 void OnValidateAuthTicketResponse(ValidateAuthTicketResponse_t pCallback)
 {
     Console.WriteLine("[" + ValidateAuthTicketResponse_t.k_iCallback + " - ValidateAuthTicketResponse] - " + pCallback.m_SteamID + " -- " + pCallback.m_eAuthSessionResponse + " -- " + pCallback.m_OwnerSteamID);
     //TODO: Update data in Yargis here<<<<<<<<<
 }