1 个稳定版本

1.0.0 2021 年 4 月 14 日

#13#xmpp

AGPL-3.0 或更高版本

24KB
412

xmpp-proxy

Build Status

xmpp-proxy 是 XMPP 服务器的反向代理,提供 STARTTLS 和 TLS,在纯文本 XMPP 连接上,并且不需要 XML 解析器即可限制 stanza 的大小。

xmpp-proxy 可以监听任意数量的接口/端口,接受任何 STARTTLS 或 直接 TLS c2s 或 s2s 连接,终止 TLS,并将它们连接到一个真实的 XMPP 服务器,限制 stanza 的大小,如配置所示。

安装

配置

  • mkdir/etc/xmpp-proxy/ &&cp xmpp-proxy.toml/etc/xmpp-proxy/
  • 根据需要编辑 /etc/xmpp-proxy/xmpp-proxy.toml,文件已用注释清晰地说明
  • 将您的 TLS 密钥/证书放入 /etc/xmpp-proxy/,如果您的密钥包含 "RSA PRIVATE KEY",则将其更改为 "PRIVATE KEY":sed -'s/RSA PRIVATE KEY/PRIVATE KEY/' /etc/xmpp-proxy/le.key
  • 提供的 xmpp-proxy.service 中的示例 systemd 单元将其锁定为最低权限。需要正确设置权限:chown -'systemd-network:' /etc/xmpp-proxy/
  • 启动 xmpp-proxy: 用法: xmpp-proxy [/path/to/xmpp-proxy.toml (默认 /etc/xmpp-proxy/xmpp-proxy.toml]

我如何将我的运行中的 Prosody 配置修改为使用这个替代方案?

将这些添加到 modules_enabled

"secure_interfaces";
"net_proxy";

在 prosody-modules 更新之前,使用我的补丁版本的 mod_secure_interfaces.lua,它也适用于 s2s。

添加此配置

-- trust connections coming from these IPs
secure_interfaces = { "127.0.0.1", "::1" }

-- handle PROXY protocol on these ports
proxy_port_mappings = {
    [15222] = "c2s",
    [15269] = "s2s"
}

-- don't listen on any normal c2s/s2s ports (xmpp-proxy listens on these now)
-- you might need to comment these out further down in your config file if you set them
c2s_ports = {}
legacy_ssl_ports = {}
-- you MUST have at least one s2s_ports defined if you want outgoing S2S to work, don't ask.. 
s2s_ports = {15269}

将prosody的TLS密钥复制到/etc/xmpp-proxy/le.key,并将TLS证书复制到/etc/xmpp-proxy/fullchain.cer,并直接使用提供的xmpp-proxy.toml配置。

许可证

GNU/AGPLv3 - 详细信息请查看LICENSE.md

依赖项

约11-22MB
约398K SLoC