example: round out captchas to 5
[rb-79.git] / README
blob6bb734553d491b7ce8e8eaaa5106e057c3903d93
1 This is an image board written in C. It has few features.
3 You need:
5  - fcgi            [ https://fastcgi-archives.github.io  ]
6  - gmime           [ https://github.com/GNOME/gmime ]
7  - libmagic        [ https://www.darwinsys.com/file  ]
8  - libsodium       [ https://libsodium.org ]
9  - pcre2           [ http://www.pcre.org  ]
10  - spawn-fcgi      [ http://redmine.lighttpd.net/projects/spawn-fcgi ]
11  - sqlite3         [ https://sqlite.org/ ]
12  - a web server that works with fcgi (I dunno, most of them?)
13  - the programs you reference in config.h (see filetypes), which
14    for the default config are:
15     - ffmpeg       [ https://ffmpeg.org/ ]
16     - imagemagick  [ https://www.imagemagick.org/ ]
17     - jhead        [ http://www.sentex.net/~mwandel/jhead/ ]
18  - a C implementation defining __STDC_ISO_10646__ and conforming
19    to POSIX.1-2008, with the IPV6 extensions
21 (I'd like to drop GMime dep, but RFC 7578 is a bear, and I don't
22 want a gazillion CVEs on my head.)
24 Use it by:
26  - put the following in nginx.conf. If you don't use nginx, translate
27    it and send me a patch, okay?
29         server {
30                 listen 127.0.0.1;
31                 server_name localhost;
32         
33                 access_log /var/log/nginx/localhost.access_log main;
34                 error_log /var/log/nginx/localhost.error_log info;
35         
36                 # This is static_www_root in config.h
37                 root /where/all/your/static/files/live
38         
39                 location /action {
40                         include fastcgi_params;
41                         fastcgi_pass 127.0.0.1:9000;
42                         client_max_body_size 5M;
43                 }
44         }
46  - copy config.def.h to config.h, edit to define boards and stuff,
47    then recompile with
49     make # that's it; no autohell.
51    Optionally, you can install it with `make install'.
53  - make sure you read the file_description_prog bit in config.def.h.
55  - copy example/* to /where/all/your/static/files/live/ and edit
56    _templates/* as desired (no seriously, you GOTTA edit as desired).
58  - write index.html to your desires. Maybe add an FAQ or a Rules
59    page? Also look at the .user.js file to see if you want fancy
60    features.
62  - make sure all the directories (your static_www_root and work_path)
63    are writable (don't worry, it'll test and warn you in the next
64    step if you screw this up).
66  - run
68     spawn-fcgi -n -a 127.0.0.1 -p 9000 -- /path/to/rb79-server
70    If you want the system to handle it, put that in a service script
71    or add it to /etc/s6-rc/source or whatever you cool kids are
72    doing these days.
74  - whenever you need to ban someone or sticky a thread or something,
75    use the acompanying programs (rb79-view-thread, etc.) or edit
76    the db manually, then issue a REBUILD command (see API). You can
77    also check out the manuals.
79 That's pretty much it.
82          ██▄▄
83            ▀██▓▄▄
84               ▀▀██▓▄▄
85                  ▀▀███▓▄
86                      ▀████▓▄
87                         ▀▀███▓▄▄
88                            ▀▀████▓▄▄
89                                ▀████▓▓▄▄
90                                   ▀▀████▓▓▄▄
91                                       ▀█████▓▓▓▄
92                                          ▀██████▓▓▄▄
93                                            ▀███████▓▓▓▄
94                                             ▀██████████▓▓▄ ▄
95                                              ▀█████▓▓▀▓█████▓▓▄▄
96                                          ▄▄▄▄▓▓█▓▓█▓▒▒▓█████▓▓▓▌
97                                       ▄▄█▓▓█▓▀▒▀▒▓▀▓▌   █████▓█▌
98                                    ▄░▀▀░░▓▀░░░░░░░░░▐░▄  ████▓█▌
99                                 ▄▒▄▄▒░░▐▓░░░░░▀▀▀▀▀▀▒▒▒▄▒▓█████▌
100                               ▄▓▀░░░░░░▓░░░░▐▓░░░░░░░░░░░▒▀███▀▀
101                             ▄▒░░░░▐█▓▄▓▓▓▓█▓████▄░░░░░░░░░░░▐▄
102                            ▄░░░▐█████████████████▒░░░░░░░░░░░░▄
103       ▄▄▄▄                ▐░░░░██████████████████▌░░░░░░░░░▄██▄▄
104    ░░▒▒░▒▀▌▌              ▌░░░▐█████████▓▓▓▓██████▄▄▄▄░░░░░▓███▓
105  ▐░▒▀▓██▒▌▐▌▌            ▐░░▄▄▓███████▓▓▓▓▓▓▓▓████░▐▀▀▀▀▀▒▒▄███▓▌
106 ▀▀  ▒████▒▒▓▌            ▐▒▀░░▐███████▓▓▓▓▓▓▓████▌░░░░░░░░░░░▒▓▓▌
107    ▄▓▓▀▄▄▓▓▓▓             ░░░░░█████████▓████████░░░░░░░░░▐░▓▀▀▓▌
108   ▀    ▀▓▓▓▓▓█            ▀░░░░▐████████████████░░░░░░░░░▄░▐▐██▓▌▄
109        ▐▓▀▒▌▀▐▌            ▒░░░░▐▀▀▀▀▐█▌░░░░░░░░░░░░░░░░▒▌░▐░█▌▓▌▌
110         ▀░░░░░░            ▐▄░░░░░░░░░▐█░░░░░░░░░░░░░░▒▓▀░░▌░██▓▒▌
111          ▒░░░░░▒            ▒▒▄░▄▄▒▒░░░▐▌░░░░░▒▀▀▀▓▓▓▓▓░░░░▌▐██▓▌▌
112           ▄░░░▄▓            ░░▐▀▓▓▄▄▄░░░▀▌░▒▄▄▄▓▓▓▓▒▓▓▄▓▓▓▓▒░█▓█▓
113            ▀▓▓▓▀            ▒▒▒▒▒▓▓▓▓▓▓▀▓█▓▓▓▓▓▓▓▓▓▓█▌░▓▒▓▒▓▀█▒██
114              ▄░░▄      ▄▄▄▀▒░▒▄░▒▀▓▌▓▓█▌███▌████▓███▓▓▌▒▒▒▒▓▌▐█▀█
115              ▐░░▐▄▄▄▄▒█▒▓▒▐▒░▄▓▓▓▓█▓▓▓▓▓▓▓████▓▓▓▓▓▓█▓▓▓▄▌▌██▓▓▓▓
116              ▄▓▄▄▀▒▀█▓▐▓▓▓▓▓▓▓▌▓▓▓▒▒▓▓▓██▓███▓▓██▓▓▀▀▀███▄▄▄▓▄▓▓▀
117              ▌█▄▓▓▓▄██▀▀       ▀▀▀▀▀▀▀ ▐▀▀▀███▀▀▀      ▐▌▒▐▌▒█▒▌
118               ▀▀▀▀▀▀▀                                  ▐▌▌▒▌▄▓█▀░▄   ▄▄▒▀▄░░▄
119                                                          ▀▀ █▒░░▄▐▓▒▒▓▒▐░▓░░▐▄
120                                                              ▓▓▓░▌▌▄▒▄▒▓▓▒▓░░░▄
121                                                               ▀██▓▒▒▒▓▓▓▓▓▓░░░▐
122                                                                 ▀▀▓▀▀▒▀▓▓▓▓▄
123                                                                       ▀▒▓▓▓▓▄
125                              Fig 1. The RB-79 Ball