Skip to content

Commit

Permalink
Prevents macro-log spam.
Browse files Browse the repository at this point in the history
Dealing with exploits is hard work.
  • Loading branch information
PsiOmegaDelta committed Mar 1, 2017
1 parent 2cfc1c7 commit c4b18f2
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 14 deletions.
2 changes: 1 addition & 1 deletion baystation12.dme
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
#define DEBUG
// END_PREFERENCES
// BEGIN_INCLUDE
#include "code\_client_macros.dm"
#include "code\_macros.dm"
#include "code\client_macros.dm"
#include "code\global.dm"
#include "code\hub.dm"
#include "code\names.dm"
Expand Down
13 changes: 0 additions & 13 deletions code/_client_macros.dm

This file was deleted.

39 changes: 39 additions & 0 deletions code/client_macros.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/client
control_freak = CONTROL_FREAK_ALL | CONTROL_FREAK_MACROS | CONTROL_FREAK_SKIN

var/list/registered_macros_by_ckey_

// Disables click and double-click macros, as per http://www.byond.com/forum/?post=2219001
/mob/verb/DisableClick(argu = null as anything, sec = "" as text,number1 = 0 as num, number2 = 0 as num)
set name = ".click"
set category = null
log_macro(ckey, ".click")

/mob/verb/DisableDblClick(argu = null as anything, sec = "" as text, number1 = 0 as num, number2 = 0 as num)
set name = ".dblclick"
set category = null
log_macro(ckey, ".dblclick")

/proc/log_macro(var/ckey, var/macro)
to_chat(usr, "The [macro] macro is disabled due to potential exploits.")
if(is_macro_use_registered(ckey, macro))
return
register_macro_use(ckey, macro)
log_and_message_admins("attempted to use the disabled [macro] macro.")

/proc/get_registered_macros()
if(!registered_macros_by_ckey_)
registered_macros_by_ckey_ = list()
return registered_macros_by_ckey_

/proc/is_macro_use_registered(var/ckey, var/macro)
var/list/registered_macros = get_registered_macros()[ckey]
return registered_macros && (macro in registered_macros)

/proc/register_macro_use(var/ckey, var/macro)
var/list/registered_macros_by_ckey = get_registered_macros()
var/list/registered_macros = registered_macros_by_ckey[ckey]
if(!registered_macros)
registered_macros = list()
registered_macros_by_ckey[ckey] = registered_macros
registered_macros |= macro

0 comments on commit c4b18f2

Please sign in to comment.