同步完整源码至远程:扁平化重构现状 + 未入库源文件
- 补入库:server/internal/db/dump.go、redis 分页/扫描预算测试、opsxdb-mcp main_test、 packages/opsxdb-mcp package-lock、docs 审计与对比文档等 37 个新文件 - 含结构扁平化进行中的 80 处修改与 155 处旧结构删除(server/ src/ src-tauri/ 为当前有效源) - 构建产物(bin/target/dist)与签名私钥仍按规则排除
This commit is contained in:
1 parent
5c0be49217
commit
2c0bfafd8d
269 files changed
+10372
-16435
No files matched your search
+44
-26
@@ -18,10 +18,10 @@ import (
|
||||
"crypto/sha1"
|
||||
"crypto/sha256"
|
||||
"encoding/hex"
|
||||
"hash"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"hash"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
@@ -215,13 +215,9 @@ func (b *cappedBuffer) String() string {
|
||||
// StartAgent 按 spec 启动(或复用)JVM agent 进程并完成握手。
|
||||
// agent jar 与开源驱动 jar 在首次连接时按需下载(DMG 不打包 Java 产物,保持安装包瘦身)。
|
||||
func StartAgent(spec AgentSpec) (*AgentClient, error) {
|
||||
javaBin := os.Getenv("OPSXDB_JAVA_BIN")
|
||||
if javaBin == "" {
|
||||
p, err := exec.LookPath("java")
|
||||
if err != nil {
|
||||
return nil, errors.New("未找到 java:请安装 JDK 17+ 或设置 OPSXDB_JAVA_BIN")
|
||||
}
|
||||
javaBin = p
|
||||
javaBin, _, err := agentJavaRuntime()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := ensureAgentRuntime(spec); err != nil {
|
||||
return nil, err
|
||||
@@ -1019,27 +1015,21 @@ type JarStatus struct {
|
||||
type DriverStatus struct {
|
||||
ID string `json:"id"`
|
||||
Label string `json:"label"`
|
||||
Runtime string `json:"runtime"` // agent
|
||||
License string `json:"license"` // oss / proprietary
|
||||
AutoFetch bool `json:"autoFetch"` // 开源可自动下载
|
||||
Runtime string `json:"runtime"` // agent
|
||||
License string `json:"license"` // oss / proprietary
|
||||
AutoFetch bool `json:"autoFetch"` // 开源可自动下载
|
||||
Jars []JarStatus `json:"jars"`
|
||||
AllInstalled bool `json:"allInstalled"`
|
||||
JDKRequired bool `json:"jdkRequired"` // agent 驱动恒 true
|
||||
JDKRequired bool `json:"jdkRequired"` // agent 驱动恒 true
|
||||
JDKOK bool `json:"jdkOk"`
|
||||
JavaVersion string `json:"javaVersion"` // 探测到的版本(如 21.0.12)
|
||||
AgentInstalled bool `json:"agentInstalled"` // agent jar 是否就位
|
||||
OfflinePack bool `json:"offlinePack"` // 离线驱动包是否就位
|
||||
AgentInstalled bool `json:"agentInstalled"` // agent jar 是否就位
|
||||
OfflinePack bool `json:"offlinePack"` // 离线驱动包是否就位
|
||||
}
|
||||
|
||||
// DriversStatus 汇总所有 agent 驱动的安装状态,供驱动管理界面展示。
|
||||
func DriversStatus() []DriverStatus {
|
||||
javaBin, _ := exec.LookPath("java")
|
||||
javaVersion := ""
|
||||
if javaBin != "" {
|
||||
if out, err := exec.Command(javaBin, "-version").CombinedOutput(); err == nil {
|
||||
javaVersion = parseJavaVersion(string(out))
|
||||
}
|
||||
}
|
||||
_, javaVersion, javaErr := agentJavaRuntime()
|
||||
_, offlineErr := os.Stat(offlinePackPath())
|
||||
|
||||
out := []DriverStatus{}
|
||||
@@ -1057,7 +1047,7 @@ func DriversStatus() []DriverStatus {
|
||||
Runtime: "agent",
|
||||
AutoFetch: auto,
|
||||
JDKRequired: true,
|
||||
JDKOK: javaBin != "",
|
||||
JDKOK: javaErr == nil,
|
||||
JavaVersion: javaVersion,
|
||||
OfflinePack: offlineErr == nil,
|
||||
AgentInstalled: fileExists(filepath.Join(agentDir(), agentJarName)),
|
||||
@@ -1103,10 +1093,8 @@ func InstallDriver(driverKey string) error {
|
||||
if !ok {
|
||||
return fmt.Errorf("未知 agent 驱动: %s", driverKey)
|
||||
}
|
||||
if _, err := exec.LookPath(os.Getenv("OPSXDB_JAVA_BIN")); err != nil && os.Getenv("OPSXDB_JAVA_BIN") == "" {
|
||||
if _, err := exec.LookPath("java"); err != nil {
|
||||
return fmt.Errorf("未找到 java,请先安装 JDK 17+")
|
||||
}
|
||||
if _, _, err := agentJavaRuntime(); err != nil {
|
||||
return err
|
||||
}
|
||||
return ensureAgentRuntime(spec)
|
||||
}
|
||||
@@ -1159,6 +1147,9 @@ func ImportOfflinePack(zipPath string) (int, error) {
|
||||
if !strings.HasPrefix(rel, "agent/") && !strings.HasPrefix(rel, "libs/") && !strings.HasPrefix(rel, "drivers/") {
|
||||
continue
|
||||
}
|
||||
if !filepath.IsLocal(filepath.FromSlash(rel)) {
|
||||
return imported, fmt.Errorf("离线包包含非法路径: %s", rel)
|
||||
}
|
||||
rc, err := f.Open()
|
||||
if err != nil {
|
||||
return imported, err
|
||||
@@ -1209,3 +1200,30 @@ func parseJavaVersion(out string) string {
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// agentJavaRuntime 与实际启动使用同一 Java 路径,避免设置页把旧版 Java 误报为就绪。
|
||||
func agentJavaRuntime() (string, string, error) {
|
||||
javaBin := os.Getenv("OPSXDB_JAVA_BIN")
|
||||
if javaBin == "" {
|
||||
javaBin = "java"
|
||||
}
|
||||
path, err := exec.LookPath(javaBin)
|
||||
if err != nil {
|
||||
return "", "", errors.New("未找到 Java,请安装 Java 17+ 或设置 OPSXDB_JAVA_BIN")
|
||||
}
|
||||
out, err := exec.Command(path, "-version").CombinedOutput()
|
||||
version := parseJavaVersion(string(out))
|
||||
if err != nil {
|
||||
return path, version, fmt.Errorf("Java 运行失败: %w", err)
|
||||
}
|
||||
major := 0
|
||||
if strings.HasPrefix(version, "1.") {
|
||||
fmt.Sscanf(version, "1.%d", &major)
|
||||
} else {
|
||||
fmt.Sscanf(version, "%d", &major)
|
||||
}
|
||||
if major < 17 {
|
||||
return path, version, fmt.Errorf("Java %s 不受支持,agent 需要 Java 17+", version)
|
||||
}
|
||||
return path, version, nil
|
||||
}
|
||||
Reference in new issue
Block a user