]> Untitled Git - lemmy.git/commitdiff
Config fixes.
authorDessalines <tyhou13@gmx.com>
Sat, 28 Dec 2019 21:06:37 +0000 (16:06 -0500)
committerDessalines <tyhou13@gmx.com>
Sat, 28 Dec 2019 21:11:03 +0000 (16:11 -0500)
- Adding front_end_dir to settings.
- Adding unit test for PasswordResetRequest encryption.
- Readme points to lemmy.hjson
- Fixing docker prod, dev, and ansible builds.
- Removing redundant env files, as all config is now in a single file.
- Some formatting fixes.

14 files changed:
README.md
ansible/lemmy.yml
ansible/templates/env [deleted file]
docker/dev/.env [deleted file]
docker/dev/config/config.hjson [deleted file]
docker/dev/docker-compose.yml
docker/lemmy.hjson [new file with mode: 0644]
docker/prod/.env [deleted file]
docker/prod/docker-compose.yml
server/config/defaults.hjson
server/src/db/password_reset_request.rs
server/src/lib.rs
server/src/main.rs
server/src/settings.rs

index 143bfaa79f67b73725769880a5761532d4133c91..e3f85eb62134b4c6ac35a07e1e5e3d2e02800df1 100644 (file)
--- a/README.md
+++ b/README.md
@@ -120,7 +120,7 @@ Make sure you have both docker and docker-compose(>=`1.24.0`) installed:
 mkdir lemmy/
 cd lemmy/
 wget https://raw.githubusercontent.com/dessalines/lemmy/master/docker/prod/docker-compose.yml
-wget https://raw.githubusercontent.com/dessalines/lemmy/master/docker/prod/.env
+wget https://raw.githubusercontent.com/dessalines/lemmy/master/docker/lemmy.hjson
 # Edit the .env if you want custom passwords
 docker-compose up -d
 ```
@@ -225,16 +225,12 @@ cd lemmy
 
 ## Configuration
 
-The configuration is based on the file [defaults.hjson](server/config/defaults.hjson). This file also contains
-documentation for all the available options. To override the defaults, you can copy the options you want to change
-into your local `config.hjson` file. 
+The configuration is based on the file [defaults.hjson](server/config/defaults.hjson). This file also contains documentation for all the available options. To override the defaults, you can copy the options you want to change into your local `config.hjson` file. 
 
-Additionally, you can override any config files with environment variables. These have the same name as the config
-options, and are prefixed with `LEMMY_`. For example, you can override the `database.password` with 
+Additionally, you can override any config files with environment variables. These have the same name as the config options, and are prefixed with `LEMMY_`. For example, you can override the `database.password` with 
 `LEMMY__DATABASE__POOL_SIZE=10`.
 
-An additional option `LEMMY_DATABASE_URL` is available, which can be used with a PostgreSQL connection string like
-`postgres://lemmy:password@lemmy_db:5432/lemmy`, passing all connection details at once.
+An additional option `LEMMY_DATABASE_URL` is available, which can be used with a PostgreSQL connection string like `postgres://lemmy:password@lemmy_db:5432/lemmy`, passing all connection details at once.
 
 ## Documentation
 
index acdb6b06b09e16e8abf3786a8ee2bc25d22cf6d0..7243afddc387d8f1702c32e4e9b65dee1de98d5a 100644 (file)
   - name:  add all template files
     template: src={{item.src}} dest={{item.dest}}
     with_items:
-      - { src: 'templates/env', dest: '/lemmy/.env' }
-      - { src: 'templates/config.hjson', dest: '/lemmy/config.hjson' }
+      - { src: '../docker/lemmy.hjson', dest: '/lemmy/lemmy.hjson' }
       - { src: '../docker/prod/docker-compose.yml', dest: '/lemmy/docker-compose.yml' }
       - { src: 'templates/nginx.conf', dest: '/etc/nginx/sites-enabled/lemmy.conf' }
     vars:
       postgres_password: "{{ lookup('password', 'passwords/{{ inventory_hostname }}/postgres chars=ascii_letters,digits') }}"
       jwt_password: "{{ lookup('password', 'passwords/{{ inventory_hostname }}/jwt chars=ascii_letters,digits') }}"
 
-  - name: set env file permissions
-    file:
-      path: "/lemmy/.env"
-      state: touch
-      mode: 0600
-      access_time: preserve
-      modification_time: preserve
-
   - name: enable and start docker service
     systemd:
       name: docker
diff --git a/ansible/templates/env b/ansible/templates/env
deleted file mode 100644 (file)
index c2b15f5..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-DATABASE_PASSWORD={{ postgres_password }}
-LEMMY_FRONT_END_DIR=/app/dist
diff --git a/docker/dev/.env b/docker/dev/.env
deleted file mode 100644 (file)
index 4e1bf7f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-LEMMY_DOMAIN=my_domain
-LEMMY_DATABASE_PASSWORD=password
-LEMMY_DATABASE_URL=postgres://lemmy:password@lemmy_db:5432/lemmy
-LEMMY_JWT_SECRET=changeme
-LEMMY_FRONT_END_DIR=/app/dist
diff --git a/docker/dev/config/config.hjson b/docker/dev/config/config.hjson
deleted file mode 100644 (file)
index 2c63c08..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-{
-}
index 92a8ee45096dea6116166589e7aa8a90f969c8c9..eabd334d5f8c01446482c375bfe0b4f5cda4dfc1 100644 (file)
@@ -5,7 +5,7 @@ services:
     image: postgres:12-alpine
     environment:
       - POSTGRES_USER=lemmy
-      - POSTGRES_PASSWORD=${LEMMY_DATABASE_PASSWORD}
+      - POSTGRES_PASSWORD=password
       - POSTGRES_DB=lemmy
     volumes:
       - lemmy_db:/var/lib/postgresql/data
@@ -16,11 +16,9 @@ services:
       dockerfile: docker/dev/Dockerfile
     ports:
       - "127.0.0.1:8536:8536"
-    env_file:
-      - .env
     restart: always
     volumes:
-      - ./config/config.hjson:/config/config.hjson:ro
+      - ../lemmy.hjson:/config/config.hjson:ro
     depends_on: 
       - lemmy_db
   lemmy_pictshare:
diff --git a/docker/lemmy.hjson b/docker/lemmy.hjson
new file mode 100644 (file)
index 0000000..2ec00de
--- /dev/null
@@ -0,0 +1,56 @@
+{
+  database: {
+    # username to connect to postgres
+    user: "lemmy"
+    # password to connect to postgres
+    password: "password"
+    # host where postgres is running
+    host: "lemmy_db"
+    # 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
+  }
+  # the domain name of your instance (eg "dev.lemmy.ml")
+  hostname: "rrr"
+  # address where lemmy should listen for incoming requests
+  bind: "0.0.0.0"
+  # port where lemmy should listen for incoming requests
+  port: 8536
+  # json web token for authorization between server and client
+  jwt_secret: "changeme"
+  # The dir for the front end
+  front_end_dir: "/app/dist"
+  # whether to enable activitypub federation. this feature is in alpha, do not enable in production, as might
+  # cause problems like remote instances fetching and permanently storing bad data.
+  federation_enabled: false
+  # rate limits for various user actions, by user ip
+  rate_limit: {
+    # maximum number of messages created in interval
+    message: 30
+    # interval length for message limit
+    message_per_second: 60
+    # maximum number of posts created in interval
+    post: 6
+    # interval length for post limit
+    post_per_second: 600
+    # maximum number of registrations in interval
+    register: 3
+    # interval length for registration limit
+    register_per_second: 3600
+  }
+#  # email sending configuration
+#  email: {
+#    # hostname of the smtp server
+#    smtp_server: ""
+#    # login name for smtp server
+#    smtp_login: ""
+#    # password to login to the smtp server
+#    smtp_password: ""
+#    # address to send emails from, eg "info@your-instance.com"
+#    smtp_from_address: ""
+#  }
+}
+
diff --git a/docker/prod/.env b/docker/prod/.env
deleted file mode 100644 (file)
index 4e1bf7f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-LEMMY_DOMAIN=my_domain
-LEMMY_DATABASE_PASSWORD=password
-LEMMY_DATABASE_URL=postgres://lemmy:password@lemmy_db:5432/lemmy
-LEMMY_JWT_SECRET=changeme
-LEMMY_FRONT_END_DIR=/app/dist
index 9df9f19a13618cc693d137945bc9bb068d83924a..9b1c858fc6736eac201b63f21d5a249f480c5bdb 100644 (file)
@@ -5,7 +5,7 @@ services:
     image: postgres:12-alpine
     environment:
       - POSTGRES_USER=lemmy
-      - POSTGRES_PASSWORD=${DATABASE_PASSWORD}
+      - POSTGRES_PASSWORD=password
       - POSTGRES_DB=lemmy
     volumes:
       - lemmy_db:/var/lib/postgresql/data
@@ -14,11 +14,9 @@ services:
     image: dessalines/lemmy:v0.5.0.3
     ports:
       - "127.0.0.1:8536:8536"
-    env_file:
-      - .env
     restart: always
     volumes:
-      - ./config.hjson:/config/config.hjson:ro
+      - ./lemmy.hjson:/config/config.hjson:ro
     depends_on:
       - lemmy_db
   lemmy_pictshare:
index e5a8f6dc03e1f7090e94dca0ac66b4a34c4e5b6f..0fabda0b000759182f90f2db778bde647dbfb327 100644 (file)
   port: 8536
   # json web token for authorization between server and client
   jwt_secret: "changeme"
+  # The dir for the front end
+  front_end_dir: "../ui/dist"
   # whether to enable activitypub federation. this feature is in alpha, do not enable in production, as might
   # cause problems like remote instances fetching and permanently storing bad data.
   federation_enabled: false
   # rate limits for various user actions, by user ip
   rate_limit: {
     # maximum number of messages created in interval
-    message: 30,
+    message: 30
     # interval length for message limit
-    message_per_second: 60,
+    message_per_second: 60
     # maximum number of posts created in interval
-    post: 6,
+    post: 6
     # interval length for post limit
-    post_per_second: 600,
+    post_per_second: 600
     # maximum number of registrations in interval
-    register: 3,
+    register: 3
     # interval length for registration limit
-    register_per_second: 3600,
+    register_per_second: 3600
   }
 #  # email sending configuration
 #  email: {
index 337b2e6b0a8f28e978e01f57a5a56aa897026d1a..91e27c57aafcc26b989e38b62f43aa666d417c69 100644 (file)
@@ -104,23 +104,20 @@ mod tests {
 
     let inserted_user = User_::create(&conn, &new_user).unwrap();
 
-    let new_password_reset_request = PasswordResetRequestForm {
-      user_id: inserted_user.id,
-      token_encrypted: "no".into(),
-    };
+    let token = "nope";
+    let token_encrypted_ = "ca3704aa0b06f5954c79ee837faa152d84d6b2d42838f0637a15eda8337dbdce";
 
     let inserted_password_reset_request =
-      PasswordResetRequest::create(&conn, &new_password_reset_request).unwrap();
+      PasswordResetRequest::create_token(&conn, inserted_user.id, token).unwrap();
 
     let expected_password_reset_request = PasswordResetRequest {
       id: inserted_password_reset_request.id,
       user_id: inserted_user.id,
-      token_encrypted: "no".into(),
+      token_encrypted: token_encrypted_.to_string(),
       published: inserted_password_reset_request.published,
     };
 
-    let read_password_reset_request =
-      PasswordResetRequest::read(&conn, inserted_password_reset_request.id).unwrap();
+    let read_password_reset_request = PasswordResetRequest::read_from_token(&conn, token).unwrap();
     let num_deleted = User_::delete(&conn, inserted_user.id).unwrap();
 
     assert_eq!(expected_password_reset_request, read_password_reset_request);
index ed76b22bf868dfd8a0bb53028ca0e3e1c6c7d6fb..dd0097f12b2944d0a46fe5ca70f0ad02cc352db6 100644 (file)
@@ -127,7 +127,7 @@ pub fn send_email(
 
 #[cfg(test)]
 mod tests {
-  use crate::{extract_usernames, has_slurs, is_email_regex, remove_slurs, Settings};
+  use crate::{extract_usernames, has_slurs, is_email_regex, remove_slurs};
 
   #[test]
   fn test_email() {
index 398a6c39a6122494a793f3d029ed068b1520a34a..52c395d3296cb5c2d903de99ddb704845964933e 100644 (file)
@@ -13,7 +13,6 @@ use lemmy_server::nodeinfo;
 use lemmy_server::settings::Settings;
 use lemmy_server::webfinger;
 use lemmy_server::websocket::server::*;
-use std::env;
 use std::time::{Duration, Instant};
 
 embed_migrations!();
@@ -201,7 +200,10 @@ fn main() {
     let app = App::new()
       .data(server.clone())
       // Front end routes
-      .service(actix_files::Files::new("/static", front_end_dir()))
+      .service(actix_files::Files::new(
+        "/static",
+        settings.front_end_dir.to_owned(),
+      ))
       .route("/", web::get().to(index))
       .route(
         "/home/type/{type}/sort/{sort}/page/{page}",
@@ -256,11 +258,12 @@ fn main() {
       )
       .route(
         "/federation/u/{user_name}",
-        web::get().to(apub::user::get_apub_user))
+        web::get().to(apub::user::get_apub_user),
+      )
       .route("/feeds/all.xml", web::get().to(feeds::get_all_feed));
 
     // Federation
-    if Settings::get().federation_enabled {
+    if settings.federation_enabled {
       app.route(
         ".well-known/webfinger",
         web::get().to(webfinger::get_webfinger_response),
@@ -278,9 +281,7 @@ fn main() {
 }
 
 fn index() -> Result<NamedFile, actix_web::error::Error> {
-  Ok(NamedFile::open(front_end_dir() + "/index.html")?)
-}
-
-fn front_end_dir() -> String {
-  env::var("LEMMY_FRONT_END_DIR").unwrap_or("../ui/dist".to_string())
+  Ok(NamedFile::open(
+    Settings::get().front_end_dir.to_owned() + "/index.html",
+  )?)
 }
index 446bf04fad179c01f65ca1f8ed4721210b17ab0a..6cb4de0bdafd131831f9241419f8c09ad41b16ce 100644 (file)
@@ -14,6 +14,7 @@ pub struct Settings {
   pub bind: IpAddr,
   pub port: u16,
   pub jwt_secret: String,
+  pub front_end_dir: String,
   pub rate_limit: RateLimitConfig,
   pub email: Option<EmailConfig>,
   pub federation_enabled: bool,