@@ -2,11 +2,11 @@ MSync = MSync or {}
22MSync .modules = MSync .modules or {}
33MSync .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 {}
1515MSync .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+
140286end
141287
142288--[[
0 commit comments