diff --git a/.cargo-husky/hooks/pre-commit b/.cargo-husky/hooks/pre-commit index 6b25f491cf..1c2858d4ee 100755 --- a/.cargo-husky/hooks/pre-commit +++ b/.cargo-husky/hooks/pre-commit @@ -6,5 +6,5 @@ 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 +./scripts/update_config_defaults.sh git add config/defaults.hjson diff --git a/.drone.yml b/.drone.yml index a4b08e5427..e96fee7cf6 100644 --- a/.drone.yml +++ b/.drone.yml @@ -38,17 +38,17 @@ steps: - sudo apt-get -y install --no-install-recommends postgresql-client - cargo test --workspace --no-fail-fast - - name: cargo build + - name: check defaults.hjson updated image: ekidd/rust-musl-builder:1.51.0 commands: - - cargo build - - mv target/x86_64-unknown-linux-musl/debug/lemmy_server target/lemmy_server + - ./scripts/update_config_defaults.sh config/defaults_current.hjson + - diff config/defaults.hjson config/defaults_current.hjson - - name: check defaults.hjson updated + - name: cargo build 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 + - cargo build + - mv target/x86_64-unknown-linux-musl/debug/lemmy_server target/lemmy_server - name: run federation tests image: node:alpine diff --git a/config/defaults.hjson b/config/defaults.hjson index 62e47e539d..6907c36ff7 100644 --- a/config/defaults.hjson +++ b/config/defaults.hjson @@ -1,111 +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", + # 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", + ] + # 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 + ] + # 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 } diff --git a/scripts/update_config_defaults.sh b/scripts/update_config_defaults.sh new file mode 100755 index 0000000000..0aca71602c --- /dev/null +++ b/scripts/update_config_defaults.sh @@ -0,0 +1,13 @@ +#!/bin/bash +set -e + +dest=${1-config/defaults.hjson} + +cargo run -- --print-config-docs > "$dest" +# replace // comments with # +sed -i "s/\/\//#/" "$dest" +# remove trailing commas +sed -i "s/,\$//" "$dest" +# remove quotes around json keys +sed -i "s/\"//" "$dest" +sed -i "s/\"//" "$dest"