Skip to content

Commit 9086320

Browse files
Merge pull request #2 from Aperture-Development/MBSync
Changed the SQL and added functions
2 parents e804a4c + 7515828 commit 9086320

File tree

1 file changed

+173
-27
lines changed

1 file changed

+173
-27
lines changed

lua/msync/server/modules/sv_mbsync.lua

Lines changed: 173 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ MSync = MSync or {}
22
MSync.modules = MSync.modules or {}
33
MSync.modules.MBSync = MSync.modules.MBSync or {}
44
--[[
5-
* @file sv_samplemodule.lua
6-
* @package Sample Module
5+
* @file sv_mbsync.lua
6+
* @package MySQL Ban Sync
77
* @author Aperture Development
88
* @license root_dir/LICENCE
9-
* @version 1.0.0
9+
* @version 0.0.2
1010
]]
1111

1212
--[[
@@ -15,8 +15,8 @@ MSync.modules.MBSync = MSync.modules.MBSync or {}
1515
MSync.modules.MBSync.info = {
1616
Name = "MySQL Ban Sync",
1717
ModuleIdentifier = "MBSync",
18-
Description = "Synchronise band across your servers",
19-
Version = "0.0.1"
18+
Description = "Synchronise bans across your servers",
19+
Version = "0.0.2"
2020
}
2121

2222
--[[
@@ -34,8 +34,8 @@ function MSync.modules.MBSync.init( transaction )
3434
`server_group` INT UNSIGNED NOT NULL,
3535
`ban_lifted` INT UNSIGNED,
3636
FOREIGN KEY (server_group) REFERENCES tbl_server_grp(p_group_id),
37-
FOREIGN KEY (userid) REFERENCES tbl_users(p_user_id),
38-
FOREIGN KEY (adminid) REFERENCES tbl_users(p_user_id)
37+
FOREIGN KEY (user_id) REFERENCES tbl_users(p_user_id),
38+
FOREIGN KEY (admin_id) REFERENCES tbl_users(p_user_id)
3939
);
4040
]] ))
4141

@@ -51,8 +51,7 @@ function MSync.modules.MBSync.init( transaction )
5151
(SELECT p_user_id FROM tbl_users WHERE steamid=? AND steamid64=?),
5252
?, ?, ?,
5353
(SELECT p_group_id FROM tbl_server_grp WHERE group_name=?)
54-
)
55-
ON DUPLICATE KEY UPDATE reason=VALUES(reason) AND lenght_unix=VALUES(lenght_unix) AND server_group=VALUES(server_group);
54+
);
5655
]] )
5756
banUserQ:setString(1, ply:SteamID())
5857
banUserQ:setString(2, ply:SteamID64())
@@ -70,6 +69,65 @@ function MSync.modules.MBSync.init( transaction )
7069
banUserQ:start()
7170
end
7271

72+
--[[
73+
Description: Function to ban a userid
74+
Returns: nothing
75+
]]
76+
function MSync.modules.MBSync.banUserID(userid, calling_ply, length, reason, allserver)
77+
local banUserIdQ = MSync.DBServer:prepare( [[
78+
INSERT INTO `tbl_mbsync` (user_id, admin_id, reason, date_unix, lenght_unix, server_group)
79+
VALUES (
80+
(SELECT p_user_id FROM tbl_users WHERE steamid=? OR steamid64=? OR p_user_id=?),
81+
(SELECT p_user_id FROM tbl_users WHERE steamid=? AND steamid64=?),
82+
?, ?, ?,
83+
(SELECT p_group_id FROM tbl_server_grp WHERE group_name=?)
84+
);
85+
]] )
86+
banUserIdQ:setString(1, userid)
87+
banUserIdQ:setString(2, userid)
88+
banUserIdQ:setString(3, userid)
89+
banUserIdQ:setString(4, calling_ply:SteamID())
90+
banUserIdQ:setString(5, calling_ply:SteamID64())
91+
banUserIdQ:setString(6, reason)
92+
banUserIdQ:setNumber(7, os.time())
93+
banUserIdQ:setNumber(8, lenght)
94+
if not allserver then
95+
banUserIdQ:setString(9, MSync.settings.data.serverGroup)
96+
else
97+
banUserIdQ:setString(9, "allservers")
98+
end
99+
100+
banUserIdQ:start()
101+
end
102+
103+
--[[
104+
Description: Function to edit a ban
105+
Returns: nothing
106+
]]
107+
function MSync.modules.MBSync.editBan(banId, reason, lenght, calling_ply, allserver)
108+
local editBanQ = MSync.DBServer:prepare( [[
109+
UPDATE `tbl_mbsync`
110+
SET
111+
reason=?,
112+
lenght_unix=?,
113+
adminid=(SELECT p_user_id FROM tbl_users WHERE steamid=? AND steamid64=?),
114+
server_group=(SELECT p_group_id FROM tbl_server_grp WHERE group_name=?)
115+
WHERE p_ID=?
116+
]] )
117+
editBanQ:setString(1, reason)
118+
editBanQ:setString(2, lenght)
119+
editBanQ:setString(3, calling_ply:SteamID())
120+
editBanQ:setString(4, calling_ply:SteamID64())
121+
if not allserver then
122+
editBanQ:setString(5, MSync.settings.data.serverGroup)
123+
else
124+
editBanQ:setString(5, "allservers")
125+
end
126+
editBanQ:setString(6, banId)
127+
128+
editBanQ:start()
129+
end
130+
73131
--[[
74132
Description: Function to unban a banId
75133
Returns: nothing
@@ -104,11 +162,7 @@ function MSync.modules.MBSync.init( transaction )
104162
unBanUserQ:setString(2, calling_ply:SteamID64())
105163
unBanUserQ:setString(3, ply:SteamID())
106164
unBanUserQ:setString(4, ply:SteamID64())
107-
if not allserver then
108-
banUserQ:setString(5, MSync.settings.data.serverGroup)
109-
else
110-
banUserQ:setString(5, "allservers")
111-
end
165+
unBanUserQ:setString(5, MSync.settings.data.serverGroup)
112166

113167
unBanUserQ:start()
114168
end
@@ -119,24 +173,116 @@ function MSync.modules.MBSync.init( transaction )
119173
]]
120174
function MSync.modules.MBSync.getBans(ply)
121175
local getBansQ = MSync.DBServer:prepare( [[
122-
SELECT * FROM `tbl_mbsync`;
176+
SELECT
177+
tbl_mbsync.p_id,
178+
tbl_mbsync.reason,
179+
tbl_mbsync.date_unix,
180+
tbl_mbsync.lenght_unix,
181+
banned.steamid AS 'banned.steamid',
182+
banned.steamid64 AS 'banned.steamid64',
183+
banned.nickname AS 'banned.nickname',
184+
admin.steamid AS 'admin.steamid',
185+
admin.steamid64 AS 'admin.steamid64',
186+
admin.nickname AS 'admin.nickname',
187+
unban_admin.steamid AS 'unban_admin.steamid',
188+
unban_admin.steamid64 AS 'unban_admin.steamid64',
189+
unban_admin.nickname AS 'unban_admin.nickname',
190+
tbl_server_grp.group_name
191+
FROM `tbl_mbsync`
192+
LEFT JOIN tbl_server_grp
193+
ON tbl_mbsync.server_group = tbl_server_grp.p_group_id
194+
LEFT JOIN tbl_users AS banned
195+
ON tbl_mbsync.userid = banned.p_user_id
196+
LEFT JOIN tbl_users AS admin
197+
ON tbl_mbsync.adminid = admin.p_user_id
198+
LEFT JOIN tbl_users AS unban_admin
199+
ON tbl_mbsync.ban_lifted = unban_admin.p_user_id
200+
;
123201
]] )
124-
getBansQ:setString(1, ply:SteamID())
125-
unBanUserQ:setString(2, ply:SteamID64())
126-
unBanUserQ:setString(3, calling_ply:SteamID())
127-
unBanUserQ:setString(4, calling_ply:SteamID64())
128-
unBanUserQ:setString(5, reason)
129-
unBanUserQ:setNumber(6, os.time())
130-
unBanUserQ:setNumber(7, lenght)
131-
if not allserver then
132-
unBanUserQ:setString(8, MSync.settings.data.serverGroup)
133-
else
134-
unBanUserQ:setString(8, "allservers")
135202
end
136-
203+
--[[
204+
Ban Table Lua structure:
205+
bans = {
206+
[tbl_mbsync.p_id] = {
207+
reason = tbl_mbsync.reason
208+
banDate = tbl_mbsync.date_unix
209+
banLenght = tbl_mbsync.lenght_unix
210+
bannedUser = {
211+
steamid = banned.steamid
212+
steamid64 = banned.steamid64
213+
nickname = banned.nickname
214+
}
215+
banningAdmin = {
216+
steamid = admin.steamid
217+
steamid64 = admin.steamid64
218+
nickname = admin.nickname
219+
}
220+
unBanningAdmin = {
221+
steamid = unban_admin.steamid
222+
steamid64 = unban_admin.steamid64
223+
nickname = unban_admin.nickname
224+
}
225+
}
226+
}
227+
]]
137228
banunBanUserQUserQ:start()
138229
end
139230

231+
--[[
232+
Description: Function to get all active bans
233+
Returns: nothing
234+
]]
235+
function MSync.modules.MBSync.getActiveBans()
236+
local getActiveBansQ = MSync.DBServer:prepare( [[
237+
SELECT
238+
tbl_mbsync.*,
239+
banned.steamid,
240+
banned.steamid64,
241+
banned.nickname,
242+
admin.nickname
243+
FROM `tbl_mbsync`
244+
LEFT JOIN tbl_users AS banned
245+
ON tbl_mbsync.userid = banned.p_group_id
246+
LEFT JOIN tbl_users AS admin
247+
ON tbl_mbsync.adminid = admin.p_group_id
248+
WHERE
249+
ban_lifted IS NULL AND
250+
(
251+
(date_unix+lenght_unix)>? OR
252+
lenght_unix=0
253+
) AND
254+
(
255+
server_group=(SELECT p_group_id FROM tbl_server_grp WHERE group_name=?) OR
256+
server_group=(SELECT p_group_id FROM tbl_server_grp WHERE group_name='allservers')
257+
)
258+
]] )
259+
getActiveBansQ:setNumber(1, os.time())
260+
getActiveBansQ:setString(8, MSync.settings.data.serverGroup)
261+
--[[
262+
Ban Table Lua structure:
263+
activeBans = {
264+
[banned.steamid64] = {
265+
banId = tbl_mbsync.p_id
266+
reason = tbl_mbsync.reason
267+
timestamp = tbl_mbsync.date_unix
268+
length = tbl_mbsync.lenght_unix
269+
banned = {
270+
steamid = banned.steamid
271+
Nickname = banned.nickname
272+
}
273+
adminNickname = admin.nickname
274+
}
275+
}
276+
]]
277+
function getActiveBansQ.onData( q, data )
278+
if data.rank == ply:GetUserGroup() then return end;
279+
280+
ply:SetUserGroup(data[1].rank)
281+
end
282+
283+
getActiveBansQ:start()
284+
end
285+
140286
end
141287

142288
--[[

0 commit comments

Comments
 (0)