Private
Public Access
1
0
Files
u-desk/internal/service/profile_service.go
绝尘 6bee55b96f 新增:SFTP直连+连接池+autoConnect+文件服务器端口自动回退
- SFTP模块:连接/断开/文件CRUD/系统信息采集/base64二进制写入
- 连接池:多服务器同时在线,瞬间切换profile
- autoConnect:启动时自动连接所有非本地服务器
- 端口自动回退:listenWithFallback消除TOCTOU,解决端口冲突崩溃
- 文件服务器URL集中管理:file-server.ts消除8+处硬编码端口
- Sidebar设置面板:添加服务器/自动连接/自动刷新开关
- 修复:validateFilePath越界panic、正则预编译
- 修复:注释准确性(RemoveAll/端口8073/动态端口文档)
2026-05-04 15:33:19 +08:00

42 lines
982 B
Go

package service
import (
"u-desk/internal/storage"
"u-desk/internal/storage/models"
)
// ProfileService 连接配置 CRUD
type ProfileService struct{}
func NewProfileService() *ProfileService { return &ProfileService{} }
func (s *ProfileService) ListProfiles() ([]models.ConnectionProfile, error) {
db := storage.GetDB()
var list []models.ConnectionProfile
err := db.Order("sort_order asc, id asc").Find(&list).Error
return list, err
}
func (s *ProfileService) GetProfile(id uint) (*models.ConnectionProfile, error) {
db := storage.GetDB()
var p models.ConnectionProfile
err := db.First(&p, id).Error
if err != nil {
return nil, err
}
return &p, nil
}
func (s *ProfileService) SaveProfile(p *models.ConnectionProfile) error {
db := storage.GetDB()
if p.ID == 0 {
return db.Create(p).Error
}
return db.Save(p).Error
}
func (s *ProfileService) DeleteProfile(id uint) error {
db := storage.GetDB()
return db.Delete(&models.ConnectionProfile{}, id).Error
}