docs/hfcs.1 (view raw)
1.\"
2.\" Copyright (c) 2019 Ted Unangst
3.\"
4.\" Permission to use, copy, modify, and distribute this software for any
5.\" purpose with or without fee is hereby granted, provided that the above
6.\" copyright notice and this permission notice appear in all copies.
7.\"
8.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15.\"
16.Dd $Mdocdate$
17.Dt HFCS 1
18.Os
19.Sh NAME
20.Nm hfcs
21.Nd honk filtering and censorship system
22.Sh DESCRIPTION
23The honk filtering and censorship system,
24.Nm hfcs ,
25controls what messages are seen and how they are presented to the user.
26Filter rules are based on a series of matches and actions.
27It is accessed via the
28.Pa filters
29menu item.
30.Pp
31Each filter has an optional
32.Ar name
33and
34.Ar notes
35for user defined purposes.
36.Pp
37The following match types are possible.
38All nonempty criteria must match.
39.Bl -tag -width include-audience
40.It Ar who
41Match an actor or domain name.
42Matches against
43.Fa Ar actor
44property.
45.It Ar include audience
46Previous match is applied against
47.It Ar only unknowns
48Previous (domain) match is applied only to unknown actors.
49.It Ar text
50Regular expression match against the post
51.Fa content .
52The special value of "." will match any post with a summary only.
53.It Ar is reply
54A reply to another post.
55.It Ar is announce
56Is announced (shared).
57.It Ar announce of
58Limit prevous match to only specified actor or domain name.
59.El
60.Pp
61The following actions may be applied.
62Multiple actions may be applied, but some are subsumed by others.
63.Bl -tag -width tenletters
64.It Ar reject
65Reject this message entirely.
66.It Ar skip media
67Don't include images or attachments.
68.It Ar hide
69Remove this message from most feeds.
70.It Ar collapse
71Show only a short summary with click to view content.
72.It Ar rewrite
73Rewrite message content, using
74.Ar replace
75replacement text.
76.El
77.Pp
78The
79.Ar text
80and
81.Ar rewrite
82fields are case insensitive word anchored regular expressions.
83Specifically, an argument
84.Ql re
85will be automatically rewritten as
86.Ql \\\b(?i:re)\\\b .
87The
88.Ar replace
89text may refer to submatches using $1, etc.
90.Pp
91A post marked sensitive that does not otherwise contain a summary will
92have an invisible summary of
93.Dq unspecified horror
94that can be matched against and will appear if the post is collapsed.
95.Pp
96An optional expiration may be specified as a duration.
97XdYhZm for X days, Y hours, and Z minutes.
98.Sh EXAMPLES
99A rudimentary spam filter to reject randos shilling their discord.
100It will expire after two days.
101.Lk filter.png screenshot of filter
102.Sh SEE ALSO
103.Xr honk 1
104.Sh CAVEATS
105Not seeing is not erasing.