1
0
Fork 0
forked from Simnation/Main
Main/resources/[creator]/ws_einreise/server/api.lua

97 lines
3.6 KiB
Lua
Raw Permalink Normal View History

2025-06-07 08:51:21 +02:00
API = {
-- (!) Die API funktioniert ausschließlich mit dem Cloud SCP (!)
-- Mehr Informationen unter: https://control-panel.ws/cloud
endpoint = "https://scp.web-control.cloud/api",
-- API Daten im SCP unter: Server > Verwalten > API Zugangsdaten
token = "API_KEY",
project = "PROJECT_UUID"
}
function CreateEntry(src, target, action, notice)
-- check if api key and project uuid are set to default values
if API.token == "API_KEY" or API.project == "PROJECT_UUID" then
-- print("[^4WS^7] >> ^1Error^7 API Key or Project UUID not set!")
return
end
-- GetDiscordId() returns false if not found
-- or the discord id (without discord: prefix)
local discordId = GetDiscordId(src)
if not discordId or discordId == false then -- check if discord id was found
print("Failed to get discord id from " .. GetPlayerName(src) .. " (ID: " .. src .. ")")
return
end
-- Create API Entry
CreateApiEntry(":entry:create", {
admin = {
discord = discordId, -- discord id without discord: prefix
identifiers = GetFormattedIdentifiers(target) -- identifiers of the admin
},
target = {
name = GetPlayerName(target), -- name of the target
identifiers = GetFormattedIdentifiers(target) -- identifiers of the target (identifiers.discord, ...)
},
action = action, -- "whitelist" / "ban" / "kick"
notice = notice -- notice from admin
})
end
function CreateApiEntry(route, data)
-- send post request to api
PerformHttpRequest((API.endpoint .. ":entry:create"), function(err, text, headers)
if err == 200 then -- check if request was successful (http code 200)
local resp = json.decode(text) -- decode json response
if resp then -- check if response is valid
if resp.state == "success" then -- check if response state is success
print("[^4WS^7] >> ^2Success^7 api entry created!")
else
-- print("[^4WS^7] >> ^1Error^7 " .. resp.message[1]) -- print first error message
print("[^4WS^7] >> ^1Errors^7 " .. table.concat(resp.message, ", ")) -- print all error messages
end
else
print("[^4WS^7] >> ^1Error^7 whle creating api entry! Code: " .. err)
end
else
print("[^4WS^7] >> ^1Error^7 while creating api entry! Code: " .. err)
end
end, "POST", json.encode(data), {
["Content-Type"] = "application/json",
["X-AUTH-TOKEN"] = API.token,
["X-PROJECT-UUID"] = API.project
})
end
function GetDiscordId(src)
for _, v in pairs(GetPlayerIdentifiers(src)) do
if string.find(v, "discord:") then
return string.gsub(v, "discord:", "")
end
end
return false
end
function GetFormattedIdentifiers(src)
local identifiers = {}
for k,v in pairs(GetPlayerIdentifiers(src)) do
if string.find(v, "steam:") then
identifiers.steam = v
elseif string.find(v, "license:") then
identifiers.license = v
elseif string.find(v, "xbl:") then
identifiers.xbl = v
elseif string.find(v, "ip:") then
identifiers.ip = v
elseif string.find(v, "discord:") then
identifiers.discord = v
elseif string.find(v, "live:") then
identifiers.live = v
elseif string.find(v, "fivem:") then
identifiers.fivem = v
end
end
return identifiers
end