0fee4ce50b
aka "the open eyre" aka "universal basic identity" Urbit already supports presence on the clearnet, but fails to expose any of its interactive affordances to unauthenticated users. Here, we improve this situation by granting "guest identity" @ps to every unauthenticated HTTP request, and extending the channels functionality to them. Sessions no longer represent only the local identity. Instead, each session has either the local identity, or a fake guest identity associated with it. Every request that does not provide a session key/cookie gets assigned a fresh one with a guest identity on the spot. As a result, every single request has an identity associated with it. The identity of a request gets propagated into userspace, if the request ends up there. For normal HTTP requests, this means the src.bowl gets set to that identity for both the watch and poke of the request. For backwards compatibility, the authenticated flag on the request noun gets set at normal: only true if the request came from the local identity. For channel requests, this means the src.bowl gets set to that identity for any pokes and watches it sends, and it can only send those to agents running on the local ship. The scry endpoint remains unchanged in its behavior: only available to the local identity. Notable implementation detail changes in this diff include: - Factored all gall interactions out into +deal-as. - Sessions no longer represent exclusively the local identity. This matters a lot to +give-session-tokens, %code-changed, and logout handling. - Session management got factored out into explicit +start-session and +close-session arms. |
||
---|---|---|
.github | ||
bin | ||
doc/spec | ||
extras | ||
nix | ||
pkg | ||
sh | ||
tests | ||
.gitattributes | ||
.gitignore | ||
.ignore | ||
.mailmap | ||
.stylish-haskell.yaml | ||
CONTRIBUTING.md | ||
default.nix | ||
LICENSE.txt | ||
MAINTAINERS.md | ||
Makefile | ||
README.md | ||
shell.nix | ||
vere-version |
Urbit
Urbit is a personal server stack built from scratch. It has an identity layer (Azimuth), virtual machine (Vere), and operating system (Arvo).
A running Urbit "ship" is designed to operate with other ships peer-to-peer. Urbit is a general-purpose, peer-to-peer computer and network.
This repository contains the Arvo Kernel
For the Runtime, see Vere. For more on the identity layer, see Azimuth. To manage your Urbit identity, use Bridge.
Install
To install and run Urbit, please follow the instructions at urbit.org/getting-started. You'll be on the live network in a few minutes.
Contributing
Contributions of any form are more than welcome! Please take a look at our contributing guidelines for details on our git practices, coding styles, and how we manage issues.
You might also be interested in joining the urbit-dev mailing list.
Release
For details about our release process, see the maintainers guidelines