https://gitlab.synchro.net/main/sbbs/-/commit/9c59990042def81b2d6beb76
Modified Files:
docs/v322_new.md exec/load/sbbsdefs.js exec/msglist.js src/doors/termgfx/CMakeLists.txt audio_mgr.c src/sbbs3/getmsg.cpp putmsg.cpp sbbsdefs.h
Log Message:
Strip terminal commands (APC strings) from displayed message text
Fixes #1254
putmsg() strips a fixed list of terminal *queries* from everything it
displays (so a reply never lands in the user's input), but passed every state-changing sequence through, and made no distinction between a sysop's display file and a message body. SyncTERM's C;S (store file) APC in a
message therefore wrote a file into the SyncTERM cache of everyone who read
it, persistently, under any name the poster chose.
Add a P_NOAPC mode (and the matching sbbsdefs.js constant) under which
putmsg() strips every APC string (ESC _ ... ESC \), and set it where
message text is shown: show_msg() for the sub-board and mail readers, and
the msglist.js lightbar reader. Display files keep full pass-through, since sysops embed fonts and images in them.
The one shipped consumer that trusted a cached file by name alone,
termgfx's door audio manager, now plays a client-cached track only when
the MD5 the C;L listing reports for it matches the door's own copy, as syncterm_cache.js and the zmachine already require; without a door-side
copy to check against, the client's file is not trusted and the track is uploaded as before. md5.c joins fnv1a.c as a hash-lib source compiled
straight into termgfx.
Verified on a scratch terminal server with a post and a mail carrying a
C;S APC followed by a colored line: both readers show the text, the C++
reader keeps the SGR color code, and neither emits the APC. Every termgfx
door rebuilds.
Co-Authored-By: Claude Fable 5.1 <
noreply@anthropic.com>
--- SBBSecho 3.38-Linux
* Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)