Skip to content

Commit

Permalink
refactor: use logger module
Browse files Browse the repository at this point in the history
* refactor: use logger module

* fix: missing configuration

* fix: typo

* refactor: use server config for webhook urls

* refactor: core events webhook config

* Update character.lua

* Update commands.lua

* Update events.lua

* Update functions.lua

* Update player.lua

* Update player.lua

---------

Co-authored-by: Manason <clanerp@gmail.com>
Co-authored-by: Matthew <22198949+MafewTM@users.noreply.github.com>
  • Loading branch information
3 people committed Dec 9, 2023
1 parent a37a531 commit 65600f5
Show file tree
Hide file tree
Showing 6 changed files with 105 additions and 20 deletions.
12 changes: 12 additions & 0 deletions config/server.lua
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,18 @@ return {
},
},

-- this configuration is for core events only. putting other webhooks here will have no effect
logging = {
webhook = {
['default'] = nil, -- default
['joinleave'] = nil, -- default
['ooc'] = nil, -- default
['anticheat'] = nil, -- default
['playermoney'] = nil, -- default
},
role = {} -- Role to tag for high priority logs. Roles use <@%roleid> and users/channels are <@userid/channelid>
},

giveVehicleKeys = function(src, plate)
return exports.qbx_vehiclekeys:GiveKeys(src, plate)
end,
Expand Down
9 changes: 8 additions & 1 deletion server/character.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
local config = require 'config.server'
local logger = require 'modules.logger'

---@param license2 string
---@param license? string
Expand Down Expand Up @@ -46,7 +47,13 @@ lib.callback.register('qbx_core:server:loadCharacter', function(source, citizenI
if not player then return end

SetPlayerRoutingBucket(source, 0)
TriggerEvent('qb-log:server:CreateLog', 'joinleave', 'Loaded', 'green', '**'.. GetPlayerName(source) .. '** ('..(GetPlayerIdentifierByType(source, 'discord') or 'undefined') ..' | ||' ..(GetPlayerIdentifierByType(source, 'ip') or 'undefined') .. '|| | ' ..(GetPlayerIdentifierByType(source, 'license2') or GetPlayerIdentifierByType(source, 'license') or 'undefined') ..' | ' ..citizenId..' | '..source..') loaded..')
logger.log({
source = 'qbx_core',
webhook = config.logging.webhook['joinleave'],
event = 'Loaded',
color = 'green',
message = '**'.. GetPlayerName(source) .. '** ('..(GetPlayerIdentifierByType(source, 'discord') or 'undefined') ..' | ||' ..(GetPlayerIdentifierByType(source, 'ip') or 'undefined') .. '|| | ' ..(GetPlayerIdentifierByType(source, 'license2') or GetPlayerIdentifierByType(source, 'license') or 'undefined') ..' | ' ..citizenId..' | '..source..') loaded..'
})
lib.print.info(GetPlayerName(source)..' (Citizen ID: '..citizenId..') has succesfully loaded!')
end)

Expand Down
10 changes: 9 additions & 1 deletion server/commands.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
local config = require 'config.server'
local logger = require 'modules.logger'

GlobalState.PVPEnabled = config.server.pvp

Expand Down Expand Up @@ -290,7 +291,14 @@ lib.addCommand('ooc', {
multiline = true,
args = {('Proximity OOC | %s'):format(GetPlayerName(source)), message}
})
TriggerEvent('qb-log:server:CreateLog', 'ooc', 'OOC', 'white', '**' .. GetPlayerName(source) .. '** (CitizenID: ' .. player.PlayerData.citizenid .. ' | ID: ' .. source .. ') **Message:** ' .. message, false)
logger.log({
source = 'qbx_core',
webhook = 'ooc',
event = 'OOC',
color = 'white',
tags = config.logging.role,
message = '**' .. GetPlayerName(source) .. '** (CitizenID: ' .. player.PlayerData.citizenid .. ' | ID: ' .. source .. ') **Message:** ' .. message
})
end
end
end
Expand Down
10 changes: 9 additions & 1 deletion server/events.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
local serverConfig = require 'config.server'.server
local loggingConfig = require 'config.server'.logging
local logger = require 'modules.logger'

-- Event Handler

Expand Down Expand Up @@ -33,7 +35,13 @@ AddEventHandler('playerDropped', function(reason)
if not QBX.Players[src] then return end
GlobalState.PlayerCount -= 1
local player = QBX.Players[src]
TriggerEvent('qb-log:server:CreateLog', 'joinleave', 'Dropped', 'red', '**' .. GetPlayerName(src) .. '** (' .. player.PlayerData.license .. ') left..' ..'\n **Reason:** ' .. reason)
logger.log({
source = 'qbx_core',
webhook = loggingConfig.webhook['joinleave'],
event = 'Dropped',
color = 'red',
message = '**' .. GetPlayerName(src) .. '** (' .. player.PlayerData.license .. ') left..' ..'\n **Reason:** ' .. reason,
})
player.Functions.Save()
QBX.Player_Buckets[player.PlayerData.license] = nil
QBX.Players[src] = nil
Expand Down
11 changes: 10 additions & 1 deletion server/functions.lua
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
local serverConfig = require 'config.server'.server
local positionConfig = require 'config.shared'.notifyPosition
local logger = require 'modules.logger'
local loggingConfig = require 'config.server'.logging

-- Getters
-- Get your player first and then trigger a function on them
Expand Down Expand Up @@ -399,7 +401,14 @@ local function ExploitBan(playerId, origin)
})
end)
DropPlayer(playerId --[[@as string]], Lang:t('info.exploit_banned', {discord = serverConfig.discord}))
TriggerEvent("qb-log:server:CreateLog", "anticheat", "Anti-Cheat", "red", name .. " has been banned for exploiting " .. origin, true)
logger.log({
source = 'qbx_core',
webhook = loggingConfig.webhook['anticheat'],
event = 'Anti-Cheat',
color = 'red',
tags = loggingConfig.role,
message = name .. " has been banned for exploiting " .. origin
})
end

exports('ExploitBan', ExploitBan)
73 changes: 57 additions & 16 deletions server/player.lua
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
local config = require 'config.server'
local defaultSpawn = require 'config.shared'.defaultSpawn
local logger = require 'modules.logger'

---@class PlayerData : PlayerEntity
---@field source? Source present if player is online
Expand Down Expand Up @@ -32,7 +33,14 @@ function LoginV2(source, citizenid, newData)
return CheckPlayerData(source, playerData)
else
DropPlayer(tostring(source), Lang:t("info.exploit_dropped"))
TriggerEvent('qb-log:server:CreateLog', 'anticheat', 'Anti-Cheat', 'white', ('%s Has Been Dropped For Character Joining Exploit'):format(GetPlayerName(source)), false)
logger.log({
source = 'qbx_core',
webhook = config.logging.webhook['anticheat'],
event = 'Anti-Cheat',
color = 'white',
tags = config.logging.role,
message = ('%s Has Been Dropped For Character Joining Exploit'):format(GetPlayerName(source))
})
end
else
local player = CheckPlayerData(source, newData)
Expand Down Expand Up @@ -343,11 +351,15 @@ function CreatePlayer(playerData, Offline)

if not self.Offline then
self.Functions.UpdatePlayerData()
if amount > 100000 then
TriggerEvent('qb-log:server:CreateLog', 'playermoney', 'AddMoney', 'lightgreen', '**' .. GetPlayerName(self.PlayerData.source) .. ' (citizenid: ' .. self.PlayerData.citizenid .. ' | id: ' .. self.PlayerData.source .. ')** $' .. amount .. ' (' .. moneytype .. ') added, new ' .. moneytype .. ' balance: ' .. self.PlayerData.money[moneytype] .. ' reason: ' .. reason, true)
else
TriggerEvent('qb-log:server:CreateLog', 'playermoney', 'AddMoney', 'lightgreen', '**' .. GetPlayerName(self.PlayerData.source) .. ' (citizenid: ' .. self.PlayerData.citizenid .. ' | id: ' .. self.PlayerData.source .. ')** $' .. amount .. ' (' .. moneytype .. ') added, new ' .. moneytype .. ' balance: ' .. self.PlayerData.money[moneytype] .. ' reason: ' .. reason)
end
local tags = amount > 100000 and config.logging.role or nil
logger.log({
source = 'qbx_core',
webhook = config.logging.webhook['playermoney'],
event = 'AddMoney',
color = 'lightgreen',
tags = tags,
message = '**' .. GetPlayerName(self.PlayerData.source) .. ' (citizenid: ' .. self.PlayerData.citizenid .. ' | id: ' .. self.PlayerData.source .. ')** $' .. amount .. ' (' .. moneytype .. ') added, new ' .. moneytype .. ' balance: ' .. self.PlayerData.money[moneytype] .. ' reason: ' .. reason,
})
TriggerClientEvent('hud:client:OnMoneyChange', self.PlayerData.source, moneytype, amount, false)
TriggerClientEvent('QBCore:Client:OnMoneyChange', self.PlayerData.source, moneytype, amount, "add", reason)
TriggerEvent('QBCore:Server:OnMoneyChange', self.PlayerData.source, moneytype, amount, "add", reason)
Expand Down Expand Up @@ -376,11 +388,15 @@ function CreatePlayer(playerData, Offline)

if not self.Offline then
self.Functions.UpdatePlayerData()
if amount > 100000 then
TriggerEvent('qb-log:server:CreateLog', 'playermoney', 'RemoveMoney', 'red', '**' .. GetPlayerName(self.PlayerData.source) .. ' (citizenid: ' .. self.PlayerData.citizenid .. ' | id: ' .. self.PlayerData.source .. ')** $' .. amount .. ' (' .. moneytype .. ') removed, new ' .. moneytype .. ' balance: ' .. self.PlayerData.money[moneytype] .. ' reason: ' .. reason, true)
else
TriggerEvent('qb-log:server:CreateLog', 'playermoney', 'RemoveMoney', 'red', '**' .. GetPlayerName(self.PlayerData.source) .. ' (citizenid: ' .. self.PlayerData.citizenid .. ' | id: ' .. self.PlayerData.source .. ')** $' .. amount .. ' (' .. moneytype .. ') removed, new ' .. moneytype .. ' balance: ' .. self.PlayerData.money[moneytype] .. ' reason: ' .. reason)
end
local tags = amount > 100000 and config.logging.role or nil
logger.log({
source = 'qbx_core',
webhook = config.logging.webhook['playermoney'],
event = 'RemoveMoney',
color = 'red',
tags = tags,
message = '**' .. GetPlayerName(self.PlayerData.source) .. ' (citizenid: ' .. self.PlayerData.citizenid .. ' | id: ' .. self.PlayerData.source .. ')** $' .. amount .. ' (' .. moneytype .. ') removed, new ' .. moneytype .. ' balance: ' .. self.PlayerData.money[moneytype] .. ' reason: ' .. reason,
})
TriggerClientEvent('hud:client:OnMoneyChange', self.PlayerData.source, moneytype, amount, true)
if moneytype == 'bank' then
TriggerClientEvent('qb-phone:client:RemoveBankMoney', self.PlayerData.source, amount)
Expand All @@ -406,7 +422,13 @@ function CreatePlayer(playerData, Offline)

if not self.Offline then
self.Functions.UpdatePlayerData()
TriggerEvent('qb-log:server:CreateLog', 'playermoney', 'SetMoney', 'green', '**' .. GetPlayerName(self.PlayerData.source) .. ' (citizenid: ' .. self.PlayerData.citizenid .. ' | id: ' .. self.PlayerData.source .. ')** $' .. amount .. ' (' .. moneytype .. ') set, new ' .. moneytype .. ' balance: ' .. self.PlayerData.money[moneytype] .. ' reason: ' .. reason)
logger.log({
source = 'qbx_core',
webhook = config.logging.webhook['playermoney'],
event = 'SetMoney',
color = 'green',
message = '**' .. GetPlayerName(self.PlayerData.source) .. ' (citizenid: ' .. self.PlayerData.citizenid .. ' | id: ' .. self.PlayerData.source .. ')** $' .. amount .. ' (' .. moneytype .. ') set, new ' .. moneytype .. ' balance: ' .. self.PlayerData.money[moneytype] .. ' reason: ' .. reason,
})
TriggerClientEvent('hud:client:OnMoneyChange', self.PlayerData.source, moneytype, math.abs(difference), difference < 0)
TriggerClientEvent('QBCore:Client:OnMoneyChange', self.PlayerData.source, moneytype, amount, "set", reason)
TriggerEvent('QBCore:Server:OnMoneyChange', self.PlayerData.source, moneytype, amount, "set", reason)
Expand Down Expand Up @@ -516,12 +538,25 @@ function DeleteCharacter(source, citizenid)
CreateThread(function()
local success = DeletePlayerEntity(citizenid)
if success then
TriggerEvent('qb-log:server:CreateLog', 'joinleave', 'Character Deleted', 'red', '**' .. GetPlayerName(source) .. '** ' .. license2 .. ' deleted **' .. citizenid .. '**..')
logger.log({
source = 'qbx_core',
webhook = config.logging.webhook['joinleave'],
event = 'Character Deleted',
color = 'red',
message = '**' .. GetPlayerName(source) .. '** ' .. license2 .. ' deleted **' .. citizenid .. '**..'
})
end
end)
else
DropPlayer(tostring(source), Lang:t("info.exploit_dropped"))
TriggerEvent('qb-log:server:CreateLog', 'anticheat', 'Anti-Cheat', 'white', GetPlayerName(source) .. ' Has Been Dropped For Character Deletion Exploit', true)
logger.log({
source = 'qbx_core',
webhook = config.logging.webhook['anticheat'],
event = 'Anti-Cheat',
color = 'white',
tags = config.logging.role,
message = GetPlayerName(source) .. ' Has Been Dropped For Character Deletion Exploit',
})
end
end

Expand All @@ -537,7 +572,13 @@ function ForceDeleteCharacter(citizenid)
CreateThread(function()
local success = DeletePlayerEntity(citizenid)
if success then
TriggerEvent('qb-log:server:CreateLog', 'joinleave', 'Character Force Deleted', 'red', 'Character **' .. citizenid .. '** got deleted')
logger.log({
source = 'qbx_core',
webhook = config.logging.webhook['joinleave'],
event = 'Character Force Deleted',
color = 'red',
message = 'Character **' .. citizenid .. '** got deleted'
})
end
end)
end
Expand All @@ -558,4 +599,4 @@ function GenerateUniqueIdentifier(type)
return uniqueId
end

exports('GenerateUniqueIdentifier', GenerateUniqueIdentifier)
exports('GenerateUniqueIdentifier', GenerateUniqueIdentifier)

0 comments on commit 65600f5

Please sign in to comment.