TSI(5F)

🌸 TSI(5F) β€” the access control list page, bestie edition 🌸

okay so this is TSI(5F), the manual page for the Transmission Subscriber Identification (TSI) access control list. it's a file-format page. it's giving "who's allowed in the group chat" energy. let's go πŸ’…


✨ NAME ✨

tsi β€” Transmission Subscriber Identification (TSI) access control list


πŸ¦‹ DESCRIPTION πŸ¦‹

so there's this HylaFAX configuration parameter called QualifyTSI, and it's the one that decides whether or not the identity of a calling facsimile machine gets checked against an access control list before receiving facsimile. like a bouncer at the door, but for faxes. iconic.

if QualifyTSI is non-null, then only messages from facsimile machines identified in the file specified by the string (typically etc/tsi) will be accepted. that's it. that's the whole vibe check.

Patterns are specified one per line and must conform to the regular expressions syntax specified by POSIX 1003.2; see re_format(7). ✨

Comments may be included; they are introduced with the `#` character and extend to the end of the line. so go off, annotate your little heart out πŸŽ€

Any trailing white space on a line is ignored (for convenience when comments are used). lowkey thoughtful of them.

If a line begins with `!`, then the regular expression identifies clients that should be rejected; otherwise regular expressions identify clients whose transmissions should be accepted.

⚠️ The order of patterns in a TSI file is important. like, actually important. do not shuffle.

When a facsimile is to be received, the fax server will compare the client's TSI against the patterns in the access control list in the order in which they appear in the file. The first pattern that matches the client TSI is used to decide whether to accept or reject the facsimile. If no patterns match the client TSI then the facsimile is rejected. 🫢

Thus if you want to accept all but a restricted set of TSI the last line in the file should be:

^.*$

(that's the "everyone else come in" line. main character catch-all.)


🌈 writing your patterns 🌈

Note that regular expression patterns should be written to match a TSI exactly. That is, patterns should be of the form:

^<pattern>$

where the `^` and `$` characters are used to specify the start and end of the matching TSI. no cap, those two little guys are doing the heavy lifting.

Additionally, regular expression patterns should handle white space that may appear in known locations. For example:

^([+]1){1}[ .-]*415[ .-]*555[ .-]*1212.*$

that absolute baddie of a pattern matches the following TSI strings:

+1.415.555.1212
    415  555  1212
1-415-555-1212

Finally, note that regular expressions can be used to specify many TSI with one pattern. one regex, many faxes. efficiency queen. πŸ‘‘


πŸ’€ NOTES πŸ’€

It would be nice if TSI that were to be matched against were placed in some canonical form (e.g. remove white space and white space-like characters).

This is, however, problematic, because some facsimile machines permit any printable ASCII string to be sent as a TSI. 😭 so like, we can't just normalize it and call it a day. the machines are feral.


πŸ’œ SEE ALSO πŸ’œ


and that's the whole page, bestie 🩷 this one's from December 5, 1994, so it's vintage β€” a true classic, and it's still out here doing access control for HylaFAX. mwah. πŸ’‹

πŸ“¦ where this page comes from