New versions, the mirror, and blocking¶
Two kinds of new version¶
The web client is the same build on every entrance, made by the
project's CI from released versions of unseenet and the graphical client, and
posted in the project channel unseenet.releases with the SHA-256 of every
file (UN-RFC 0043 sections 7.2-7.3). The entrance updates the client it
serves by itself - from the release on GitHub, or file by file from other
entrances - and uses a version only when every file matches the signed post.
No restart. ENTRANCE_AUTO_UPDATE=off stops it.
Visitors' apps update the same way, but only when they say so (New version in the bar), and never go back to an older version.
The entrance's own code is never updated by itself. Run the install command again to update it; it installs the newest release of unseenet-entrance, and its changelog says what changed.
Neither needs GitHub to stay reachable: the posts are read through the network, and the files can come from any entrance.
A mirror of the releases¶
An entrance can also mirror Unseenet's own releases, so that the portable
clients and sticks can update over Tor when GitHub is blocked:
MIRROR=portable (the portable zips and the USB zip, about 300 MB per
channel) or MIRROR=all (also a stick's update and image, about 1.1 GB).
It follows unseenet.releases, fetches each new version from GitHub or
another mirror, checks every file against the signed checksums, keeps only
the newest, and serves it at /mirror/<channel>/ on its onion address and
its open address. Clients find it in the signed list of entrances and use
nothing that does not match the signature, so a mirror needs no trust.
MIRROR=off removes it.
When an entrance is blocked¶
Every entrance serves the jump page, /unseenet-entrances.html: one
small file with the signed list of entrances inside. Opened from disk it
checks the list against the project key, shows which entrances answer, opens
a random one that does, and can fetch a newer list and save itself again.
Visitors get it from Other entrances in the bar; ask them to keep it and
pass it on.
An installed app does the same by itself: when its entrance does not answer, it talks through another one from the list (UN-RFC 0043 section 8).
The client in a file. python3 tools/build_web.py --file-from
https://an.entrance/ in the entrance's repository builds unseenet-web.html:
the whole web client and the signed list in one file of about 19 MB. Opened
from disk it picks an entrance that answers and uses it only as a tunnel; no
page is served, so a blocked address or a changed page does not matter.