diff --git a/openflare_server/model/auth_source.go b/openflare_server/model/auth_source.go index 7eba858b..c5715a73 100644 --- a/openflare_server/model/auth_source.go +++ b/openflare_server/model/auth_source.go @@ -2,6 +2,7 @@ package model import ( "errors" + "openflare/utils" "regexp" "strings" "time" @@ -56,14 +57,17 @@ type ExternalAccountView struct { } func (source *AuthSource) Normalize() { - source.Name = strings.TrimSpace(source.Name) - source.Type = strings.TrimSpace(strings.ToLower(source.Type)) - source.DisplayName = strings.TrimSpace(source.DisplayName) - source.ClientID = strings.TrimSpace(source.ClientID) - source.ClientSecret = strings.TrimSpace(source.ClientSecret) - source.OpenIDDiscoveryURL = strings.TrimSpace(source.OpenIDDiscoveryURL) - source.Scopes = strings.TrimSpace(source.Scopes) - source.IconURL = strings.TrimSpace(source.IconURL) + source.Type = strings.ToLower(source.Type) + utils.TrimStringFields( + &source.Name, + &source.Type, + &source.DisplayName, + &source.ClientID, + &source.ClientSecret, + &source.OpenIDDiscoveryURL, + &source.Scopes, + &source.IconURL, + ) if source.DisplayName == "" { source.DisplayName = source.Name } diff --git a/openflare_server/model/file.go b/openflare_server/model/file.go deleted file mode 100644 index 95f95f77..00000000 --- a/openflare_server/model/file.go +++ /dev/null @@ -1,50 +0,0 @@ -package model - -import ( - "gorm.io/gorm" - "openflare/common" - "os" - "path" -) - -type File struct { - Id int `json:"id"` - Filename string `json:"filename" gorm:"index"` - Description string `json:"description"` - Uploader string `json:"uploader" gorm:"index"` - UploaderId int `json:"uploader_id" gorm:"index"` - Link string `json:"link" gorm:"unique;index"` - UploadTime string `json:"upload_time"` - DownloadCounter int `json:"download_counter"` -} - -func GetAllFiles(startIdx int, num int) ([]*File, error) { - var files []*File - var err error - err = DB.Order("id desc").Limit(num).Offset(startIdx).Find(&files).Error - return files, err -} - -func SearchFiles(keyword string) (files []*File, err error) { - err = DB.Select([]string{"id", "filename", "description", "uploader", "uploader_id", "link", "upload_time", "download_counter"}).Where( - "filename LIKE ? or uploader LIKE ? or uploader_id = ?", keyword+"%", keyword+"%", keyword).Find(&files).Error - return files, err -} - -func (file *File) Insert() error { - var err error - err = DB.Create(file).Error - return err -} - -// Delete Make sure link is valid! Because we will use os.Remove to delete it! -func (file *File) Delete() error { - var err error - err = DB.Delete(file).Error - err = os.Remove(path.Join(common.UploadPath, file.Link)) - return err -} - -func UpdateDownloadCounter(link string) { - DB.Model(&File{}).Where("link = ?", link).UpdateColumn("download_counter", gorm.Expr("download_counter + 1")) -} diff --git a/openflare_server/model/main.go b/openflare_server/model/main.go index 518e9768..94980bdf 100644 --- a/openflare_server/model/main.go +++ b/openflare_server/model/main.go @@ -2,10 +2,6 @@ package model import ( "fmt" - "github.com/glebarez/sqlite" - "gorm.io/driver/postgres" - "gorm.io/gorm" - "gorm.io/gorm/schema" "log/slog" "openflare/common" "openflare/utils/security" @@ -13,6 +9,11 @@ import ( "reflect" "strings" "sync" + + "github.com/glebarez/sqlite" + "gorm.io/driver/postgres" + "gorm.io/gorm" + "gorm.io/gorm/schema" ) var DB *gorm.DB @@ -25,7 +26,6 @@ type dbModel struct { func registeredModels() []any { return []any{ - &File{}, &User{}, &AuthSource{}, &ExternalAccount{}, diff --git a/openflare_server/service/agent.go b/openflare_server/service/agent.go index 6adc5fbb..5cbcbb1e 100644 --- a/openflare_server/service/agent.go +++ b/openflare_server/service/agent.go @@ -6,6 +6,7 @@ import ( "log/slog" "openflare/common" "openflare/model" + "openflare/utils" "strings" "time" @@ -239,16 +240,24 @@ func GetActiveConfigForAgent() (*AgentConfigResponse, error) { }, nil } +func normalizeApplyLogPayload(payload ApplyLogPayload) ApplyLogPayload { + payload.Result = strings.ToLower(payload.Result) + utils.TrimStringFields( + &payload.NodeID, + &payload.Version, + &payload.Result, + &payload.Message, + &payload.Checksum, + &payload.MainConfigChecksum, + &payload.RouteConfigChecksum, + ) + payload.Message = truncateForDatabase(payload.Message, 16000) + return payload +} + func ReportApplyLog(payload ApplyLogPayload) (*model.ApplyLog, error) { now := time.Now() - payload.NodeID = strings.TrimSpace(payload.NodeID) - payload.Version = strings.TrimSpace(payload.Version) - payload.Result = strings.TrimSpace(strings.ToLower(payload.Result)) - payload.Message = strings.TrimSpace(payload.Message) - payload.Checksum = strings.TrimSpace(payload.Checksum) - payload.MainConfigChecksum = strings.TrimSpace(payload.MainConfigChecksum) - payload.RouteConfigChecksum = strings.TrimSpace(payload.RouteConfigChecksum) - payload.Message = truncateForDatabase(payload.Message, 16000) + payload = normalizeApplyLogPayload(payload) if payload.NodeID == "" { return nil, errors.New("node_id 不能为空") } diff --git a/openflare_server/utils/string.go b/openflare_server/utils/string.go new file mode 100644 index 00000000..d4dd50fa --- /dev/null +++ b/openflare_server/utils/string.go @@ -0,0 +1,12 @@ +package utils + +import "strings" + +// TrimStringFields trims leading and trailing spaces from all provided string pointers. +func TrimStringFields(fields ...*string) { + for _, f := range fields { + if f != nil { + *f = strings.TrimSpace(*f) + } + } +}