Advertisement
EditorRUS

NewBan.dm

Oct 23rd, 2013
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.72 KB | None | 0 0
  1. var/CMinutes = null
  2. var/savefile/Banlist
  3.  
  4.  
  5. /proc/CheckBan(var/ckey, var/id, var/address)
  6. if(!Banlist) // if Banlist cannot be located for some reason
  7. LoadBans() // try to load the bans
  8. if(!Banlist) // uh oh, can't find bans!
  9. return 0 // ABORT ABORT ABORT
  10.  
  11. . = list()
  12. var/appeal
  13. if(config && config.banappeals)
  14. appeal = "\nFor more information on your ban, or to appeal, head to <a href='[config.banappeals]'>[config.banappeals]</a>"
  15. Banlist.cd = "/base"
  16. if( "[ckey][id]" in Banlist.dir )
  17. Banlist.cd = "[ckey][id]"
  18. if (Banlist["temp"])
  19. if (!GetExp(Banlist["minutes"]))
  20. ClearTempbans()
  21. return 0
  22. else
  23. .["desc"] = "\nReason: [Banlist["reason"]]\nExpires: [GetExp(Banlist["minutes"])]\nBy: [Banlist["bannedby"]][appeal]"
  24. else
  25. Banlist.cd = "/base/[ckey][id]"
  26. .["desc"] = "\nReason: [Banlist["reason"]]\nExpires: <B>PERMENANT</B>\nBy: [Banlist["bannedby"]][appeal]"
  27. .["reason"] = "ckey/id"
  28. return .
  29. else
  30. for (var/A in Banlist.dir)
  31. Banlist.cd = "/base/[A]"
  32. var/matches
  33. if( ckey == Banlist["key"] )
  34. matches += "ckey"
  35. if( id == Banlist["id"] )
  36. if(matches)
  37. matches += "/"
  38. matches += "id"
  39. if( address == Banlist["ip"] )
  40. if(matches)
  41. matches += "/"
  42. matches += "ip"
  43.  
  44. if(matches)
  45. if(Banlist["temp"])
  46. if (!GetExp(Banlist["minutes"]))
  47. ClearTempbans()
  48. return 0
  49. else
  50. .["desc"] = "\nReason: [Banlist["reason"]]\nExpires: [GetExp(Banlist["minutes"])]\nBy: [Banlist["bannedby"]][appeal]"
  51. else
  52. .["desc"] = "\nReason: [Banlist["reason"]]\nExpires: <B>PERMENANT</B>\nBy: [Banlist["bannedby"]][appeal]"
  53. .["reason"] = matches
  54. return .
  55. return 0
  56.  
  57. /proc/UpdateTime() //No idea why i made this a proc.
  58. CMinutes = (world.realtime / 10) / 60
  59. return 1
  60.  
  61. /proc/LoadBans()
  62.  
  63. Banlist = new("data/banlist.bdb")
  64. log_admin("Loading Banlist")
  65.  
  66. if (!length(Banlist.dir)) log_admin("Banlist is empty.")
  67.  
  68. if (!Banlist.dir.Find("base"))
  69. log_admin("Banlist missing base dir.")
  70. Banlist.dir.Add("base")
  71. Banlist.cd = "/base"
  72. else if (Banlist.dir.Find("base"))
  73. Banlist.cd = "/base"
  74.  
  75. ClearTempbans()
  76. return 1
  77.  
  78. /proc/ClearTempbans()
  79. UpdateTime()
  80.  
  81. Banlist.cd = "/base"
  82. for (var/A in Banlist.dir)
  83. Banlist.cd = "/base/[A]"
  84. if (!Banlist["key"] || !Banlist["id"])
  85. RemoveBan(A)
  86. log_admin("Invalid Ban.")
  87. message_admins("Invalid Ban.")
  88. continue
  89.  
  90. if (!Banlist["temp"]) continue
  91. if (CMinutes >= Banlist["minutes"]) RemoveBan(A)
  92.  
  93. return 1
  94.  
  95.  
  96. /proc/AddBan(ckey, computerid, reason, bannedby, temp, minutes, address)
  97.  
  98. var/bantimestamp
  99.  
  100. if (temp)
  101. UpdateTime()
  102. bantimestamp = CMinutes + minutes
  103.  
  104. Banlist.cd = "/base"
  105. if ( Banlist.dir.Find("[ckey][computerid]") )
  106. usr << text("\red Ban already exists.")
  107. return 0
  108. else
  109. Banlist.dir.Add("[ckey][computerid]")
  110. Banlist.cd = "/base/[ckey][computerid]"
  111. Banlist["key"] << ckey
  112. Banlist["id"] << computerid
  113. Banlist["ip"] << address
  114. Banlist["reason"] << reason
  115. Banlist["bannedby"] << bannedby
  116. Banlist["temp"] << temp
  117. if (temp)
  118. Banlist["minutes"] << bantimestamp
  119. notes_add(ckey, "Banned - [reason]")
  120. return 1
  121.  
  122. /proc/RemoveBan(foldername)
  123. var/key
  124. var/id
  125.  
  126. Banlist.cd = "/base/[foldername]"
  127. Banlist["key"] >> key
  128. Banlist["id"] >> id
  129. Banlist.cd = "/base"
  130.  
  131. if (!Banlist.dir.Remove(foldername)) return 0
  132.  
  133. if(!usr)
  134. log_admin("Ban Expired: [key]")
  135. message_admins("Ban Expired: [key]")
  136. else
  137. ban_unban_log_save("[key_name_admin(usr)] unbanned [key]")
  138. log_admin("[key_name_admin(usr)] unbanned [key]")
  139. message_admins("[key_name_admin(usr)] unbanned: [key]")
  140. feedback_inc("ban_unban",1)
  141. usr.client.holder.DB_ban_unban( ckey(key), BANTYPE_ANY_FULLBAN)
  142. for (var/A in Banlist.dir)
  143. Banlist.cd = "/base/[A]"
  144. if (key == Banlist["key"] /*|| id == Banlist["id"]*/)
  145. Banlist.cd = "/base"
  146. Banlist.dir.Remove(A)
  147. continue
  148.  
  149. return 1
  150.  
  151. /proc/GetExp(minutes as num)
  152. UpdateTime()
  153. var/exp = minutes - CMinutes
  154. if (exp <= 0)
  155. return 0
  156. else
  157. var/timeleftstring
  158. if (exp >= 1440) //1440 = 1 day in minutes
  159. timeleftstring = "[round(exp / 1440, 0.1)] Days"
  160. else if (exp >= 60) //60 = 1 hour in minutes
  161. timeleftstring = "[round(exp / 60, 0.1)] Hours"
  162. else
  163. timeleftstring = "[exp] Minutes"
  164. return timeleftstring
  165.  
  166. /datum/admins/proc/unbanpanel()
  167. var/count = 0
  168. var/dat
  169. //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 >"
  170. Banlist.cd = "/base"
  171. for (var/A in Banlist.dir)
  172. count++
  173. Banlist.cd = "/base/[A]"
  174. var/ref = "\ref[src]"
  175. var/key = Banlist["key"]
  176. var/id = Banlist["id"]
  177. var/ip = Banlist["ip"]
  178. var/reason = Banlist["reason"]
  179. var/by = Banlist["bannedby"]
  180. var/expiry
  181. if(Banlist["temp"])
  182. expiry = GetExp(Banlist["minutes"])
  183. if(!expiry) expiry = "Removal Pending"
  184. else expiry = "Permaban"
  185.  
  186. 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>")
  187.  
  188. dat += "</table>"
  189. 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]"
  190. usr << browse(dat, "window=unbanp;size=875x400")
  191.  
  192. //////////////////////////////////// DEBUG ////////////////////////////////////
  193.  
  194. /proc/CreateBans()
  195.  
  196. UpdateTime()
  197.  
  198. var/i
  199. var/last
  200.  
  201. for(i=0, i<1001, i++)
  202. var/a = pick(1,0)
  203. var/b = pick(1,0)
  204. if(b)
  205. Banlist.cd = "/base"
  206. Banlist.dir.Add("trash[i]trashid[i]")
  207. Banlist.cd = "/base/trash[i]trashid[i]"
  208. Banlist["key"] << "trash[i]"
  209. else
  210. Banlist.cd = "/base"
  211. Banlist.dir.Add("[last]trashid[i]")
  212. Banlist.cd = "/base/[last]trashid[i]"
  213. Banlist["key"] << last
  214. Banlist["id"] << "trashid[i]"
  215. Banlist["reason"] << "Trashban[i]."
  216. Banlist["temp"] << a
  217. Banlist["minutes"] << CMinutes + rand(1,2000)
  218. Banlist["bannedby"] << "trashmin"
  219. last = "trash[i]"
  220.  
  221. Banlist.cd = "/base"
  222.  
  223. /proc/ClearAllBans()
  224. Banlist.cd = "/base"
  225. for (var/A in Banlist.dir)
  226. RemoveBan(A)
  227.  
  228.  
  229.  
  230. //////////////////////////////////// WHITELIST ////////////////////////////////////
  231. var/list/bwhitelist
  232.  
  233. /proc/load_bwhitelist()
  234. //var/black
  235. log_admin("Loading whitelist")
  236. bwhitelist = list()
  237. var/DBConnection/dbcon = new()
  238. /*
  239. dbcon.Connect("dbi:mysql:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]")
  240. if(!dbcon.IsConnected())
  241. log_admin("Failed to load bwhitelist. Error: [dbcon.ErrorMsg()]")
  242. return
  243. var/DBQuery/query = dbcon.NewQuery("SELECT byond FROM Z_whitelist ORDER BY byond ASC")
  244. query.Execute()
  245. while(query.NextRow())
  246. bwhitelist += "[query.item[1]]"
  247. if (bwhitelist.len < 1)
  248. log_admin("Failed to load black bwhitelist or its empty")
  249. //return
  250. black = bwhitelist.len
  251. dbcon.Disconnect()
  252. */
  253. dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]")
  254. if(!dbcon.IsConnected())
  255. log_admin("Failed to load bwhitelist from green. Error: [dbcon.ErrorMsg()]")
  256. return
  257. query = dbcon.NewQuery("SELECT byond FROM whitelist ORDER BY byond ASC")
  258. query.Execute()
  259. while(query.NextRow())
  260. bwhitelist += "[query.item[1]]"
  261. if (bwhitelist.len - black < 1)
  262. log_admin("Failed to load green bwhitelist or its empty")
  263. //return
  264. dbcon.Disconnect()
  265. log_admin("whitelist init complete. it consists of [bwhitelist.len] users")
  266.  
  267.  
  268.  
  269. /*/proc/load_bwhitelist()
  270. log_admin("Loading whitelist")
  271. bwhitelist = list()
  272. var/DBConnection/dbcon = new()
  273. dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]")
  274. if(!dbcon.IsConnected())
  275. log_admin("Failed to load bwhitelist. Error: [dbcon.ErrorMsg()]")
  276. return
  277. var/DBQuery/query = dbcon.NewQuery("SELECT byond FROM forum2.Z_whitelist ORDER BY byond ASC")
  278. query.Execute()
  279. while(query.NextRow())
  280.  
  281. if (bwhitelist==list( ))
  282. log_admin("Failed to load black whitelist or its empty")
  283. dbcon.Disconnect() // ??? ????? ?????
  284. return
  285.  
  286. query = dbcon.NewQuery("SELECT byond FROM green.whitelist ORDER BY byond ASC")
  287. query.Execute()
  288. while(query.NextRow())
  289. bwhitelist += "[query.item[1]]"
  290. if (bwhitelist==list( ))
  291. log_admin("Failed to load green whitelist or its empty")
  292. dbcon.Disconnect() // ??? ????? ?????
  293. return
  294. dbcon.Disconnect()
  295. log_admin("whitelist init complete. it consists of [bwhitelist.len] users")*/
  296.  
  297.  
  298.  
  299.  
  300. /proc/check_bwhitelist(var/K)
  301. for(var/mob/M in world)
  302. if(M.ckey == K)// && M.whiteoff)
  303. return 0
  304. if (!bwhitelist)
  305. load_bwhitelist()
  306. if (!bwhitelist)
  307. return 0
  308. if (K in bwhitelist)
  309. return 1
  310. return 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement