Advertisement
EditorRUS

NewBan.dm

Oct 23rd, 2013
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.73 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. dbcon.Connect("dbi:mysql:forum2:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]")
  239. if(!dbcon.IsConnected())
  240. log_admin("Failed to load bwhitelist. Error: [dbcon.ErrorMsg()]")
  241. return
  242. var/DBQuery/query = dbcon.NewQuery("SELECT byond FROM Z_whitelist ORDER BY byond ASC")
  243. query.Execute()
  244. while(query.NextRow())
  245. bwhitelist += "[query.item[1]]"
  246. if (bwhitelist.len < 1)
  247. log_admin("Failed to load black bwhitelist or its empty")
  248. //return
  249. black = bwhitelist.len
  250. dbcon.Disconnect()
  251.  
  252. dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]")
  253. if(!dbcon.IsConnected())
  254. log_admin("Failed to load bwhitelist from green. Error: [dbcon.ErrorMsg()]")
  255. return
  256. query = dbcon.NewQuery("SELECT byond FROM whitelist ORDER BY byond ASC")
  257. query.Execute()
  258. while(query.NextRow())
  259. bwhitelist += "[query.item[1]]"
  260. if (bwhitelist.len - black < 1)
  261. log_admin("Failed to load green bwhitelist or its empty")
  262. //return
  263. dbcon.Disconnect()
  264. log_admin("whitelist init complete. it consists of [black] + [bwhitelist.len - black] users")
  265.  
  266.  
  267.  
  268. /*/proc/load_bwhitelist()
  269. log_admin("Loading whitelist")
  270. bwhitelist = list()
  271. var/DBConnection/dbcon = new()
  272. dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]")
  273. if(!dbcon.IsConnected())
  274. log_admin("Failed to load bwhitelist. Error: [dbcon.ErrorMsg()]")
  275. return
  276. var/DBQuery/query = dbcon.NewQuery("SELECT byond FROM forum2.Z_whitelist ORDER BY byond ASC")
  277. query.Execute()
  278. while(query.NextRow())
  279.  
  280. if (bwhitelist==list( ))
  281. log_admin("Failed to load black whitelist or its empty")
  282. dbcon.Disconnect() // ??? ????? ?????
  283. return
  284.  
  285. query = dbcon.NewQuery("SELECT byond FROM green.whitelist ORDER BY byond ASC")
  286. query.Execute()
  287. while(query.NextRow())
  288. bwhitelist += "[query.item[1]]"
  289. if (bwhitelist==list( ))
  290. log_admin("Failed to load green whitelist or its empty")
  291. dbcon.Disconnect() // ??? ????? ?????
  292. return
  293. dbcon.Disconnect()
  294. log_admin("whitelist init complete. it consists of [bwhitelist.len] users")*/
  295.  
  296.  
  297.  
  298.  
  299. /proc/check_bwhitelist(var/K)
  300. for(var/mob/M in world)
  301. if(M.ckey == K && M.whiteoff)
  302. return 0
  303. if (!bwhitelist)
  304. load_bwhitelist()
  305. if (!bwhitelist)
  306. return 0
  307. if (K in bwhitelist)
  308. return 1
  309. return 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement