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