plugin

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 24, 2026 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func All

func All() map[string]*PluginDef

All 返回所有已注册的插件定义

func AllUploadStrategies

func AllUploadStrategies() map[string]*UploadStrategy

AllUploadStrategies 返回所有上传存储策略

func EnforceKernelCompat

func EnforceKernelCompat(kernelVersion string) []string

EnforceKernelCompat 用当前内核版本核对每个插件声明的 KernelCompat, 不满足的插件被下架(同时移出定义表与实例列表),其路由、菜单与安装入口随之消失。 返回被下架的插件码。

必须在全部插件注册完之后调用(内核 main 里):私有插件经包级 init 注册, 早于 main 执行,因此校验只能放在注册之后,不能放进 Register。

kernelVersion 无法解析时("dev"、未打 tag 的 "074c3e10-dirty")跳过校验并返回 nil, 避免开发期构建被误杀。

func IncompatReason

func IncompatReason(code string) (string, bool)

IncompatReason 返回插件因内核版本不兼容被下架的说明。 内核版本无法解析而跳过校验时,插件不会被下架,此处也就没有记录。

func Register

func Register(def *PluginDef)

Register 注册一个插件定义

func RegisterPlugin

func RegisterPlugin(p Plugin)

RegisterPlugin 注册一个 Plugin 实例,同时将其 PluginDef 注册到全局注册表以保持向后兼容。 自动将 Plugin 接口的 OnInstall / OnUninstall 方法桥接到 PluginDef 函数字段, 确保内核通过 PluginDef 查找到插件的生命周期回调。

func RegisterStatistics

func RegisterStatistics(pluginCode string, impl ISiteStatistics)

RegisterStatistics 注册站点统计实现

func RegisterUploadStrategy

func RegisterUploadStrategy(s *UploadStrategy)

RegisterUploadStrategy 注册上传存储策略

Types

type IPluginChecker

type IPluginChecker interface {
	IsInstalled(code string) bool
}

IPluginChecker 插件状态检查接口(由内核 PluginService 实现)。

type ISiteStatistics

type ISiteStatistics interface {
	// TrackVisit 记录一次访问
	TrackVisit(siteID uint, visitorID string, ua string, url string, ip string, isSpider bool, isAI bool) error
	// GetStats 获取指定站点的统计数据
	GetStats(siteID uint, startDate, endDate time.Time) (*SiteStatistics, error)
	// GetTodayStats 获取今日统计数据
	GetTodayStats(siteID uint) (*SiteStatistics, error)
	// GetTotalStats 获取历史总统计数据
	GetTotalStats(siteID uint) (*TotalSiteStats, error)
	// GetDailyStatsList 获取每日统计列表(用于图表展示)
	GetDailyStatsList(siteID uint, startDate, endDate string) ([]*SiteStatistics, error)
}

ISiteStatistics 站点统计接口 插件可以实现此接口来提供站点访问统计功能

func GetStatistics

func GetStatistics(pluginCode string) ISiteStatistics

GetStatistics 获取站点统计实现

type IncompatiblePlugin

type IncompatiblePlugin struct {
	Def    *PluginDef
	Reason string
}

IncompatiblePlugin 是一个因内核版本不兼容而被下架的插件及其下架原因。

func Incompatible

func Incompatible() []*IncompatiblePlugin

Incompatible 返回本轮启动因内核版本不兼容被下架的插件,按 code 升序。 内核仍需在插件市场列出它们,运维才知道"装了但跑不起来"是什么原因。

type Plugin

type Plugin interface {
	// Code 返回插件唯一标识码。
	Code() string
	// Definition 返回插件静态定义(用于注册表展示)。
	Definition() *PluginDef
	// RegisterRoutes 在 Gin Engine 上注册插件路由。
	RegisterRoutes(ctx *PluginContext) error
	// OnInstall 安装时执行(如数据库迁移、种子数据)。
	OnInstall(db *gorm.DB) error
	// OnUninstall 卸载时执行(可选清理)。
	OnUninstall(db *gorm.DB) error
}

Plugin 插件标准接口 — 所有插件必须实现。

func AllPlugins

func AllPlugins() []Plugin

AllPlugins 返回所有已注册的 Plugin 实例。

type PluginContext

type PluginContext struct {
	Router          *gin.Engine
	DB              *gorm.DB
	Logger          *zap.Logger
	PluginConfig    map[string]any     // 插件专属配置段(来自 config.yaml → plugins.<code>)
	Kernel          any                // 内核共享对象(内核侧传入实现 sdkconfig.IKernelConfig 的实例)
	PluginChecker   IPluginChecker     // 插件状态检查器(内核 PluginService 实现)
	Extras          map[string]any     // 额外跨插件依赖(如回收站 handler 等)
	NoRouteHandlers *[]gin.HandlerFunc // 插件追加 NoRoute 处理器到此切片,而非直接调用 r.NoRoute()
}

PluginContext 插件注册路由时获得的运行时上下文。

type PluginDef

type PluginDef struct {
	Code        string
	Name        string
	Description string
	Version     string
	Icon        string
	OnInstall   func(db *gorm.DB) error // 安装时执行(如数据库迁移、种子数据)
	OnUninstall func(db *gorm.DB) error // 卸载时执行(可选)
	// KernelCompat 声明插件兼容的内核版本区间,如 ">=1.1.0 <2.0.0"。
	// 空 = 兼容所有内核版本。区间语法见 sdk/pluginmeta.ParseConstraints。
	KernelCompat string `json:"kernel_compat,omitempty"`
	// SupportedDrivers 声明插件支持的数据库驱动列表。
	// 空切片 = 兼容所有驱动(向后兼容旧插件)。
	SupportedDrivers []string `json:"supported_drivers,omitempty"`
}

PluginDef 插件定义(静态注册)

func Get

func Get(code string) *PluginDef

Get 根据 code 获取插件定义

type SiteStatistics

type SiteStatistics struct {
	SiteID       uint      `json:"site_id"`
	Date         string    `json:"date"`           // 日期 YYYY-MM-DD
	UV           int64     `json:"uv"`             // 独立访客数
	PV           int64     `json:"pv"`             // 页面浏览量
	SpiderCount  int64     `json:"spider_count"`   // 蜘蛛访问次数
	AIVisitCount int64     `json:"ai_visit_count"` // AI访问次数
	TopURLs      []URLStat `json:"top_urls"`       // Top页面统计
}

SiteStatistics 站点统计数据

type TotalSiteStats

type TotalSiteStats struct {
	SiteID           uint  `json:"site_id"`
	TotalUV          int64 `json:"total_uv"`           // 历史总UV
	TotalPV          int64 `json:"total_pv"`           // 历史总PV
	TotalSpiderCount int64 `json:"total_spider_count"` // 历史总蜘蛛
	TotalAIVisit     int64 `json:"total_ai_visit"`     // 历史总AI
	TodayUV          int64 `json:"today_uv"`           // 今日UV
	TodayPV          int64 `json:"today_pv"`           // 今日PV
}

TotalSiteStats 历史总统计

type URLStat

type URLStat struct {
	URL   string `json:"url"`
	Count int64  `json:"count"`
}

URLStat URL统计数据

type UploadStrategy

type UploadStrategy struct {
	Code      string   // 插件代码,如 "cms"
	Name      string   // 插件名称
	SiteAware bool     // 是否支持多站点
	SubPaths  []string // 允许的子目录
}

UploadStrategy 上传存储策略

func GetUploadStrategy

func GetUploadStrategy(code string) *UploadStrategy

GetUploadStrategy 获取上传存储策略

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL