mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
@@ -26,7 +26,7 @@
|
||||
var/emag = 0 // When it is emagged.
|
||||
var/message = "<span class='notice'>System bootup complete. Please select an option.</span>" // The message that shows on the main menu.
|
||||
var/auth = 0 // Are they authenticated?
|
||||
var/optioncount = 7
|
||||
var/optioncount = 8
|
||||
// Custom Message Properties
|
||||
var/customsender = "System Administrator"
|
||||
var/obj/item/device/pda/customrecepient = null
|
||||
@@ -122,6 +122,7 @@
|
||||
dat += "<dd><A href='?src=\ref[src];clearr=1'>	[++i]. Clear Request Console Logs</a><br></dd>"
|
||||
dat += "<dd><A href='?src=\ref[src];pass=1'>	[++i]. Set Custom Key</a><br></dd>"
|
||||
dat += "<dd><A href='?src=\ref[src];msg=1'>	[++i]. Send Admin Message</a><br></dd>"
|
||||
dat += "<dd><A href='?src=\ref[src];spam=1'>	[++i]. Modify Spam Filter</a><br></dd>"
|
||||
else
|
||||
for(var/n = ++i; n <= optioncount; n++)
|
||||
dat += "<dd><font color='blue'>	[n]. ---------------</font><br></dd>"
|
||||
@@ -240,6 +241,19 @@
|
||||
<td width='15%'>[rc.rec_dpt]</td><td width='300px'>[rc.message]</td><td width='15%'>[rc.stamp]</td><td width='15%'>[rc.id_auth]</td><td width='15%'>[rc.priority]</td></tr>"}
|
||||
dat += "</table>"
|
||||
|
||||
//Spam filter modification
|
||||
if(5)
|
||||
dat += "<center><A href='?src=\ref[src];back=1'>Back</a> - <A href='?src=\ref[src];refresh=1'>Refresh</center><hr>"
|
||||
var/index = 0
|
||||
for(var/token in src.linkedServer.spamfilter)
|
||||
index++
|
||||
if(index > 3000)
|
||||
break
|
||||
dat += "<dd>[index]	 <a href='?src=\ref[src];deltoken=[index]'>\[[token]\]</a><br></dd>"
|
||||
dat += "<hr>"
|
||||
if (linkedServer.spamfilter.len < linkedServer.spamfilter_limit)
|
||||
dat += "<a href='?src=\ref[src];addtoken=1'>Add token</a><br>"
|
||||
|
||||
|
||||
dat += "</body>"
|
||||
message = defaultmsg
|
||||
@@ -485,6 +499,26 @@
|
||||
|
||||
//usr << href_list["select"]
|
||||
|
||||
if(href_list["spam"])
|
||||
if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN)))
|
||||
message = noserver
|
||||
else
|
||||
if(auth)
|
||||
src.screen = 5
|
||||
|
||||
if(href_list["addtoken"])
|
||||
if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN)))
|
||||
message = noserver
|
||||
else
|
||||
src.linkedServer.spamfilter += input(usr,"Enter text you want to be filtered out","Token creation") as text|null
|
||||
|
||||
if(href_list["deltoken"])
|
||||
if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN)))
|
||||
message = noserver
|
||||
else
|
||||
var/tokennum = text2num(href_list["deltoken"])
|
||||
src.linkedServer.spamfilter.Cut(tokennum,tokennum+1)
|
||||
|
||||
if (href_list["back"])
|
||||
src.screen = 0
|
||||
|
||||
|
||||
@@ -917,7 +917,11 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
if(useTC != 2) // Does our recipient have a broadcaster on their level?
|
||||
U << "ERROR: Cannot reach recipient."
|
||||
return
|
||||
useMS.send_pda_message("[P.owner]","[owner]","[t]")
|
||||
var/send_result = useMS.send_pda_message("[P.owner]","[owner]","[t]")
|
||||
if (send_result)
|
||||
U << "ERROR: Messaging server rejected your message. Reason: contains '[send_result]'."
|
||||
return
|
||||
|
||||
tnote.Add(list(list("sent" = 1, "owner" = "[P.owner]", "job" = "[P.ownjob]", "message" = "[t]", "target" = "\ref[P]")))
|
||||
P.tnote.Add(list(list("sent" = 0, "owner" = "[owner]", "job" = "[ownjob]", "message" = "[t]", "target" = "\ref[src]")))
|
||||
for(var/mob/M in player_list)
|
||||
|
||||
@@ -48,6 +48,15 @@
|
||||
target << law
|
||||
target.add_ion_law(law)
|
||||
|
||||
if(message_servers)
|
||||
for (var/obj/machinery/message_server/MS in message_servers)
|
||||
MS.spamfilter.Cut()
|
||||
var/i
|
||||
for (i = 1, i <= MS.spamfilter_limit, i++)
|
||||
MS.spamfilter += pick("kitty","HONK","rev","malf","liberty","freedom","drugs", "Exodus", \
|
||||
"admin","ponies","heresy","meow","Pun Pun","monkey","Ian","moron","pizza","message","spam",\
|
||||
"diector", "Hello", "Hi!"," ","nuke","crate","dwarf","xeno")
|
||||
|
||||
/datum/event/ionstorm/tick()
|
||||
if(botEmagChance)
|
||||
for(var/obj/machinery/bot/bot in world)
|
||||
|
||||
@@ -1,27 +1,31 @@
|
||||
/datum/event/pda_spam
|
||||
endWhen = 6000
|
||||
var/time_failed = 0
|
||||
endWhen = 36000
|
||||
var/last_spam_time = 0
|
||||
var/obj/machinery/message_server/useMS
|
||||
|
||||
/datum/event/pda_spam/setup()
|
||||
time_failed = world.time
|
||||
for (var/obj/machinery/message_server/MS in message_servers)
|
||||
if(MS.active)
|
||||
useMS = MS
|
||||
break
|
||||
last_spam_time = world.time
|
||||
pick_message_server()
|
||||
|
||||
/datum/event/pda_spam/proc/pick_message_server()
|
||||
if(message_servers)
|
||||
for (var/obj/machinery/message_server/MS in message_servers)
|
||||
if(MS.active)
|
||||
useMS = MS
|
||||
break
|
||||
|
||||
/datum/event/pda_spam/tick()
|
||||
if(world.time > last_spam_time + 3000)
|
||||
//if there's no spam managed to get to receiver for five minutes, give up
|
||||
kill()
|
||||
return
|
||||
|
||||
if(!useMS || !useMS.active)
|
||||
useMS = null
|
||||
if(message_servers)
|
||||
for (var/obj/machinery/message_server/MS in message_servers)
|
||||
if(MS.active)
|
||||
useMS = MS
|
||||
break
|
||||
pick_message_server()
|
||||
|
||||
if(useMS)
|
||||
time_failed = world.time
|
||||
if(prob(2))
|
||||
if(prob(5))
|
||||
// /obj/machinery/message_server/proc/send_pda_message(var/recipient = "",var/sender = "",var/message = "")
|
||||
var/obj/item/device/pda/P
|
||||
var/list/viables = list()
|
||||
@@ -86,7 +90,10 @@
|
||||
"You have won tickets to the newest romantic comedy 16 RULES OF LOVE!",\
|
||||
"You have won tickets to the newest thriller THE CULT OF THE SLEEPING ONE!")
|
||||
|
||||
useMS.send_pda_message("[P.owner]", sender, message)
|
||||
if (useMS.send_pda_message("[P.owner]", sender, message)) //Message been filtered by spam filter.
|
||||
return
|
||||
|
||||
last_spam_time = world.time
|
||||
|
||||
if (prob(50)) //Give the AI an increased chance to intercept the message
|
||||
for(var/mob/living/silicon/ai/ai in mob_list)
|
||||
@@ -111,6 +118,3 @@
|
||||
|
||||
if(L)
|
||||
L << "\icon[P] <b>Message from [sender] (Unknown / spam?), </b>\"[message]\" (Unable to Reply)"
|
||||
else if(world.time > time_failed + 1200)
|
||||
//if there's no server active for two minutes, give up
|
||||
kill()
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
#define MESSAGE_SERVER_SPAM_REJECT 1
|
||||
#define MESSAGE_SERVER_DEFAULT_SPAM_LIMIT 10
|
||||
|
||||
var/global/list/obj/machinery/message_server/message_servers = list()
|
||||
|
||||
/datum/data_pda_msg
|
||||
@@ -59,6 +62,12 @@ var/global/list/obj/machinery/message_server/message_servers = list()
|
||||
var/active = 1
|
||||
var/decryptkey = "password"
|
||||
|
||||
//Spam filtering stuff
|
||||
var/list/spamfilter = list("You have won", "your prize", "male enhancement", "shitcurity", \
|
||||
"are happy to inform you", "account number", "enter your PIN")
|
||||
//Messages having theese tokens will be rejected by server. Case sensitive
|
||||
var/spamfilter_limit = MESSAGE_SERVER_DEFAULT_SPAM_LIMIT //Maximal amount of tokens
|
||||
|
||||
/obj/machinery/message_server/New()
|
||||
message_servers += src
|
||||
decryptkey = GenerateKey()
|
||||
@@ -89,7 +98,13 @@ var/global/list/obj/machinery/message_server/message_servers = list()
|
||||
return
|
||||
|
||||
/obj/machinery/message_server/proc/send_pda_message(var/recipient = "",var/sender = "",var/message = "")
|
||||
var/result
|
||||
for (var/token in spamfilter)
|
||||
if (findtextEx(message,token))
|
||||
message = "<font color=\"red\">[message]</font>" //Rejected messages will be indicated by red color.
|
||||
result = token //Token caused rejection (if there are multiple, last will be chosen>.
|
||||
pda_msgs += new/datum/data_pda_msg(recipient,sender,message)
|
||||
return result
|
||||
|
||||
/obj/machinery/message_server/proc/send_rc_message(var/recipient = "",var/sender = "",var/message = "",var/stamp = "", var/id_auth = "", var/priority = 1)
|
||||
rc_msgs += new/datum/data_rc_msg(recipient,sender,message,stamp,id_auth)
|
||||
@@ -102,6 +117,16 @@ var/global/list/obj/machinery/message_server/message_servers = list()
|
||||
|
||||
return
|
||||
|
||||
/obj/machinery/message_server/attackby(obj/item/weapon/O as obj, mob/living/user as mob)
|
||||
if (active && !(stat & (BROKEN|NOPOWER)) && (spamfilter_limit < MESSAGE_SERVER_DEFAULT_SPAM_LIMIT*2) && \
|
||||
istype(O,/obj/item/weapon/circuitboard/message_monitor))
|
||||
spamfilter_limit += round(MESSAGE_SERVER_DEFAULT_SPAM_LIMIT / 2)
|
||||
user.drop_item()
|
||||
del(O)
|
||||
user << "You install additional memory and processors into message server. Its filtering capabilities been enhanced."
|
||||
else
|
||||
..(O, user)
|
||||
|
||||
/obj/machinery/message_server/update_icon()
|
||||
if((stat & (BROKEN|NOPOWER)))
|
||||
icon_state = "server-nopower"
|
||||
|
||||
Reference in New Issue
Block a user