commits
Move the http server struct to be a member of the core server struct.
This allows us to shut it down when the server stops. In addition, add
an option to disable the http server, currently only used for tests. By
setting the port to null we don't launch the http server.
http.zig defaults to 32 threads spawned. Let's scale that back to a
reasonable level considering we are also spawning more threads for the
irc server
We steal the stream for event streams from httpz and manage them with
xev. This way we don't spawn a thread for each connection on a channel,
and we can send messages very similar to how we do for IRC clients.
Light mode has a softer white background now.
Dark mode is extremly rudimentary and basic.
Header is properly spaced, and the mobile header fits across the screen
for channel names that aren't too long.
- Use fd instead of *Connection for all async tasks
- Copy std.Thread.Pool and make it fallible to help with cleanup
- Make a heap allocated arena wrapper to use for all threadpool requests
- Arena allocate everything we send to a thread
This way we can safely see if the connection still exists after we
complete auth
Smp and Debug are both already thread safe
Move things into domains. We still probably need an http.zig file
We take an app password and handle over SASL plain. We resolve the
handle back to the PDS server and perform auth there (including did:web
support). We use the createSession api, but store the hashed password
and the refresh token. As long as the password hash stays the same, we
just use the refresh token to authorize the user
Now that we load all users, we just let the nick_map grow...it'll only
need shrinking if for some reason we had a bunch of users delete their
accounts, which we can't even do
We take an app password and handle over SASL plain. We resolve the
handle back to the PDS server and perform auth there (including did:web
support). We use the createSession api, but store the hashed password
and the refresh token. As long as the password hash stays the same, we
just use the refresh token to authorize the user