mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
190
lua/sam/importers/serverguard/main.lua
Normal file
190
lua/sam/importers/serverguard/main.lua
Normal file
@@ -0,0 +1,190 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
local sam, SQL = sam, sam.SQL
|
||||
|
||||
local von = include("sam/importers/serverguard/sam_von.lua")
|
||||
if not von then
|
||||
return sam.print("Download the importer folder again from gmodstore.")
|
||||
end
|
||||
|
||||
local no_bans_msg = "No bans to import from serverguard."
|
||||
local import_bans = function()
|
||||
SQL.TableExists("serverguard_bans", function(exists)
|
||||
if not exists then
|
||||
return sam.print(no_bans_msg)
|
||||
end
|
||||
|
||||
SQL.Query([[
|
||||
DELETE FROM `sam_bans`
|
||||
]])
|
||||
|
||||
SQL.Query([[
|
||||
INSERT INTO
|
||||
`sam_bans`(
|
||||
`id`,
|
||||
`steamid`,
|
||||
`reason`,
|
||||
`admin`,
|
||||
`unban_date`
|
||||
)
|
||||
SELECT
|
||||
`id`,
|
||||
`steam_id`,
|
||||
`reason`,
|
||||
'Console',
|
||||
`end_time`
|
||||
FROM
|
||||
`serverguard_bans`
|
||||
]], function()
|
||||
sam.print("Imported bans from serverguard.")
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
local no_ranks_msg = "No ranks to import from serverguard."
|
||||
local import_ranks = function()
|
||||
SQL.TableExists("serverguard_ranks", function(exists)
|
||||
if not exists then
|
||||
return sam.print(no_ranks_msg)
|
||||
end
|
||||
|
||||
SQL.Query([[
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
`serverguard_ranks`
|
||||
]], function(serverguard_ranks)
|
||||
for _, v in pairs(serverguard_ranks) do
|
||||
local name = v.unique_id
|
||||
|
||||
if not sam.ranks.is_rank(name) then
|
||||
sam.ranks.add_rank(name, "user", tonumber(v.immunity), tonumber(v.banlimit))
|
||||
end
|
||||
|
||||
local data = sam.isstring(v.data) and util.JSONToTable(v.data)
|
||||
local tools = sam.istable(data) and sam.istable(data.Restrictions) and sam.istable(data.Restrictions.Tools) and data.Restrictions.Tools
|
||||
|
||||
if not tools then continue end
|
||||
|
||||
for tool_name, value in pairs(tools) do
|
||||
if value == false then
|
||||
sam.ranks.take_permission(name, tool_name)
|
||||
else
|
||||
sam.ranks.give_permission(name, tool_name)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
sam.print("Imported ranks from serverguard.")
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
local no_users_msg = "No users to import from serverguard."
|
||||
|
||||
local import_expires = function(data)
|
||||
if data and #data > 0 then
|
||||
local began = false
|
||||
for _, v in ipairs(data) do
|
||||
local ply_data = v.data and von.deserialize(v.data) or {}
|
||||
if not sam.isnumber(tonumber(ply_data.groupExpire)) then continue end
|
||||
|
||||
if not began then
|
||||
began = true
|
||||
SQL.Begin()
|
||||
end
|
||||
|
||||
SQL.FQuery([[
|
||||
UPDATE
|
||||
`sam_players`
|
||||
SET
|
||||
`expiry_date` = {1}
|
||||
WHERE
|
||||
`steamid` = {2}
|
||||
]], {tonumber(ply_data.groupExpire), v.steam_id})
|
||||
end
|
||||
SQL.Commit(function()
|
||||
sam.print("Imported users from serverguard.")
|
||||
end)
|
||||
else
|
||||
sam.print("Imported users from serverguard.")
|
||||
end
|
||||
end
|
||||
|
||||
local import_users = function()
|
||||
SQL.TableExists("serverguard_users", function(exists)
|
||||
if not exists then
|
||||
return sam.print(no_users_msg)
|
||||
end
|
||||
|
||||
SQL.Query([[
|
||||
DELETE FROM `sam_players`
|
||||
]])
|
||||
|
||||
SQL.Query([[
|
||||
INSERT INTO
|
||||
`sam_players`(
|
||||
`id`,
|
||||
`steamid`,
|
||||
`name`,
|
||||
`rank`,
|
||||
`expiry_date`,
|
||||
`first_join`,
|
||||
`last_join`,
|
||||
`play_time`
|
||||
)
|
||||
SELECT
|
||||
`id`,
|
||||
`steam_id`,
|
||||
`name`,
|
||||
`rank`,
|
||||
0,
|
||||
`last_played`,
|
||||
`last_played`,
|
||||
0
|
||||
FROM
|
||||
`serverguard_users`
|
||||
]], function()
|
||||
SQL.Query([[
|
||||
SELECT
|
||||
`steam_id`,
|
||||
`data`
|
||||
FROM
|
||||
`serverguard_users`
|
||||
]], import_expires)
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
if not sam.ranks.ranks_loaded() then
|
||||
return sam.print("Server is connecting to the Database, try again when it connects.")
|
||||
end
|
||||
|
||||
for k, v in ipairs(player.GetAll()) do
|
||||
v:Kick("Importing data.")
|
||||
end
|
||||
|
||||
for k, v in pairs(sam.get_connected_players()) do
|
||||
sam.player.kick_id(k, "Importing data.")
|
||||
end
|
||||
|
||||
hook.Add("CheckPassword", "SAM.ImportingData", function()
|
||||
return false, "Importing data."
|
||||
end)
|
||||
|
||||
sam.print("Starting to import data from serverguard...")
|
||||
timer.Simple(0, function()
|
||||
import_bans()
|
||||
import_ranks()
|
||||
import_users()
|
||||
|
||||
hook.Remove("CheckPassword", "SAM.ImportingData")
|
||||
end)
|
||||
Reference in New Issue
Block a user