Commit graph

372 commits

Author SHA1 Message Date
279f261aed Fix race conditions that are possible in Db.
This is accomplished by locking the entire database, and keeping it locked
until the last reference is unlocked. We get rid of per-reference locks,
because those are what cause race conditions.
2023-04-24 16:19:17 +00:00
313249ca88 Fixed some caching bugs in Db.
Note that Db has the potential to deadlock when caching is being used,
and when caching isn't being used, an inconsistent state can occur. Future
changes to Db will fix both of these issues.
2023-04-24 15:43:24 +00:00
737e060243 Finish up Uia fallback. 2023-04-22 15:40:25 +00:00
5431c2cd90 Fix double-free in UiaCleanup(). 2023-04-22 13:45:01 +00:00
2bbe13aaf0 Fix error setting up UIA flows. 2023-04-22 02:06:22 +00:00
866343071a Continued work on UIA fallback. 2023-04-22 00:59:03 +00:00
6a5d89e14b Work on implementing user interactive authentication fallback. 2023-04-21 02:13:06 +00:00
fb24f93aaa Fix bug with TLS where cert and key files were used after freeing them. 2023-04-20 21:12:08 +00:00
0b7282c36a Fix build errors on some compilers due to missing symbols. 2023-04-20 19:19:23 +00:00
ec09882dbe Fix warnings about memset() 2023-04-20 17:50:22 +00:00
3b28af2031 Fix warning on some compilers. 2023-04-20 17:40:14 +00:00
19b0dcac5a Don't build the routing tree until absolutely necessary.
Saves us a lot of time and memory in case of an error.
2023-04-20 17:37:18 +00:00
4a5c7480aa Fix up a few small warnings. 2023-04-20 13:49:25 +00:00
25b7c0d059 Begin documenting Admin API. 2023-04-19 21:45:15 +00:00
ffeb45375e Implement /_telodendria/admin/privileges
Note that it's not exactly as the proposal defines it; theres a bit more
nuance that will be documented soon.
2023-04-19 18:52:05 +00:00
ae38791df2 Format code, remove dataDir from sample production.conf 2023-04-19 02:07:38 +00:00
0cca38115a Move configuration to database, add process control API, fix memory leaks. 2023-04-19 00:33:38 +00:00
ff4d265dcc Registration tokens now determine what privileges a user gets. 2023-04-16 18:32:22 +00:00
582df63a31 Format source code. 2023-04-16 17:51:52 +00:00
4ee66ae3c7 Begin implementing user privileges. 2023-04-16 17:51:03 +00:00
6ca1265076 Begin working on User-Interactive authentication fallback. 2023-04-15 02:36:28 +00:00
e882693c78 Add route for requestToken endpoints. 2023-04-14 23:59:40 +00:00
b21d018daa Move router building function into a more sensible location. 2023-04-14 21:37:00 +00:00
83971dfaff Refactor routing system to use HttpRouter. 2023-04-14 21:20:56 +00:00
a90f7c4b9e Apply #69 2023-04-14 17:50:14 +00:00
1f8df737da Add HttpRouter API; still have to convert the code to use it. 2023-04-06 01:48:32 +00:00
7c865d06fd Format code. 2023-04-01 02:46:59 +00:00
e0c8530b12 Clean up http client enough to replace curl in send-patch. 2023-04-01 02:46:07 +00:00
e592840c99 Clean up some HTTP client stuff. 2023-04-01 02:13:41 +00:00
7b3d537175 Remove UtilStreamCopy() 2023-04-01 00:20:18 +00:00
f341fd2b6e Fix OpenSSL server accept call.
Apparently it can EAGAIN on non-blocking connections... I don't think
LibreSSL's TLS library does this, but something to keep in mind if it
doesn't work for somebody.
2023-03-31 23:10:52 +00:00
eef615fc9a Fix warnings in RouteChangePwd.c 2023-03-28 02:28:58 +00:00
9b21e2460a Accept #67: Add the password modification endpoint. 2023-03-28 01:17:47 +00:00
c6f4a4a546 Fix leak of StreamStdout() when logging to a file. 2023-03-27 17:56:45 +00:00
c37d3801b2 Fix warning about uninitialized variable. 2023-03-25 00:00:53 +00:00
a24c27bf4f Fix leak in TlsOpenSSL. 2023-03-24 17:37:44 +00:00
af776c64a7 Remove duplicate return line. 2023-03-24 14:18:29 +00:00
a25573063f Fix up TlsOpenSSL a little bit.
Server is still broken...
2023-03-24 03:05:12 +00:00
aeb49f80e5 Add support for OpenSSL. This is a good demo of how easy it is to support TLS libraries. 2023-03-24 02:41:01 +00:00
fe32c652cd Fix bug in HttpClient where it wouldn't retry on EAGAIN. 2023-03-24 00:23:49 +00:00
20d41d794b Fix compile error. I had this in here at some point, not sure where it went. 2023-03-23 17:41:02 +00:00
e13442c122 Fix strange behavior in TlsLibreSSL.
tls_read() and tls_write() may return TLS_WANT_POLLIN or TLS_WANT_POLLOUT
if data isn't ready to be read or written yet. We have to account for this
by converting it to EAGAIN, which is how a typical read() or write()
function should behave.

Also installed a SIGPIPE handler; we do not want to be terminated by
SIGPIPE, and it's safe to ignore this signal because it should be
handled thoroughly in the code.
2023-03-23 16:39:15 +00:00
2441f07848 Add support for spinning up multiple HTTP servers.
This is useful for having a TLS and a non-TLS version port, like Synapse.
I verified that the multiple-servers does in fact work as intended,
although the TLS server part is broken; I must be doing something
incorrectly with LibreSSL in setting up the server.
2023-03-23 02:12:45 +00:00
2fab7b55fe Remove obsolete warning about setting root directory.
We don't use chroot() anymore.
2023-03-22 18:30:30 +00:00
089d8d4d94 Only install the memory hook if -v is given.
This way, we can still set the debug level in the configuration, and not
see the log just absolutely flooded with memory allocations and whatnot.
This is helpful because I want debug messages to show up in development,
but not in production, but having all the memory logging makes it
almost impossible to pick anything else out of the log. I want the
feature available, just not on by default because it's useful in limited
circumstances.
2023-03-22 18:29:05 +00:00
9ec330f40a Log once we get the response status, not right when we get the request. 2023-03-22 18:13:59 +00:00
8faf6f2126 Delete TelodendriaConfig.c 2023-03-22 17:20:53 +00:00
fc975e6a93 TelodendriaConfig -> Config 2023-03-22 17:17:30 +00:00
413c7ad803 Start building support for running multiple HTTP servers.
The standard use case for this is going to be running a TLS and a non-TLS
HTTP server. I can't see a need for *more* than two, but it is theoretically
possible.

We shouldn't have to change anything with the database or anything; it
should suffice to simply spin up more HTTP servers, and they should
interact with each other the same way a single HTTP server with multiple
threads will.
2023-03-22 17:00:48 +00:00
e30fa3ee33 Remove remnants of non-global LogConfig from TelodendriaConfig 2023-03-22 16:31:24 +00:00