53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package watchdog
|
|
|
|
import (
|
|
"log/slog"
|
|
"orbits-server/internal/server/bootstrap"
|
|
"orbits-server/internal/server/database"
|
|
"orbits-server/internal/server/service"
|
|
"os"
|
|
"time"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func revokeExpired(db *gorm.DB) {
|
|
now := time.Now()
|
|
|
|
if err := db.Model(&database.AccessKey{}).
|
|
Where("expires_at < ? AND revoked = ?", now, false).
|
|
Update("revoked", true).Error; err != nil {
|
|
|
|
slog.Error("failed to revoke expired keys", "error", err)
|
|
}
|
|
}
|
|
|
|
func applyFS(env bootstrap.Environment, db *gorm.DB, fsOrphans []string) {
|
|
fileService := service.NewFileService(db, env)
|
|
for _, fp := range fsOrphans {
|
|
|
|
switch env.WatchdogSyncMode {
|
|
case "sync":
|
|
fileService.SyncFile(fp)
|
|
|
|
case "strict":
|
|
if err := os.Remove(fp); err != nil {
|
|
slog.Error("failed to remove file", "error", err)
|
|
continue
|
|
}
|
|
|
|
case "dry":
|
|
slog.Debug("dry mode", "file", fp)
|
|
}
|
|
}
|
|
}
|
|
|
|
func applyDB(db *gorm.DB, dbOrphans []database.File) {
|
|
for _, f := range dbOrphans {
|
|
err := database.DeleteFileByID(db, f.ID)
|
|
if err != nil {
|
|
slog.Error("failed to apply database measures", "error", err)
|
|
}
|
|
}
|
|
}
|