var/CMinutes = null var/savefile/Banlist /proc/CheckBan(ckey, id, 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 [config.banappeals]" 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: PERMENANT\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: PERMENANT\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("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 if(!temp) create_message("note", ckey, bannedby, "Permanently banned - [reason]", null, null, 0, 0) else create_message("note", ckey, bannedby, "Banned for [minutes] minutes - [reason]", null, null, 0, 0) 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(usr)] unbanned [key]") log_admin("[key_name(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 = "
| (U)(E) Key: [key] | ComputerID: [id] | IP: [ip] | [expiry] | (By: [by]) | (Reason: [reason]) |