Repository navigation
Releases: flackrat/openhop-spamguard
Releases · flackrat/openhop-spamguard
Release list
SpamGuard v6.9.0
Immutable
release. Only release title and notes can be modified.
SpamGuard 6.9.0
Improvements to the protection level from user testing, from first-time users to experts.
- No more dead end on a new install. "What this level would have done" now has a Turn on the evidence log button right there, instead of pointing to a Settings page that only shows in Advanced. "See it in Settings" next to your own values switches Advanced on and takes you to that setting.
- An honest suggestion. Until you have marked at least five held messages as spam or fine, the pin on the slider says "Early guess", is worked out from repeats alone and never goes past Firm.
- Your marks show straight away. Spam and Fine stay pressed on the messages worth a look, and the count of messages you have marked goes up at once, not after the next daily run.
- What this level does now says what really applies, including values you set yourself, marked as yours. "Use the suggested level" asks about your own values, as moving the slider does.
- The slider comes first on a phone, straight after the spam numbers and before Mode.
- For experts: the Settings page shows the protection level as a number you can type, there is a switch to turn the daily replay off (Settings, Evidence log), and durations read naturally, such as "about a day and a half".
- Private channels are left out of the replay, and the page says how many, since their keys never leave SpamGuard. Only the Public channel and hashtag channels are replayed.
- Show the numbers under the chart of what each level would have held, like every other chart.
- One word for it. The protection level panel now says "held" throughout.
SpamGuard v6.8.0
Immutable
release. Only release title and notes can be modified.
SpamGuard 6.8.0
- A protection level slider instead of Relaxed, Balanced and Strict. The Overview has a slider from Gentle to Tough that warms from teal to red as it gets tougher, and every point in between works. 0, 50 and 100 are exactly the old Relaxed, Balanced and Strict, so nothing changes until you move it. Under the slider it says in plain words what that level does: how many copies are let through, for how long further copies are held, and how long automatic blocks last.
- See what each level would have held on your own traffic. Once a day, at the lowest priority so the radio always comes first, SpamGuard replays the last two days of the evidence log at eleven points along the scale. Open "What this level would have done" to see how many messages that level would have held, how many were one name repeating itself, and how many are worth a look, with a small chart across the whole scale. Messages worth a look have Spam and Fine buttons; the more you mark, the better the Suggested point on the slider. Nothing is changed by the replay itself. It needs the evidence log turned on.
- Tougher also means for longer. The level now also sets how long a quick-repeat block lasts (30 minutes, 1 hour or 2 hours across the scale), how far back the all-day repeat count looks (12, 24 or 36 hours) and how long automatic blocks last (3, 6 or 12 hours). Balanced is the same as before.
- Values you set yourself are kept. If you have changed one of the values the level sets, the slider says so, and moving it asks whether to use the level's values or keep yours.
- Plainer words throughout. Settings and help no longer talk about hashes, de-duplication, unscoped packets or detection windows; for example "Duplicate suppression" is now "Copies and repeats".
- Older choices still work. A config file, Docker setting or saved profile with relaxed, balanced or strict is read as 0, 50 or 100. The new config setting is
level(SPAMGUARD_LEVELfor Docker). - The replay tool is about nine times quicker, and can replay protection levels:
replay.py LOG --levels 0,50,80,100.
SpamGuard v6.7.0
FloodGuard 1.2.5
- Where floods come into the mesh. The FloodGuard page now lists the first repeaters on the routes of the flood packets it stopped, so you know which repeater owner to talk to.
SpamGuard 6.7.0
- Most held, last 7 days. A new table on the Blocks page lists the names with the most copies held back, how many messages a day they send, and how many were held today. When a name took over another name's repeat count, the two are shown together, so one sender behind several names reads as one. Only counts are shown, never what anyone said.
- Name changes are shown. When a name carries on another name's repeat count, Activity and the block both say which name it carried on from.
- Airtime, last 7 days. A new chart on the Overview shows the minutes a day the radio spent on traffic, next to the airtime saved by stopping spam and by FloodGuard.
- One-tap labels. Each recent message has Spam and Fine buttons that only record your opinion: nothing is blocked or trusted. Labels go in the evidence log, so a replay can show how often SpamGuard got it right.
- Easier on a phone. The Overview now opens with the spam numbers. Mode and Sensitivity follow, without their explanations, then the graphs, with less text throughout.
- "Most channel messages are on channels SpamGuard can't read" can be dismissed. It stays hidden on that device for 30 days.
- How busy the radio was, as a line. The Overview shows the busiest five minutes of each hour as a line next to the other graphs, with FloodGuard's step-in level dashed. The FloodGuard page uses the same line, and hours with no measurement show as a gap.
- All examples are made up. The examples in the code comments, tests and documentation are now all invented, with no real names, messages or places.
SpamGuard v6.6.2
SpamGuard 6.6.2
- Changing name no longer restarts the all-day repeat count. When a new name takes over sending the same long message after another name has stopped, it carries on that name's count, so its copies are held straight away. Two people posting the same thing at the same sort of time are still counted separately, and a tiny change to the text no longer counts as a new message.
- "Spam let through" no longer counts regulars. A name SpamGuard knows from genuine messages was counted as spam let through if its name happened to look made-up, so a regular's test messages could make the stop rate look much worse than it was. Known names are no longer counted, and the tile is now called "Likely spam let through".
SpamGuard v6.6.1
SpamGuard 6.6.1
- See what each rule says. The "N rules in openHop" line at the foot of the page is now a button. It opens a list of SpamGuard's rules in the order openHop checks them, each in plain English (for example "Blocks a packet that is a channel message, contains the text ..."), with a Copy as text button. Channel keys are never shown.
- Sensitivity now sets the repeat limits too. Relaxed, Balanced and Strict now also set how many copies of a message are allowed before the repeat guard acts (4, 3 or 2), the same limit for the all-day repeat guard, and how long its hold lasts (2, 3 or 6 hours). Balanced behaves exactly as before.
SpamGuard v6.6.0
SpamGuard 6.6.0
- Slow repeating is now caught. The repeat guard only notices copies sent within minutes of each other, so a name posting the same long message once an hour, all evening, slipped past it. SpamGuard now also counts how many times one name sends the same long message in a day. After three, further copies are held for three hours, and while they keep going one copy gets through each time the hold ends. The first copies and anything new from that name still go out, and it only ever counts repeats, never what a message says. Copies of one send that arrive by several routes count once. It is on by default, and the limit, the time window and the hold are in Advanced under Duplicate suppression. Ordinary repeats, such as re-posting a notice a few times a day, are left alone.
SpamGuard v6.5.6
FloodGuard 1.2.4
- A flood no longer teaches FloodGuard that flooding is normal. On a busy site FloodGuard raises its busy limit to fit the traffic, but it counted the hours it had itself flagged as floods, so a long flood could push the limit up and make the next one harder to spot. Flagged hours are now left out, and if most of the hours it heard were floods it learns nothing from them. The busy limit also stops at 30%, however busy the site is.
SpamGuard 6.5.6
- No more false "bad" health when openHop does not run as a service on this computer. systemd reports "inactive" for a service it has never heard of, so a plugin install with openHop in Docker or elsewhere could show the openHop service as stopped. SpamGuard now believes systemd only when the openHop service is really installed here. Found by the new automatic checks on GitHub.
SpamGuard v6.5.5
FloodGuard 1.2.3
- FloodGuard no longer holds back genuine long-route traffic on a busy mesh. On a busy mesh many genuine messages arrive over long routes, so FloodGuard's made-up start of 16 hops, tightened to a floor of 8, held back messages from senders SpamGuard didn't know yet. The cause was the same trap as the busy limit: it learnt how far flood packets normally come only from quiet hours, and a busy radio never has any. Now:
- Hop counts are also kept for every hour (two days, small), and when there are too few quiet hours the normal route length, and the always-on unscoped and advert hop limits, are learnt from those instead.
- FloodGuard holds nothing back until it knows how far flood packets normally come (about 200 in a day), unless you set the lowest hop limit yourself. Until then it counts and says so. The made-up default no longer decides anything.
- The Activity note when learning ends called every limit "(yours)", even recommended ones. It now says yours, recommended, or nothing for learnt values.
SpamGuard 6.5.5
- The plugin no longer compiles PyYAML on a Raspberry Pi. The real cause of the update that left SpamGuard uninstalled: the plugin asked for
pyyaml, but the ready-made Raspberry Pi build is published asPyYAML, and pip 23.0 (Raspberry Pi OS Bookworm) throws it away over the capital letters and compiles it from source instead. On a Pi 3 that can outlast openHop's wait. The plugin now asks forPyYAML, so the ready-made build is used and the install takes seconds. Checked with the same pip version against a copy of the mirror's naming. - An update that can't install stops before it removes anything. Before openHop replaces the running version, SpamGuard checks that the new version's libraries are available as ready-made builds on this machine. Only a clear "none exist" stops it (no network, no pip or any other doubt lets the update go ahead), and the Updates box then explains, with an Update anyway button. The README says how to get SpamGuard back from the Plugins page if an install is ever cut short. It can be turned off with
plugin_preflight: falsein the config. - Fewer writes to the SD card. SpamGuard refreshes its "I'm in charge of this repeater" marker in openHop every 10 minutes instead of every 5. That marker is rewritten into openHop's policy file each time, which was the most regular write SpamGuard made. The marker still has five minutes of slack before another copy would treat it as stale.
tests/testpreflight.py(new) covers the check and the update flow;testplugin.py,testmigrate.pyandtestupdprog.pycover the PyYAML spelling, the ten-minute refresh and the new button.
SpamGuard v6.5.4
SpamGuard 6.5.4
- Shorter FloodGuard notices. The two FloodGuard boxes took most of a phone screen; each is now two or three lines. The longer advice for a flood that has run for a day sits under the box instead of inside it.
- Interference now shows on the Overview. When the radio channel's noise stays well above this site's normal, a short notice says by how much and how far the repeater now hears, with a link to the FloodGuard page. Before, it was only on the FloodGuard and Health pages and as a small badge in the menu.
SpamGuard v6.5.3
FloodGuard 1.2.2
- A repeater in a busy place can now learn its own busy limit. FloodGuard used to set its busy limit only from hours when the radio was below the starting limit (15%), and needed two days of them. On a repeater that normally sits above 15% there were none, so it stayed on the starting limit and was "containing a flood" for days at a time. It now falls back to every hour and takes twice the middle one (a flood of a few hours can't move a middle value), still inside its 10 to 40% range, and says so in Activity. Repeaters with quiet hours learn exactly as before. Then, as always, it moves a little each day.
SpamGuard 6.5.3
- FloodGuard is shown calmly once it has been on for an hour. A flood that has just started is still amber. After an hour it becomes a quiet notice ("holding back long-distance flood packets") on the Overview and the FloodGuard page, with the radio's busy level against its limit. After a day the page adds that this usually means the site is simply busy, and points to the busy limit under Settings. The Details link in these notices is also darker, so it meets the contrast guidelines in the light theme.
tests/testfgcalm.pychecks the wording, colours and accessibility;tests/testfloodguard.pycovers the busy-repeater learning.