Skip to content

Commit 4711160

Browse files
authored
admin2: add "hide sensitive data" (#325)
* add hide sensitive data to players tab * block/unblock some tabs when 'hide sensitive data' is active * ignore chat message when 'hide sensitive data' is active * add mask to server password
1 parent e05bc13 commit 4711160

File tree

4 files changed

+46
-12
lines changed

4 files changed

+46
-12
lines changed

[admin]/admin2/client/main/admin.lua

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,11 @@ aAdminMain = {
1414
Tab = nil,
1515
Widgets = {},
1616
Refresh = 0,
17-
Hidden = false
17+
Hidden = false,
18+
BlockedTabsBySensitiveData = {
19+
['bans'] = true,
20+
['adminchat'] = true,
21+
}
1822
}
1923

2024
addEvent(EVENT_SYNC, true)
@@ -57,6 +61,14 @@ function aAdminMain.Open()
5761
addEventHandler("onAdminInitialize", aAdminMain.Form, aAdminMain.Initialize)
5862

5963
triggerEvent("onAdminInitialize", aAdminMain.Form)
64+
65+
local state = aGetSetting('hideSensitiveData') or false
66+
67+
for k, v in ipairs(aAdminMain.Tabs) do
68+
if aAdminMain.BlockedTabsBySensitiveData[v.Acl] then
69+
guiSetEnabled(v.Tab, not state)
70+
end
71+
end
6072
end
6173
guiSetAlpha(aAdminMain.Form, 0)
6274
guiBlendElement(aAdminMain.Form, 0.8)
@@ -108,7 +120,7 @@ end
108120
function aAdminMain.AddTab(name, class, acl)
109121
assert(class)
110122
local tab = guiCreateTab(name, aAdminMain.Panel, acl)
111-
table.insert(aAdminMain.Tabs, {Tab = tab, Class = class, Loaded = false})
123+
table.insert(aAdminMain.Tabs, {Tab = tab, Class = class, Loaded = false, Acl = acl})
112124
end
113125

114126
function aAdminMain.GetTab(tab)

[admin]/admin2/client/main/admin_chat.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ function aChatTab.onClientAdminChat(message)
126126
local chat = guiGetText(aChatTab.AdminChat)
127127
guiSetText(aChatTab.AdminChat, (chat ~= "\n" and chat or "") .. getPlayerName(source) .. ": " .. message)
128128
guiSetProperty(aChatTab.AdminChat, "CaratIndex", tostring(string.len(chat)))
129-
if (aGetSetting("adminChatOutput")) then
129+
if (aGetSetting("adminChatOutput")) and (not guiCheckBoxGetSelected(aPlayersTab.SensitiveData)) then
130130
outputChatBox("ADMIN> " .. getPlayerName(source) .. ": " .. message, 255, 0, 0)
131131
end
132132
if ((aGetSetting("adminChatSound")) and (source ~= getLocalPlayer())) then

[admin]/admin2/client/main/admin_players.lua

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ function aPlayersTab.Create(tab)
2323
guiGridListAddColumn(aPlayersTab.PlayerList, "Player list", 0.85)
2424
aPlayersTab.Context = guiCreateContextMenu(aPlayersTab.PlayerList)
2525
aPlayersTab.ContextKick = guiContextMenuAddItem(aPlayersTab.Context, "Kick")
26-
aPlayersTab.ColorCodes = guiCreateCheckBox(0.01, 0.95, 0.25, 0.04, "Hide color codes", true, true, tab)
26+
aPlayersTab.ColorCodes = guiCreateCheckBox(0.01, 0.95, 0.25, 0.04, "Hide color codes", aGetSetting('hideColorCodes') or false, true, tab)
27+
aPlayersTab.SensitiveData = guiCreateCheckBox(0.2, 0.95, 0.25, 0.04, "Hide Sensitive Data", aGetSetting('hideSensitiveData') or false, true, tab)
2728

2829
-- Player info (middle pane)
2930
guiCreateHeader(0.27, 0.04, 0.20, 0.04, "Player:", true, tab)
@@ -271,6 +272,19 @@ function aPlayersTab.onClientClick(button)
271272
setElementData(localPlayer, "AnonAdmin", guiCheckBoxGetSelected(aPlayersTab.AnonAdmin))
272273
elseif (source == aPlayersTab.ColorCodes) then
273274
aPlayersTab.Refresh()
275+
aSetSetting('hideColorCodes', guiCheckBoxGetSelected(source))
276+
elseif (source == aPlayersTab.SensitiveData) then
277+
local state = guiCheckBoxGetSelected(source)
278+
aSetSetting('hideSensitiveData', state)
279+
for k, v in ipairs(aAdminMain.Tabs) do
280+
if aAdminMain.BlockedTabsBySensitiveData[v.Acl] then
281+
guiSetEnabled(v.Tab, not state)
282+
end
283+
end
284+
if isElement(aServerTab.Password) then
285+
guiSetText(aServerTab.Password, "Password: " .. getSensitiveText(aServerTab['currentPassword'] or "None"))
286+
end
287+
274288
elseif (source == aPlayersTab.PlayerList) then
275289
local player = getSelectedPlayer()
276290
if (player) then
@@ -442,10 +456,10 @@ function aPlayersTab.onRefresh()
442456
end
443457

444458
sync(SYNC_PLAYER, player)
445-
guiSetText(aPlayersTab.IP, "IP: " .. aPlayers[player].ip)
446-
guiSetText(aPlayersTab.Serial, "Serial: " .. (aPlayers[player].serial or "Unknown"))
459+
guiSetText(aPlayersTab.IP, "IP: " .. getSensitiveText(aPlayers[player].ip))
460+
guiSetText(aPlayersTab.Serial, "Serial: " .. getSensitiveText((aPlayers[player].serial or "Unknown")))
447461
guiSetText(aPlayersTab.Country, "Country: " .. (aPlayers[player].countryname or "Unknown"))
448-
guiSetText(aPlayersTab.Account, "Account: " .. (aPlayers[player]["account"] or "guest"))
462+
guiSetText(aPlayersTab.Account, "Account: " .. getSensitiveText((aPlayers[player]["account"] or "guest")))
449463
guiSetText(aPlayersTab.Groups, "Groups: " .. (aPlayers[player]["groups"] or "None"))
450464
if (aPlayers[player].country and string.lower(tostring(aPlayers[player].country)) ~= "zz") then
451465
local x, y = guiGetPosition(aPlayersTab.Country, false)
@@ -500,10 +514,10 @@ function aPlayersTab.onRefresh()
500514
local x, y, z = getElementPosition(player)
501515
local area = getZoneName(x, y, z, false)
502516
local zone = getZoneName(x, y, z, true)
503-
guiSetText(aPlayersTab.Area, "Area: " .. iif(area == zone, area, area .. " (" .. zone .. ")"))
504-
guiSetText(aPlayersTab.PositionX, "X: " .. x)
505-
guiSetText(aPlayersTab.PositionY, "Y: " .. y)
506-
guiSetText(aPlayersTab.PositionZ, "Z: " .. z)
517+
guiSetText(aPlayersTab.Area, "Area: " .. getSensitiveText(iif(area == zone, area, area .. " (" .. zone .. ")")))
518+
guiSetText(aPlayersTab.PositionX, "X: " .. getSensitiveText(x))
519+
guiSetText(aPlayersTab.PositionY, "Y: " .. getSensitiveText(y))
520+
guiSetText(aPlayersTab.PositionZ, "Z: " .. getSensitiveText(z))
507521

508522
local vehicle = getPedOccupiedVehicle(player)
509523
if (vehicle) then
@@ -553,3 +567,10 @@ function getSelectedPlayer()
553567
end
554568
return nil
555569
end
570+
571+
function getSensitiveText(text)
572+
if guiCheckBoxGetSelected(aPlayersTab.SensitiveData) then
573+
return ('*'):rep(utf8.len(text))
574+
end
575+
return text
576+
end

[admin]/admin2/client/main/admin_server.lua

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,9 +418,10 @@ function aServerTab.onClientSync(type, table)
418418
if (type == SYNC_SERVER) then
419419
guiSetText(aServerTab.Server, "Server: " .. table["name"])
420420
guiSetText(aServerTab.Players, "Players: " .. #getElementsByType("player") .. "/" .. table["players"])
421-
guiSetText(aServerTab.Password, "Password: " .. (table["password"] or "None"))
421+
guiSetText(aServerTab.Password, "Password: " .. getSensitiveText(table["password"] or "None"))
422422
guiSetText(aServerTab.GameType, "Game Type: " .. (table["game"] or "None"))
423423
guiSetText(aServerTab.MapName, "Map Name: " .. (table["map"] or "None"))
424+
aServerTab['currentPassword'] = table['password'] or nil
424425
end
425426
end
426427

0 commit comments

Comments
 (0)