Skip to content

Freenet build 1492: video, diagnostics, pitch black mitigation, and plugin updates

Compare
Choose a tag to compare
@ArneBab ArneBab released this 27 Oct 22:39
· 895 commits to next since this release
build01492
e3089e8

Freenet 0.7.5 build 1492 is now available. [overview]

This release finalizes the mitigation of the pitch black attack
with a test that shows that the mitigation is effective at
reducing the impact of the attack and recovering from it.
This mitigation was sponsored by nlnet as part of the
Horizon 2020 program of the EU: https://nlnet.nl/project/Freenet-Routing/

The video-player was optimized to prevent most visual flickering.

To help performance analysis, there is now a diagnostics component
with thread runtime information. You can activate it in the advanced core settings of your node.
Thanks to DC*.

And several plugins received updates:

  • KeyUtils got bugfixes from TheSeeker
  • Library now searches all indexes if you just hit search — thanks to redwerk.
  • Library now also allows setting a custom link suffic (docname) — thanks to TheSeeker.
  • Spider got bugfixes from redwerk and juiceman.
  • FlogHelper provides simple clickable audio and video tags.
    Just put a m3u link into the video tag to have video-on-demand.

Included Bugfixes if fred (the Freenet Reference Daemon):

  • skip in support.io.SkipShieldingInputStream must return
    non-negative. Thanks to dennisnez.
  • NodeConfig was reading a particular config from default on every
    start up. Thanks to desyncr.
  • OpenJDK 16+ compat: add wrapper.conf argument to allow access to
    internal openjdk modules.
  • Correct "current size" option in Wizard => datastore size.
    Thanks to AC4BB21B.

Sidenote: What is the pitch black attack?

On Freenet, every node has a location on a circle.

To optimize routing, pure friend-to-friend nodes (no opennet)
swap these locations (without changing connections).
The pitch black attack steals the locations one by one
and replaces them with a single one,
so that after a while all nodes are at the same location.

Then no sensible routing is possible anymore.

The mitigation detects when parts of the circle are devoid of routing nodes
and fills up the holes by switching there.

If you want to help us get better, please help us get the current
pending pull-requests in shape for merging, by reviewing and/or by
improving already reviewed but inactive pull-requests
(only on clearnet, because the pull-requests are there):
https://github.com/freenet/wiki/wiki/Large-Pull-requests-that-need-work

We now also have a list of high-impact tasks:
USK@xPkwhS3czAr5oi6yNgLQ7Ld7RbUZuY6eGniS0n5FZtc,WXVIZrZyLlZugJgJKYvbF9SPfKAUAQX9gAX6g7FGNVE,AQACAAE/high-impact-tasks/0

That said: If someone asks you "what is Freenet", you could for example answer:

Freenet is a peer-to-peer platform for
censorship-resistant and privacy-respecting
publishing and communication.

or

Freenet is a communication system that covers the needs for protection
expected from a secure data broker for Multi-Party Data Exchange in IoT for Health.
(source: https://www.igi-global.com/chapter/using-freenet-as-a-broker-for-multi-party-data-exchange-in-iot-for-health/257911 )

This is what Freenet already accomplished.

And we could only get this far together, because without users,
it is hard for sofware to make a difference.

Thank you for using Freenet!

  • Arne Babenhauserheide

Developer changelog:

2021-10-27

Changes in 1492:

Fred:

  • The diagnostics component provides thread runtime statistics. Thanks to DC*.
    #727

  • The multi-node test to show that the mitigation against the pitch
    black attack works.
    #736

  • The m3u-player for video on demand over Freenet now prevents most
    visual flickering.
    #734

  • Clickable labels for checkboxes. Thanks to AC4BB21B.
    #741

  • Fix: skip in support.io.SkipShieldingInputStream must return
    non-negative. Thanks to dennisnez.
    #737

  • Fix: NodeConfig was reading a particular config from default on every
    start up. Thanks to desyncr.
    #739

  • OpenJDK 16+ compat: add wrapper.conf argument to allow access to
    internal openjdk modules.
    #740

  • Fix: Correct "current size" option in Wizard => datastore size. Thanks to
    AC4BB21B.
    #742

Plugins:

related: Florent fixed our website build (Thank you!), so we can release
there again. I polished our theme and the messaging on the index-page.
https://freenetproject.org/

  • Arne Babenhauserheide

Arne Babenhauserheide (20):
Update FlogHelper to version 36
m3u-player: prevent flickering on track-transitions by keeping the size fixed and overlaying an image of the video
Add real node pitch black mitigation test
pitch-black-mitigation: prevent undamped oscillations of the pitch-black-mitigation
document pitch black node test
fix error-prone clock usage
OpenJDK 16+ compat: add wrapper.conf argument to allow access to internal openjdk modules
wrapper.conf: only add --illegal-access=permit on java 9+
refactor (pull out function) and fix the width for even less flickering
make size preservation robust and flexible
use real sizes for canvas
simplify fixing the size during updates
alwag, always divide by explicit floats
add error handling
fix: supports modules should be true when the threshold version (9) is smaller or equal to the current version
Add note about RealNodePitchBlackMitigationTest.java to the simulator/readme.txt
add a SECURITY.md
note that there are no known unfixable identification attacks against F2F-mode, note sybil and restructure a bit
improve SECURITY.md
SECURITY.md: typo: tipps -> tips

Arne Babenhauserheide (freenet releases) (7):
update KeyUtils to 0.5.6 v5028 from commit 4c0b6e11ac66e781dbcb5a9a1ddabf351629c6b6
update Library to 37 from commit cd45f9a5634c82e693d5fe1a870ad6120b9fe980
update Library to 53 from commit c5367b4ceffb2f9a011d68cae0bb205933fe6033
update FlogHelper to actual 36 from commit 085e4edff9d96c344168bf983c27056a869f5770
Update default bookmark editions
Update default bookmark editions
Build 1492

DC* (56):
Add thread cpu to diagnostics
Add NodeDiagnostic module with NodeThreadDiagnostics
Don't use single class imports
Fix indentation
Don't use single class imports
Create Diagnostics component to be able to scale to support multiple diagnostics easily
Add license headers to new files
Move thread info building into its own method
Make NodeDiagnostics field private
Flatten NodeDiagnostics interface
Flatten NodeDiagnostics interface
Create NodeDiagnostics and ThreadDiagnostics interfaces and default implementations
Reduce visibility for fields in ThreadDiagnostics
Use atomicReference for nodeThreadInfo list
Use thread interval to build data points
Fix calculation CPU time percentage
Use NodeDiagnostics type interface rather than default implementation
Use DefaultNodeDiagnostics implementation
Remove unnecessary finals in contructor
Remove unnecessary throw exception
Remove unnecessary copy
Fix CPU time percentaje calculation
Use Comparator class to simplify threads sorting
Use single loop to calculate delta and display
Rename private field to follow convention
Show percentage cpu time between process threads
Separate presentation from actual data for NodeThreadInfo
Compute % CPU by calculate the total CPU time from all threads, not only nodestat's
Renaming internal variables
Re-introduce delta CPU Time and simplify code structure
Output formatting in DiagnosticToadlet
Handle case when thread.getThreadGroup returns null
Remove long -> double coercion Purge inactive threads from threadsCpu list
Use NodeThreadSnapshot to hold thread list, total CPU and interval
Update ConfigToadlet to support enabling/disabling node diagnostics module
Avoid unnecessary casting to double for getCpuTimeDelta
Declare interface rather than implementation
Clean up nodeConfig callback
Update configuration description
Check thread snapshot is available when displaying
Simplify description and normalize names
Clean up unnecessary space
Correct language and simplify terms
Fix grammar mistake on translation for DiagnosticsDescription
Calculate CPU time as % of wall time
Avoid possible race condition on start up
Add docblock to threadStats method
Fix tab vs space mix up
Remove unneccessary code style fixes
newline at end of line
Create threadSnapshot inner class to avoid pooler executor messing thread's names
Replace threadCpu for threadSnapshot
Use thread synchronization to avoid misnaming
NodeConfig was reading a particular config from default on every start up
Uncollapsing method
Use job ID to keep track of CPU usage

David (7):
Labels for checkboxes in upload and download forms
Labels in security settings and friends
Fix previous commit
Labels in filter file, plugins, wizard
Correct "current size" option in Wizard => datastore size
Tiny indentation fix
Better logic in case of default values for cache sizes

Dennis Nezic (2):
Bugfix: skip in support.io.SkipShieldingInputStream cannot return negative value
Update SkipShieldingInputStream.java

Jan Gerritsen (3):
Fixed unreliable store store test cases
Run each test scenario in its own test method
Create its own directory for each test, so they can run in parallel

Plugins:

Arne Babenhauserheide (freenet releases) (2):
version 0.5.4 build 5027
update version to 0.5.6

TheSeeker (2):
Fix extra bytes display for composed SSK
Fix API call to allow compiling

Arne Babenhauserheide (freenet releases) (2):
update ant to new gradle structure of fred
major version to 37

Oleh Shklyar (1):
fix search when none of the index checkboxes are checked

TheSeeker (1):
Allow manual setting of a custom index docname

Arne Babenhauserheide (freenet releases) (1):
update major version to 53

Juiceman (2):
Fix build due to Freenet infrastructure changes.
Bump Java version to 1.7 to match Fred settings

Oleh Shklyar (5):
fix log bufferUsageEstimated
close resource
upgrade java to 1.8 & change path to fred jar
fix IllegalArgumentException
add info about running without wrapper

Alexandre Rio (4):
Improve french l10n
Github prefers file extension for main readme file
Add support for audio tag #15
Add video tag

Arne Babenhauserheide (freenet releases) (1):
update major version to 36