插件入口声明
约 602 字大约 2 分钟
2026-07-13
插件入口完整示例
这是 STUN 插件的入口文件。(部分方法需要 V1.5.2+ 版本的MSLX支持)。详细说明见后文。
入口文件主要是从 MSLX.SDK 导出 IPlugin 对象然后填写相关的信息和实现相关声明周期方法。
using MSLX.Plugin.Stun.Hubs;
using MSLX.Plugin.Stun.Managers;
using MSLX.SDK;
namespace MSLX.Plugin.Stun;
public class MSLXPluginEntry : IPlugin
{
public static MSLXPluginEntry Instance { get; private set; } = null!;
public string Id => "mslx-plugin-stun";
public string Name => "STUN 隧道";
public string Description => "利用 STUN 技术,在 NAT1 环境下获取公网端口,支持多开与流量监控。";
public string Version => "1.0.2";
public string Icon => "icon.png";
public string MinSDKVersion => "1.5.2";
public string Developer => "xiaoyu";
public string AuthorUrl => "https://github.com/luluxiaoyu";
public string PluginUrl => "https://mslx-plugins.mslmc.net/plugins/mslx-plugin-stun";
public void OnPluginInitialize(IServiceProvider serviceProvider)
{
Instance = this;
SDK.MSLX.Logger.Info("[STUN] 隧道插件开始初始化...");
string dataDir = this.Config().GetDataPath();
if (!Directory.Exists(dataDir)) Directory.CreateDirectory(dataDir);
var tunnelManager = serviceProvider.GetRequiredService<StunTunnelManager>();
tunnelManager.Initialize(dataDir);
SDK.MSLX.Logger.Info($"[STUN] 插件载入成功,当前已加载 {tunnelManager.GetConfigs().Count} 个隧道配置。");
}
/*
public void OnUnload()
{
} */
public void OnRegisterEndpoints(IEndpointRouteBuilder endpoints)
{
endpoints.MapHub<StunHub>("/api/hubs/plugins/mslx-plugin-stun/stun");
}
public void OnRegisterServices(IServiceCollection services)
{
services.AddSingleton<StunTunnelManager>();
}
}插件入口元数据
IdRequiredstring
插件的唯一ID,格式为mslx-plugin-xxx
NameRequiredstring
插件名字
Descriptionstring
这个开发者很懒,什么都没写。
插件描述
VersionRequiredstring
插件版本号
Iconstring
https://www.mslmc.cn/logo.png
插件图标,支持在线地址和本地文件(本地文件把图片文件放在前端Public即可)
MinSDKVersionRequiredstring
最低SDK版本要求(其实就是最低MSLX版本要求)
Developerstring
不知道哇!
开发者名字
AuthorUrlstring
https://github.com/MSLTeam
开发者主页地址
PluginUrlstring
https://github.com/MSLTeam
插件地址(建议填写MSLX插件中心的地址)
插件生命周期方法
OnPluginInitialize(IServiceProvider serviceProvider)void()
插件初始化的生命周期方法,执行时序早于 OnLoad()
OnLoad()void()
插件加载完成的生命周期方法
OnUnload()void()
插件卸载的生命周期方法(其实就是MSLX关闭)
OnRegisterEndpoints(IEndpointRouteBuilder endpoints)void()
插件向宿主注册高级路由的生命周期
约定:如果需要注册 SignalR 路由,前缀请注册为:/api/hubs/plugins/mslx-plugin-xxx/xxx
即 /api/hubs/plugins/{插件ID} 前缀是不变的
OnRegisterServices(IServiceCollection services)void()
插件向宿主注册依赖注入服务的生命周期
贡献者
更新日志
a9451-feat: 新增插件入口声明文档 & 更新文档依赖于
