Commit graph

222 commits

Author SHA1 Message Date
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
c5bce0b14f Apply #43 with modifications. 2023-01-09 19:22:09 +00:00
30c3690287 Renamed String.h to Str.h because Windows is dumb. 2023-01-08 04:38:06 +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
e9aebab221 Move hex dump logic to Memory API. 2023-01-01 22:10:23 +00:00
1a43ea6470 Fix bugs in Cron 2022-12-26 16:28:58 +00:00
3c8d89a52e Update copyright year 2022-12-26 15:52:52 +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
c18a9a96e6 Add job scheduler.
This will be used for expiring sessions and tokens, among other things that
need to happen periodically.
2022-12-24 21:49:37 +00:00
94493e6ad8 Add Sha2 2022-12-19 22:15:41 +00:00
c0bd70a391 Add MatrixUserValidate() and MatrixHistoricalUserValidate() 2022-12-18 20:20:08 +00:00
836b61dc42 Begin implementing a few helper functions 2022-12-16 22:06:01 +00:00
fb06d17b16 Abstract user interactive auth out to function. 2022-12-16 20:08:16 +00:00
4f2f7cd966 Add random string generator 2022-12-15 03:41:59 +00:00
c8cd2cebb7 Implement DbDelete() 2022-12-15 02:39:58 +00:00
0305ef183d Begin work on RouteRegister 2022-12-14 15:40:23 +00:00
aaa97f8752 Format code 2022-12-13 13:24:54 +00:00
e17b64dcb2 Document Routes 2022-12-12 17:34:59 +00:00
e7030ec57a Document Matrix.h 2022-12-12 16:59:13 +00:00
d56aaa921d Fully abstract route paths, move them to Routes.h. 2022-12-11 00:14:22 +00:00
323dad1f8b Document TelodendriaConfig 2022-12-10 23:34:32 +00:00
8acc21db7c Add RouteLogin() 2022-12-10 15:41:33 +00:00
fb5a8e4587 Convert configuration file to JSON 2022-12-09 23:57:30 +00:00
01a6d71101 Remove Constants.h 2022-11-30 18:30:39 +00:00
5771e615d7 Document CanonicalJson 2022-11-30 18:23:25 +00:00
439e14a410 Format header 2022-11-30 17:59:19 +00:00
5610cafe46 Document Json 2022-11-30 17:54:10 +00:00
6900d0649e Begin working on Util man page 2022-11-25 21:54:57 +00:00
8045c583ba Write man page for Log 2022-11-25 16:40:47 +00:00
70bdf81df7 Fix references to old LOG_ constants 2022-11-24 18:51:07 +00:00
789baf33a1 Make Db interfaces take varargs.
This makes it much more flexible, at the expense of making it a little
more fragile. I can think of a number of scenarios where we'll have
paths that have variables in multiple spots, and I don't want to do
sprintf() magic every time I need to access an object at one of those
paths.
2022-11-21 20:31:37 +00:00
0c6c1e5b19 Notify the user about the minimum max-cache instead of silently setting it. 2022-11-21 16:22:50 +00:00
e7ad166877 Fix some memory leaks in Db 2022-11-18 19:36:15 +00:00
d26fad4619 Add UtilMkdir() to recursively make directories 2022-11-17 22:57:29 +00:00
46cc1df385 Do some Db work 2022-11-15 18:20:05 +00:00
a356403cfd Finish DbComputeSize() 2022-11-12 18:26:31 +00:00
84abff7fb8 Tune the memory table size a little bit.
No idea if this hurts or helps, actually, but now we have a tunable
constant, instead of a magic number.
2022-11-02 16:46:22 +00:00
a8beded518 Fix occasional "Bad Request" response by waiting for data to be sent.
This also makes UtilGetDelim() and UtilGetLine() thread safe in that it
isn't setting a global errno. Of course, errno should be thread safe
already, but this makes it much less ambiguous.
2022-11-02 16:21:03 +00:00
63dbf9ae35 Fix a few more memory bugs. Still have some to tackle. 2022-10-31 19:52:37 -04:00
ead65e7334 Fixed some misc bugs I found while debugging a memory error. 2022-10-31 11:07:32 -04:00
bcff59bacb Store memory info in the allocated block, not as a separate block.
This will eventually enable us to get memory information in O(1) time.
Right now, we're still O(n) because MemoryInfoGet() still has to check to
see if the allocation is known or not.
2022-10-28 14:07:44 -04:00
f90b987218 Add a Db to the matrixArgs so that routes can access it. 2022-10-24 14:36:48 -04:00
624b080d47 Add max-cache option to the config file 2022-10-24 13:40:21 -04:00
e009536065 Begin prototyping persistent storage API 2022-10-24 12:44:29 -04:00
b645a0b2c1 Hook param parsing into the request logic. 2022-10-15 16:28:32 -04:00
648ce5c4cc Remove NonPosix.h; it seems to be causing more trouble than it's worth. 2022-10-15 11:45:23 -04:00
4707f0f4c8 Clean up some NonPosix.h stuff so we can build on Linux.
It appears that SOCK_NONBLOCK is not actually POSIX. According to the
OpenBSD man page, it will be soon, and according to the Linux man page,
it is a Linux extension. However, fcntl() with O_NONBLOCK seems to be
portable across both systems.
2022-10-15 10:08:52 -04:00
bb93cae99a Remove non-standard __FUNCTION__ use.
This cripples the Memory API just a little bit, but I'm sure we'll still
get useful enough information.
2022-10-15 09:34:47 -04:00
0c03c71081 Allow logging to the syslog 2022-10-14 20:55:15 -04:00
945acd1adf Format source code 2022-10-13 09:09:26 -04:00
8ae86b18fe Add hook functionality so we can log allocations and deallocations. 2022-10-13 08:50:27 -04:00
2d49ac78b8 Add custom memory management code.
This will be helpful in detecting leaks among other things, and may help
with controlling the cache size as well.
2022-10-12 21:29:05 -04:00
1353fa6429 Remove chroot option; log into the data directory automatically. 2022-10-11 12:00:36 -04:00
5d9b0df0bf Remove the redundant chroot option. This simplifies the config a bit. 2022-10-11 11:38:34 -04:00
414b8d47be Add HashMapFunctionSet() to allow custom hash functions. 2022-10-11 09:27:34 -04:00
744f38784c Finish HashMap documentation 2022-10-10 15:08:19 -04:00
6b57fc45a2 Implement param encoding, clean up warnings in decoding function. 2022-10-03 13:40:29 -04:00
271cdd8ff0 Abstract the data structure out of the path handling logic. 2022-09-30 12:48:45 -04:00
45324ce77a Implement /_matrix/client/versions and /.well-known/matrix/client 2022-09-29 13:41:26 -04:00
acffd82b48 Move Base64 documentation to man page. 2022-09-27 16:13:59 -04:00
5ecb810a88 Move Array documentation to man page. 2022-09-24 21:35:52 -04:00
21894489cb Rename MatrixCreateError() to MatrixErrorCreate() 2022-09-16 11:49:48 -04:00
d0fb926f2a Add error generation logic. 2022-09-16 11:27:34 -04:00
13763eb77b Format code 2022-09-14 17:15:39 -04:00
1d0c48ce32 Add constants 2022-09-14 16:57:19 -04:00
685b7c016d Start work on param parsing. 2022-09-08 21:09:47 -04:00
c607ba05a9 Implement URL encoding and decoding. 2022-09-06 20:48:27 -04:00
7cc08e67fc Begin Matrix-specific work. 2022-08-28 15:55:48 -04:00
4cd24a6e97 Finally getting into Matrix territory 2022-08-28 15:45:24 -04:00
d7d960b77d Parse HTTP requests and invoke the request handler. 2022-08-28 14:30:15 -04:00
43c46fd45c Fix compile and runtime errors 2022-08-26 20:15:27 -04:00
275d06c127 Begin prototyping the HttpServer API 2022-08-26 11:07:54 -04:00
f950233dbc Add UtilSleepMillis() function. 2022-08-24 19:30:20 -04:00
be001fb17a Make HttpServer utilize Queue. 2022-08-24 10:06:14 -04:00
ab4afe1587 Add basic Queue implementation. 2022-08-24 09:06:27 -04:00
315589cd1b Accept #29 2022-08-21 12:35:16 -04:00
538412d1c2 Apply #26 2022-08-12 21:30:03 -04:00
30ae6586b2 Accept #28, with modifications. 2022-08-12 19:32:06 -04:00
d9c944871a Abstract socket creation and binding behind the HttpServer API. 2022-08-11 20:13:10 -04:00
e94212b080 Bind to socket; HTTP server event thread; signal handling. 2022-08-11 19:40:13 -04:00
9cf2266ece Make TelodendriaConfigParse() actually validate the listenPort.
I want to already have a valid port number by the time we need to bind
to it.
2022-08-11 11:50:35 -04:00
4304a28302 TelodendriaConfigParse() doesn't modify the LogConfig.
Also pledge() and unveil() as soon as possible, to avoid the log file
breaking out.
2022-08-10 21:13:05 -04:00
cdd7808642 Prototype the configuration file parser.
Right now there's a nasty memory bug I need to fix. Will have to run this
through valgrind.
2022-08-09 20:05:41 -04:00
fa0bd9a7c6 Apply #14 2022-07-29 15:36:21 -04:00
8e8ac04505 Start documenting the headers. 2022-07-29 12:32:52 -04:00
b3e71c32fd Update license text. 2022-07-28 12:00:52 -04:00
c991d93444 Add license headers to all source files. 2022-07-28 11:15:04 -04:00
6b8d0f6d5f Add canonical Json implementation. 2022-07-27 17:28:05 -04:00
c143136097 Implement JsonFree(), make string handling UTF-8 aware. 2022-07-27 17:27:34 -04:00
39af3c2194 Add ArraySort() 2022-07-27 15:31:34 -04:00
4c7ec4af56 Add UtilUtf8Encode() and UtilServerTs() 2022-07-27 13:47:20 -04:00
bc849819d9 Make HashMap and Json conform to C89.
Clang on OpenBSD didn't catch this, but GCC on Linux did.
2022-07-27 09:47:22 -04:00
ace2682dec Rework HashMapIterate to be more flexible.
We now get the keys, and we don't have to operate within the confines
of a callback function.
2022-07-25 21:31:09 -04:00
580b036d26 Add key to bucket, make iteratorFunc in HashMapIterate take it. 2022-07-25 16:26:30 -04:00
3437c5db2c Format headers as well.
indent(1) does a weird thing with prototype functions, but it's good
enough for me, as long as it's consistent.
2022-07-25 15:25:06 -04:00
d102ba8676 Initial revision 2022-07-22 20:19:12 -04:00