Commit Graph

160 Commits

Author SHA1 Message Date
Jordan Bancino e13442c122 Fix strange behavior in TlsLibreSSL.
tls_read() and tls_write() may return TLS_WANT_POLLIN or TLS_WANT_POLLOUT
if data isn't ready to be read or written yet. We have to account for this
by converting it to EAGAIN, which is how a typical read() or write()
function should behave.

Also installed a SIGPIPE handler; we do not want to be terminated by
SIGPIPE, and it's safe to ignore this signal because it should be
handled thoroughly in the code.
2023-03-23 16:39:15 +00:00
Jordan Bancino 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
Jordan Bancino fccd15b239 Don't unconditionally close standard input; it may have been used and
closed before. If it was never used, it was never opened.
2023-03-22 18:12:46 +00:00
Jordan Bancino b8d00bc8bf Make td run warn if Memory.txt gets created. 2023-03-22 14:57:57 +00:00
Jordan Bancino b58ca7d22e Start working on adding TLS support to HttpServer. 2023-03-22 01:46:24 +00:00
Jordan Bancino 6561b5bae1 Add TLS build support to td. 2023-03-22 01:17:42 +00:00
Jordan Bancino d1b4ecff48 Apparently the order of LDFLAGS matters to some compilers.
Also don't to -pg in debug mode, because that's not supported on all
compilers either.
2023-03-22 00:13:27 +00:00
Jordan Bancino 63d07365db Don't close standard output twice, that leads to a segfault! 2023-03-22 00:12:04 +00:00
Jordan Bancino 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
Jordan Bancino 65f4c90df3 Rename HttpStream() to HttpServerStream() to match HttpClientStream() 2023-03-16 02:17:48 +00:00
Jordan Bancino 5dbaf3c223 Apply #65, remove printf() in Db, and make tt show login messages. 2023-03-15 13:36:49 +00:00
Jordan Bancino 62cd1cdc98 Misc changes. 2023-03-12 03:37:57 +00:00
Jordan Bancino 64add9c9ab Fix unused variable warning. 2023-03-10 20:12:25 +00:00
Jordan Bancino 3037f12907 Add tt and http-debug-server tools. 2023-03-10 18:48:52 +00:00
Jordan Bancino 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
Jordan Bancino fd12dee62e Make sure a newline is printed after JSON object is pretty-printed. 2023-03-10 04:30:56 +00:00
Jordan Bancino 8ead9cc93a Apply #63, make some general bug fixes. 2023-03-10 03:24:04 +00:00
Jordan Bancino 7344d4fa46 Apparently some shells interpret the - in a string as an argument delimiter??? 2023-03-09 02:49:14 +00:00
Jordan Bancino ca053a12b1 Break out main() into Main.c, fix some compile warnings on Cygwin. 2023-03-09 02:46:04 +00:00
Jordan Bancino 9a1300ff2e Make sure input is initialized. 2023-03-09 02:22:13 +00:00
Jordan Bancino 012c334ee5 Make send-patch use json instead of jq. 2023-03-09 00:06:15 +00:00
Jordan Bancino 20ebeb9c32 Switch tp from using jq to json; format td 2023-03-08 22:47:40 +00:00
Jordan Bancino efdf168085 Allow encoding user-provided strings. 2023-03-08 20:31:49 +00:00
Jordan Bancino 50e599f1cd Implement a mostly-functional query language for JSON. 2023-03-08 19:49:06 +00:00
Jordan Bancino 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
Jordan Bancino 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
Jordan Bancino 19e89110cd Bump version number to v0.3.0 2023-03-08 03:46:38 +00:00
Jordan Bancino 1a169d1a2e Fix usage message. 2023-03-08 03:31:34 +00:00
Jordan Bancino 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
Jordan Bancino fc8fbc9a70 I forgot to set the date in the changelog. 2023-03-07 00:51:16 +00:00
Jordan Bancino 17734c90e8 This is unnecessary. 2023-03-06 23:54:55 +00:00
Jordan Bancino 154e5b82df Looks like CVS is being weird with Mdocdate strings. 2023-03-06 23:51:55 +00:00
Jordan Bancino 7750963c29 Something weird is going on here. 2023-03-06 23:49:30 +00:00
Jordan Bancino 8c2ed1c8f1 Apply #59 2023-03-04 15:34:44 +00:00
Jordan Bancino 55b3728e7e Bake the platform name into the version number.
This is helpful as we're porting to different operating systems. I guess
it just makes the porting effort more satisfying. Seeing this header
makes me happy:

Server: Telodendria/0.2.0-Haiku
2023-03-01 03:19:21 +00:00
Jordan Bancino 2b77681763 Move getent check to common.sh 2023-03-01 03:11:10 +00:00
Jordan Bancino dd1b26bad8 Only use getent if the command can be found. 2023-03-01 03:09:46 +00:00
Jordan Bancino 755d08946a Add some more obscure platforms to td build script. 2023-03-01 03:08:53 +00:00
Jordan Bancino 2e1220621c Use -pipe, supposedly this speeds things up.
The codebase is getting kind of big, we'll need all the help we can get.
2023-03-01 01:26:34 +00:00
Jordan Bancino 26b0f33f96 -not is not portable, grep -v should work good enough though. 2023-02-24 02:02:47 +00:00
Jordan Bancino d81e8f3a32 We're building up some tools; let's print them out in env.sh 2023-02-17 18:26:08 +00:00
Jordan Bancino b05e81776a Be smart about the type of man page we generate. 2023-02-16 17:22:32 +00:00
Jordan Bancino c78dc3bd31 Fix a memory bug in StrRandom() with RandIntN().
We're storing integers in this buffer, so we have to allocate enough
memory for them. An integer is usually more than one byte.
2023-02-16 13:10:09 +00:00
Jordan Bancino 1f1cbc0461 Fix a bad jq parameter. 2023-02-16 02:01:25 +00:00
Jordan Bancino 2ce43ce457 Add a script for conveniently creating new library man pages. 2023-02-16 00:55:10 +00:00
Jordan Bancino cebc2959cc Fix a few things that were bothering me. 2023-02-15 21:53:39 +00:00
Jordan Bancino 50aa65617a Fix some bugs in the man page index generation. 2023-02-15 16:00:36 +00:00
Jordan Bancino de0ece10e2 Use generated tables instead of hand-crafted tables. 2023-02-15 03:30:52 +00:00
Jordan Bancino 27c4713e5d I actually decided I don't like this. 2023-02-11 00:07:18 +00:00
Jordan Bancino 71a0181a6a Break out static options into an environment variable.
This allows users to turn off static compilation if the compiler or linker
throws a fit about it. Looking at you, Glibc. And PCC doesn't seem to like
static compilation either; it generates a binary that just segfaults
immediately on executation.
2023-02-05 14:46:20 +00:00
Jordan Bancino 056804810f Fix man page links on website. 2023-01-17 13:53:31 +00:00
Jordan Bancino 9186cdb13d Verbose formatting on the terminal, because why not? 2023-01-10 01:21:35 +00:00
Jordan Bancino a7ab3e757a Apply #43 2023-01-09 18:20:19 +00:00
Jordan Bancino 02884b6bdb Fix typo. 2023-01-09 18:01:32 +00:00
Jordan Bancino a09e15f6bc Don't output server response. 2023-01-09 18:00:14 +00:00
Jordan Bancino cdb26b5223 Make Telodendria Bot retry fetching if it failed. 2023-01-09 17:56:24 +00:00
Jordan Bancino 90a74c3b0a Don't accept connections if the connection queue is full. 2023-01-09 17:44:12 +00:00
Jordan Bancino 148706b517 Use spaces instead of tabs. Tabs don't work over SSH? 2023-01-07 19:22:38 +00:00
Jordan Bancino 472a6ccbf7 Clean up build output on terminals.
If we're not writing out to a terminal, then echo each file out as it is
being compiled. Otherwise, if we are on a terminal, overwrite the previous
line.
2023-01-07 19:14:15 +00:00
Jordan Bancino 7cd9fe8bd7 Fix log output by changing __FILE__ 2023-01-06 23:00:18 +00:00
Jordan Bancino 69862a1e6e Use -ansi in compiler flags. I think this more well supported. 2023-01-01 21:16:20 +00:00
Jordan Bancino eeabe93e3f Revert using _POSIX_C_SOURCE.
It didn't fix the issue.
2022-12-24 00:51:49 +00:00
Jordan Bancino 2d1bfd8b74 Define _POSIX_C_SOURCE again. 2022-12-23 22:53:48 +00:00
Jordan Bancino f32e5eafce This release is getting too big to be 0.1.1 2022-12-18 20:11:32 +00:00
Jordan Bancino 5255c3f773 Fix whitespace issues in td 2022-12-14 01:00:52 +00:00
Jordan Bancino b63eeffb0f Implement variable substitution for site files.
It was such a pain to update the links in site/index.html for v0.1.0, so
this is necessary to prevent me from going insane manually updating all
these version numbers sprinkled everywhere.
2022-12-14 00:54:52 +00:00
Jordan Bancino 5d1451bf88 Bump version number 2022-12-13 20:36:03 +00:00
Jordan Bancino 6d5ef9d6ad Fix cvs tag command (for real this time) 2022-12-13 19:57:34 +00:00
Jordan Bancino 7533b9f6d1 That didn't work 2022-12-13 19:49:03 +00:00
Jordan Bancino 62fbbacfae Fix cvs tag command. 2022-12-13 19:45:29 +00:00
Jordan Bancino b5d55427b8 Update version number and website 2022-12-13 16:44:51 +00:00
Jordan Bancino a3502adf57 Add telodendria-changelog; prepare for v0.1.0 2022-12-13 15:59:40 +00:00
Jordan Bancino fb56c3fca6 Clean up output a little 2022-11-22 23:57:58 +00:00
Jordan Bancino dce9788adf Fix a bug when overriding CFLAGS with .env 2022-11-22 22:31:53 +00:00
Jordan Bancino 845658e0ac Obscure bug when using OpenBSD make 2022-11-20 01:40:55 +00:00
Jordan Bancino 71a6842302 Remove install/uninstall recipes, and replace telodendria-setup with package
man page.
2022-11-20 00:12:53 +00:00
Jordan Bancino d61770c772 Make mandoc link to man pages
Now web users can just click on the references and be taken to that page.
Unfortunately this generates a lot of broken links as well, for example
all the times I like to a system manual page that I don't copy to the
web server.
2022-11-19 23:15:08 +00:00
Jordan Bancino fb7363d97e Don't uninstall the configuration file. 2022-11-18 22:49:06 +00:00
Jordan Bancino fe29b9f848 Remove unit testing code.
Until I can do it properly, I don't want to do it at all.
2022-11-18 22:27:23 +00:00
Jordan Bancino 9494016d2d Apply #34 2022-11-13 17:10:25 +00:00
Jordan Bancino 6776db5ff9 Accept #33 2022-11-11 01:07:49 +00:00
Jordan Bancino 2c65f4925c Add install and uninstall recipes 2022-11-06 22:01:59 +00:00
Jordan Bancino 14223614ad Support incremental builds on DragonFlyBSD 2022-11-03 19:08:24 +00:00
Jordan Bancino d9991bbd77 Apparently _DEFAULT_SOURCE is required to compile on Linux. 2022-11-01 09:04:41 -04:00
Jordan Bancino 2791dbdcc8 When debugging, only set the required LDFLAGS.
This  allows us to actually use good debugging symbols when loading the
executable into something like lldb or gdb.
2022-10-28 08:43:58 -04:00
Jordan Bancino d32742bb25 Make "format" recipe less verbose 2022-10-24 13:30:18 -04:00
Jordan Bancino 14c79a901a Build improvements so we can easily port to more platforms. 2022-10-15 12:45:21 -04:00
Jordan Bancino 648ce5c4cc Remove NonPosix.h; it seems to be causing more trouble than it's worth. 2022-10-15 11:45:23 -04:00
Jordan Bancino e1827da071 As promised, we can now build on Windows with Cygwin. 2022-10-14 19:53:11 -04:00
Jordan Bancino 2d6b80a26e Move man pages into a proper man directory 2022-09-30 19:11:44 -04:00
Jordan Bancino b5d538f2ce Cleaned up argument parsing to match what was in the docs 2022-09-24 19:41:39 -04:00
Jordan Bancino 64eaecfdda Style man pages like the rest of the site. 2022-09-23 09:51:13 -04:00
Jordan Bancino b561c3f4fc Fix echo error 2022-09-23 09:07:06 -04:00
Jordan Bancino f19f543fd2 Fix up some broken links; make td more verbose when deploying website. 2022-09-23 09:04:16 -04:00
Jordan Bancino b85e443907 Move header.txt to LICENSE.txt 2022-09-22 17:54:56 -04:00
Jordan Bancino a0dbe31d42 Start cleaning up the website 2022-09-21 21:17:00 -04:00
Jordan Bancino 1eca0579bc Delete .orig files with clean 2022-09-21 20:11:11 -04:00
Jordan Bancino 2b72dd0dba Add a DCO 2022-08-25 07:16:07 -04:00
Jordan Bancino 935f9db626 Remove the redundant -ansi flag.
It's identical to -std=c89, and not all compilers support it.
2022-08-24 11:22:56 -04:00
Jordan Bancino 3bda6b89bb Use my $DISPLAY_NAME and $MXID in my messages as a signature. 2022-08-12 22:01:27 -04:00