diff --git a/[admin]/admin2/client/main/admin.lua b/[admin]/admin2/client/main/admin.lua index de610ec10..a26d9365a 100644 --- a/[admin]/admin2/client/main/admin.lua +++ b/[admin]/admin2/client/main/admin.lua @@ -14,7 +14,11 @@ aAdminMain = { Tab = nil, Widgets = {}, Refresh = 0, - Hidden = false + Hidden = false, + BlockedTabsBySensitiveData = { + ['bans'] = true, + ['adminchat'] = true, + } } addEvent(EVENT_SYNC, true) @@ -57,6 +61,14 @@ function aAdminMain.Open() addEventHandler("onAdminInitialize", aAdminMain.Form, aAdminMain.Initialize) triggerEvent("onAdminInitialize", aAdminMain.Form) + + local state = aGetSetting('hideSensitiveData') or false + + for k, v in ipairs(aAdminMain.Tabs) do + if aAdminMain.BlockedTabsBySensitiveData[v.Acl] then + guiSetEnabled(v.Tab, not state) + end + end end guiSetAlpha(aAdminMain.Form, 0) guiBlendElement(aAdminMain.Form, 0.8) @@ -108,7 +120,7 @@ end function aAdminMain.AddTab(name, class, acl) assert(class) local tab = guiCreateTab(name, aAdminMain.Panel, acl) - table.insert(aAdminMain.Tabs, {Tab = tab, Class = class, Loaded = false}) + table.insert(aAdminMain.Tabs, {Tab = tab, Class = class, Loaded = false, Acl = acl}) end function aAdminMain.GetTab(tab) diff --git a/[admin]/admin2/client/main/admin_chat.lua b/[admin]/admin2/client/main/admin_chat.lua index 2549cd415..edf399616 100644 --- a/[admin]/admin2/client/main/admin_chat.lua +++ b/[admin]/admin2/client/main/admin_chat.lua @@ -126,7 +126,7 @@ function aChatTab.onClientAdminChat(message) local chat = guiGetText(aChatTab.AdminChat) guiSetText(aChatTab.AdminChat, (chat ~= "\n" and chat or "") .. getPlayerName(source) .. ": " .. message) guiSetProperty(aChatTab.AdminChat, "CaratIndex", tostring(string.len(chat))) - if (aGetSetting("adminChatOutput")) then + if (aGetSetting("adminChatOutput")) and (not guiCheckBoxGetSelected(aPlayersTab.SensitiveData)) then outputChatBox("ADMIN> " .. getPlayerName(source) .. ": " .. message, 255, 0, 0) end if ((aGetSetting("adminChatSound")) and (source ~= getLocalPlayer())) then diff --git a/[admin]/admin2/client/main/admin_players.lua b/[admin]/admin2/client/main/admin_players.lua index fafda7752..17b572b5b 100644 --- a/[admin]/admin2/client/main/admin_players.lua +++ b/[admin]/admin2/client/main/admin_players.lua @@ -23,7 +23,8 @@ function aPlayersTab.Create(tab) guiGridListAddColumn(aPlayersTab.PlayerList, "Player list", 0.85) aPlayersTab.Context = guiCreateContextMenu(aPlayersTab.PlayerList) aPlayersTab.ContextKick = guiContextMenuAddItem(aPlayersTab.Context, "Kick") - aPlayersTab.ColorCodes = guiCreateCheckBox(0.01, 0.95, 0.25, 0.04, "Hide color codes", true, true, tab) + aPlayersTab.ColorCodes = guiCreateCheckBox(0.01, 0.95, 0.25, 0.04, "Hide color codes", aGetSetting('hideColorCodes') or false, true, tab) + aPlayersTab.SensitiveData = guiCreateCheckBox(0.2, 0.95, 0.25, 0.04, "Hide Sensitive Data", aGetSetting('hideSensitiveData') or false, true, tab) -- Player info (middle pane) guiCreateHeader(0.27, 0.04, 0.20, 0.04, "Player:", true, tab) @@ -271,6 +272,19 @@ function aPlayersTab.onClientClick(button) setElementData(localPlayer, "AnonAdmin", guiCheckBoxGetSelected(aPlayersTab.AnonAdmin)) elseif (source == aPlayersTab.ColorCodes) then aPlayersTab.Refresh() + aSetSetting('hideColorCodes', guiCheckBoxGetSelected(source)) + elseif (source == aPlayersTab.SensitiveData) then + local state = guiCheckBoxGetSelected(source) + aSetSetting('hideSensitiveData', state) + for k, v in ipairs(aAdminMain.Tabs) do + if aAdminMain.BlockedTabsBySensitiveData[v.Acl] then + guiSetEnabled(v.Tab, not state) + end + end + if isElement(aServerTab.Password) then + guiSetText(aServerTab.Password, "Password: " .. getSensitiveText(aServerTab['currentPassword'] or "None")) + end + elseif (source == aPlayersTab.PlayerList) then local player = getSelectedPlayer() if (player) then @@ -442,10 +456,10 @@ function aPlayersTab.onRefresh() end sync(SYNC_PLAYER, player) - guiSetText(aPlayersTab.IP, "IP: " .. aPlayers[player].ip) - guiSetText(aPlayersTab.Serial, "Serial: " .. (aPlayers[player].serial or "Unknown")) + guiSetText(aPlayersTab.IP, "IP: " .. getSensitiveText(aPlayers[player].ip)) + guiSetText(aPlayersTab.Serial, "Serial: " .. getSensitiveText((aPlayers[player].serial or "Unknown"))) guiSetText(aPlayersTab.Country, "Country: " .. (aPlayers[player].countryname or "Unknown")) - guiSetText(aPlayersTab.Account, "Account: " .. (aPlayers[player]["account"] or "guest")) + guiSetText(aPlayersTab.Account, "Account: " .. getSensitiveText((aPlayers[player]["account"] or "guest"))) guiSetText(aPlayersTab.Groups, "Groups: " .. (aPlayers[player]["groups"] or "None")) if (aPlayers[player].country and string.lower(tostring(aPlayers[player].country)) ~= "zz") then local x, y = guiGetPosition(aPlayersTab.Country, false) @@ -500,10 +514,10 @@ function aPlayersTab.onRefresh() local x, y, z = getElementPosition(player) local area = getZoneName(x, y, z, false) local zone = getZoneName(x, y, z, true) - guiSetText(aPlayersTab.Area, "Area: " .. iif(area == zone, area, area .. " (" .. zone .. ")")) - guiSetText(aPlayersTab.PositionX, "X: " .. x) - guiSetText(aPlayersTab.PositionY, "Y: " .. y) - guiSetText(aPlayersTab.PositionZ, "Z: " .. z) + guiSetText(aPlayersTab.Area, "Area: " .. getSensitiveText(iif(area == zone, area, area .. " (" .. zone .. ")"))) + guiSetText(aPlayersTab.PositionX, "X: " .. getSensitiveText(x)) + guiSetText(aPlayersTab.PositionY, "Y: " .. getSensitiveText(y)) + guiSetText(aPlayersTab.PositionZ, "Z: " .. getSensitiveText(z)) local vehicle = getPedOccupiedVehicle(player) if (vehicle) then @@ -553,3 +567,10 @@ function getSelectedPlayer() end return nil end + +function getSensitiveText(text) + if guiCheckBoxGetSelected(aPlayersTab.SensitiveData) then + return ('*'):rep(utf8.len(text)) + end + return text +end diff --git a/[admin]/admin2/client/main/admin_server.lua b/[admin]/admin2/client/main/admin_server.lua index 91ef19a64..b71359c53 100644 --- a/[admin]/admin2/client/main/admin_server.lua +++ b/[admin]/admin2/client/main/admin_server.lua @@ -418,9 +418,10 @@ function aServerTab.onClientSync(type, table) if (type == SYNC_SERVER) then guiSetText(aServerTab.Server, "Server: " .. table["name"]) guiSetText(aServerTab.Players, "Players: " .. #getElementsByType("player") .. "/" .. table["players"]) - guiSetText(aServerTab.Password, "Password: " .. (table["password"] or "None")) + guiSetText(aServerTab.Password, "Password: " .. getSensitiveText(table["password"] or "None")) guiSetText(aServerTab.GameType, "Game Type: " .. (table["game"] or "None")) guiSetText(aServerTab.MapName, "Map Name: " .. (table["map"] or "None")) + aServerTab['currentPassword'] = table['password'] or nil end end