Update README, config template, restructure documentation

FossilOrigin-Name: f11602e6271c422280fd8474abf2ef63ec6021e144e8359f0ff145e423ad1333
This commit is contained in:
me@ow.nekobit.net 2022-03-21 19:35:29 +00:00
parent 3bfedc3d32
commit 341aa3fa1a
9 changed files with 107 additions and 54 deletions

1
.gitignore vendored
View file

@ -3,3 +3,4 @@ filec
**/*.o
**/*.chtml
mastodont-c
config.h

View file

@ -1,40 +0,0 @@
# Installing Treebird
## Compiling
You need the following libraries / packages:
- libcurl
- Debian: `libcurl4-gnutls-dev`
- libcjson
- Debian: `libcjson-dev`
- Arch: `cjson`
- libpcre3
- Debian: `libpcre3-dev`
First, edit `config.h` to your instance's liking.
`make` will clone the library, and compile both it and the project.
`make update` should be run after updating, as it ensures both the library and the project are up to date.
## Deploying
After running `make`, Treebird's files will be in the `dist/` directory. _Copy_, ***DO NOT MOVE***, **everything but treebird.cgi** of this folder to your web server. Copy `treebird.cgi` to another directory of your choosing.
- The example static files will be in `/var/www/treebird/`, with `treebird.cgi` in `/usr/local/bin/treebird.cgi`.
### Using NGINX (and uWSGI) to serve Treebird
Treebird can be served over nginx by using a CGI server such as uwsgi.
#### nginx
An example nginx configuration is available in [treebird.nginx.conf](./treebird.nginx.conf).
* Make sure to change `example.com` to your instance's domain.
* Make sure to change the `root` to wherever the static files are being stored
#### uWSGI
uWSGI can be installed on debian with just `sudo apt isntall uwsgi`.
An example configuration is available in [treebird.uwsgi.ini](./treebird.uwsgi.ini). This should be copied to `/etc/uwsgi/apps-enabled/treebird.ini` on debian (and potentially other) systems.
##### Note: the uwsgi configuration file is currently very basic.

View file

@ -1,16 +1,28 @@
# Treebird
A pleroma frontend for cool people only.
![Treebird logo](./meta/treebird.png)
A very lightweight Pleroma frontend.
The goal is to create a frontend that's lightweight enough to be viewed without JS, but
usable enough to improve the experience with JS.
Treebird uses C with FCGI, mastodont-c (another library that complements Treebird) for
communication, and plain JavaScript (100% optional).
Treebird uses C with FCGI, mastodont-c (library designed for Treebird, but can be used
for other applications as well), and plain JavaScript for the frontend (100% optional).
## Isn't FCGI outdated?
## Why?
No.
PleromaFE, pleroma's default frontend, uses way too much Javascript to be usable (and doesn't even support
all of it's own API features...). BloatFE is great, but designed only around Mastodon's api, and isn't as
modern or as lightweight as it could be. Soapbox is soapbox and does soapbox things.
This led me to one choice, to develop my own frontend.
## Compatibility
Treebird respects compatibility with old browsers, and thus uses HTML table layouts, which are
supported even by most modern terminal web browsers. The core browser we aim to at least maintain compatibility
with is Netsurf, but most other browsers like GNU Emacs EWW, elinks, render Treebird wonderfully.
## Credits
@ -18,4 +30,4 @@ Please view the [`CREDITS`](./CREDITS) file.
## Installing
See [INSTALL.md](./INSTALL.md)
See [INSTALL.md](./docs/INSTALL.md) for instructions on Apache/Nginx.

View file

@ -16,7 +16,6 @@
*
* The software's recognizable name.
*
*
* Example: "treebird"
*/
@ -29,9 +28,9 @@ static char* const config_canonical_name = "treebird";
* This MUST include a slash at the end, and the protocol (like https://) at the
* beginning
*
* Example: "https://cum.desupost.soy/
* Example: "https://shitposter.club/"
*/
static char* const config_instance_url = "https://desuposter.club/";
static char* const config_instance_url = "https://my-instace.social/";
/*
* String: url_prefix
@ -41,7 +40,7 @@ static char* const config_instance_url = "https://desuposter.club/";
*
* Example: "/treebird.cgi"
*/
static char* const config_url_prefix = "/treebird.cgi";
static char* const config_url_prefix = "";
/*
* Bool: experimental_lookup
@ -62,6 +61,6 @@ static const int config_experimental_lookup = TRUE;
* Enables the test page which dumps all CGI cookies, useful when
* setting up a reverse proxy
*/
static const unsigned config_test_page = TRUE;
static const unsigned config_test_page = FALSE;
#endif // CONFIG_H

61
docs/INSTALL.md Normal file
View file

@ -0,0 +1,61 @@
# Installing Treebird
## Compiling
For the following GNU/Linux distributions, you will need the following libraries/packages:
- libcurl
- Debian: `libcurl4-gnutls-dev`
- Arch: `curl`
- Void: `libcurl libcurl-devel`
- libcjson
- Debian: `libcjson-dev`
- Arch: `cjson`
- Void: `cJSON cJSON-devel`
- libpcre
- Debian: `libpcre3-dev`
- Void: `libpcre2`
- libfcgi
- Void: `fcgi fcgi-devel`
Create a copy of `config.def.h` at `config.h`, edit the file with your information
Run `make`. This will also clone mastodont-c, and compile both it and Treebird.
If you `git pull` any changes, `make update` should be run after updating, as it ensures
the library is up to date.
## Installation
- TODO?
Run `make install`, this might require root.
If this succeeds (assuming you used default variables), you can now find Treebird at the following
- `/usr/local/share/treebird/` - Contains CSS, images, and other meta files
- `/usr/local/bin/treebird` - Regular executable CGI file, test it by running it as is, it'll spit HTML out!
### Using NGINX (and uWSGI)
Treebird can be served over nginx by using a CGI server such as uwsgi.
The example static files will be in `/var/www/treebird/`, with `treebird.cgi` at `/usr/local/bin/treebird`.
After running `make`, Treebird's files will be in the `dist/` directory. _Copy_, ***DO NOT MOVE***, **everything but treebird.cgi** of this folder to your web server. Copy `treebird.cgi` to another directory of your choosing.
#### nginx
An example nginx configuration is available in [treebird.nginx.conf](./sample/treebird.nginx.conf).
* Make sure to change `example.com` to your instance's domain.
* Make sure to change the `root` to wherever the static files are being stored
#### uWSGI
uWSGI can be installed on debian with just `sudo apt isntall uwsgi`.
An example configuration is available in [treebird.uwsgi.ini](./sample/treebird.uwsgi.ini). This should be copied to `/etc/uwsgi/apps-enabled/treebird.ini` on debian (and potentially other) systems.
##### Note: the uwsgi configuration file is currently very basic.
### Using Apache and mod_proxy_fcgi
TODO

View file

@ -0,0 +1,20 @@
# TODO a lot of things
# THIS IS UNTESTED AND INCOMPLETE, ITS JUST FOR REFERENCE
# Give access to our directory
<Directory "/usr/local/share/treebird/dist">
Require all granted
</Directory>
<VirtualHost *:80>
DocumentRoot "/usr/local/share/treebird/dist"
# Intercept meta files to be loaded before proxy
RewriteEngine on
RewriteRule ^/(.*).css /$1.css [L]
RewriteRule ^/(treebird\_logo|favicon).png /$1.png [L]
# Set PATH_INFO variable
SetEnvIf Request_URI . proxy-fcgi-pathinfo=1
ProxyPass / "fcgi://localhost:4000/"
</VirtualHost>

View file

@ -40,7 +40,7 @@ int main(void)
// Global init
mastodont_global_curl_init();
unsigned run_count = 0;
unsigned run_count = 1;
// API
for (;FCGI_Accept() >= 0; ++run_count)
@ -75,8 +75,6 @@ int main(void)
{ "/notifications", content_notifications },
};
printf("Run: %d\r\n", run_count);
handle_paths(&api, paths, sizeof(paths)/sizeof(paths[0]));
// Cleanup
@ -88,6 +86,8 @@ int main(void)
// can't even think reading them
memset(&cookies, 0, sizeof(cookies));
memset(&post, 0, sizeof(post));
++run_count;
}
mastodont_global_curl_cleanup();