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
6a5d89e14b
Work on implementing user interactive authentication fallback.
2023-04-21 02:13:06 +00:00
687b89a83a
Add some more user documentation to clarify how configuration works.
2023-04-20 01:39:09 +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
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
768ecda41a
Break up todo items into more milestones.
2023-04-15 13:31:08 +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
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
9b21e2460a
Accept #67 : Add the password modification endpoint.
2023-03-28 01:17:47 +00:00
a9da9fbca7
Update TODO
2023-03-27 17:52:20 +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
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
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
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
6c9e939b9f
Fix broken IoVprintf().
...
You can't call vsnprintf() on the same va_list more than once! I learned
this the hard way with StreamVprintf().
2023-03-18 14:55:04 +00:00
e0a3760a37
Don't buffer in IoWrite(), indicate that fwrite() returns size_t, not ssize_t.
2023-03-16 14:17:04 +00:00
65f4c90df3
Rename HttpStream() to HttpServerStream() to match HttpClientStream()
2023-03-16 02:17:48 +00:00
ff52cc78dc
Update TODO
2023-03-15 17:30:14 +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
c32c3abfd6
Update TODO
2023-03-09 00:10:32 +00:00
efdf168085
Allow encoding user-provided strings.
2023-03-08 20:31:49 +00:00
50e599f1cd
Implement a mostly-functional query language for JSON.
2023-03-08 19:49:06 +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
cb8c4fceb5
Begin working on JSON CLI tool.
...
This is a similar situation to the HTTP CLI tool: since we have the
Json API anyway, we might as well have a little command line tool to
replace jq.
2023-03-08 04:06:43 +00:00
19e89110cd
Bump version number to v0.3.0
2023-03-08 03:46:38 +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
313f0e2e73
Add HttpClient API
2023-03-07 23:10:06 +00:00
cfba96edee
Prepare for v0.2.0 release.
2023-03-07 00:44:53 +00:00
04bf8ca1a1
Document Uia API.
2023-03-07 00:28:52 +00:00
f2c2888c87
Document DbList() and DbListFree()
2023-03-06 22:29:46 +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
c8c4c705a5
Convert proposals to man pages.
2023-03-04 20:26:16 +00:00
0cbdb5f615
Multi-stage flows should theoretically work now.
2023-03-04 01:53:33 +00:00
e4ec250d8f
Apply modified #57 : Implement logout all.
2023-03-03 22:49:37 +00:00
97990c5009
Get some more of my thoughts in the TODO file.
2023-03-03 18:56:36 +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
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
63634407d4
Update TODO.txt, add stub functions in Db.
2023-02-28 18:44:02 +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
d89e3fd753
Update TODO
2023-02-27 17:25:39 +00:00
7703405c70
Fix bugs in Json API.
2023-02-26 15:07:46 +00:00
31be432f7a
Just discovered some bugs in Json.
2023-02-25 16:35:33 +00:00
d517b66316
Also delete refrsh token if present for device.
2023-02-24 01:06:02 +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
41421557e0
Update TODO.
2023-02-23 16:46:27 +00:00
4f562167f6
Update TODO
2023-02-23 16:20:15 +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
3faee8b432
Update TODO items.
2023-02-17 15:03:59 +00:00
ff879e715f
Finish implementing token refresh.
...
This implementation just keeps the refresh token and only updates the
access token. The spec says that this is allowed. There's really no
reason to do this, other than the fact that it's easier.
2023-02-17 03:20:49 +00:00
72405a94f6
Add JsonGet(), JsonSet(), and JsonCreate() for convenience.
2023-02-16 18:49:19 +00:00
cebc2959cc
Fix a few things that were bothering me.
2023-02-15 21:53:39 +00:00
a7c1ccd3f1
Update lots of documentation.
2023-02-15 01:32:44 +00:00
653d282bcd
Document User API.
2023-02-14 02:02:22 +00:00
5b77236e82
Fix -v option
2023-01-17 21:38:39 +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
4e742d5179
Define project timeline a little more.
2023-01-17 19:05:26 +00:00
70fd61cd23
Bring change log up to date-ish.
...
Next release I'll try to stay on top of this more.
2023-01-17 17:39:31 +00:00
056804810f
Fix man page links on website.
2023-01-17 13:53:31 +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
599fa1a740
Document MemoryHexDump() and DbExists()
2023-01-09 21:39:59 +00:00
c5bce0b14f
Apply #43 with modifications.
2023-01-09 19:22:09 +00:00
80ff232af9
Update TODO
2023-01-08 04:39:01 +00:00
08b36c071c
Begin prototyping User.h
2023-01-07 15:51:56 +00:00
0a29aa7f5a
Move string related functions to a new String API.
...
I think we have accumulated enough string functions that they should
have their own API. This shortens the function names a bit too.
2023-01-07 04:33:32 +00:00
2ce09f8632
Convert UtilStringConcat() into a varargs function.
...
This allows us to concatenate an arbitrary amount of strings without
having to maintain a bunch of pointers or leak memory when nesting calls.
2023-01-07 03:17:06 +00:00
0c807d0f22
Cross an item of TODO
2023-01-07 00:42:11 +00:00
c63715c2e7
Update TODO
2023-01-06 21:17:55 +00:00
e9aebab221
Move hex dump logic to Memory API.
2023-01-01 22:10:23 +00:00
c9e42ff813
Break out UserInteractiveAuth into its own header.
...
We'll need this because user interactive auth will get complicated and
messy very soon.
2022-12-26 15:48:21 +00:00
94493e6ad8
Add Sha2
2022-12-19 22:15:41 +00:00
f32e5eafce
This release is getting too big to be 0.1.1
2022-12-18 20:11:32 +00:00
f837988156
Begin work on validating registration request.
2022-12-16 22:56:35 +00:00
fb06d17b16
Abstract user interactive auth out to function.
2022-12-16 20:08:16 +00:00
f475cac601
More validation in user-interactive API
2022-12-15 21:47:08 +00:00
bee07d90fc
Fix memory leaks in database.
2022-12-15 20:29:19 +00:00
c3618488f2
Hexdump leaked memory to the log for debugging.
2022-12-15 20:18:12 +00:00