Firefox Sync Server: Create the private config file as non-world readable.
This commit is contained in:
@@ -4,10 +4,9 @@ with lib;
|
|||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.services.firefox.syncserver;
|
cfg = config.services.firefox.syncserver;
|
||||||
syncServerSecretFile = "/etc/firefox/syncserver-secret.ini";
|
|
||||||
syncServerIni = pkgs.writeText "syncserver.ini" ''
|
syncServerIni = pkgs.writeText "syncserver.ini" ''
|
||||||
[DEFAULT]
|
[DEFAULT]
|
||||||
overrides = ${cfg.privateConfig} ${syncServerSecretFile}
|
overrides = ${cfg.privateConfig}
|
||||||
|
|
||||||
[server:main]
|
[server:main]
|
||||||
use = egg:Paste#http
|
use = egg:Paste#http
|
||||||
@@ -100,12 +99,14 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
privateConfig = mkOption {
|
privateConfig = mkOption {
|
||||||
type = types.separatedString " ";
|
type = types.str;
|
||||||
default = "";
|
default = "/etc/firefox/syncserver-secret.ini";
|
||||||
description = ''
|
description = ''
|
||||||
If defined, this file would be used to set all fields which were omitted in the
|
If defined, this file would be used to set all fields which were omitted in the
|
||||||
generated ini files used for configuring the syncserver. This file is useful
|
generated ini files used for configuring the syncserver. This file is useful
|
||||||
for storing secrets, such as the syncserver.secret or the syncserver.sqluri
|
for storing secrets, such as the syncserver.secret or the syncserver.sqluri.
|
||||||
|
|
||||||
|
If this file does not exists, it would be created with a unique secret.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -120,10 +121,11 @@ in
|
|||||||
path = [ pkgs.pythonPackages.pasteScript pkgs.coreutils ];
|
path = [ pkgs.pythonPackages.pasteScript pkgs.coreutils ];
|
||||||
environment.PYTHONPATH = "${pkgs.pythonPackages.syncserver}/lib/${pkgs.pythonPackages.python.libPrefix}/site-packages";
|
environment.PYTHONPATH = "${pkgs.pythonPackages.syncserver}/lib/${pkgs.pythonPackages.python.libPrefix}/site-packages";
|
||||||
preStart = ''
|
preStart = ''
|
||||||
if ! test -e ${syncServerSecretFile}; then
|
if ! test -e ${cfg.privateConfig}; then
|
||||||
mkdir -p $(dirname ${syncServerSecretFile})
|
umask u=rwx,g=x,o=x
|
||||||
echo > ${syncServerSecretFile} '[syncserver]'
|
mkdir -p $(dirname ${cfg.privateConfig})
|
||||||
echo >> ${syncServerSecretFile} "secret = $(head -c 20 /dev/urandom | sha1sum | tr -d ' -')"
|
echo > ${cfg.privateConfig} '[syncserver]'
|
||||||
|
echo >> ${cfg.privateConfig} "secret = $(head -c 20 /dev/urandom | sha1sum | tr -d ' -')"
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
serviceConfig.ExecStart = "paster serve ${syncServerIni}";
|
serviceConfig.ExecStart = "paster serve ${syncServerIni}";
|
||||||
|
|||||||
Reference in New Issue
Block a user