clarkwinkelmann / flarum-ext-godot-embed
在 Flarum 帖子中嵌入 Godot pck 文件
Requires
- flarum/bbcode: *
- flarum/core: ^1.0
- fof/upload: *
README
此扩展向 Flarum 添加了 [godot]<URL to pck file>[/godot]
bbcode,该 bbcode 以 iframe 的形式渲染一个嵌入式播放器。
该 bbcode 已注册为 FoF 上传模板。
bbcode 参数(全部为可选)
filesize=INT
:pck
文件大小(字节)。使用 FoF 上传时自动填充。对于进度条可见是必要的。version=TEXT
:在管理员面板中定义的版本的唯一键。cover=URL
:将要渲染为游戏加载前背景的图像文件的 URL。args=TEXT
:传递给 Godot 引擎的参数。将类似于命令行参数解析,并与--main-pack
参数合并。width=NUMBER
(默认 600):嵌入式播放器的宽度(像素)。height=NUMBER
(默认 400):嵌入式播放器的高度(像素)。设计是响应式的,如果播放器被缩小,比例将得到保持。touch=1
:隐藏“不兼容触摸设备”的消息。autoload=1
:无需点击 iframe 即可加载游戏。toolbar=left|right|hidden
(默认:right
):更改工具栏插入播放器的位置。使用hidden
完全删除工具栏(将无法进入全屏或重新启动)。
在使用扩展之前,您需要从 https://godotengine.org/download 下载模板,并将 webassembly_release.zip
文件托管在您的服务器上的某个位置。然后,在管理员面板中的“基本路径”设置中提供该文件夹的公共 URL。例如,您可以将其解压缩到 <Flarum installation>/public/assets/godot
并在设置中将 /assets/godot
设置为设置值。可选地,在相应的设置中添加 wasm 文件的大小(字节),以便进度条可以渲染。
在管理员面板中可以配置多个 Godot 版本。版本顺序不重要,唯一键可以是使用字符 - +,.0-9A-Za-z_
使用的任何内容。选定的“默认”版本将注入到 FoF 上传模板以及未提供版本的 bbcode 中。
此扩展不提供任何内置安全功能! 对于生产使用,请确保引擎和游戏文件通过不允许访问 Flarum Cookie 的 CDN URL 访问。
例如,如果您的论坛托管在 www.example.com
,则可以将 sandbox.example.com
配置为虚拟主机中的别名。然后,将使用该域名设置“iframe 主机”设置以及 FoF 上传 CDN URL,如果文件使用 local
适配器托管。
如果您的论坛使用裸露/ apex 域作为规范 URL,则不能使用子域作为沙盒域!您需要不同的域!(抱歉,这是 Cookie 的工作方式!)
您应添加 Apache 或 nginx 重写以下 URL
/godot-embed
在主 Flarum 域上:使用 401 或 404 堵塞访问。防止滥用,因为它可以通过查询参数加载任意文件。/assets/files/*
在主 Flarum 域:使用 401 或 404 块访问(当使用 FoF Uploadlocal
适配器时)。恶意行为者可能会利用宽松的文件验证来上传 HTML 文件,并诱使用户访问进行 XSS 攻击。/
(或除/godot-embed
和/assets/*
之外的所有内容)在沙盒域:重定向到主域。这可以防止任何人意外尝试在错误域登录或搜索引擎索引重复内容。
资源加载方式如下
- 浏览器: [Flarum 域] / 讨论
- Iframe: [沙盒域]
/godot-embed?url=<pck url>&cover=<cover url>
- [沙盒域] / Flarum CSS
- [沙盒域] / Flarum 字体
- [基本路径] / Godot 引擎
- [基本路径] / Godot WASM
<Pck url>
<Cover url>
- Iframe: [沙盒域]
安装
composer require clarkwinkelmann/flarum-ext-godot-embed
支持
此扩展处于 最小维护 状态。
它是为某个客户开发的,作为开源项目发布,以造福社区。我可能会免费发布简单的错误修复或兼容性更新。
您可以通过 联系我 来赞助额外功能或更新。
通过 Flarum 社区线程提供“尽力而为”的支持。
赞助商: Xwdit