summary refs log tree commit diff
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)
downloadnixpkgs-355de06fe474e5a25a4daca72c55681a0b7c6e83.tar
nixpkgs-355de06fe474e5a25a4daca72c55681a0b7c6e83.tar.gz
nixpkgs-355de06fe474e5a25a4daca72c55681a0b7c6e83.tar.bz2
nixpkgs-355de06fe474e5a25a4daca72c55681a0b7c6e83.tar.lz
nixpkgs-355de06fe474e5a25a4daca72c55681a0b7c6e83.tar.xz
nixpkgs-355de06fe474e5a25a4daca72c55681a0b7c6e83.tar.zst
nixpkgs-355de06fe474e5a25a4daca72c55681a0b7c6e83.zip
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 fa4aeb22ae9..fed91756e76 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 = {