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
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
9ec330f40a
Log once we get the response status, not right when we get the request.
2023-03-22 18:13:59 +00:00
fc975e6a93
TelodendriaConfig -> Config
2023-03-22 17:17:30 +00:00
e30fa3ee33
Remove remnants of non-global LogConfig from TelodendriaConfig
2023-03-22 16:31:24 +00:00
e6f3dfad18
Add an ArraySet() method for replacing entries in an array.
...
This is much more efficient than using ArrayDelete() and ArrayInsert(),
and will serve us well in the future.
2023-03-22 16:31:06 +00:00
f3c4c0ac65
Add a global log configuration.
...
This is the easiest and cleanest way to get logging into some of the
fundamental APIs, such as the database and TLS APIs. We don't want to
have to pass logging functions to those, but they can safely use the
global logging configuration.
2023-03-22 14:52:04 +00:00
8782aa046d
Fix compile error in Tls, work on getting certs and keys into HttpServer.
2023-03-22 02:18:31 +00:00
bdaea9872e
Format source code.
2023-03-22 01:46:45 +00:00
b58ca7d22e
Start working on adding TLS support to HttpServer.
2023-03-22 01:46:24 +00:00
6561b5bae1
Add TLS build support to td.
2023-03-22 01:17:42 +00:00
996356832e
Define TLS API, update HttpClient to support optional TLS.
...
Also added a LibreSSL TLS implementation. Client is verified to work;
server has not been tested yet.
2023-03-22 00:41:21 +00:00
5289c16e2b
Convert all code to new Stream API.
...
Also made a number of improvmements to tt, making it compatible with more
shells.
2023-03-18 14:32:09 +00:00
a97a593f21
Format code.
2023-03-16 16:53:18 +00:00
27b3b6cdc6
Add StreamPuts(), don't make StreamVprintf() defer to IoVprintf().
2023-03-16 16:51:41 +00:00
8539a03d5b
Add StreamFile() convenience method.
2023-03-16 16:25:24 +00:00
6ee1857f5f
Format source code.
2023-03-16 12:29:38 +00:00
7d9770fc12
Add some convenience functions for working with Io and Stream.
...
Also broke out IoFd into it's own file, and did the same with IoFile.
2023-03-16 12:28:55 +00:00
65f4c90df3
Rename HttpStream() to HttpServerStream() to match HttpClientStream()
2023-03-16 02:17:48 +00:00
ab4755240a
Add IoCopy() and StreamCopy()
...
Both do buffered reads and writes, but IoCopy() uses IoRead() and
IoWrite() directly, whereas StreamCopy() relies on StreamGetc() and
StreamPutc(), which manipulate the stream buffers.
2023-03-15 17:14:16 +00:00
92da3542a6
Move low-level fopencookie()/funopen() functionality to Io API.
...
The Stream API now provides the buffered I/O functionality analogous to
the C standard library.
2023-03-15 16:47:34 +00:00
5dbaf3c223
Apply #65 , remove printf() in Db, and make tt show login messages.
2023-03-15 13:36:49 +00:00
afc7667737
Begin prototyping Stream API.
2023-03-15 02:40:23 +00:00
ae97d8116c
Apply #64 : Registration tokens.
2023-03-14 00:37:24 +00:00
62cd1cdc98
Misc changes.
2023-03-12 03:37:57 +00:00
3037f12907
Add tt and http-debug-server tools.
2023-03-10 18:48:52 +00:00
2d9b706f38
Fix I/O in JsonConsumeWhitespace() and UtilStreamCopy().
...
These functions previously operated on the assumption that fgetc() would
block; however it will not block on HttpServer streams because those are
non-blocking. They now check error conditions properly before failing
prematurely.
2023-03-10 18:46:03 +00:00
8ead9cc93a
Apply #63 , make some general bug fixes.
2023-03-10 03:24:04 +00:00
3af2d3d12b
Format code, update TODO items.
2023-03-09 03:35:40 +00:00
ca053a12b1
Break out main() into Main.c, fix some compile warnings on Cygwin.
2023-03-09 02:46:04 +00:00
7b22fb02a2
Implement pretty-printing option in Json.
...
Telodendria itself doesn't use it, but the json CLI tool does.
2023-03-08 17:15:43 +00:00
8d75d8a023
Add simple HTTP CLI tool that uses the HttpClient API.
...
You might be asking why I would just write a simple curl replacement
when curl does the job just fine. Well, the most immediate reason is
to test the HttpClient API, but since Telodendria's goal is to not
be dependent on any third-party code if at all possible, it makes
sense to have a simple HTTP client to use not only for testing
Telodendria, but also for configuring it. When we move the
configuration to the database, we'll ship a script that uses this
tool to allow admins to easily submit API requests.
Do not be concerned that HttpClient does not support TLS yet. TLS
support is necessary for federation to work, so it is coming
eventually.
2023-03-08 03:30:36 +00:00
7e144ae488
Clean up a few bugs in HttpClient and Uri
2023-03-08 02:53:47 +00:00
3e42da279c
Make improvements to HttpClient, add Uri
2023-03-08 01:54:33 +00:00
313f0e2e73
Add HttpClient API
2023-03-07 23:10:06 +00:00
04bf8ca1a1
Document Uia API.
2023-03-07 00:28:52 +00:00
f1e565ef7b
Update Json man page.
2023-03-06 22:21:56 +00:00
0ac21d430a
Document User API
2023-03-06 22:09:57 +00:00
e4ec250d8f
Apply modified #57 : Implement logout all.
2023-03-03 22:49:37 +00:00
5d590df83d
Remove DB_MIN_CACHE because that's dumb.
...
You should be able to totally disable the cache if you so please. This
should ensure Telodendria uses less memory on constrained systems.
2023-03-03 14:26:10 +00:00
676d6f4c61
Basic formatting.
2023-03-02 22:32:47 +00:00
d899a836b6
Apply #54
2023-03-02 22:06:33 +00:00
7a951c980f
Cleanup old user interactive auth sessions.
2023-03-01 19:52:44 +00:00
8c4e6aa594
Implement DbList()
2023-03-01 19:33:25 +00:00
ce6d483135
Implement static login page.
2023-03-01 19:03:42 +00:00
334a711b02
Fix compile error.
2023-03-01 01:23:52 +00:00
63634407d4
Update TODO.txt, add stub functions in Db.
2023-02-28 18:44:02 +00:00
16c31b63d7
Begin work on static login page.
2023-02-28 17:52:09 +00:00
36169181dd
Build basic framework for creating static pages.
...
The login fallback, as well as the user-interactive authentication
fallbacks, are static HTML pages.
2023-02-28 16:51:40 +00:00
fae9eb4473
Implement password-based user interactive authentication.
2023-02-28 15:17:11 +00:00