fix: matrix rtc mapping
This commit is contained in:
parent
1a3d1f1fdd
commit
20f8049d64
4 changed files with 49 additions and 15 deletions
|
|
@ -29,6 +29,19 @@ in
|
|||
proxyWebsockets = true;
|
||||
};
|
||||
}
|
||||
# {
|
||||
# type = "proxy";
|
||||
# domain = net.devices.remote_proxy.domain;
|
||||
# endpoint = "/.well-known/matrix/";
|
||||
# force_ssl = true;
|
||||
# port = 443;
|
||||
# content = {
|
||||
# type = "service";
|
||||
# ip = net.devices.pi.ip;
|
||||
# port = services.continuwuity.port;
|
||||
# proxyWebsockets = true;
|
||||
# };
|
||||
# }
|
||||
{
|
||||
type = "inline";
|
||||
domain = net.devices.remote_proxy.domain;
|
||||
|
|
@ -37,6 +50,11 @@ in
|
|||
port = 443;
|
||||
content = {
|
||||
contentType = "application/json";
|
||||
headers = {
|
||||
Access-Control-Allow-Origin = "*";
|
||||
Access-Control-Allow-Methods = "GET, POST, PUT, DELETE, OPTIONS";
|
||||
Access-Control-Allow-Headers = "X-Requested-With, Content-Type, Authorization";
|
||||
};
|
||||
status = 200;
|
||||
body = ''{"m.server":"${net.devices.remote_proxy.domain}:443"}'';
|
||||
};
|
||||
|
|
@ -49,20 +67,13 @@ in
|
|||
port = 443;
|
||||
content = {
|
||||
contentType = "application/json";
|
||||
headers = {
|
||||
Access-Control-Allow-Origin = "*";
|
||||
Access-Control-Allow-Methods = "GET, POST, PUT, DELETE, OPTIONS";
|
||||
Access-Control-Allow-Headers = "X-Requested-With, Content-Type, Authorization";
|
||||
};
|
||||
status = 200;
|
||||
body = ''
|
||||
{
|
||||
"m.homeserver": {
|
||||
"base_url": "https://${net.devices.remote_proxy.domain}"
|
||||
},
|
||||
"org.matrix.msc4143.rtc_foci": [
|
||||
{
|
||||
"type": "livekit",
|
||||
"livekit_service_url": "https://livekit.${net.devices.remote_proxy.domain}"
|
||||
}
|
||||
]
|
||||
}
|
||||
'';
|
||||
body = ''{"m.homeserver": {"base_url": "https://${net.devices.remote_proxy.domain}"},"org.matrix.msc3575.proxy":{"url":"https://nudelerde.de/"},"org.matrix.msc4143.rtc_foci": [{"type": "livekit","livekit_service_url": "https://livekit.${net.devices.remote_proxy.domain}"}]}'';
|
||||
};
|
||||
}
|
||||
]
|
||||
|
|
@ -8,7 +8,7 @@ rec {
|
|||
server_name = "nudelerde.de";
|
||||
trusted_servers = [ "matrix.org" ];
|
||||
memory_max = "512M";
|
||||
livekit_url = "https://livekit.nudelerde.de/livekit/jwt";
|
||||
livekit_url = "https://livekit.nudelerde.de";
|
||||
|
||||
package = {
|
||||
version = "0.5.6";
|
||||
|
|
|
|||
|
|
@ -241,6 +241,14 @@ let
|
|||
route.content.contentType
|
||||
else
|
||||
"text/plain; charset=utf-8";
|
||||
inlineHeaders =
|
||||
if builtins.isAttrs route.content && route.content ? headers then
|
||||
route.content.headers
|
||||
else
|
||||
{};
|
||||
inlineHeaderLines = lib.concatStringsSep "\n" (
|
||||
lib.mapAttrsToList (name: value: " add_header ${name} ${builtins.toJSON value} always;") inlineHeaders
|
||||
);
|
||||
in
|
||||
{
|
||||
name = "= ${route.endpoint}";
|
||||
|
|
@ -248,6 +256,7 @@ let
|
|||
return = "${toString inlineStatus} ${builtins.toJSON inlineBody}";
|
||||
extraConfig = ''
|
||||
default_type ${inlineContentType};
|
||||
${lib.optionalString (inlineHeaderLines != "") inlineHeaderLines}
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ let
|
|||
allowedProxyContentKeys = [ "type" "ip" "port" "proxyWebsockets" ];
|
||||
allowedWebContentKeys = [ "type" "files" ];
|
||||
allowedWebFileKeys = [ "path" "filePath" "contentType" "status" ];
|
||||
allowedInlineContentKeys = [ "body" "contentType" "status" ];
|
||||
allowedInlineContentKeys = [ "body" "contentType" "headers" "status" ];
|
||||
allowedRedirectContentKeys = [ "target" "status" ];
|
||||
|
||||
ensureNoUnknownKeys = context: obj: allowedKeys:
|
||||
|
|
@ -168,6 +168,20 @@ let
|
|||
null
|
||||
else
|
||||
throw "Inline endpoint at index ${toString index} content.contentType must be a non-empty string when provided.";
|
||||
________ =
|
||||
if contentValue ? headers then
|
||||
if builtins.isAttrs contentValue.headers then
|
||||
let
|
||||
headerValues = builtins.attrValues contentValue.headers;
|
||||
in
|
||||
if lib.all (value: builtins.isString value && value != "") headerValues then
|
||||
null
|
||||
else
|
||||
throw "Inline endpoint at index ${toString index} content.headers values must be non-empty strings."
|
||||
else
|
||||
throw "Inline endpoint at index ${toString index} content.headers must be an attrset when provided."
|
||||
else
|
||||
null;
|
||||
_______ =
|
||||
if !(contentValue ? status) || builtins.isInt contentValue.status then
|
||||
null
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue