* 优化图标和LOGO * 修改登录页面动画的速度为3 * 增加对websocket的异常处理 * 修复了用户组和用户名唯一判断错误的问题 * 提示版本号 * 修复readme错别字 * 修复单词拼写错误的问题 * 修复代码格式 * 修改Windows资产属性名称 * Docker 打包流程增加 upx 压缩 * 升级依赖文件,修改sqlite驱动为 github.com/glebarez/sqlite * 修复第一次查询「授权令牌」的错误 * 移除无关代码 * 修改docker打包脚本 * 增加打包脚本 * 增加微信群 * 修复单词拼写错误的问题 * 修复代码格式 * 修改Windows资产属性名称 * Docker 打包流程增加 upx 压缩 * 修改docker打包脚本 * - 替换 sqlite 驱动为 github.com/glebarez/sqlite - 修复数据库锁定的问题 - 修复部分代码不完善的问题 - 修复策略显示不完整的问题 - 修复编辑文件换行符的问题 - 优化guacd连接
118 lines
2.8 KiB
Go
118 lines
2.8 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"fmt"
|
|
|
|
"next-terminal/server/env"
|
|
"next-terminal/server/guacd"
|
|
"next-terminal/server/model"
|
|
"next-terminal/server/repository"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type propertyService struct {
|
|
baseService
|
|
}
|
|
|
|
var deprecatedPropertyNames = []string{
|
|
guacd.EnableDrive,
|
|
guacd.DrivePath,
|
|
guacd.DriveName,
|
|
guacd.DisableGlyphCaching,
|
|
guacd.CreateRecordingPath,
|
|
}
|
|
|
|
var defaultProperties = map[string]string{
|
|
guacd.EnableRecording: "true",
|
|
guacd.FontName: "menlo",
|
|
guacd.FontSize: "12",
|
|
guacd.ColorScheme: "gray-black",
|
|
guacd.EnableWallpaper: "true",
|
|
guacd.EnableTheming: "true",
|
|
guacd.EnableFontSmoothing: "true",
|
|
guacd.EnableFullWindowDrag: "true",
|
|
guacd.EnableDesktopComposition: "true",
|
|
guacd.EnableMenuAnimations: "true",
|
|
guacd.DisableBitmapCaching: "false",
|
|
guacd.DisableOffscreenCaching: "false",
|
|
"cron-log-saved-limit": "360",
|
|
"login-log-saved-limit": "360",
|
|
"session-saved-limit": "360",
|
|
"user-default-storage-size": "5120",
|
|
}
|
|
|
|
func (service propertyService) InitProperties() error {
|
|
propertyMap := repository.PropertyRepository.FindAllMap(context.TODO())
|
|
|
|
for name, value := range defaultProperties {
|
|
if err := service.CreateIfAbsent(propertyMap, name, value); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (service propertyService) CreateIfAbsent(propertyMap map[string]string, name, value string) error {
|
|
if len(propertyMap[name]) == 0 {
|
|
property := model.Property{
|
|
Name: name,
|
|
Value: value,
|
|
}
|
|
return repository.PropertyRepository.Create(context.TODO(), &property)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (service propertyService) DeleteDeprecatedProperty() error {
|
|
propertyMap := repository.PropertyRepository.FindAllMap(context.TODO())
|
|
for _, name := range deprecatedPropertyNames {
|
|
if propertyMap[name] == "" {
|
|
continue
|
|
}
|
|
if err := repository.PropertyRepository.DeleteByName(context.TODO(), name); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (service propertyService) Update(item map[string]interface{}) error {
|
|
return env.GetDB().Transaction(func(tx *gorm.DB) error {
|
|
c := service.Context(tx)
|
|
for key := range item {
|
|
value := fmt.Sprintf("%v", item[key])
|
|
if value == "" {
|
|
value = "-"
|
|
}
|
|
|
|
property := model.Property{
|
|
Name: key,
|
|
Value: value,
|
|
}
|
|
|
|
if key == "enable-ldap" && value == "false" {
|
|
if err := UserService.DeleteALlLdapUser(c); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
_, err := repository.PropertyRepository.FindByName(c, key)
|
|
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
|
|
if err := repository.PropertyRepository.Create(c, &property); err != nil {
|
|
return err
|
|
}
|
|
} else {
|
|
if err := repository.PropertyRepository.UpdateByName(c, &property, key); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
})
|
|
|
|
}
|