mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
213
lua/sam/importers/xadmin/main.lua
Normal file
213
lua/sam/importers/xadmin/main.lua
Normal file
@@ -0,0 +1,213 @@
|
||||
--[[
|
||||
| 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/
|
||||
--]]
|
||||
|
||||
--
|
||||
-- CONFIG
|
||||
--
|
||||
|
||||
local UsersTableName = "xadminusers"
|
||||
local GroupsTableName = "xadmingroups"
|
||||
|
||||
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
local sam, SQL = sam, sam.SQL
|
||||
|
||||
local no_bans_msg = "No bans to import from xadmin."
|
||||
local import_bans = function()
|
||||
SQL.TableExists("xadminbans", function(exists)
|
||||
if not exists then
|
||||
return sam.print(no_bans_msg)
|
||||
end
|
||||
|
||||
SQL.Query([[
|
||||
SELECT
|
||||
`SteamID`,
|
||||
`Admin`,
|
||||
`Reason`,
|
||||
`EndTime`
|
||||
FROM
|
||||
`xadminbans`
|
||||
]], function(xadmin_bans)
|
||||
SQL.Begin()
|
||||
|
||||
SQL.Query([[
|
||||
DELETE FROM `sam_bans`
|
||||
]])
|
||||
|
||||
local args, steamid, admin = {}, nil, nil
|
||||
for _, v in ipairs(xadmin_bans) do
|
||||
steamid, admin = util.SteamIDFrom64(v.SteamID), v.Admin
|
||||
|
||||
if admin == "CONSOLE" then
|
||||
admin = "Console"
|
||||
else
|
||||
admin = util.SteamIDFrom64(admin)
|
||||
end
|
||||
|
||||
args[1] = steamid
|
||||
args[2] = v.Reason
|
||||
args[3] = admin
|
||||
args[4] = v.EndTime
|
||||
|
||||
SQL.FQuery([[
|
||||
INSERT INTO
|
||||
`sam_bans`(
|
||||
`steamid`,
|
||||
`reason`,
|
||||
`admin`,
|
||||
`unban_date`
|
||||
)
|
||||
VALUES
|
||||
({1}, {2}, {3}, {4})
|
||||
]], args)
|
||||
end
|
||||
|
||||
SQL.Commit(function()
|
||||
sam.print("Imported bans from xadmin.")
|
||||
end)
|
||||
end)
|
||||
end):wait()
|
||||
end
|
||||
|
||||
local get_rank = function(rank)
|
||||
if rank == "Super Admin" then
|
||||
return "superadmin"
|
||||
elseif rank == "Admin" then
|
||||
return "admin"
|
||||
elseif rank == "Moderator" then
|
||||
return "moderator"
|
||||
elseif rank == "User" then
|
||||
return "user"
|
||||
end
|
||||
return rank
|
||||
end
|
||||
|
||||
local no_ranks_msg = "No ranks to import from xadmin."
|
||||
local import_ranks = function()
|
||||
SQL.TableExists(GroupsTableName, function(exists)
|
||||
if not exists then
|
||||
return sam.print(no_ranks_msg)
|
||||
end
|
||||
|
||||
SQL.Query(([[
|
||||
SELECT
|
||||
`Name`,
|
||||
`Power`
|
||||
FROM
|
||||
`%s`
|
||||
]]):format(GroupsTableName), function(xadmin_ranks)
|
||||
for _, v in ipairs(xadmin_ranks) do
|
||||
local name = get_rank(v.Name)
|
||||
|
||||
if not sam.ranks.is_rank(name) then
|
||||
sam.ranks.add_rank(name, "user", tonumber(v.Power), 20160)
|
||||
end
|
||||
end
|
||||
|
||||
sam.print("Imported ranks from xadmin.")
|
||||
end):wait()
|
||||
end):wait()
|
||||
end
|
||||
|
||||
local no_users_msg = "No users to import from xadmin."
|
||||
local import_users = function()
|
||||
SQL.TableExists(UsersTableName, function(exists)
|
||||
if not exists then
|
||||
return sam.print(no_users_msg)
|
||||
end
|
||||
|
||||
SQL.Query(([[
|
||||
SELECT
|
||||
`%s`.`SteamID`,
|
||||
`%s`.`AccessLevel`,
|
||||
IFNULL(SUM(`time`), 0) `total`
|
||||
FROM
|
||||
`%s`
|
||||
|
||||
LEFT OUTER JOIN `xadmintimetracking` `times`
|
||||
on `%s`.`SteamID` = `times`.`SteamID`
|
||||
|
||||
GROUP BY
|
||||
`%s`.`SteamID`
|
||||
]]):format(UsersTableName, UsersTableName, UsersTableName, UsersTableName, UsersTableName), function(xadmin_players)
|
||||
SQL.Begin()
|
||||
|
||||
SQL.Query([[
|
||||
DELETE FROM `sam_players`
|
||||
]])
|
||||
|
||||
local args = {}
|
||||
args[2] = ""
|
||||
args[4] = 0
|
||||
args[5] = os.time()
|
||||
args[6] = os.time()
|
||||
|
||||
for k, v in ipairs(xadmin_players) do
|
||||
args[1] = v.SteamID
|
||||
|
||||
local rank = get_rank(v.AccessLevel)
|
||||
if not sam.ranks.is_rank(rank) then
|
||||
rank = "user"
|
||||
end
|
||||
|
||||
args[3] = rank
|
||||
args[7] = v.total
|
||||
|
||||
SQL.FQuery([[
|
||||
INSERT INTO
|
||||
`sam_players`(
|
||||
`steamid`,
|
||||
`name`,
|
||||
`rank`,
|
||||
`expiry_date`,
|
||||
`first_join`,
|
||||
`last_join`,
|
||||
`play_time`
|
||||
)
|
||||
VALUES
|
||||
({1}, {2}, {3}, {4}, {5}, {6}, {7})
|
||||
]], args)
|
||||
end
|
||||
|
||||
SQL.Commit(function()
|
||||
sam.print("Imported users from xadmin.")
|
||||
end)
|
||||
end):wait()
|
||||
end):wait()
|
||||
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 xadmin...")
|
||||
timer.Simple(0, function()
|
||||
import_bans()
|
||||
import_ranks()
|
||||
import_users()
|
||||
|
||||
hook.Remove("CheckPassword", "SAM.ImportingData")
|
||||
end)
|
||||
Reference in New Issue
Block a user