147 lines
4.3 KiB
Nix
147 lines
4.3 KiB
Nix
{ config, pkgs, ... }:
|
|
with import <stockholm/lib>;
|
|
|
|
{
|
|
services.nginx.virtualHosts.cyberlocker = {
|
|
serverAliases = [ "c.r" ];
|
|
locations."/".extraConfig = ''
|
|
client_max_body_size 4G;
|
|
proxy_set_header Host $host;
|
|
proxy_pass http://127.0.0.1:${toString config.krebs.htgen.cyberlocker.port};
|
|
'';
|
|
extraConfig = ''
|
|
add_header 'Access-Control-Allow-Origin' '*';
|
|
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
|
|
'';
|
|
};
|
|
services.nginx.virtualHosts.paste = {
|
|
serverAliases = [ "p.r" ];
|
|
locations."/".extraConfig = ''
|
|
client_max_body_size 4G;
|
|
proxy_set_header Host $host;
|
|
proxy_pass http://127.0.0.1:${toString config.krebs.htgen.paste.port};
|
|
'';
|
|
locations."/image".extraConfig = /* nginx */ ''
|
|
client_max_body_size 40M;
|
|
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
|
proxy_pass http://127.0.0.1:${toString config.krebs.htgen.imgur.port};
|
|
proxy_pass_header Server;
|
|
'';
|
|
extraConfig = ''
|
|
add_header 'Access-Control-Allow-Origin' '*';
|
|
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
|
|
'';
|
|
};
|
|
services.nginx.virtualHosts."c.krebsco.de" = {
|
|
enableACME = true;
|
|
addSSL = true;
|
|
serverAliases = [ "c.krebsco.de" ];
|
|
locations."/".extraConfig = ''
|
|
if ($request_method != GET) {
|
|
return 403;
|
|
}
|
|
proxy_set_header Host $host;
|
|
proxy_pass http://127.0.0.1:${toString config.krebs.htgen.cyberlocker.port};
|
|
'';
|
|
extraConfig = ''
|
|
add_header 'Access-Control-Allow-Origin' '*';
|
|
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
|
|
'';
|
|
};
|
|
services.nginx.virtualHosts."p.krebsco.de" = {
|
|
enableACME = true;
|
|
addSSL = true;
|
|
serverAliases = [ "p.krebsco.de" ];
|
|
locations."/".extraConfig = ''
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
proxy_pass http://127.0.0.1:${toString config.krebs.htgen.paste.port};
|
|
'';
|
|
locations."/form".extraConfig = ''
|
|
client_max_body_size 4G;
|
|
proxy_set_header Host $host;
|
|
proxy_pass http://127.0.0.1:${toString config.krebs.htgen.paste-form.port};
|
|
'';
|
|
locations."/image".extraConfig = ''
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
|
proxy_pass http://127.0.0.1:${toString config.krebs.htgen.imgur.port};
|
|
proxy_pass_header Server;
|
|
'';
|
|
extraConfig = ''
|
|
add_header 'Access-Control-Allow-Origin' '*';
|
|
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
|
|
'';
|
|
};
|
|
|
|
krebs.htgen.paste = {
|
|
port = 9081;
|
|
script = toString [
|
|
"PATH=${makeBinPath [
|
|
pkgs.nix
|
|
pkgs.file
|
|
]}:$PATH"
|
|
"STATEDIR=$HOME"
|
|
". ${pkgs.htgen}/examples/paste"
|
|
];
|
|
};
|
|
|
|
systemd.services.paste-gc = {
|
|
startAt = "daily";
|
|
serviceConfig = {
|
|
ExecStart = ''
|
|
${pkgs.findutils}/bin/find /var/lib/htgen-paste/items -type f -mtime '+30' -exec rm {} \;
|
|
'';
|
|
User = "htgen-paste";
|
|
};
|
|
};
|
|
|
|
krebs.htgen.paste-form = {
|
|
port = 7770;
|
|
script = /* sh */ ''
|
|
export PATH=${makeBinPath [
|
|
pkgs.curl
|
|
pkgs.gnused
|
|
]}:$PATH
|
|
(. ${pkgs.writeScript "paste-form" ''
|
|
case "$Method" in
|
|
'POST')
|
|
ref=$(head -c $req_content_length | sed '0,/^\r$/d;$d' | curl -fSs --data-binary @- https://p.krebsco.de | sed '1d;s/^http:/https:/')
|
|
|
|
printf 'HTTP/1.1 200 OK\r\n'
|
|
printf 'Content-Type: text/plain; charset=UTF-8\r\n'
|
|
printf 'Server: %s\r\n' "$Server"
|
|
printf 'Connection: close\r\n'
|
|
printf 'Content-Length: %d\r\n' $(expr ''${#ref} + 1)
|
|
printf '\r\n'
|
|
printf '%s\n' "$ref"
|
|
|
|
exit
|
|
;;
|
|
esac
|
|
''})
|
|
'';
|
|
};
|
|
krebs.htgen.imgur = {
|
|
port = 7771;
|
|
script = /* sh */ ''
|
|
(. ${pkgs.htgen-imgur}/bin/htgen-imgur)
|
|
'';
|
|
};
|
|
krebs.htgen.cyberlocker = {
|
|
port = 7772;
|
|
script = /* sh */ ''
|
|
(. ${pkgs.htgen-cyberlocker}/bin/htgen-cyberlocker)
|
|
'';
|
|
};
|
|
krebs.iptables.tables.filter.INPUT.rules = [
|
|
{ predicate = "-i retiolum -p tcp --dport 80"; target = "ACCEPT";}
|
|
];
|
|
}
|