= fediblock-backend :showtitle: :toc: preamble :project: fediblock-backend :uri-base: https://schlomp.space/FediBlock/backend :uri-branch-main: {uri-base}/src/branch/main :uri-gcc: https://gcc.gnu.org/ :uri-clang: https://clang.llvm.org/ :uri-cmake: https://cmake.org/ :uri-catch: https://github.com/catchorg/Catch2 :uri-dpkg: https://packages.qa.debian.org/dpkg :uri-rpm-build: http://www.rpm.org :uri-clang-tidy: https://clang.llvm.org/extra/clang-tidy/ :uri-cgicc: https://www.gnu.org/software/cgicc/ :uri-nlohmann-json: https://nlohmann.github.io/json/ :uri-libgit2: https://libgit2.org/ :uri-libcurl: https://curl.haxx.se/libcurl/ :uti-icu: http://site.icu-project.org/ *{project}* turns form data into JSON and opens a pull request on link:https://schlomp.space/FediBlock/data[FediBlock/data]. Also included are tools to generate a HTML list and (soon) an RSS generator. == Usage .nginx config [source,nginx] -------------------------------------------------------------------------------- # […] expires 2h; location /add { include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/cgi-fcgiwrap.socket-1; fastcgi_param SCRIPT_FILENAME /usr/bin/fediblock-backend; fastcgi_param HOME "/var/lib/nginx"; # When I didn't set it, HOME was /root. } location /rss { include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/cgi-fcgiwrap.socket-1; fastcgi_param SCRIPT_FILENAME /usr/bin/fediblock-gen_rss; fastcgi_param HOME "/var/lib/nginx"; } -------------------------------------------------------------------------------- .Generate SSH key [source,shell] -------------------------------------------------------------------------------- sudo -u nginx ssh-keygen -t ed25519 -f ~nginx/.local/share/fediblock-backend/ssh_id -------------------------------------------------------------------------------- Don't forget to add the key to the data repo. Generate an access token and save it in `~nginx/.local/share/fediblock-backend/gitea_access_token`. On non-Linux systems the data path is `~nginx/.fediblock-backend` unless `XDG_DATA_HOME` is set. === Generate HTML blocklist After compiling, run `src/generators/gen_html` in your build dir. The screenshots will be copied into the target directory and the output will be the HTML file. .Example: Generate the HTML blocklist in `~/blocklist/` [source,shell] -------------------------------------------------------------------------------- ./src/generators/gen_html ~/blocklist > ~/blocklist/index.html -------------------------------------------------------------------------------- Existing screenshots will not be overwritten. == Install === From source ==== Dependencies * Tested OS: Linux * C\++ compiler with C++17 support (tested: link:{uri-gcc}[GCC] 7/8/9/10, link:{uri-clang}[clang] 6/7/10) * link:{uri-cmake}[CMake] (at least: 3.10) * link:{uri-cgicc}[cgicc] (tested: 3.2) * link:{uri-nlohmann-json}[nlohmann-json] (tested: 3.7 / 2.1) * link:{uri-libgit2}[libgit2] with SSH support (tested: 1.0 / 0.26) * link:{uri-libcurl}[libcurl] (at least: 7.56) * link:{uri-icu}[icu] (tested: 67.1 / 60.2) * Optional ** Tests: link:{uri-catch}[Catch] (tested: 2.5 / 1.10) ** DEB package: link:{uri-dpkg}[dpkg] (tested: 1.19) ** RPM package: link:{uri-rpm-build}[rpm-build] (tested: 4.11) ==== Get sourcecode [source,shell] -------------------------------------------------------------------------------- git clone https://schlomp.space/FediBlock/backend.git -------------------------------------------------------------------------------- ==== Compile [source,shell] -------------------------------------------------------------------------------- mkdir -p build && cd build cmake .. cmake --build . -- --jobs=$(nproc --ignore=1) -------------------------------------------------------------------------------- .CMake options: * `-DCMAKE_BUILD_TYPE=Debug` for a debug build. * `-DWITH_TESTS=YES` if you want to compile the tests. * `-DWITH_CLANG-TIDY=YES` to check the sourcecode with link:{uri-clang-tidy}[clang-tidy] while compiling. * One of: ** `-DWITH_DEB=YES` if you want to be able to generate a deb-package. ** `-DWITH_RPM=YES` if you want to be able to generate an rpm-package. To create a deb or rpm package, run `make package` after compiling. include::{uri-base}/raw/branch/main/CONTRIBUTING.adoc[]