summaryrefslogtreecommitdiffstats
path: root/nixos/modules/services/security/tor.nix
diff options
context:
space:
mode:
authorRobert Schütz <robert.schuetz@stud.uni-heidelberg.de>2018-02-07 03:20:41 +0100
committerRobert Schütz <robert.schuetz@stud.uni-heidelberg.de>2018-02-08 10:02:22 +0100
commit355de06fe474e5a25a4daca72c55681a0b7c6e83 (patch)
tree4c7818bf711d1cfd6bc4853786e51b2033b248aa /nixos/modules/services/security/tor.nix
parentc65e36c9caec87873175095f07b052760b42e3ef (diff)
nixos/tor: add hiddenServices.<name>.authorizeClient
Diffstat (limited to 'nixos/modules/services/security/tor.nix')
-rw-r--r--nixos/modules/services/security/tor.nix30
1 files changed, 30 insertions, 0 deletions
diff --git a/nixos/modules/services/security/tor.nix b/nixos/modules/services/security/tor.nix
index fa4aeb22ae9d..fed91756e769 100644
--- a/nixos/modules/services/security/tor.nix
+++ b/nixos/modules/services/security/tor.nix
@@ -88,6 +88,9 @@ let
${flip concatMapStrings v.map (p: ''
HiddenServicePort ${toString p.port} ${p.destination}
'')}
+ ${optionalString (v.authorizeClient != null) ''
+ HiddenServiceAuthorizeClient ${v.authorizeClient.authType} ${concatStringsSep "," v.authorizeClient.clientNames}
+ ''}
''))
+ cfg.extraConfig;
@@ -619,6 +622,33 @@ in
}));
};
+ authorizeClient = mkOption {
+ default = null;
+ description = "If configured, the hidden service is accessible for authorized clients only.";
+ type = types.nullOr (types.submodule ({config, ...}: {
+
+ options = {
+
+ authType = mkOption {
+ type = types.enum [ "basic" "stealth" ];
+ description = ''
+ Either <literal>"basic"</literal> for a general-purpose authorization protocol
+ or <literal>"stealth"</literal> for a less scalable protocol
+ that also hides service activity from unauthorized clients.
+ '';
+ };
+
+ clientNames = mkOption {
+ type = types.nonEmptyListOf (types.strMatching "[A-Za-z0-9+-_]+");
+ description = ''
+ Only clients that are listed here are authorized to access the hidden service.
+ Generated authorization data can be found in <filename>${torDirectory}/onion/$name/hostname</filename>.
+ Clients need to put this authorization data in their configuration file using <literal>HidServAuth</literal>.
+ '';
+ };
+ };
+ }));
+ };
};
config = {