Commit graph

492 commits

Author SHA1 Message Date
edee1288d8 Remove unused global variables. 2023-11-08 09:45:49 -05:00
4b90800a2b Fix leak in RouteConfig, update documentation.
Closes #15.
2023-11-07 01:26:26 -05:00
6e7f170768 Start working on #15. 2023-11-06 20:42:39 -05:00
1fee47a628 Use Makefiles instead of a custom script (#38)
This pull request also requires the use of the external [Cytoplasm](/Telodendria/Cytoplasm) repository by removing the in-tree copy of Cytoplasm. The increased modularity requires a little more complex build process, but is overall better. Closes #19

The appropriate documentation has been updated. Closes #18

---

Please review the developer certificate of origin:

1. The contribution was created in whole or in part by me, and I have
the right to submit it under the open source licenses of the
Telodendria project; or
1. The contribution is based upon a previous work that, to the best of
my knowledge, is covered under an appropriate open source license and
I have the right under that license to submit that work with
modifications, whether created in whole or in part by me, under the
Telodendria project license; or
1. The contribution was provided directly to me by some other person
who certified (1), (2), or (3), and I have not modified it.
1. I understand and agree that this project and the contribution are
made public and that a record of the contribution—including all
personal information I submit with it—is maintained indefinitely
and may be redistributed consistent with this project or the open
source licenses involved.

- [x] I have read the Telodendria Project development certificate of
origin, and I certify that I have permission to submit this patch
under the conditions specified in it.

Reviewed-on: Telodendria/Telodendria#38
2023-11-01 12:27:45 -04:00
7d3d84d969 Move Admin routes to /_telodendria/admin/v1 (with version number)
Closes #16.
2023-09-25 16:10:44 -04:00
bf1ce839d0 If HOST_NAME_MAX is undefined, use _POSIX_HOST_NAME_MAX.
Probably good enough. Closes #2
2023-09-25 16:02:09 -04:00
LoaD Accumulator
cb41716bf3 Implement #27 (#36)
Implements #27.

Co-authored-by: LoaD Accumulator <lda@freetards.xyz>
Co-authored-by: Jordan Bancino <jordan@bancino.net>
Reviewed-on: Telodendria/telodendria#36
Co-authored-by: LoaD Accumulator <lda@noreply.git.telodendria.io>
Co-committed-by: LoaD Accumulator <lda@noreply.git.telodendria.io>
2023-09-25 09:39:21 -04:00
LoaD Accumulator
0172fa083b Fixes issue #33 related to a memory issue, and format some code. (#35)
Fixes #33.

Co-authored-by: LoaD Accumulator <lda@freetards.xyz>
Reviewed-on: Telodendria/telodendria#35
Co-authored-by: LoaD Accumulator <lda@noreply.git.telodendria.io>
Co-committed-by: LoaD Accumulator <lda@noreply.git.telodendria.io>
2023-09-11 10:57:16 -04:00
array-in-a-matrix
5367ffca96 replaced .cvsignore with .gitignore 2023-09-06 11:45:44 -04:00
1c32e18c74 Json now uses Int64 for integers.
This should fix all timestamp errors on 32-bit systems in Cytoplasm and
Telodendria.
2023-08-13 03:11:40 +00:00
d565640455 Add schema for PDUs v1 and v3, the only unique PDU formats.
All other room versions use one of these two PDU formats.
2023-08-10 00:08:33 +00:00
bc71a7ec01 Add admin privilege to manage room aliases. 2023-08-09 15:50:03 +00:00
69d28f39d1 Begin working on room aliases.
These endpoints will help me build out some functionality that will be
needed when actually implementing rooms.
2023-08-09 15:19:45 +00:00
e0af88145e Add RouteCreateRoom stub. 2023-08-08 15:11:50 +00:00
6ef965d1e0 Apply patch to make MatrixErrorCreate() take a custom message. 2023-08-05 19:26:03 +00:00
78302d6320 Print admin registration token to configured log, not default stdout.
If Telodendria is started as a daemon and is logging to the syslog, we
want the token to show up in the syslog.
2023-08-05 14:12:02 +00:00
6ec87b8d76 Properly exclude Schema directories from showing up in CVS. 2023-08-05 14:03:08 +00:00
5f3220372e Implement filter validation by using j2s. 2023-08-05 13:46:23 +00:00
c96ac30f28 Fix Unicode handling in Json, don't sign-extend bytes in Stream. 2023-07-15 17:57:21 +00:00
a4330123b9 Add EventRedact() prototype. 2023-07-09 23:18:18 +00:00
b1c23ee53a Begin prototyping state resolution API. 2023-07-07 03:15:13 +00:00
bc8283f844 Begin prototyping room API. 2023-07-07 02:56:09 +00:00
539fde773f Fix CanonicalJson and ArraySort. 2023-06-21 02:37:56 +00:00
e3badbd55c Format source code. 2023-06-18 02:53:52 +00:00
861d4146c0 Add Filter API to validate filters and process events. 2023-06-18 02:53:06 +00:00
f9e1250d47 Begin working on filtering. 2023-06-17 19:09:06 +00:00
8bda70b1fb Refactor Sha API to return raw bytes, added Sha1() function. 2023-06-17 17:36:11 +00:00
96a1d3c3c4 Move stream assignment; this makes debugging easier. 2023-06-04 18:50:02 +00:00
faaa12c51f Re-add memory bounds checking.
Also fixed a recursive lock error in some configurations, and replaced
a usage of strcpy() with strncpy().
2023-05-29 23:53:17 +00:00
c206ec495d Format code. 2023-05-27 18:22:38 +00:00
34eb9ff670 Report memory hook issues as errors, segfault on error. 2023-05-25 18:26:17 +00:00
a4f369a0a9 Fix leak in HttpClient. 2023-05-21 13:55:49 +00:00
e71ffec164 Add some basic heap memory bounds protection. 2023-05-21 13:24:00 +00:00
f2f972bb9d Fix memory leaks in hdoc. 2023-05-15 22:38:52 +00:00
4043285413 Telodendria and all tools now use the Cytoplasm runtime stub.
This reduces the amount of manual work programs have to do, and gives us
some free features, like automatic leak reports in all tools.
2023-05-14 22:15:48 +00:00
8021cff122 Make Telodendria use Cytoplasm.
This commit removes all the duplicate code and makes Telodendria use the
new Cytoplasm library.
2023-05-14 19:35:23 +00:00
4d9c907b58 Attach device ID to authenticated user.
Now RouteWhoAmI can use UserAuthenticate just like the other endpoints.
2023-05-11 03:03:40 +00:00
c1c57fd4cf Make RandState thread-specific. 2023-05-11 02:17:04 +00:00
31866a14b4 Remove some extraneous whitespace from Util.c, not sure how that got there. 2023-05-07 12:08:26 +00:00
ebc3da9b23 Fix some compile warnings. 2023-05-06 23:06:13 +00:00
a2eec3946c I missed an instance of strcmp() 2023-05-06 23:02:46 +00:00
0b11b97022 Add StrEquals(), as equality checking is the most common use for strcmp().
This allows us to get rid of the hideous MATRIX_PATH_PART_EQUALS macro,
and prevents inconsistent usage of strcmp() (for example, !strcmp() vs
strcmp() == 0).

StrEquals() also has sensible behavior for dealing with NULL strings (it
doesn't just segfault like strcmp()).
2023-05-06 22:34:36 +00:00
0e69a12784 Register route. 2023-05-06 22:06:54 +00:00
2a87583d2f Add /_matrix/client/v3/account/deactivate 2023-05-06 22:06:23 +00:00
95ceba0645 Add length calculations to JsonEncode() so we can set Content-Length. 2023-05-06 19:23:13 +00:00
bbea55be6c Document http-debug-server, fixed typo in HttpServer docs. 2023-05-06 18:21:21 +00:00
872fa1aa66 More documentation. It never ends! 2023-04-29 19:52:51 +00:00
e0c94d7bd2 Site now pulls built man pages. 2023-04-29 18:39:01 +00:00
f819093b7d Don't spew unknown expression warnings if @suppress-warnings is set. 2023-04-29 15:28:42 +00:00
0b1b4a8b29 Cope with preprocessor macro usage at the top level of the header.
This workaround allows us to parse the Routes.h properly, although it
notably lacks support for multi-word unknown expressions.
2023-04-29 15:24:46 +00:00
a3cc06ff2a Fix line numbers when parsing multi-line macros. 2023-04-29 15:16:58 +00:00
2d8d5244c4 Document some new headers. 2023-04-29 15:04:16 +00:00
b70c3f0bed Finish converting all existing documentation. Next up is writing new docs. 2023-04-29 02:54:49 +00:00
71fa96d10d Format source code. 2023-04-27 20:05:08 +00:00
a00ded6d06 Add support for parsing global variables, not just function declarations. 2023-04-27 20:04:15 +00:00
9292f1d9da Add docs recipe for generating documentation from the headers.
Note that since all the headers are not documented yet, this will fail
because an undocumented function is a fatal error in hdoc.
2023-04-27 18:39:05 +00:00
9880aac674 Split format recipe into format and license.
Format formats only C source code. License applies the license file to
C source code *and* header files.
2023-04-27 18:03:32 +00:00
24a03ba126 Added some more header documentation. 2023-04-27 18:00:26 +00:00
95cb14213f Add support for return types that are const, structs, or enums. 2023-04-27 16:02:15 +00:00
6e976a2b8d Fix line counts on syntax errors. 2023-04-27 15:54:21 +00:00
72467f6503 Begin moving documentation to headers. 2023-04-27 03:08:39 +00:00
2447bb63cc Add hdoc, a simple tool for generating documentation from a C header.
This is a very early prototype. It works, but it is probably not efficient
or reliable. However, the documentation format it parses is stable, so I
will begin moving the documentation into the headers.
2023-04-27 01:34:49 +00:00
459b2e856f Format source code. 2023-04-25 22:13:28 +00:00
96ca9a725d Finish up capabilities for now. 2023-04-25 22:11:34 +00:00
e1367d5bff Use snprintf() instead of sprintf().
All linker warnings should now be eliminated.
2023-04-25 22:01:58 +00:00
d83db35df0 Use strncpy() instead of strcpy().
The OpenBSD linker is complaining about it. Even though every single
case strcpy() was used is safe, strncpy() provides a little bit of extra
security, and makes the linker happy.
2023-04-25 21:54:51 +00:00
d933d12e1b Make Rand use a provided Mersenne Twister.
This implementation is loosely inspired by the original paper on the
Mersenne Twister, and borrows code from a public-domain implementation of
it, adapting it to fit the style of Telodendria's code, and fixing a few
bugs regarding the size of the data type used.

Neither C nor POSIX provide a good, thread-safe pseudorandom number
generator. The OpenBSD linker started complaining about the use of
rand_r(), and no standard alternative presented itself as worthy of
consideration, so I finally decided it was time to roll my own PRNG.
2023-04-25 21:28:55 +00:00
098eed44a0 Fix bug in MatrixWellKnown(), begin /_matrix/client/v3/capabilities 2023-04-25 18:37:25 +00:00
05cf076ebc Begin debugging OpenSSL. 2023-04-24 17:05:59 +00:00
a525830b64 Telodendria now responds correctly to SIGTERM. 2023-04-24 16:23:50 +00:00
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