- SFTP模块:连接/断开/文件CRUD/系统信息采集/base64二进制写入 - 连接池:多服务器同时在线,瞬间切换profile - autoConnect:启动时自动连接所有非本地服务器 - 端口自动回退:listenWithFallback消除TOCTOU,解决端口冲突崩溃 - 文件服务器URL集中管理:file-server.ts消除8+处硬编码端口 - Sidebar设置面板:添加服务器/自动连接/自动刷新开关 - 修复:validateFilePath越界panic、正则预编译 - 修复:注释准确性(RemoveAll/端口8073/动态端口文档)
42 lines
982 B
Go
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
|
|
}
|