update
All checks were successful
Build Multi-Platform Binaries / build-frontend (push) Successful in 30s
Build Multi-Platform Binaries / build-binaries (amd64, darwin, server, false) (push) Successful in 48s
Build Multi-Platform Binaries / build-binaries (amd64, linux, client, true) (push) Successful in 48s
Build Multi-Platform Binaries / build-binaries (amd64, linux, server, true) (push) Successful in 58s
Build Multi-Platform Binaries / build-binaries (amd64, windows, client, true) (push) Successful in 1m47s
Build Multi-Platform Binaries / build-binaries (amd64, windows, server, true) (push) Successful in 57s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, client, true) (push) Successful in 49s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, server, true) (push) Successful in 1m5s
Build Multi-Platform Binaries / build-binaries (arm64, darwin, server, false) (push) Successful in 50s
Build Multi-Platform Binaries / build-binaries (arm64, linux, client, true) (push) Successful in 45s
Build Multi-Platform Binaries / build-binaries (arm64, linux, server, true) (push) Successful in 58s
Build Multi-Platform Binaries / build-binaries (arm64, windows, server, false) (push) Successful in 51s
All checks were successful
Build Multi-Platform Binaries / build-frontend (push) Successful in 30s
Build Multi-Platform Binaries / build-binaries (amd64, darwin, server, false) (push) Successful in 48s
Build Multi-Platform Binaries / build-binaries (amd64, linux, client, true) (push) Successful in 48s
Build Multi-Platform Binaries / build-binaries (amd64, linux, server, true) (push) Successful in 58s
Build Multi-Platform Binaries / build-binaries (amd64, windows, client, true) (push) Successful in 1m47s
Build Multi-Platform Binaries / build-binaries (amd64, windows, server, true) (push) Successful in 57s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, client, true) (push) Successful in 49s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, server, true) (push) Successful in 1m5s
Build Multi-Platform Binaries / build-binaries (arm64, darwin, server, false) (push) Successful in 50s
Build Multi-Platform Binaries / build-binaries (arm64, linux, client, true) (push) Successful in 45s
Build Multi-Platform Binaries / build-binaries (arm64, linux, server, true) (push) Successful in 58s
Build Multi-Platform Binaries / build-binaries (arm64, windows, server, false) (push) Successful in 51s
This commit is contained in:
@@ -32,11 +32,13 @@ func main() {
|
||||
|
||||
// 初始化插件系统
|
||||
registry := plugin.NewRegistry()
|
||||
if err := registry.RegisterAll(builtin.GetAll()); err != nil {
|
||||
log.Fatalf("[Plugin] Register error: %v", err)
|
||||
for _, h := range builtin.GetClientPlugins() {
|
||||
if err := registry.RegisterClient(h); err != nil {
|
||||
log.Fatalf("[Plugin] Register error: %v", err)
|
||||
}
|
||||
}
|
||||
client.SetPluginRegistry(registry)
|
||||
log.Printf("[Plugin] Registered %d plugins", len(builtin.GetAll()))
|
||||
log.Printf("[Plugin] Registered %d plugins", len(builtin.GetClientPlugins()))
|
||||
|
||||
client.Run()
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
"github.com/gotunnel/internal/server/app"
|
||||
"github.com/gotunnel/internal/server/config"
|
||||
@@ -56,15 +57,21 @@ func main() {
|
||||
|
||||
// 初始化插件系统
|
||||
registry := plugin.NewRegistry()
|
||||
if err := registry.RegisterAll(builtin.GetAll()); err != nil {
|
||||
if err := registry.RegisterAllServer(builtin.GetServerPlugins()); err != nil {
|
||||
log.Fatalf("[Plugin] Register error: %v", err)
|
||||
}
|
||||
server.SetPluginRegistry(registry)
|
||||
log.Printf("[Plugin] Registered %d plugins", len(builtin.GetAll()))
|
||||
log.Printf("[Plugin] Registered %d plugins", len(builtin.GetServerPlugins()))
|
||||
|
||||
// 加载 JS 插件配置
|
||||
if len(cfg.JSPlugins) > 0 {
|
||||
jsPlugins := loadJSPlugins(cfg.JSPlugins)
|
||||
server.LoadJSPlugins(jsPlugins)
|
||||
}
|
||||
|
||||
// 启动 Web 控制台
|
||||
if cfg.Web.Enabled {
|
||||
ws := app.NewWebServer(clientStore, server, cfg, *configPath)
|
||||
ws := app.NewWebServer(clientStore, server, cfg, *configPath, clientStore)
|
||||
addr := fmt.Sprintf("%s:%d", cfg.Web.BindAddr, cfg.Web.BindPort)
|
||||
|
||||
go func() {
|
||||
@@ -82,3 +89,28 @@ func main() {
|
||||
|
||||
log.Fatal(server.Run())
|
||||
}
|
||||
|
||||
// loadJSPlugins 加载 JS 插件文件
|
||||
func loadJSPlugins(configs []config.JSPluginConfig) []tunnel.JSPluginEntry {
|
||||
var plugins []tunnel.JSPluginEntry
|
||||
|
||||
for _, cfg := range configs {
|
||||
source, err := os.ReadFile(cfg.Path)
|
||||
if err != nil {
|
||||
log.Printf("[JSPlugin] Failed to load %s: %v", cfg.Path, err)
|
||||
continue
|
||||
}
|
||||
|
||||
plugins = append(plugins, tunnel.JSPluginEntry{
|
||||
Name: cfg.Name,
|
||||
Source: string(source),
|
||||
AutoPush: cfg.AutoPush,
|
||||
Config: cfg.Config,
|
||||
AutoStart: cfg.AutoStart,
|
||||
})
|
||||
|
||||
log.Printf("[JSPlugin] Loaded: %s from %s", cfg.Name, cfg.Path)
|
||||
}
|
||||
|
||||
return plugins
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user