Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var/CMinutes = null
- var/savefile/Banlist
- /proc/CheckBan(var/ckey, var/id, var/address)
- if(!Banlist) // if Banlist cannot be located for some reason
- LoadBans() // try to load the bans
- if(!Banlist) // uh oh, can't find bans!
- return 0 // ABORT ABORT ABORT
- . = list()
- var/appeal
- if(config && config.banappeals)
- appeal = "\nFor more information on your ban, or to appeal, head to <a href='[config.banappeals]'>[config.banappeals]</a>"
- Banlist.cd = "/base"
- if( "[ckey][id]" in Banlist.dir )
- Banlist.cd = "[ckey][id]"
- if (Banlist["temp"])
- if (!GetExp(Banlist["minutes"]))
- ClearTempbans()
- return 0
- else
- .["desc"] = "\nReason: [Banlist["reason"]]\nExpires: [GetExp(Banlist["minutes"])]\nBy: [Banlist["bannedby"]][appeal]"
- else
- Banlist.cd = "/base/[ckey][id]"
- .["desc"] = "\nReason: [Banlist["reason"]]\nExpires: <B>PERMENANT</B>\nBy: [Banlist["bannedby"]][appeal]"
- .["reason"] = "ckey/id"
- return .
- else
- for (var/A in Banlist.dir)
- Banlist.cd = "/base/[A]"
- var/matches
- if( ckey == Banlist["key"] )
- matches += "ckey"
- if( id == Banlist["id"] )
- if(matches)
- matches += "/"
- matches += "id"
- if( address == Banlist["ip"] )
- if(matches)
- matches += "/"
- matches += "ip"
- if(matches)
- if(Banlist["temp"])
- if (!GetExp(Banlist["minutes"]))
- ClearTempbans()
- return 0
- else
- .["desc"] = "\nReason: [Banlist["reason"]]\nExpires: [GetExp(Banlist["minutes"])]\nBy: [Banlist["bannedby"]][appeal]"
- else
- .["desc"] = "\nReason: [Banlist["reason"]]\nExpires: <B>PERMENANT</B>\nBy: [Banlist["bannedby"]][appeal]"
- .["reason"] = matches
- return .
- return 0
- /proc/UpdateTime() //No idea why i made this a proc.
- CMinutes = (world.realtime / 10) / 60
- return 1
- /proc/LoadBans()
- Banlist = new("data/banlist.bdb")
- log_admin("Loading Banlist")
- if (!length(Banlist.dir)) log_admin("Banlist is empty.")
- if (!Banlist.dir.Find("base"))
- log_admin("Banlist missing base dir.")
- Banlist.dir.Add("base")
- Banlist.cd = "/base"
- else if (Banlist.dir.Find("base"))
- Banlist.cd = "/base"
- ClearTempbans()
- return 1
- /proc/ClearTempbans()
- UpdateTime()
- Banlist.cd = "/base"
- for (var/A in Banlist.dir)
- Banlist.cd = "/base/[A]"
- if (!Banlist["key"] || !Banlist["id"])
- RemoveBan(A)
- log_admin("Invalid Ban.")
- message_admins("Invalid Ban.")
- continue
- if (!Banlist["temp"]) continue
- if (CMinutes >= Banlist["minutes"]) RemoveBan(A)
- return 1
- /proc/AddBan(ckey, computerid, reason, bannedby, temp, minutes, address)
- var/bantimestamp
- if (temp)
- UpdateTime()
- bantimestamp = CMinutes + minutes
- Banlist.cd = "/base"
- if ( Banlist.dir.Find("[ckey][computerid]") )
- usr << text("\red Ban already exists.")
- return 0
- else
- Banlist.dir.Add("[ckey][computerid]")
- Banlist.cd = "/base/[ckey][computerid]"
- Banlist["key"] << ckey
- Banlist["id"] << computerid
- Banlist["ip"] << address
- Banlist["reason"] << reason
- Banlist["bannedby"] << bannedby
- Banlist["temp"] << temp
- if (temp)
- Banlist["minutes"] << bantimestamp
- notes_add(ckey, "Banned - [reason]")
- return 1
- /proc/RemoveBan(foldername)
- var/key
- var/id
- Banlist.cd = "/base/[foldername]"
- Banlist["key"] >> key
- Banlist["id"] >> id
- Banlist.cd = "/base"
- if (!Banlist.dir.Remove(foldername)) return 0
- if(!usr)
- log_admin("Ban Expired: [key]")
- message_admins("Ban Expired: [key]")
- else
- ban_unban_log_save("[key_name_admin(usr)] unbanned [key]")
- log_admin("[key_name_admin(usr)] unbanned [key]")
- message_admins("[key_name_admin(usr)] unbanned: [key]")
- feedback_inc("ban_unban",1)
- usr.client.holder.DB_ban_unban( ckey(key), BANTYPE_ANY_FULLBAN)
- for (var/A in Banlist.dir)
- Banlist.cd = "/base/[A]"
- if (key == Banlist["key"] /*|| id == Banlist["id"]*/)
- Banlist.cd = "/base"
- Banlist.dir.Remove(A)
- continue
- return 1
- /proc/GetExp(minutes as num)
- UpdateTime()
- var/exp = minutes - CMinutes
- if (exp <= 0)
- return 0
- else
- var/timeleftstring
- if (exp >= 1440) //1440 = 1 day in minutes
- timeleftstring = "[round(exp / 1440, 0.1)] Days"
- else if (exp >= 60) //60 = 1 hour in minutes
- timeleftstring = "[round(exp / 60, 0.1)] Hours"
- else
- timeleftstring = "[exp] Minutes"
- return timeleftstring
- /datum/admins/proc/unbanpanel()
- var/count = 0
- var/dat
- //var/dat = "<HR><B>Unban Player:</B> \blue(U) = Unban , (E) = Edit Ban\green (Total<HR><table border=1 rules=all frame=void cellspacing=0 cellpadding=3 >"
- Banlist.cd = "/base"
- for (var/A in Banlist.dir)
- count++
- Banlist.cd = "/base/[A]"
- var/ref = "\ref[src]"
- var/key = Banlist["key"]
- var/id = Banlist["id"]
- var/ip = Banlist["ip"]
- var/reason = Banlist["reason"]
- var/by = Banlist["bannedby"]
- var/expiry
- if(Banlist["temp"])
- expiry = GetExp(Banlist["minutes"])
- if(!expiry) expiry = "Removal Pending"
- else expiry = "Permaban"
- dat += text("<tr><td><A href='?src=[ref];unbanf=[key][id]'>(U)</A><A href='?src=[ref];unbane=[key][id]'>(E)</A> Key: <B>[key]</B></td><td>ComputerID: <B>[id]</B></td><td>IP: <B>[ip]</B></td><td> [expiry]</td><td>(By: [by])</td><td>(Reason: [reason])</td></tr>")
- dat += "</table>"
- dat = "<HR><B>Bans:</B> <FONT COLOR=blue>(U) = Unban , (E) = Edit Ban</FONT> - <FONT COLOR=green>([count] Bans)</FONT><HR><table border=1 rules=all frame=void cellspacing=0 cellpadding=3 >[dat]"
- usr << browse(dat, "window=unbanp;size=875x400")
- //////////////////////////////////// DEBUG ////////////////////////////////////
- /proc/CreateBans()
- UpdateTime()
- var/i
- var/last
- for(i=0, i<1001, i++)
- var/a = pick(1,0)
- var/b = pick(1,0)
- if(b)
- Banlist.cd = "/base"
- Banlist.dir.Add("trash[i]trashid[i]")
- Banlist.cd = "/base/trash[i]trashid[i]"
- Banlist["key"] << "trash[i]"
- else
- Banlist.cd = "/base"
- Banlist.dir.Add("[last]trashid[i]")
- Banlist.cd = "/base/[last]trashid[i]"
- Banlist["key"] << last
- Banlist["id"] << "trashid[i]"
- Banlist["reason"] << "Trashban[i]."
- Banlist["temp"] << a
- Banlist["minutes"] << CMinutes + rand(1,2000)
- Banlist["bannedby"] << "trashmin"
- last = "trash[i]"
- Banlist.cd = "/base"
- /proc/ClearAllBans()
- Banlist.cd = "/base"
- for (var/A in Banlist.dir)
- RemoveBan(A)
- //////////////////////////////////// WHITELIST ////////////////////////////////////
- var/list/bwhitelist
- /proc/load_bwhitelist()
- var/black
- log_admin("Loading whitelist")
- bwhitelist = list()
- var/DBConnection/dbcon = new()
- dbcon.Connect("dbi:mysql:forum2:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]")
- if(!dbcon.IsConnected())
- log_admin("Failed to load bwhitelist. Error: [dbcon.ErrorMsg()]")
- return
- var/DBQuery/query = dbcon.NewQuery("SELECT byond FROM Z_whitelist ORDER BY byond ASC")
- query.Execute()
- while(query.NextRow())
- bwhitelist += "[query.item[1]]"
- if (bwhitelist.len < 1)
- log_admin("Failed to load black bwhitelist or its empty")
- //return
- black = bwhitelist.len
- dbcon.Disconnect()
- dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]")
- if(!dbcon.IsConnected())
- log_admin("Failed to load bwhitelist from green. Error: [dbcon.ErrorMsg()]")
- return
- query = dbcon.NewQuery("SELECT byond FROM whitelist ORDER BY byond ASC")
- query.Execute()
- while(query.NextRow())
- bwhitelist += "[query.item[1]]"
- if (bwhitelist.len - black < 1)
- log_admin("Failed to load green bwhitelist or its empty")
- //return
- dbcon.Disconnect()
- log_admin("whitelist init complete. it consists of [black] + [bwhitelist.len - black] users")
- /*/proc/load_bwhitelist()
- log_admin("Loading whitelist")
- bwhitelist = list()
- var/DBConnection/dbcon = new()
- dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]")
- if(!dbcon.IsConnected())
- log_admin("Failed to load bwhitelist. Error: [dbcon.ErrorMsg()]")
- return
- var/DBQuery/query = dbcon.NewQuery("SELECT byond FROM forum2.Z_whitelist ORDER BY byond ASC")
- query.Execute()
- while(query.NextRow())
- if (bwhitelist==list( ))
- log_admin("Failed to load black whitelist or its empty")
- dbcon.Disconnect() // ??? ????? ?????
- return
- query = dbcon.NewQuery("SELECT byond FROM green.whitelist ORDER BY byond ASC")
- query.Execute()
- while(query.NextRow())
- bwhitelist += "[query.item[1]]"
- if (bwhitelist==list( ))
- log_admin("Failed to load green whitelist or its empty")
- dbcon.Disconnect() // ??? ????? ?????
- return
- dbcon.Disconnect()
- log_admin("whitelist init complete. it consists of [bwhitelist.len] users")*/
- /proc/check_bwhitelist(var/K)
- for(var/mob/M in world)
- if(M.ckey == K && M.whiteoff)
- return 0
- if (!bwhitelist)
- load_bwhitelist()
- if (!bwhitelist)
- return 0
- if (K in bwhitelist)
- return 1
- return 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement