summaryrefslogtreecommitdiffstats
path: root/MCServer/Plugins/Core/web_whitelist.lua
blob: 2c9ddb953970421035fd88d14aade83c7f8a5deb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
local function HTMLDeleteButton( name )
	return "<form method=\"POST\"><input type=\"hidden\" name=\"whitelist-delete\" value=\"".. name .."\"><input type=\"submit\" value=\"Remove from whitelist\"></form>"
end

function HandleRequest_WhiteList( Request )
	local UpdateMessage = ""
	if( Request.PostParams["whitelist-add"] ~= nil ) then
		local PlayerName = Request.PostParams["whitelist-add"]
		
		if( WhiteListIni:GetValueB("WhiteList", PlayerName, false) == true ) then
			UpdateMessage = "<b>".. PlayerName.."</b> is already on the whitelist"
		else
			WhiteListIni:SetValueB("WhiteList", PlayerName, true )
			UpdateMessage = "Added <b>" .. PlayerName .. "</b> to whitelist."
			WhiteListIni:WriteFile()
		end
	elseif( Request.PostParams["whitelist-delete"] ~= nil ) then
		local PlayerName = Request.PostParams["whitelist-delete"]
		WhiteListIni:DeleteValue( "WhiteList", PlayerName )
		UpdateMessage = "Removed <b>" .. PlayerName .. "</b> from whitelist."
		WhiteListIni:WriteFile()
	elseif( Request.PostParams["whitelist-reload"] ~= nil ) then
		WhiteListIni:Erase() -- Empty entire loaded ini first, otherwise weird shit goes down
		WhiteListIni:ReadFile()
		UpdateMessage = "Loaded from disk"
	elseif( Request.Params["whitelist-setenable"] ~= nil ) then
		local Enabled = Request.Params["whitelist-setenable"]
		local CreateNewValue = false
		if( WhiteListIni:FindValue( WhiteListIni:FindKey("WhiteListSettings"), "WhiteListOn" ) == cIniFile.noID ) then -- Find out whether the value is in the ini
			CreateNewValue = true
		end
		
		if( Enabled == "1" ) then
			WhiteListIni:SetValueB("WhiteListSettings", "WhiteListOn", true, CreateNewValue )
		else
			WhiteListIni:SetValueB("WhiteListSettings", "WhiteListOn", false, CreateNewValue )
		end
		WhiteListIni:WriteFile()
	end
	
	
	local Content = ""
	
	local WhiteListEnabled = WhiteListIni:GetValueB("WhiteListSettings", "WhiteListOn", false)
	if( WhiteListEnabled == false ) then
		Content = Content .. "<p>Whitelist is currently disabled! Click <a href='?whitelist-setenable=1'>here</a> to enable.</p>"
	end
	
	
	Content = Content .. "<h4>Whitelisted players</h4>"
	Content = Content .. "<table>"
	local KeyNum = WhiteListIni:FindKey("WhiteList")
	local NumValues = WhiteListIni:GetNumValues(KeyNum)
	if( NumValues > 0 ) then
		for Num = 0, NumValues-1 do
			if( WhiteListIni:GetValue(KeyNum, Num, "0") == "1" ) then
				local PlayerName = WhiteListIni:GetValueName(KeyNum, Num )
				Content = Content .. "<tr><td>" .. PlayerName .. "</td><td>" .. HTMLDeleteButton( PlayerName ) .. "</td></tr>"
			end
		end
	else
		Content = Content .. "<tr><td>None</td></tr>"
	end
	Content = Content .. "</table>"
	Content = Content .. "<br><h4>Add player to whitelist</h4>"
	Content = Content .. "<form method=\"POST\">"
	Content = Content .. "<input type=\"text\" name=\"whitelist-add\"><input type=\"submit\" value=\"Add player\">"
	Content = Content .. "</form>"
	Content = Content .. "<form method=\"POST\">"
	Content = Content .. "<input type=\"submit\" name=\"whitelist-reload\" value=\"Reload from disk\">"
	Content = Content .. "</form>"
	Content = Content .. "<br>"..UpdateMessage
	
	if( WhiteListEnabled == true ) then
		Content = Content .. "<br><br><p>Whitelist is currently enabled, click <a href='?whitelist-setenable=0'>here</a> to disable.</p>"
	end
	
	return Content
end