]> Untitled Git - lemmy.git/commitdiff
Create a custom pre-commit hook, generates config/defaults.hjson (#1857)
authorNutomic <me@nutomic.com>
Thu, 21 Oct 2021 16:57:09 +0000 (16:57 +0000)
committerGitHub <noreply@github.com>
Thu, 21 Oct 2021 16:57:09 +0000 (12:57 -0400)
* Create a custom pre-commit hook, generates config/defaults.hjson (fixes #1836)

* invalid defaults file

* Revert "invalid defaults file"

This reverts commit 76d2c303e293b13d581f9c5aa2944caedb2f530b.

.cargo-husky/hooks/pre-commit [new file with mode: 0755]
.drone.yml
Cargo.toml
config/defaults.hjson [new file with mode: 0644]

diff --git a/.cargo-husky/hooks/pre-commit b/.cargo-husky/hooks/pre-commit
new file mode 100755 (executable)
index 0000000..6b25f49
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/bash
+set -e
+
+cargo +nightly fmt -- --check
+
+cargo +nightly clippy --workspace --tests --all-targets --all-features -- \
+    -D warnings -D deprecated -D clippy::perf -D clippy::complexity -D clippy::dbg_macro
+
+cargo run -- --print-config-docs > config/defaults.hjson
+git add config/defaults.hjson
index 1602eac0f094b3c365f3e4bdc94de76fbd1060ab..cd3f58a7e8f0f579f61c62079e4db10a3c03dff5 100644 (file)
@@ -44,6 +44,12 @@ steps:
       - cargo build
       - mv target/x86_64-unknown-linux-musl/debug/lemmy_server target/lemmy_server
 
+  - name: check defaults.hjson updated
+    image: ekidd/rust-musl-builder:1.51.0
+    commands:
+      - target/lemmy_server --print-config-docs > config/defaults_current.hjson
+      - diff config/defaults.hjson config/defaults_current.hjson
+
   - name: run federation tests
     image: node:alpine
     environment:
index c306f762ab7c5929966280ef2e17238c9371d432..6b3d60483ae898d464467d7fb34394eca2c1b375 100644 (file)
@@ -67,7 +67,7 @@ doku = "0.10.1"
 [dev-dependencies.cargo-husky]
 version = "1.5.0"
 default-features = false # Disable features which are enabled by default
-features = ["precommit-hook", "run-cargo-fmt", "run-cargo-clippy"]
+features = ["user-hooks"]
 
 [package.metadata.cargo-udeps.ignore]
 development = ["cargo-husky"]
diff --git a/config/defaults.hjson b/config/defaults.hjson
new file mode 100644 (file)
index 0000000..62e47e5
--- /dev/null
@@ -0,0 +1,111 @@
+{
+  // settings related to the postgresql database
+  "database": {
+    // Username to connect to postgres
+    "user": "lemmy",
+    // Password to connect to postgres
+    "password": "password",
+    // Host where postgres is running
+    "host": "localhost",
+    // Port where postgres can be accessed
+    "port": 5432,
+    // Name of the postgres database for lemmy
+    "database": "lemmy",
+    // Maximum number of active sql connections
+    "pool_size": 5
+  },
+  // rate limits for various user actions, by user ip
+  "rate_limit": {
+    // Maximum number of messages created in interval
+    "message": 180,
+    // Interval length for message limit, in seconds
+    "message_per_second": 60,
+    // Maximum number of posts created in interval
+    "post": 6,
+    // Interval length for post limit, in seconds
+    "post_per_second": 600,
+    // Maximum number of registrations in interval
+    "register": 3,
+    // Interval length for registration limit, in seconds
+    "register_per_second": 3600,
+    // Maximum number of image uploads in interval
+    "image": 6,
+    // Interval length for image uploads, in seconds
+    "image_per_second": 3600
+  },
+  // Settings related to activitypub federation
+  "federation": {
+    // Whether to enable activitypub federation.
+    "enabled": false,
+    // Allows and blocks are described here:
+    // https://join-lemmy.org/docs/en/federation/administration.html///instance-allowlist-and-blocklist
+    // 
+    // list of instances with which federation is allowed
+    "allowed_instances": [
+      "instance1.tld",
+      "instance2.tld",
+      /* ... */
+    ],
+    // Instances which we never federate anything with (but previously federated objects are unaffected)
+    "blocked_instances": [
+      "string",
+      /* ... */
+    ],
+    // If true, only federate with instances on the allowlist and block everything else. If false,
+    // use allowlist only for remote communities, and posts/comments in local communities
+    // (meaning remote communities will show content from arbitrary instances).
+    "strict_allowlist": true
+  },
+  "captcha": {
+    // Whether captcha is required for signup
+    "enabled": false,
+    // Can be easy, medium, or hard
+    "difficulty": "medium"
+  },
+  // Email sending configuration. All options except login/password are mandatory
+  "email": {
+    // Hostname and port of the smtp server
+    "smtp_server": "localhost:25",
+    // Login name for smtp server
+    "smtp_login": "string",
+    // Password to login to the smtp server
+    "smtp_password": "string",
+    // Address to send emails from, eg "noreply@your-instance.com"
+    "smtp_from_address": "noreply@example.com",
+    // Whether or not smtp connections should use tls
+    "use_tls": true
+  },
+  // Parameters for automatic configuration of new instance (only used at first start)
+  "setup": {
+    // Username for the admin user
+    "admin_username": "admin",
+    // Password for the admin user
+    "admin_password": "my_passwd",
+    // Name of the site (can be changed later)
+    "site_name": "My Lemmy Instance",
+    // Email for the admin user (optional, can be omitted and set later through the website)
+    "admin_email": "string",
+    "sidebar": "string",
+    "description": "string",
+    "icon": "string",
+    "banner": "string",
+    "enable_downvotes": true,
+    "open_registration": true,
+    "enable_nsfw": true,
+    "community_creation_admin_only": true
+  },
+  // the domain name of your instance (mandatory)
+  "hostname": "unset",
+  // Address where lemmy should listen for incoming requests
+  "bind": "0.0.0.0",
+  // Port where lemmy should listen for incoming requests
+  "port": 8536,
+  // Whether the site is available over TLS. Needs to be true for federation to work.
+  "tls_enabled": true,
+  // Address where pictrs is available (for image hosting)
+  "pictrs_url": "http://localhost:8080",
+  // Regex for slurs which are prohibited. Example: `(\bThis\b)|(\bis\b)|(\bsample\b)`
+  "additional_slurs": "string",
+  // Maximum length of local community and user names
+  "actor_name_max_length": 20
+}