mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-15 21:03:46 +03:00
190 lines
3.9 KiB
Lua
190 lines
3.9 KiB
Lua
--[[
|
|
| 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) |