- Deleted version comparison logic from `pkg/plugin/sign/version.go`. - Removed unused types and constants from `pkg/plugin/types.go`. - Updated `pkg/protocol/message.go` to remove plugin-related message types. - Enhanced `pkg/proxy/http.go` and `pkg/proxy/socks5.go` to include username/password authentication for HTTP and SOCKS5 proxies. - Modified `pkg/proxy/server.go` to pass authentication parameters to server constructors. - Added new API endpoint to generate installation commands with a token for clients. - Created database functions to manage installation tokens in `internal/server/db/install_token.go`. - Implemented the installation command generation logic in `internal/server/router/handler/install.go`. - Updated web frontend to support installation command generation and display in `web/src/views/ClientsView.vue`.
51 lines
1.6 KiB
Go
51 lines
1.6 KiB
Go
package handler
|
|
|
|
import (
|
|
"github.com/gotunnel/internal/server/config"
|
|
"github.com/gotunnel/internal/server/db"
|
|
"github.com/gotunnel/pkg/protocol"
|
|
)
|
|
|
|
// AppInterface 应用接口
|
|
type AppInterface interface {
|
|
GetClientStore() db.ClientStore
|
|
GetServer() ServerInterface
|
|
GetConfig() *config.ServerConfig
|
|
GetConfigPath() string
|
|
SaveConfig() error
|
|
GetTrafficStore() db.TrafficStore
|
|
}
|
|
|
|
// ServerInterface 服务端接口
|
|
type ServerInterface interface {
|
|
IsClientOnline(clientID string) bool
|
|
GetClientStatus(clientID string) (online bool, lastPing, remoteAddr, clientName, clientOS, clientArch, clientVersion string)
|
|
GetAllClientStatus() map[string]struct {
|
|
Online bool
|
|
LastPing string
|
|
RemoteAddr string
|
|
Name string
|
|
OS string
|
|
Arch string
|
|
Version string
|
|
}
|
|
ReloadConfig() error
|
|
GetBindAddr() string
|
|
GetBindPort() int
|
|
PushConfigToClient(clientID string) error
|
|
DisconnectClient(clientID string) error
|
|
RestartClient(clientID string) error
|
|
SendUpdateToClient(clientID, downloadURL string) error
|
|
// 日志流
|
|
StartClientLogStream(clientID, sessionID string, lines int, follow bool, level string) (<-chan protocol.LogEntry, error)
|
|
StopClientLogStream(sessionID string)
|
|
// 端口检查
|
|
IsPortAvailable(port int, excludeClientID string) bool
|
|
// 系统状态
|
|
GetClientSystemStats(clientID string) (*protocol.SystemStatsResponse, error)
|
|
// 截图
|
|
GetClientScreenshot(clientID string, quality int) (*protocol.ScreenshotResponse, error)
|
|
// Shell 执行
|
|
ExecuteClientShell(clientID, command string, timeout int) (*protocol.ShellExecuteResponse, error)
|
|
}
|