mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-11 10:22:13 +00:00
autobunker
This commit is contained in:
@@ -25,4 +25,23 @@
|
|||||||
/datum/config_entry/string/medal_hub_address
|
/datum/config_entry/string/medal_hub_address
|
||||||
|
|
||||||
/datum/config_entry/string/medal_hub_password
|
/datum/config_entry/string/medal_hub_password
|
||||||
protection = CONFIG_ENTRY_HIDDEN
|
protection = CONFIG_ENTRY_HIDDEN
|
||||||
|
|
||||||
|
/datum/config_entry/keyed_list/cross_server_bunker_override
|
||||||
|
key_mode = KEY_MODE_TEXT
|
||||||
|
value_mode = VALUE_MODE_TEXT
|
||||||
|
protection = CONFIG_ENTRY_LOCKED
|
||||||
|
|
||||||
|
/datum/config_entry/keyed_list/cross_server_bunker_override/ValidateAndSet(str_val)
|
||||||
|
. = ..()
|
||||||
|
if(.)
|
||||||
|
var/list/newv = list()
|
||||||
|
for(var/I in config_entry_value)
|
||||||
|
newv[replacetext(I, "+", " ")] = config_entry_value[I]
|
||||||
|
config_entry_value = newv
|
||||||
|
|
||||||
|
/datum/config_entry/keyed_list/cross_server_bunker_override/ValidateListEntry(key_name, key_value)
|
||||||
|
return key_value != "byond:\\address:port" && ..()
|
||||||
|
|
||||||
|
/datum/config_entry/flag/allow_cross_server_bunker_override
|
||||||
|
protection = CONFIG_ENTRY_LOCKED
|
||||||
|
|||||||
@@ -74,6 +74,25 @@
|
|||||||
for(var/client/C in GLOB.clients)
|
for(var/client/C in GLOB.clients)
|
||||||
C.AnnouncePR(final_composed)
|
C.AnnouncePR(final_composed)
|
||||||
|
|
||||||
|
/datum/world_topic/auto_bunker_passthrough
|
||||||
|
keyword = "auto_bunker_override"
|
||||||
|
require_comms_key = TRUE
|
||||||
|
|
||||||
|
/datum/world_topic/auto_bunker_passthrough/Run(list/input)
|
||||||
|
if(!CONFIG_GET(flag/allow_cross_server_bunker_override))
|
||||||
|
return "Function Disabled"
|
||||||
|
var/ckeytobypass = input["ckey"]
|
||||||
|
var/is_new_ckey = !(ckey(ckeytobypass) in GLOB.bunker_passthrough)
|
||||||
|
var/sender = input["source"] || "UNKNOWN"
|
||||||
|
GLOB.bunker_passthrough |= ckey(ckeytobypass)
|
||||||
|
GLOB.bunker_passthrough[ckey(ckeytobypass)] = world.realtime
|
||||||
|
SSpersistence.SavePanicBunker() //we can do this every time, it's okay
|
||||||
|
if(!is_new_ckey)
|
||||||
|
log_admin("AUTO BUNKER: [ckeytobypass] given access (incoming comms from [sender]).")
|
||||||
|
message_admins("AUTO BUNKER: [ckeytobypass] given access (incoming comms from [sender]).")
|
||||||
|
send2irc("Panic Bunker", "AUTO BUNKER: [ckeytobypass] given access (incoming comms from [sender]).")
|
||||||
|
return "Success"
|
||||||
|
|
||||||
/datum/world_topic/ahelp_relay
|
/datum/world_topic/ahelp_relay
|
||||||
keyword = "Ahelp"
|
keyword = "Ahelp"
|
||||||
require_comms_key = TRUE
|
require_comms_key = TRUE
|
||||||
|
|||||||
34
code/modules/client/verbs/autobunker.dm
Normal file
34
code/modules/client/verbs/autobunker.dm
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
/client/verb/bunker_auto_authorize()
|
||||||
|
set name = "Auto Authorize Panic Bunker"
|
||||||
|
set desc = "Authorizes your account in the panic bunker of any servers connected to this function."
|
||||||
|
set category = "OOC"
|
||||||
|
|
||||||
|
world.send_cross_server_bunker_overrides(key, src)
|
||||||
|
|
||||||
|
/world/proc/send_cross_server_bunker_overrides(key, client/C)
|
||||||
|
var/comms_key = CONFIG_GET(string/comms_key)
|
||||||
|
if(!comms_key)
|
||||||
|
return
|
||||||
|
var/list/message = list()
|
||||||
|
message["ckey"] = key
|
||||||
|
message["source"] = "[CONFIG_GET(string/cross_comms_name)]"
|
||||||
|
message["key"] = comms_key
|
||||||
|
message["auto_bunker_override"] = TRUE
|
||||||
|
var/list/servers = CONFIG_GET(keyed_list/cross_server_bunker_override)
|
||||||
|
if(!length(servers))
|
||||||
|
to_chat(C, "<span class='boldwarning'>AUTOBUNKER: No servers are configured to receive from this one.</span>")
|
||||||
|
return
|
||||||
|
var/logtext = "[key] ([key_name(C)]) has initiated an autobunker authentication with linked servers."
|
||||||
|
message_admins(logtext)
|
||||||
|
log_admin(logtext)
|
||||||
|
for(var/name in servers)
|
||||||
|
var/returned = world.Export("[servers[name]]?[list2params(message)]")
|
||||||
|
switch(returned)
|
||||||
|
if("Bad Key")
|
||||||
|
to_chat(C, "<span class='boldwarning'>AUTOBuNKER: [name] failed to authenticate with this server.</span>")
|
||||||
|
if("Function Disabled")
|
||||||
|
to_chat(C, "<span class='boldwarning'>AUTOBUNKER: [name] has autobunker receive disabled.</span>")
|
||||||
|
if("Success")
|
||||||
|
to_chat(C, "<span class='boldwarning'>AUTOBUNKER: Successfully authenticated with [name]. Panic bunker bypass granted to [key].</span>.")
|
||||||
|
else
|
||||||
|
to_chat(C, "<span class='boldwarning'>AUTOBUNKER: Unknown error ([name]).</span>")
|
||||||
@@ -1792,6 +1792,7 @@
|
|||||||
#include "code\modules\client\preferences_toggles.dm"
|
#include "code\modules\client\preferences_toggles.dm"
|
||||||
#include "code\modules\client\preferences_vr.dm"
|
#include "code\modules\client\preferences_vr.dm"
|
||||||
#include "code\modules\client\verbs\aooc.dm"
|
#include "code\modules\client\verbs\aooc.dm"
|
||||||
|
#include "code\modules\client\verbs\autobunker.dm"
|
||||||
#include "code\modules\client\verbs\etips.dm"
|
#include "code\modules\client\verbs\etips.dm"
|
||||||
#include "code\modules\client\verbs\looc.dm"
|
#include "code\modules\client\verbs\looc.dm"
|
||||||
#include "code\modules\client\verbs\minimap.dm"
|
#include "code\modules\client\verbs\minimap.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user