Unverified Commit a0f26d0f authored by IndeedNotJames's avatar IndeedNotJames
Browse files

lldap: init at 0.4.3

parent 6c43a349
Loading
Loading
Loading
Loading
+4908 −0

File added.

Preview size limit exceeded, changes collapsed.

+63 −0
Original line number Diff line number Diff line
{ fetchFromGitHub
, fetchzip
, lib
, lldap
, rustPlatform
}:

let
  # We cannot build the wasm frontend from source, as the
  # wasm32-unknown-unknown rustc target isn't available in nixpkgs yet.
  # Tracking issue: https://github.com/NixOS/nixpkgs/issues/89426
  frontend = fetchzip {
    url = "https://github.com/lldap/lldap/releases/download/v${lldap.version}/amd64-lldap.tar.gz";
    hash = "sha256-/Ml4L5Gxpnmt1pLSiLNuxtzQYjTCatsVe/hE+Btl8BI=";
    name = "lldap-frontend-${lldap.version}";
    postFetch = ''
      mv $out $TMPDIR/extracted
      mv $TMPDIR/extracted/app $out
    '';
  };
in
rustPlatform.buildRustPackage rec {
  pname = "lldap";
  version = "0.4.3";

  src = fetchFromGitHub {
    owner = "lldap";
    repo = "lldap";
    rev = "v${version}";
    hash = "sha256-FAUTykFh2eGVpx6LrCjV9xWbBPH8pCgAJv3vOXFMFZ4=";
  };

  # `Cargo.lock` has git dependencies, meaning can't use `cargoHash`
  cargoLock = {
    # 0.4.3 has been tagged before the actual Cargo.lock bump, resulting in an inconsitent lock file.
    # To work around this, the Cargo.lock below is from the commit right after the tag:
    # https://github.com/lldap/lldap/commit/7b4188a376baabda48d88fdca3a10756da48adda
    lockFile = ./Cargo.lock;
    outputHashes = {
      "lber-0.4.1" = "sha256-2rGTpg8puIAXggX9rEbXPdirfetNOHWfFc80xqzPMT4=";
      "opaque-ke-0.6.1" = "sha256-99gaDv7eIcYChmvOKQ4yXuaGVzo2Q6BcgSQOzsLF+fM=";
      "yew_form-0.1.8" = "sha256-1n9C7NiFfTjbmc9B5bDEnz7ZpYJo9ZT8/dioRXJ65hc=";
    };
  };

  patches = [
    ./static-frontend-path.patch
  ];

  postPatch = ''
    ln -s --force ${./Cargo.lock} Cargo.lock
    substituteInPlace server/src/infra/tcp_server.rs --subst-var-by frontend '${frontend}'
  '';

  meta = with lib; {
    description = "A lightweight authentication server that provides an opinionated, simplified LDAP interface for authentication";
    homepage = "https://github.com/lldap/lldap";
    changelog = "https://github.com/lldap/lldap/blob/v${version}/CHANGELOG.md";
    license = licenses.gpl3Only;
    platforms = platforms.linux;
    maintainers = with maintainers; [ indeednotjames ];
  };
}
+43 −0
Original line number Diff line number Diff line
diff --git a/server/src/infra/tcp_server.rs b/server/src/infra/tcp_server.rs
index 43f65ea..e289f2a 100644
--- a/server/src/infra/tcp_server.rs
+++ b/server/src/infra/tcp_server.rs
@@ -26,7 +26,7 @@ use std::sync::RwLock;
 use tracing::info;
 
 async fn index() -> actix_web::Result<NamedFile> {
-    let path = PathBuf::from(r"app/index.html");
+    let path = PathBuf::from(r"@frontend@/index.html");
     Ok(NamedFile::open(path)?)
 }
 
@@ -68,12 +68,12 @@ pub(crate) fn error_to_http_response(error: TcpError) -> HttpResponse {
 }
 
 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)
@@ -118,11 +118,11 @@ fn http_config<Backend>(
     )
     .service(web::resource("/pkg/lldap_app_bg.wasm").route(web::route().to(wasm_handler)))
     // 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));
 }
+2 −0
Original line number Diff line number Diff line
@@ -25197,6 +25197,8 @@ with pkgs;
  livepeer = callPackage ../servers/livepeer { };
  lldap = callPackage ../servers/ldap/lldap { };
  lwan = callPackage ../servers/http/lwan { };
  labelImg = callPackage ../applications/science/machine-learning/labelimg { };