Files
VOREStation/code/modules/admin/banjob.dm
T
Kashargul 6c768b06ec reimplements attack and player logs (#19313)
* reomplements attack and player logs

* right log cat

* updates logging, makesDB optional

* regex serarch

* .

* .

* .

* sucks

* db load

* .

* .

* db logging
2026-03-19 22:37:45 +01:00

120 lines
3.1 KiB
Plaintext

//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
GLOBAL_VAR(jobban_runonce) // Updates legacy bans with new info
GLOBAL_LIST_EMPTY(jobban_keylist) //to store the keys & ranks
/proc/jobban_fullban(mob/M, rank, reason)
if (!M || !M.key) return
GLOB.jobban_keylist += "[M.ckey] - [rank] ## [reason]"
jobban_savebanfile()
/proc/jobban_client_fullban(ckey, rank)
if (!ckey || !rank) return
GLOB.jobban_keylist += "[ckey] - [rank]"
jobban_savebanfile()
//returns a reason if M is banned from rank, returns 0 otherwise
/proc/jobban_isbanned(mob/M, rank)
if(M && rank)
/*
if(_jobban_isbanned(M, rank)) return "Reason Unspecified" //for old jobban
*/
if (guest_jobbans(rank))
if(CONFIG_GET(flag/guest_jobban) && IsGuestKey(M.key))
return "Guest Job-ban"
if(CONFIG_GET(flag/usewhitelist) && !check_whitelist(M))
return "Whitelisted Job"
return ckey_is_jobbanned(M.ckey, rank)
return 0
/proc/ckey_is_jobbanned(var/check_key, var/rank)
for(var/s in GLOB.jobban_keylist)
if(findtext(s,"[check_key] - [rank]") == 1 )
var/startpos = findtext(s, "## ")+3
if(startpos && startpos<length(s))
var/text = copytext(s, startpos, 0)
if(text)
return text
return "Reason Unspecified"
return 0
/*
DEBUG
/mob/verb/list_all_jobbans()
set name = "list all jobbans"
for(var/s in GLOB.jobban_keylist)
to_world(s)
/mob/verb/reload_jobbans()
set name = "reload jobbans"
jobban_loadbanfile()
*/
/hook/startup/proc/loadJobBans()
jobban_loadbanfile()
return 1
/proc/jobban_loadbanfile()
if(CONFIG_GET(flag/ban_legacy_system))
var/savefile/S=new("data/job_full.ban")
S["keys[0]"] >> GLOB.jobban_keylist
log_admin("Loading jobban_rank")
S["runonce"] >> GLOB.jobban_runonce
if (!length(GLOB.jobban_keylist))
GLOB.jobban_keylist=list()
log_admin("jobban_keylist was empty")
else
if(!SSdbcore.IsConnected())
log_sql("Database connection failed. Reverting to the legacy ban system.")
CONFIG_SET(flag/ban_legacy_system, TRUE)
jobban_loadbanfile()
return
//Job permabans
var/datum/db_query/query = SSdbcore.NewQuery("SELECT ckey, job FROM erro_ban WHERE bantype = 'JOB_PERMABAN' AND isnull(unbanned)")
query.Execute()
while(query.NextRow())
var/ckey = query.item[1]
var/job = query.item[2]
GLOB.jobban_keylist += "[ckey] - [job]"
qdel(query)
//Job tempbans
var/datum/db_query/query1 = SSdbcore.NewQuery("SELECT ckey, job FROM erro_ban WHERE bantype = 'JOB_TEMPBAN' AND isnull(unbanned) AND expiration_time > Now()")
query1.Execute()
while(query1.NextRow())
var/ckey = query1.item[1]
var/job = query1.item[2]
GLOB.jobban_keylist += "[ckey] - [job]"
qdel(query1)
/proc/jobban_savebanfile()
var/savefile/S=new("data/job_full.ban")
S["keys[0]"] << GLOB.jobban_keylist
/proc/jobban_unban(mob/M, rank)
jobban_remove("[M.ckey] - [rank]")
jobban_savebanfile()
/proc/ban_unban_log_save(var/formatted_log)
text2file(formatted_log,"data/ban_unban_log.txt")
/proc/jobban_remove(X)
for (var/i = 1; i <= length(GLOB.jobban_keylist); i++)
if( findtext(GLOB.jobban_keylist[i], "[X]") )
GLOB.jobban_keylist.Remove(GLOB.jobban_keylist[i])
jobban_savebanfile()
return 1
return 0