Commit graph

147 commits

Author SHA1 Message Date
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
e2806bc810 Add UserIdParse() and UserIdFree() functions.
The spec says that a username can be either just the localpart, or a
localpart and a server. This commit now ensures that the login endpoint
actually handles usernames properly by calling the proper parsing
functions.
2023-02-28 13:44:34 +00:00
6ce6cb4525 Implement flow handling in Uia API.
This commit should fix user interactive authentication for dummy flows,
but I still have to implement a few more flows, including passwords and
refresh token. I also have to fix the cleanup logic: when do we purge
UIA sessions?
2023-02-27 15:39:12 +00:00
adea499813 Add UiaFlowsFree() function, and clean up some memory issues. 2023-02-24 14:40:21 +00:00
b60cac53e5 Make JsonValueString() call StrDuplicate(); refactor code to behave properly. 2023-02-24 00:17:56 +00:00
8c96fd8d7d Begin the great StrDuplicate() refactor. 2023-02-23 23:19:23 +00:00
b99e8bd1cd Apply modified #50 and fix some misc. bugs. 2023-02-23 15:13:39 +00:00
3bbff5379f [WIP] Replace UserInteractiveAuth with a new Uia API.
Uia is a lot less characters to type. Do note that this API is far from
complete and this commit breaks user interactive authentication entirely.
2023-02-19 14:58:56 +00:00
fa88fc3323 Format source code. 2023-02-17 03:23:25 +00:00
4b336de171 Build out the User API a bit more. 2023-02-17 03:18:24 +00:00
46fe667988 Add HashMapGetKey() so we can free bucket keys before deleting them. 2023-02-17 03:14:43 +00:00
72405a94f6 Add JsonGet(), JsonSet(), and JsonCreate() for convenience. 2023-02-16 18:49:19 +00:00
d255ce1a21 Begin working on refresh route. 2023-02-16 17:22:59 +00:00
6a593ab8a0 [#48] Add Rand API and make StrRandom() use it. 2023-02-16 00:31:13 +00:00
f7d581538d Begin documenting Str. 2023-02-14 11:56:22 +00:00
5fef788053 Begin documenting User API 2023-02-12 02:31:14 +00:00
e0f7c133d1 Add a non-JSON landing page. This is the basis for other HTML pages. 2023-01-17 20:29:16 +00:00
b0b2f11158 Refactor endpoint authentication flow.
Instead of one MatrixAuthenticate() function, we'll do
MatrixGetAccessToken(), and then UserAuthenticate(). This allows us to
give different error messages depending on what the user provided and what
the server state is.
2023-01-17 01:36:22 +00:00
cc95c10f44 Move client well-known generation to MatrixClientWellKnown() function.
We'll be using this for client login.
2023-01-16 22:02:08 +00:00
121682c006 Implement user login. 2023-01-16 21:17:44 +00:00
599fa1a740 Document MemoryHexDump() and DbExists() 2023-01-09 21:39:59 +00:00