Merge pull request #60575 from dtzWill/feature/obfs4proxy

obfs4: init at 0.0.10, use in tor-browser-bundle's, tor service

authored by

Joachim F and committed by
GitHub
5ad1e9f0 a8ad94a2

+36 -7
+9 -2
nixos/modules/services/security/tor.nix
··· 81 81 82 82 ${optionalString (elem cfg.relay.role ["bridge" "private-bridge"]) '' 83 83 BridgeRelay 1 84 - ServerTransportPlugin obfs2,obfs3 exec ${pkgs.pythonPackages.obfsproxy}/bin/obfsproxy managed 84 + ServerTransportPlugin ${concatStringsSep "," cfg.relay.bridgeTransports} exec ${obfs4}/bin/obfs4proxy managed 85 85 ExtORPort auto 86 86 ${optionalString (cfg.relay.role == "private-bridge") '' 87 87 ExtraInfoStatistics 0 ··· 355 355 <para> 356 356 Regular bridge. Works like a regular relay, but 357 357 doesn't list you in the public relay directory and 358 - hides your Tor node behind obfsproxy. 358 + hides your Tor node behind obfs4proxy. 359 359 </para> 360 360 361 361 <para> ··· 422 422 </varlistentry> 423 423 </variablelist> 424 424 ''; 425 + }; 426 + 427 + bridgeTransports = mkOption { 428 + type = types.listOf types.str; 429 + default = ["obfs4"]; 430 + example = ["obfs2" "obfs3" "obfs4" "scramblesuit"]; 431 + description = "List of pluggable transports"; 425 432 }; 426 433 427 434 nickname = mkOption {
+4 -4
pkgs/applications/networking/browsers/tor-browser-bundle/default.nix
··· 34 34 , rsync 35 35 36 36 # Pluggable transports 37 - , obfsproxy 37 + , obfs4 38 38 39 39 # Customization 40 40 , extraPrefs ? "" ··· 171 171 EOF 172 172 173 173 # Configure pluggable transports 174 - cat >>$TBDATA_PATH/torrc-defaults <<EOF 175 - ClientTransportPlugin obfs2,obfs3 exec ${obfsproxy}/bin/obfsproxy managed 176 - EOF 174 + substituteInPlace $TBDATA_PATH/torrc-defaults \ 175 + --replace "./TorBrowser/Tor/PluggableTransports/obfs4proxy" \ 176 + "${obfs4}/bin/obfs4proxy" 177 177 178 178 # Hard-code path to TBB fonts; xref: FONTCONFIG_FILE in the wrapper below 179 179 sed $bundleData/$bundlePlatform/Data/fontconfig/fonts.conf \
+21
pkgs/tools/networking/obfs4/default.nix
··· 1 + { lib, fetchgit, buildGoModule }: 2 + 3 + buildGoModule rec { 4 + pname = "obfs4"; 5 + version = "0.0.10"; 6 + 7 + src = fetchgit { 8 + url = meta.repositories.git; 9 + rev = "refs/tags/${pname}proxy-${version}"; 10 + sha256 = "05aqmw8x8s0yqyqmdj5zcsq06gsbcmrlcd52gaqm20m1pg9503ad"; 11 + }; 12 + 13 + modSha256 = "150kg22kznrdj5icjxk3qd70g7wpq8zd2zklw1y2fgvrggw8zvyv"; 14 + 15 + meta = with lib; { 16 + description = "A pluggable transport proxy"; 17 + homepage = https://www.torproject.org/projects/obfsproxy; 18 + repositories.git = https://git.torproject.org/pluggable-transports/obfs4.git; 19 + maintainers = with maintainers; [ phreedom thoughtpolice ]; 20 + }; 21 + }
+2 -1
pkgs/top-level/all-packages.nix
··· 4787 4787 4788 4788 obexd = callPackage ../tools/bluetooth/obexd { }; 4789 4789 4790 + obfs4 = callPackage ../tools/networking/obfs4 { }; 4791 + 4790 4792 oci-image-tool = callPackage ../tools/misc/oci-image-tool { }; 4791 4793 4792 4794 ocproxy = callPackage ../tools/networking/ocproxy { }; ··· 6097 6099 tor-browser-bundle = callPackage ../applications/networking/browsers/tor-browser-bundle { 6098 6100 stdenv = stdenvNoCC; 6099 6101 tor-browser-unwrapped = firefoxPackages.tor-browser; 6100 - inherit (python27Packages) obfsproxy; 6101 6102 }; 6102 6103 6103 6104 touchegg = callPackage ../tools/inputmethods/touchegg { };