chore(release): 发布 v2.0.0
CI / verify (push) Canceled after 0s

- 内置 SSH 终端(/terminal):复用已保存的 SSH 密码/私钥与独立 known_hosts 校验
- 终端二次认证、会话审计(/terminal/audits)、录像审计与常用命令
- DDNS 服务商名称与自定义 IP,新增迁移 037/038/039
- CHANGELOG 与 VERSION 更新至 2.0.0
This commit is contained in:
2026-10-16 20:18:04 +08:00
parent a0cc553d2d
commit 302248a907
65 changed files with 7263 additions and 606 deletions
+28
View File
@@ -0,0 +1,28 @@
package frp
import (
"context"
"fmt"
"github.com/havline/havline/internal/terminal"
)
// OpenSSHTerminal 用该服务端已保存的 SSH 凭据建立一个交互式 PTY 会话。
// 凭据解密与主机密钥校验(known_hosts TOFU)都复用「安装 Agent」那套 sshInstaller,
// 不再实现一份认证逻辑,也不允许终端页面输入密码。
func (s *Service) OpenSSHTerminal(ctx context.Context, serverID int64, cols, rows int) (terminal.Terminal, string, error) {
server, installer, err := s.sshInstaller(ctx, serverID)
if err != nil {
return nil, "", err
}
client, err := installer.client(ctx)
if err != nil {
return nil, "", err
}
term, err := terminal.NewSSHTerminal(client, cols, rows)
if err != nil {
_ = client.Close()
return nil, "", err
}
return term, fmt.Sprintf("%s · %s@%s", server.Name, server.SSHUser, server.SSHHost), nil
}