diff --git a/backend/filesystem/image.go b/backend/filesystem/image.go index f1aa541c2cd6b54bdf2a5363003fe762de25c17e..519dc1b25809ed6b32d33fb3c741567d86973697 100644 --- a/backend/filesystem/image.go +++ b/backend/filesystem/image.go @@ -398,8 +398,11 @@ func (s *Store) ImageSnowflakeHash(flake string) (string, error) { } if !s.Compat { - img, err := s.imageMetadataRead(s.ImageSnowflakePath(flake) + "/" + infoJson) - return img.Hash, err + if img, err := s.imageMetadataRead(s.ImageSnowflakePath(flake) + "/" + infoJson); err != nil { + return "", err + } else { + return img.Hash, nil + } } else { if path, err := os.ReadFile(s.ImageSnowflakePath(flake)); err != nil { if os.IsNotExist(err) { @@ -408,8 +411,11 @@ func (s *Store) ImageSnowflakeHash(flake string) (string, error) { return "", err } else { var img *store.Image - img, err = s.imageMetadataRead(string(path) + "/" + infoJson) - return img.Hash, err + if img, err = s.imageMetadataRead(string(path) + "/" + infoJson); err != nil { + return "", err + } else { + return img.Hash, nil + } } } } diff --git a/config.go b/config.go index 9a1fcfd34e244854a403d16e780808d087c86855..35d465faf5f4bdb0a194fb000690e593e6cb1b6b 100644 --- a/config.go +++ b/config.go @@ -14,10 +14,11 @@ type conf struct { } type serverConf struct { - Host string `toml:"host"` - Unix bool `toml:"unix"` - Port uint16 `toml:"port"` - Proxy bool `toml:"proxy"` + Host string `toml:"host"` + Unix bool `toml:"unix"` + Port uint16 `toml:"port"` + Proxy bool `toml:"proxy"` + TrustedProxies []string `toml:"trusted_proxies"` } type systemConf struct { @@ -79,5 +80,10 @@ var defConf = conf{ Unix: false, Port: 7777, Proxy: true, + TrustedProxies: []string{ + "10.0.0.0/8", + "172.16.0.0/12", + "192.168.0.0/16", + }, }, } diff --git a/web.go b/web.go index 508cab3feba59a4a2399c92d96cd706fe9c5626c..c3fe0b7d41004e6afdac9452ae7a658cb8c7d41c 100644 --- a/web.go +++ b/web.go @@ -27,10 +27,13 @@ func webSetup() { } router = gin.New() - router.Use(recovery()) router.ForwardedByClientIP = config.Server.Proxy + router.TrustedProxies = config.Server.TrustedProxies if config.System.Verbose { router.Use(gin.Logger()) + router.Use(gin.Recovery()) + } else { + router.Use(recovery()) } router.NoRoute(func(context *gin.Context) { context.Redirect(http.StatusTemporaryRedirect, "/web")