From a840a21c954be6342603ae7a45dde6c005761696 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Isma=C3=ABl=20Bouya?= Date: Mon, 15 Apr 2019 00:23:03 +0200 Subject: [PATCH] Move ttrss, wallabag, ldap and roundcubemail passwords to secure location Related issue: https://git.immae.eu/mantisbt/view.php?id=122 --- .../modules/websites/tools/tools/default.nix | 20 ++- .../modules/websites/tools/tools/dokuwiki.nix | 1 + nixops/modules/websites/tools/tools/ldap.nix | 45 ++++--- .../modules/websites/tools/tools/rainloop.nix | 1 + .../websites/tools/tools/roundcubemail.nix | 101 +++++++------- nixops/modules/websites/tools/tools/ttrss.nix | 103 +++++++------- .../modules/websites/tools/tools/wallabag.nix | 127 +++++++++--------- .../modules/websites/tools/tools/yourls.nix | 13 +- 8 files changed, 232 insertions(+), 179 deletions(-) diff --git a/nixops/modules/websites/tools/tools/default.nix b/nixops/modules/websites/tools/tools/default.nix index 14b5934..3d5465f 100644 --- a/nixops/modules/websites/tools/tools/default.nix +++ b/nixops/modules/websites/tools/tools/default.nix @@ -46,7 +46,13 @@ in { security.acme.certs."eldiron".extraDomains."tools.immae.eu" = null; security.acme.certs."eldiron".extraDomains."devtools.immae.eu" = null; - deployment.keys = kanboard.keys; + deployment.keys = + kanboard.keys + // ldap.keys + // roundcubemail.keys + // ttrss.keys + // wallabag.keys + // yourls.keys; services.myWebsites.integration.modules = rainloop.apache.modules; @@ -131,7 +137,17 @@ in { ]; }; - services.myPhpfpm.serviceDependencies.kanboard = kanboard.phpFpm.serviceDeps; + services.myPhpfpm.serviceDependencies = { + dokuwiki = dokuwiki.phpFpm.serviceDeps; + kanboard = kanboard.phpFpm.serviceDeps; + ldap = ldap.phpFpm.serviceDeps; + rainloop = rainloop.phpFpm.serviceDeps; + roundcubemail = roundcubemail.phpFpm.serviceDeps; + ttrss = ttrss.phpFpm.serviceDeps; + wallabag = wallabag.phpFpm.serviceDeps; + yourls = yourls.phpFpm.serviceDeps; + }; + services.myPhpfpm.poolPhpConfigs.roundcubemail = roundcubemail.phpFpm.phpConfig; services.myPhpfpm.poolConfigs = { adminer = adminer.phpFpm.pool; diff --git a/nixops/modules/websites/tools/tools/dokuwiki.nix b/nixops/modules/websites/tools/tools/dokuwiki.nix index 2f4e8c1..2cd19f1 100644 --- a/nixops/modules/websites/tools/tools/dokuwiki.nix +++ b/nixops/modules/websites/tools/tools/dokuwiki.nix @@ -76,6 +76,7 @@ let ''; }; phpFpm = rec { + serviceDeps = [ "openldap.service" ]; basedir = builtins.concatStringsSep ":" ( [ webRoot varDir ] ++ lib.attrsets.mapAttrsToList (name: value: value) plugins); diff --git a/nixops/modules/websites/tools/tools/ldap.nix b/nixops/modules/websites/tools/tools/ldap.nix index 6cde881..9d98837 100644 --- a/nixops/modules/websites/tools/tools/ldap.nix +++ b/nixops/modules/websites/tools/tools/ldap.nix @@ -1,24 +1,30 @@ { lib, php, env, writeText, stdenv, optipng, fetchurl }: rec { - config = writeText "config.php" '' - custom->appearance['show_clear_password'] = true; - $config->custom->appearance['hide_template_warning'] = true; - $config->custom->appearance['theme'] = "tango"; - $config->custom->appearance['minimalMode'] = true; + keys.tools-ldap = { + destDir = "/run/keys/webapps"; + user = apache.user; + group = apache.group; + permissions = "0700"; + text = '' + 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); - ''; + $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}"; @@ -39,7 +45,7 @@ rec { ''; installPhase = '' cp -a . $out - ln -sf ${config} $out/config/config.php + ln -sf /run/keys/webapps/tools-ldap $out/config/config.php ''; }; apache = rec { @@ -62,7 +68,8 @@ rec { ''; }; phpFpm = rec { - basedir = builtins.concatStringsSep ":" [ webRoot config ]; + serviceDeps = [ "openldap.service" "tools-ldap-key.service" ]; + basedir = builtins.concatStringsSep ":" [ webRoot "/run/keys/webapps/tools-ldap" ]; socket = "/var/run/phpfpm/ldap.sock"; pool = '' listen = ${socket} diff --git a/nixops/modules/websites/tools/tools/rainloop.nix b/nixops/modules/websites/tools/tools/rainloop.nix index 7aaa4eb..457e546 100644 --- a/nixops/modules/websites/tools/tools/rainloop.nix +++ b/nixops/modules/websites/tools/tools/rainloop.nix @@ -39,6 +39,7 @@ rec { ''; }; phpFpm = rec { + serviceDeps = [ "postgresql.service" ]; basedir = builtins.concatStringsSep ":" [ webRoot varDir ]; socket = "/var/run/phpfpm/rainloop.sock"; pool = '' diff --git a/nixops/modules/websites/tools/tools/roundcubemail.nix b/nixops/modules/websites/tools/tools/roundcubemail.nix index 1e1f95b..3806679 100644 --- a/nixops/modules/websites/tools/tools/roundcubemail.nix +++ b/nixops/modules/websites/tools/tools/roundcubemail.nix @@ -78,59 +78,65 @@ let install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions ''; }; - config = writeText "config.php" '' - array("verify_peer" => false)); - $config['smtp_server'] = 'tls://mail.immae.eu'; - $config['smtp_port'] = '25'; - $config['managesieve_host'] = 'mail.immae.eu'; - $config['managesieve_port'] = '4190'; - $config['managesieve_usetls'] = true; - $config['managesieve_conn_options'] = array("ssl" => array("verify_peer" => false)); + keys.tools-roundcube = { + destDir = "/run/keys/webapps"; + user = apache.user; + group = apache.group; + permissions = "0700"; + text = '' + array("verify_peer" => false)); + $config['smtp_server'] = 'tls://mail.immae.eu'; + $config['smtp_port'] = '25'; + $config['managesieve_host'] = 'mail.immae.eu'; + $config['managesieve_port'] = '4190'; + $config['managesieve_usetls'] = true; + $config['managesieve_conn_options'] = array("ssl" => array("verify_peer" => false)); - $config['imap_cache'] = 'db'; - $config['messages_cache'] = 'db'; + $config['imap_cache'] = 'db'; + $config['messages_cache'] = 'db'; - $config['support_url'] = '''; + $config['support_url'] = '''; - $config['des_key'] = '${env.secret}'; + $config['des_key'] = '${env.secret}'; - $config['skin'] = 'elastic'; - $config['plugins'] = array( - 'attachment_reminder', - 'emoticons', - 'filesystem_attachments', - 'hide_blockquote', - 'identicon', - 'identity_select', - 'jqueryui', - 'managesieve', - 'newmail_notifier', - 'vcard_attachments', - 'zipdownload', + $config['skin'] = 'elastic'; + $config['plugins'] = array( + 'attachment_reminder', + 'emoticons', + 'filesystem_attachments', + 'hide_blockquote', + 'identicon', + 'identity_select', + 'jqueryui', + 'managesieve', + 'newmail_notifier', + 'vcard_attachments', + 'zipdownload', - 'automatic_addressbook', - 'message_highlight', - 'carddav', - // Ne marche pas ?: 'ident_switch', - // Ne marche pas ?: 'thunderbird_labels', - ); + 'automatic_addressbook', + 'message_highlight', + 'carddav', + // Ne marche pas ?: 'ident_switch', + // Ne marche pas ?: 'thunderbird_labels', + ); - $config['language'] = 'fr_FR'; + $config['language'] = 'fr_FR'; - $config['drafts_mbox'] = 'Mail/Drafts'; - $config['junk_mbox'] = 'Mail/Spam'; - $config['sent_mbox'] = 'Mail/sent'; - $config['trash_mbox'] = '''; - $config['default_folders'] = array('INBOX', 'Mail/Drafts', 'Mail/sent', 'Mail/Spam', '''); - $config['draft_autosave'] = 60; - $config['enable_installer'] = false; - $config['log_driver'] = 'file'; - $config['temp_dir'] = '${varDir}/cache'; - $config['mime_types'] = '${apacheHttpd}/conf/mime.types'; + $config['drafts_mbox'] = 'Mail/Drafts'; + $config['junk_mbox'] = 'Mail/Spam'; + $config['sent_mbox'] = 'Mail/sent'; + $config['trash_mbox'] = '''; + $config['default_folders'] = array('INBOX', 'Mail/Drafts', 'Mail/sent', 'Mail/Spam', '''); + $config['draft_autosave'] = 60; + $config['enable_installer'] = false; + $config['log_driver'] = 'file'; + $config['temp_dir'] = '${varDir}/cache'; + $config['mime_types'] = '${apacheHttpd}/conf/mime.types'; ''; + }; webRoot = stdenv.mkDerivation rec { version = "1.4-rc1"; name = "roundcubemail-${version}"; @@ -148,7 +154,7 @@ let ''; installPhase = '' cp -a . $out - ln -s ${config} $out/config/config.inc.php + ln -s /run/keys/webapps/tools-roundcube $out/config/config.inc.php ${builtins.concatStringsSep "\n" ( lib.attrsets.mapAttrsToList (name: value: "ln -sf ${value} $out/plugins/${name}") plugins )} @@ -178,8 +184,9 @@ let ''; }; phpFpm = rec { + serviceDeps = [ "postgresql.service" "tools-roundcube-key.service" ]; basedir = builtins.concatStringsSep ":" ( - [ webRoot config varDir ] + [ webRoot "/run/keys/webapps/tools-roundcube" varDir ] ++ lib.attrsets.mapAttrsToList (name: value: value) plugins ++ lib.attrsets.mapAttrsToList (name: value: value) skins); phpConfig = '' diff --git a/nixops/modules/websites/tools/tools/ttrss.nix b/nixops/modules/websites/tools/tools/ttrss.nix index ca049e6..6a5efd9 100644 --- a/nixops/modules/websites/tools/tools/ttrss.nix +++ b/nixops/modules/websites/tools/tools/ttrss.nix @@ -52,69 +52,75 @@ let install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions ''; }; - config = writeText "config.php" '' -