276 lines
10 KiB
Diff
276 lines
10 KiB
Diff
From 995413b11fb7a453ecf1a0c30a64b4a550f1aca3 Mon Sep 17 00:00:00 2001
|
|
From: ibizaman <ibizaman@tiserbox.com>
|
|
Date: Tue, 15 Jul 2025 18:42:42 +0200
|
|
Subject: [PATCH 2/4] lldap: lldap 0.6.1 -> 0.6.2
|
|
|
|
---
|
|
nixos/modules/services/databases/lldap.nix | 43 ++++++++++---
|
|
nixos/tests/lldap.nix | 8 ++-
|
|
.../0001-parameterize-frontend-location.patch | 64 -------------------
|
|
pkgs/by-name/ll/lldap/package.nix | 31 +++++----
|
|
4 files changed, 56 insertions(+), 90 deletions(-)
|
|
delete mode 100644 pkgs/by-name/ll/lldap/0001-parameterize-frontend-location.patch
|
|
|
|
diff --git a/nixos/modules/services/databases/lldap.nix b/nixos/modules/services/databases/lldap.nix
|
|
index 1607754d7d9c..1095021b3f35 100644
|
|
--- a/nixos/modules/services/databases/lldap.nix
|
|
+++ b/nixos/modules/services/databases/lldap.nix
|
|
@@ -2,7 +2,6 @@
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
- utils,
|
|
...
|
|
}:
|
|
|
|
@@ -103,6 +102,16 @@ in
|
|
example = "postgres://postgres-user:password@postgres-server/my-database";
|
|
};
|
|
|
|
+ ldap_user_pass = mkOption {
|
|
+ type = types.nullOr types.str;
|
|
+ default = null;
|
|
+ description = ''
|
|
+ Password for default admin password.
|
|
+
|
|
+ Unsecure: Use `ldap_user_pass_file` settings instead.
|
|
+ '';
|
|
+ };
|
|
+
|
|
ldap_user_pass_file = mkOption {
|
|
type = types.nullOr types.str;
|
|
default = null;
|
|
@@ -163,18 +172,32 @@ in
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
+ assertions = [
|
|
+ {
|
|
+ assertion =
|
|
+ (cfg.settings.ldap_user_pass_file or null) != null || (cfg.settings.ldap_user_pass or null) != null;
|
|
+ message = "lldap: Default admin user password must be set. Please set the `ldap_user_pass` or better the `ldap_user_pass_file` setting.";
|
|
+ }
|
|
+ {
|
|
+ assertion =
|
|
+ (cfg.settings.ldap_user_pass_file or null) == null || (cfg.settings.ldap_user_pass or null) == null;
|
|
+ message = "lldap: Both `ldap_user_pass` and `ldap_user_pass_file` settings should not be set at the same time. Set one to `null`.";
|
|
+ }
|
|
+ ];
|
|
+
|
|
warnings =
|
|
- lib.optionals
|
|
- (
|
|
- (cfg.settings.ldap_user_pass_file or null) != null
|
|
- && cfg.settings.force_ldap_user_pass_reset == false
|
|
- && cfg.silenceForceUserPassResetWarning == false
|
|
- )
|
|
+ lib.optionals (cfg.settings.ldap_user_pass or null != null) [
|
|
+ ''
|
|
+ lldap: Unsecure `ldap_user_pass` setting is used. Prefer `ldap_user_pass_file` instead.
|
|
+ ''
|
|
+ ]
|
|
+ ++ lib.optionals
|
|
+ (cfg.settings.force_ldap_user_pass_reset == false && cfg.silenceForceUserPassResetWarning == false)
|
|
[
|
|
''
|
|
- lldap: The default admin password is declared with the setting `ldap_user_pass_file`, but `force_ldap_user_pass_reset` is set to `false`.
|
|
- This means the admin password can be changed through the UI and will drift from the one defined in your nix config.
|
|
- It also means changing the setting `ldap_user_pass_file` will have no effect on the admin password.
|
|
+ lldap: The `force_ldap_user_pass_reset` setting is set to `false` which means
|
|
+ the admin password can be changed through the UI and will drift from the one defined in your nix config.
|
|
+ It also means changing the setting `ldap_user_pass` or `ldap_user_pass_file` will have no effect on the admin password.
|
|
Either set `force_ldap_user_pass_reset` to `"always"` or silence this warning by setting the option `services.lldap.silenceForceUserPassResetWarning` to `true`.
|
|
''
|
|
];
|
|
diff --git a/nixos/tests/lldap.nix b/nixos/tests/lldap.nix
|
|
index aea6b2058727..8e38d4bdefa3 100644
|
|
--- a/nixos/tests/lldap.nix
|
|
+++ b/nixos/tests/lldap.nix
|
|
@@ -6,7 +6,7 @@ in
|
|
name = "lldap";
|
|
|
|
nodes.machine =
|
|
- { pkgs, ... }:
|
|
+ { pkgs, lib, ... }:
|
|
{
|
|
services.lldap = {
|
|
enable = true;
|
|
@@ -14,6 +14,8 @@ in
|
|
settings = {
|
|
verbose = true;
|
|
ldap_base_dn = "dc=example,dc=com";
|
|
+
|
|
+ ldap_user_pass = "password";
|
|
};
|
|
};
|
|
environment.systemPackages = [ pkgs.openldap ];
|
|
@@ -23,7 +25,8 @@ in
|
|
{ ... }:
|
|
{
|
|
services.lldap.settings = {
|
|
- ldap_user_pass_file = toString (pkgs.writeText "adminPasswordFile" adminPassword);
|
|
+ ldap_user_pass = lib.mkForce null;
|
|
+ ldap_user_pass_file = lib.mkForce (toString (pkgs.writeText "adminPasswordFile" adminPassword));
|
|
force_ldap_user_pass_reset = "always";
|
|
};
|
|
};
|
|
@@ -32,6 +35,7 @@ in
|
|
{ ... }:
|
|
{
|
|
services.lldap.settings = {
|
|
+ ldap_user_pass = lib.mkForce null;
|
|
ldap_user_pass_file = toString (pkgs.writeText "adminPasswordFile" "password");
|
|
force_ldap_user_pass_reset = false;
|
|
};
|
|
diff --git a/pkgs/by-name/ll/lldap/0001-parameterize-frontend-location.patch b/pkgs/by-name/ll/lldap/0001-parameterize-frontend-location.patch
|
|
deleted file mode 100644
|
|
index c33f5a7afa10..000000000000
|
|
--- a/pkgs/by-name/ll/lldap/0001-parameterize-frontend-location.patch
|
|
+++ /dev/null
|
|
@@ -1,64 +0,0 @@
|
|
-From a09babb0cd9dd532ad2de920a2a35aa03d740dc6 Mon Sep 17 00:00:00 2001
|
|
-From: Herwig Hochleitner <herwig@bendlas.net>
|
|
-Date: Thu, 8 Aug 2024 00:29:14 +0200
|
|
-Subject: [PATCH] parameterize frontend location
|
|
-
|
|
----
|
|
- server/src/infra/tcp_server.rs | 14 +++++++-------
|
|
- 1 file changed, 7 insertions(+), 7 deletions(-)
|
|
-
|
|
-diff --git a/server/src/infra/tcp_server.rs b/server/src/infra/tcp_server.rs
|
|
-index fa5f11f..16e64c5 100644
|
|
---- a/server/src/infra/tcp_server.rs
|
|
-+++ b/server/src/infra/tcp_server.rs
|
|
-@@ -25,7 +25,7 @@ use std::sync::RwLock;
|
|
- use tracing::info;
|
|
-
|
|
- async fn index<Backend>(data: web::Data<AppState<Backend>>) -> actix_web::Result<impl Responder> {
|
|
-- let mut file = std::fs::read_to_string(r"./app/index.html")?;
|
|
-+ let mut file = std::fs::read_to_string(r"@frontend@/index.html")?;
|
|
-
|
|
- if data.server_url.path() != "/" {
|
|
- file = file.replace(
|
|
-@@ -80,7 +80,7 @@ pub(crate) fn error_to_http_response(error: TcpError) -> HttpResponse {
|
|
- async fn main_js_handler<Backend>(
|
|
- data: web::Data<AppState<Backend>>,
|
|
- ) -> actix_web::Result<impl Responder> {
|
|
-- let mut file = std::fs::read_to_string(r"./app/static/main.js")?;
|
|
-+ let mut file = std::fs::read_to_string(r"@frontend@/static/main.js")?;
|
|
-
|
|
- if data.server_url.path() != "/" {
|
|
- file = file.replace("/pkg/", format!("{}/pkg/", data.server_url.path()).as_str());
|
|
-@@ -92,12 +92,12 @@ async fn main_js_handler<Backend>(
|
|
- }
|
|
-
|
|
- async fn wasm_handler() -> actix_web::Result<impl Responder> {
|
|
-- Ok(actix_files::NamedFile::open_async("./app/pkg/lldap_app_bg.wasm").await?)
|
|
-+ Ok(actix_files::NamedFile::open_async("@frontend@/pkg/lldap_app_bg.wasm").await?)
|
|
- }
|
|
-
|
|
- async fn wasm_handler_compressed() -> actix_web::Result<impl Responder> {
|
|
- Ok(
|
|
-- actix_files::NamedFile::open_async("./app/pkg/lldap_app_bg.wasm.gz")
|
|
-+ actix_files::NamedFile::open_async("@frontend@/pkg/lldap_app_bg.wasm.gz")
|
|
- .await?
|
|
- .customize()
|
|
- .insert_header(header::ContentEncoding::Gzip)
|
|
-@@ -143,11 +143,11 @@ fn http_config<Backend>(
|
|
- .service(web::resource("/pkg/lldap_app_bg.wasm").route(web::route().to(wasm_handler)))
|
|
- .service(web::resource("/static/main.js").route(web::route().to(main_js_handler::<Backend>)))
|
|
- // Serve the /pkg path with the compiled WASM app.
|
|
-- .service(Files::new("/pkg", "./app/pkg"))
|
|
-+ .service(Files::new("/pkg", "@frontend@/pkg"))
|
|
- // Serve static files
|
|
-- .service(Files::new("/static", "./app/static"))
|
|
-+ .service(Files::new("/static", "@frontend@/static"))
|
|
- // Serve static fonts
|
|
-- .service(Files::new("/static/fonts", "./app/static/fonts"))
|
|
-+ .service(Files::new("/static/fonts", "@frontend@/static/fonts"))
|
|
- // Default to serve index.html for unknown routes, to support routing.
|
|
- .default_service(web::route().guard(guard::Get()).to(index::<Backend>));
|
|
- }
|
|
---
|
|
-2.45.2
|
|
-
|
|
diff --git a/pkgs/by-name/ll/lldap/package.nix b/pkgs/by-name/ll/lldap/package.nix
|
|
index c335ffa727bf..11f14fdab871 100644
|
|
--- a/pkgs/by-name/ll/lldap/package.nix
|
|
+++ b/pkgs/by-name/ll/lldap/package.nix
|
|
@@ -3,29 +3,30 @@
|
|
fetchFromGitHub,
|
|
lib,
|
|
lldap,
|
|
+ makeWrapper,
|
|
nixosTests,
|
|
rustPlatform,
|
|
rustc,
|
|
- wasm-bindgen-cli_0_2_95,
|
|
+ wasm-bindgen-cli_0_2_100,
|
|
wasm-pack,
|
|
which,
|
|
}:
|
|
|
|
let
|
|
+ version = "0.6.2";
|
|
|
|
- commonDerivationAttrs = rec {
|
|
+ commonDerivationAttrs = {
|
|
pname = "lldap";
|
|
- version = "0.6.1";
|
|
+ inherit version;
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "lldap";
|
|
repo = "lldap";
|
|
rev = "v${version}";
|
|
- hash = "sha256-iQ+Vv9kx/pWHoa/WZChBK+FD2r1avzWWz57bnnzRjUg=";
|
|
+ hash = "sha256-UBQWOrHika8X24tYdFfY8ETPh9zvI7/HV5j4aK8Uq+Y=";
|
|
};
|
|
|
|
- cargoHash = "sha256-qXYgr9uRswuo9hwVROUX9KUKpkzR0VEcXImbdyOgxsY=";
|
|
-
|
|
+ cargoHash = "sha256-SO7+HiiXNB/KF3fjzSMeiTPjRQq/unEfsnplx4kZv9c=";
|
|
};
|
|
|
|
frontend = rustPlatform.buildRustPackage (
|
|
@@ -35,7 +37,7 @@ let
|
|
|
|
nativeBuildInputs = [
|
|
wasm-pack
|
|
- wasm-bindgen-cli_0_2_95
|
|
+ wasm-bindgen-cli_0_2_100
|
|
binaryen
|
|
which
|
|
rustc
|
|
@@ -68,12 +70,10 @@ rustPlatform.buildRustPackage (
|
|
"lldap_set_password"
|
|
];
|
|
|
|
- patches = [
|
|
- ./0001-parameterize-frontend-location.patch
|
|
- ];
|
|
-
|
|
- postPatch = ''
|
|
- substituteInPlace server/src/infra/tcp_server.rs --subst-var-by frontend '${frontend}'
|
|
+ nativeBuildInputs = [ makeWrapper ];
|
|
+ postInstall = ''
|
|
+ wrapProgram $out/bin/lldap \
|
|
+ --set LLDAP_ASSETS_PATH ${frontend}
|
|
'';
|
|
|
|
passthru = {
|
|
@@ -89,7 +89,10 @@ rustPlatform.buildRustPackage (
|
|
changelog = "https://github.com/lldap/lldap/blob/v${lldap.version}/CHANGELOG.md";
|
|
license = licenses.gpl3Only;
|
|
platforms = platforms.linux;
|
|
- maintainers = with maintainers; [ bendlas ];
|
|
+ maintainers = with maintainers; [
|
|
+ bendlas
|
|
+ ibizaman
|
|
+ ];
|
|
mainProgram = "lldap";
|
|
};
|
|
}
|
|
--
|
|
2.49.0
|
|
|