mirror of
https://github.com/gensokyo-zone/infrastructure.git
synced 2026-02-09 04:19:19 -08:00
feat(access): map
This commit is contained in:
parent
1a4ab08adc
commit
22f5a3d420
9 changed files with 210 additions and 24 deletions
|
|
@ -1,15 +1,20 @@
|
|||
{
|
||||
config,
|
||||
gensokyo-zone,
|
||||
access,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.modules) mkMerge mkDefault;
|
||||
inherit (lib.modules) mkIf mkMerge mkDefault;
|
||||
inherit (gensokyo-zone.lib) domain;
|
||||
inherit (config.services) nginx;
|
||||
minecraftSystem = access.systemForService "minecraft";
|
||||
inherit (minecraftSystem.exports.services) minecraft;
|
||||
minecraftBackups = "${config.kyuuto.dataDir}/minecraft/simplebackups";
|
||||
minecraftDownloads = "${config.kyuuto.shareDir}/projects/minecraft/public";
|
||||
upstreamNameDynmap = "minecraft'dynmap";
|
||||
upstreamNameBluemap = "minecraft'bluemap";
|
||||
root = pkgs.linkFarm "genso-minecraft-backups" [
|
||||
{
|
||||
name = "minecraft/downloads";
|
||||
|
|
@ -20,7 +25,15 @@
|
|||
path = minecraftBackups;
|
||||
}
|
||||
{
|
||||
name = "minecraft/wiki/dummy";
|
||||
name = "minecraft/wiki/empty";
|
||||
path = "nope";
|
||||
}
|
||||
{
|
||||
name = "minecraft/dmap/empty";
|
||||
path = "nope";
|
||||
}
|
||||
{
|
||||
name = "minecraft/bmap/empty";
|
||||
path = "nope";
|
||||
}
|
||||
];
|
||||
|
|
@ -33,20 +46,65 @@
|
|||
auth_basic_user_file ${config.sops.secrets.access-web-htpasswd.path};
|
||||
'';
|
||||
in {
|
||||
services.nginx.virtualHosts.gensokyoZone = {
|
||||
locations = {
|
||||
"/minecraft" = {
|
||||
inherit root extraConfig;
|
||||
services.nginx = {
|
||||
upstreams' = {
|
||||
${upstreamNameDynmap} = mkIf minecraft.ports.dynmap.enable {
|
||||
servers.service.accessService = {
|
||||
name = "minecraft";
|
||||
system = minecraftSystem.name;
|
||||
port = "dynmap";
|
||||
};
|
||||
};
|
||||
"/minecraft/wiki" = {
|
||||
return = "302 https://wiki.${domain}/minecraft/";
|
||||
${upstreamNameBluemap} = mkIf minecraft.ports.bluemap.enable {
|
||||
servers.service.accessService = {
|
||||
name = "minecraft";
|
||||
system = minecraftSystem.name;
|
||||
port = "bluemap";
|
||||
};
|
||||
};
|
||||
"/minecraft/backups" = {
|
||||
inherit root;
|
||||
extraConfig = mkMerge [
|
||||
extraConfig
|
||||
authPrivate
|
||||
];
|
||||
};
|
||||
virtualHosts.gensokyoZone = {
|
||||
locations = {
|
||||
"/minecraft" = {
|
||||
inherit root extraConfig;
|
||||
};
|
||||
"/minecraft/wiki" = {
|
||||
return = "302 https://wiki.${domain}/minecraft/";
|
||||
};
|
||||
"/minecraft/map" = {xvars, ...}: let
|
||||
defaultMap = if minecraft.ports.bluemap.enable then "bmap" else "dmap";
|
||||
in {
|
||||
return = "302 ${xvars.get.scheme}://${xvars.get.host}/minecraft/${defaultMap}/";
|
||||
};
|
||||
"/minecraft/dmap/" = mkIf minecraft.ports.dynmap.enable {
|
||||
proxy = {
|
||||
enable = true;
|
||||
upstream = mkDefault upstreamNameDynmap;
|
||||
path = "/";
|
||||
};
|
||||
extraConfig = mkMerge [
|
||||
"gzip off;"
|
||||
authPrivate
|
||||
];
|
||||
};
|
||||
"/minecraft/bmap/" = mkIf minecraft.ports.bluemap.enable {
|
||||
proxy = {
|
||||
enable = true;
|
||||
upstream = mkDefault upstreamNameBluemap;
|
||||
path = "/";
|
||||
};
|
||||
extraConfig = mkMerge [
|
||||
"gzip off;"
|
||||
authPrivate
|
||||
];
|
||||
};
|
||||
"/minecraft/backups" = {
|
||||
inherit root;
|
||||
extraConfig = mkMerge [
|
||||
extraConfig
|
||||
authPrivate
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue