Subj : Detecting Terminals
To : All
From : dingo
Date : Wed Mar 20 2024 08:31 am
Hello,
I was the first to write a BBS that supports UTF-8 and cp437, but we required selecting it manually (x84/default/charset.py script). But I wanted to share with you a technique that I've been using lately that should allow your BBS Softwares to automatically detect the client, using the "Query Cursor Position" sequence, "\x1b[6n". You could also use this to automatically detect for "bots" or "scanners" rather than real users. At least, any bot would have to emulate a terminal to respond correctly.
I use this technique to automatically detect the unicode support level of many terminals in my "ucs-detect" tool, "How it works"
https://ucs-detect.readthedocs.io/intro.html#how-it-works
And the results here,
https://ucs-detect.readthedocs.io/results.html
In any case, if the "bots" are not responding to this query, you can kick them off. You can detect if they support utf-8, and, whether they support emojis etc. CP437 terminals like SyncTerm will be "corrupted" by utf-8 bytes or display characters incorrectly, and by measuring the delta of the starting and ending position of a character after displaying unicode string, we can determine whether they are utf-8 capable automatically.
I could write such a tool if anyone is interested, it would be very easy. Anyway I more highly suggest to use this to kick off "bots", as they can really consume a lot of resources.
--- ENiGMA 1/2 v0.0.14-beta (linux; x64; 18.18.2)
* Origin: Xibalba -+- xibalba.l33t.codes:44510 (21:1/121)