]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - nixops/modules/websites/tools/tools/ldap.nix
Add roundcubemail to pkgs
[perso/Immae/Config/Nix.git] / nixops / modules / websites / tools / tools / ldap.nix
index 6cde881ccecb1f4133ffa656e9868de4c10cc472..8ee39f61e9dc5fb26297d4c3b11546cb146bb623 100644 (file)
@@ -1,47 +1,31 @@
-{ lib, php, env, writeText, stdenv, optipng, fetchurl }:
+{ lib, php, env, writeText, phpldapadmin }:
 rec {
-  config = writeText "config.php" ''
-    <?php
-    $config->custom->appearance['show_clear_password'] = true;
-    $config->custom->appearance['hide_template_warning'] = true;
-    $config->custom->appearance['theme'] = "tango";
-    $config->custom->appearance['minimalMode'] = true;
+  keys = [{
+    dest = "webapps/tools-ldap";
+    user = apache.user;
+    group = apache.group;
+    permissions = "0400";
+    text = ''
+      <?php
+      $config->custom->appearance['show_clear_password'] = true;
+      $config->custom->appearance['hide_template_warning'] = true;
+      $config->custom->appearance['theme'] = "tango";
+      $config->custom->appearance['minimalMode'] = true;
 
-    $servers = new Datastore();
+      $servers = new Datastore();
 
-    $servers->newServer('ldap_pla');
-    $servers->setValue('server','name','Immae’s LDAP');
-    $servers->setValue('server','host','ldaps://${env.ldap.host}');
-    $servers->setValue('login','auth_type','cookie');
-    $servers->setValue('login','bind_id','${env.ldap.dn}');
-    $servers->setValue('login','bind_pass','${env.ldap.password}');
-    $servers->setValue('appearance','password_hash','ssha');
-    $servers->setValue('login','attr','uid');
-    $servers->setValue('login','fallback_dn',true);
-    '';
-  webRoot = stdenv.mkDerivation rec {
-    version = "1.2.3";
-    name = "phpldapadmin-${version}";
-    src = fetchurl {
-      url = "https://downloads.sourceforge.net/project/phpldapadmin/phpldapadmin-php5/${version}/${name}.tgz";
-      sha256 = "0n7dhp2a7n1krmnik3pb969jynsmhghmxviivnckifkprv1zijmf";
-    };
-    patches = [
-      ./ldap-php5_5.patch
-      ./ldap-disable-mcrypt.patch
-      ./ldap-php7_2.patch
-      ./ldap-sort-in-templates.patch
-      ./ldap-align-button.patch
-      ];
-    buildInputs = [ optipng ];
-    buildPhase = ''
-      find -name '*.png' -exec optipng -quiet -force -fix {} \;
-    '';
-    installPhase = ''
-      cp -a . $out
-      ln -sf ${config} $out/config/config.php
-    '';
-  };
+      $servers->newServer('ldap_pla');
+      $servers->setValue('server','name','Immae&#x2019;s LDAP');
+      $servers->setValue('server','host','ldaps://${env.ldap.host}');
+      $servers->setValue('login','auth_type','cookie');
+      $servers->setValue('login','bind_id','${env.ldap.dn}');
+      $servers->setValue('login','bind_pass','${env.ldap.password}');
+      $servers->setValue('appearance','password_hash','ssha');
+      $servers->setValue('login','attr','uid');
+      $servers->setValue('login','fallback_dn',true);
+      '';
+  }];
+  webRoot = phpldapadmin.override { config = "/var/secrets/webapps/tools-ldap"; };
   apache = rec {
     user = "wwwrun";
     group = "wwwrun";
@@ -62,7 +46,8 @@ rec {
       '';
   };
   phpFpm = rec {
-    basedir = builtins.concatStringsSep ":" [ webRoot config ];
+    serviceDeps = [ "openldap.service" ];
+    basedir = builtins.concatStringsSep ":" [ webRoot "/var/secrets/webapps/tools-ldap" ];
     socket = "/var/run/phpfpm/ldap.sock";
     pool = ''
       listen = ${socket}
@@ -76,7 +61,8 @@ rec {
 
       ; Needed to avoid clashes in browser cookies (same domain)
       php_value[session.name] = LdapPHPSESSID
-      php_admin_value[open_basedir] = "${basedir}:/tmp"
+      php_admin_value[open_basedir] = "${basedir}:/tmp:/var/lib/php/sessions/phpldapadmin"
+      php_admin_value[session.save_path] = "/var/lib/php/sessions/phpldapadmin"
       '';
   };
 }