216 lines
5.2 KiB
Go
216 lines
5.2 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
|
|
}
|
|
|
|
func (service propertyService) InitProperties() error {
|
|
propertyMap := repository.PropertyRepository.FindAllMap(context.TODO())
|
|
|
|
if len(propertyMap[guacd.EnableRecording]) == 0 {
|
|
property := model.Property{
|
|
Name: guacd.EnableRecording,
|
|
Value: "true",
|
|
}
|
|
if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
if len(propertyMap[guacd.CreateRecordingPath]) == 0 {
|
|
property := model.Property{
|
|
Name: guacd.CreateRecordingPath,
|
|
Value: "true",
|
|
}
|
|
if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
if len(propertyMap[guacd.FontName]) == 0 {
|
|
property := model.Property{
|
|
Name: guacd.FontName,
|
|
Value: "menlo",
|
|
}
|
|
if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
if len(propertyMap[guacd.FontSize]) == 0 {
|
|
property := model.Property{
|
|
Name: guacd.FontSize,
|
|
Value: "12",
|
|
}
|
|
if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
if len(propertyMap[guacd.ColorScheme]) == 0 {
|
|
property := model.Property{
|
|
Name: guacd.ColorScheme,
|
|
Value: "gray-black",
|
|
}
|
|
if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
if len(propertyMap[guacd.EnableWallpaper]) == 0 {
|
|
property := model.Property{
|
|
Name: guacd.EnableWallpaper,
|
|
Value: "false",
|
|
}
|
|
if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
if len(propertyMap[guacd.EnableTheming]) == 0 {
|
|
property := model.Property{
|
|
Name: guacd.EnableTheming,
|
|
Value: "false",
|
|
}
|
|
if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
if len(propertyMap[guacd.EnableFontSmoothing]) == 0 {
|
|
property := model.Property{
|
|
Name: guacd.EnableFontSmoothing,
|
|
Value: "false",
|
|
}
|
|
if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
if len(propertyMap[guacd.EnableFullWindowDrag]) == 0 {
|
|
property := model.Property{
|
|
Name: guacd.EnableFullWindowDrag,
|
|
Value: "false",
|
|
}
|
|
if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
if len(propertyMap[guacd.EnableDesktopComposition]) == 0 {
|
|
property := model.Property{
|
|
Name: guacd.EnableDesktopComposition,
|
|
Value: "false",
|
|
}
|
|
if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
if len(propertyMap[guacd.EnableMenuAnimations]) == 0 {
|
|
property := model.Property{
|
|
Name: guacd.EnableMenuAnimations,
|
|
Value: "false",
|
|
}
|
|
if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
if len(propertyMap[guacd.DisableBitmapCaching]) == 0 {
|
|
property := model.Property{
|
|
Name: guacd.DisableBitmapCaching,
|
|
Value: "false",
|
|
}
|
|
if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
if len(propertyMap[guacd.DisableOffscreenCaching]) == 0 {
|
|
property := model.Property{
|
|
Name: guacd.DisableOffscreenCaching,
|
|
Value: "false",
|
|
}
|
|
if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
if len(propertyMap[guacd.DisableGlyphCaching]) > 0 {
|
|
if err := repository.PropertyRepository.DeleteByName(context.TODO(), guacd.DisableGlyphCaching); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (service propertyService) DeleteDeprecatedProperty() error {
|
|
propertyMap := repository.PropertyRepository.FindAllMap(context.TODO())
|
|
if propertyMap[guacd.EnableDrive] != "" {
|
|
if err := repository.PropertyRepository.DeleteByName(context.TODO(), guacd.DriveName); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if propertyMap[guacd.DrivePath] != "" {
|
|
if err := repository.PropertyRepository.DeleteByName(context.TODO(), guacd.DrivePath); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if propertyMap[guacd.DriveName] != "" {
|
|
if err := repository.PropertyRepository.DeleteByName(context.TODO(), guacd.DriveName); 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
|
|
})
|
|
|
|
}
|