mirror of
https://github.com/jimathy/jim_bridge.git
synced 2026-08-17 05:56:02 +01:00
Add exploit protection for :Crafting:GetItem
I unfortunately forgot to add this before when adding the extra exploit protection. Now demands an auth token before allowing crafting results to help reduce exploiters calling it externally
This commit is contained in:
@@ -371,8 +371,10 @@ function makeItem(data)
|
||||
anim = anim,
|
||||
flag = 49,
|
||||
icon = data.item,
|
||||
request = true,
|
||||
}) then
|
||||
TriggerServerEvent(getScript()..":Crafting:GetItem", data.item, data.craft, data.stashName, metadata)
|
||||
TriggerServerEvent(getScript()..":Crafting:GetItem", data.item, data.craft, data.stashName, metadata, currentToken)
|
||||
currentToken = nil -- clear client cached token
|
||||
CreateThread(function()
|
||||
if data.craft["hasCrafted"] ~= nil then
|
||||
debugPrint("hasCrafted Found, marking '"..data.item.."' as crafted for player")
|
||||
@@ -431,8 +433,28 @@ end
|
||||
--- @param stashName string|table The stash name(s) to remove ingredients from.
|
||||
--- @param metadata table (optional) Metadata for the crafted item.
|
||||
--- @usage
|
||||
RegisterNetEvent(getScript()..":Crafting:GetItem", function(ItemMake, craftable, stashName, metadata)
|
||||
RegisterNetEvent(getScript()..":Crafting:GetItem", function(ItemMake, craftable, stashName, metadata, token)
|
||||
local src = source
|
||||
debugPrint(GetInvokingResource())
|
||||
if GetInvokingResource() and GetInvokingResource() ~= getScript() and GetInvokingResource() ~= "qb-core" then
|
||||
debugPrint("^1Error^7: ^1Possible exploit^7, ^1vital function was called from an external resource^7")
|
||||
return
|
||||
end
|
||||
|
||||
if token == nil then
|
||||
debugPrint("^1Auth^7: ^1No token recieved^7")
|
||||
dupeWarn(src, item, "Auth: Player "..src.." attempted to spawn "..item.." without an auth token")
|
||||
else
|
||||
if token ~= validTokens[src] then
|
||||
debugPrint("^1Auth^7: ^1Tokens don't match! ^7", token, validTokens[src])
|
||||
dupeWarn(src, item, "Auth: "..src.." attempted to trigger server only events with an incorrect auth token")
|
||||
else
|
||||
debugPrint("^1Auth^7: ^2Client and Server Auth tokens match^7!", token, validTokens[src])
|
||||
validTokens[src] = nil
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local hasItems, hasTable = hasItem(ItemMake, 1, src)
|
||||
if stashName then
|
||||
local itemRemove = {}
|
||||
|
||||
@@ -23,18 +23,23 @@ function GetPlayer(source)
|
||||
if isStarted(QBExport) then
|
||||
debugPrint("^6Bridge^7: ^3GetPlayer^7() QBExport")
|
||||
return exports[QBExport]:GetCoreObject().Functions.GetPlayer(source)
|
||||
|
||||
elseif isStarted(QBXExport) then
|
||||
debugPrint("^6Bridge^7: ^3GetPlayer^7() QBOXExport")
|
||||
return exports[QBXExport]:GetCoreObject().Functions.GetPlayer(source)
|
||||
|
||||
elseif isStarted(ESXExport) then
|
||||
debugPrint("^6Bridge^7: ^3GetPlayer^7() ESXExport")
|
||||
return ESX.GetPlayerFromId(source)
|
||||
|
||||
elseif isStarted(OXCoreExport) then
|
||||
debugPrint("^6Bridge^7: ^3GetPlayer^7() OXCoreExport")
|
||||
return exports[OXCoreExport]:GetPlayer(source)
|
||||
|
||||
elseif isStarted(RSGExport) then
|
||||
debugPrint("^6Bridge^7: ^3GetPlayer^7() RSGExport")
|
||||
return exports[RSGExport]:GetCoreObject().Functions.GetPlayer(source)
|
||||
|
||||
end
|
||||
return nil
|
||||
end
|
||||
@@ -63,15 +68,19 @@ function GetMetadata(player, key)
|
||||
if isStarted(QBExport) or isStarted(QBXExport) then
|
||||
debugPrint("^6Bridge^7: ^3GetMetadata^7() QBExport/QBXExport", key)
|
||||
return player.PlayerData.metadata[key]
|
||||
|
||||
elseif isStarted(ESXExport) then
|
||||
debugPrint("^6Bridge^7: ^3GetMetadata^7() ESXExport", key)
|
||||
return player.getMeta(key)
|
||||
|
||||
elseif isStarted(OXCoreExport) then
|
||||
debugPrint("^6Bridge^7: ^3GetMetadata^7() OXCoreExport", key)
|
||||
return player.get(key)
|
||||
|
||||
elseif isStarted(RSGExport) then
|
||||
debugPrint("^6Bridge^7: ^3GetMetadata^7() RSGExport", key)
|
||||
return player.PlayerData.metadata[key]
|
||||
|
||||
end
|
||||
end
|
||||
return nil
|
||||
@@ -118,15 +127,19 @@ function SetMetadata(player, key, value)
|
||||
if isStarted(QBExport) or isStarted(QBXExport) then
|
||||
debugPrint("^6Bridge^7: ^3SetMetadata^7() using QBExport/QBXExport")
|
||||
player.Functions.SetMetaData(key, value)
|
||||
|
||||
elseif isStarted(ESXExport) then
|
||||
debugPrint("^6Bridge^7: ^3SetMetadata^7() using ESXExport")
|
||||
player.setMeta(key, value)
|
||||
|
||||
elseif isStarted(OXCoreExport) then
|
||||
debugPrint("^6Bridge^7: ^3SetMetadata^7() using OXCoreExport")
|
||||
player.set(key, value)
|
||||
|
||||
elseif isStarted(RSGExport) then
|
||||
debugPrint("^6Bridge^7: ^3SetMetadata^7() using RSGExport")
|
||||
player.Functions.SetMetaData(key, value)
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user