summaryrefslogtreecommitdiffstats
path: root/makefu/2configs/dcpp/airdcpp.nix
blob: ad62babc3bdd111da8c4fe9df375d663292181a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
{ config, ... }:
{
  krebs.airdcpp = {
    enable = true;
    extraGroups = [ "download" ];
    web.port = 5600;
    web.users.makefu.password = builtins.readFile <secrets/airdcpp-makefu.pw>; # watch out for newline!
    hubs."krebshub" =
    { Nick = "makefu-${config.krebs.build.host.name}";
      Password = builtins.readFile <secrets/krebshub.pw>;
      Server = "adcs://hub.nsupdate.info:411";
      AutoConnect = true;
    };
    dcpp = {
      shares = {
        # Incoming must be writeable!
        incoming = { path = config.makefu.dl-dir + "/finished/dcpp"; incoming = true; };
        audiobooks.path = config.makefu.dl-dir + "/finished/audiobooks";
      };
      Nick = "makefu";
      DownloadSpeed = "1000";
      UploadSpeed = "1000";
    };
  };
  networking.firewall.allowedTCPPorts =
  [ config.krebs.airdcpp.dcpp.InPort
    config.krebs.airdcpp.dcpp.TLSPort
  ];
  networking.firewall.allowedUDPPorts = [ config.krebs.airdcpp.dcpp.UDPPort ];

  services.nginx.virtualHosts."dcpp.${config.krebs.build.host.name}.r".locations."/" =
  { proxyPass = "http://localhost:${toString config.krebs.airdcpp.web.port}/";

    extraConfig = ''
      proxy_set_header   Host $host;
      proxy_set_header   X-Real-IP          $remote_addr;
      proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
      gzip_types      text/plain application/javascript;

      # Proxy websockets
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";

    '';
  };
  state = map (f: "${config.krebs.airdcpp.stateDir}/${f}")
    [ "Favorites.xml" "DCPlusPlus.xml" "WebServer.xml" "Recents.xml" "IgnoredUsers.xml" ];
}