diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 41ec3faf..93ac4ecd 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -63,6 +63,7 @@ var/kick_inactive = 0 //force disconnect for inactive players var/load_jobs_from_txt = 0 var/ToRban = 0 + var/ip_blacklist_enabled = 0 var/automute_on = 0 //enables automuting/spam prevention var/jobs_have_minimal_access = 1 //determines whether jobs use minimal access or expanded access. diff --git a/code/modules/admin/IsBanned.dm b/code/modules/admin/IsBanned.dm index 9548c279..99d41513 100644 --- a/code/modules/admin/IsBanned.dm +++ b/code/modules/admin/IsBanned.dm @@ -17,6 +17,27 @@ world/IsBanned(key,address,computer_id) AddBan(ckey(key), computer_id, "Use of ToR", "Automated Ban", 0, 0) return list("reason"="Using ToR", "desc"="\nReason: The network you are using to connect has been banned.\nIf you believe this is a mistake, please request help at [config.banappeals]") + if(config && config.ip_blacklist_enabled) + testing("Loading Blacklist") + var/text = file2text("data/ip_blacklist.txt") + if (!text) + error("Failed to load data/ip_blacklist.txt") + else + var/list/lines = text2list(text, "\n") + for(var/line in lines) + if (!line) + continue + + if (copytext(line, 1, 2) == ";") + continue + + var/banned_address = copytext(line, 1, length(line)+1) + testing("Blacklist: address:[address] - banned_address:[banned_address]") + if(banned_address == address) + log_access("Failed Login: [src] - Blacklisted IP (ToR)") + message_admins("\blue Failed Login: [src] - Blacklisted IP (ToR)") + AddBan(ckey(key), computer_id, "Use of ToR", "Automated Ban", 0, 0) + return list("reason"="IP Blacklisted", "desc"="\nReason: This IP has been blacklisted from the server.\nIf you believe this is a mistake, please request help at [config.banappeals]") if(config.ban_legacy_system)