Skip to content

Commit e902b98

Browse files
authored
Set disable_gravatar/enable_federated_avatar when offline mode is true (#22479) (#22496)
Backport #22479. When offline mode is true, we should set `disable_gravatar` to `true` and `enable_federated_avatar` to `false` in system settings.
1 parent 6992e72 commit e902b98

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

models/system/setting.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,16 @@ func Init() error {
269269
if setting_module.OfflineMode {
270270
disableGravatar = true
271271
enableFederatedAvatar = false
272+
if !GetSettingBool(KeyPictureDisableGravatar) {
273+
if err := SetSettingNoVersion(KeyPictureDisableGravatar, "true"); err != nil {
274+
return fmt.Errorf("Failed to set setting %q: %w", KeyPictureDisableGravatar, err)
275+
}
276+
}
277+
if GetSettingBool(KeyPictureEnableFederatedAvatar) {
278+
if err := SetSettingNoVersion(KeyPictureEnableFederatedAvatar, "false"); err != nil {
279+
return fmt.Errorf("Failed to set setting %q: %w", KeyPictureEnableFederatedAvatar, err)
280+
}
281+
}
272282
}
273283

274284
if enableFederatedAvatar || !disableGravatar {

routers/web/admin/config.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
package admin
77

88
import (
9+
"fmt"
910
"net/http"
1011
"net/url"
1112
"os"
13+
"strconv"
1214
"strings"
1315

1416
system_model "code.gitea.io/gitea/models/system"
@@ -202,6 +204,16 @@ func ChangeConfig(ctx *context.Context) {
202204
value := ctx.FormString("value")
203205
version := ctx.FormInt("version")
204206

207+
if check, ok := changeConfigChecks[key]; ok {
208+
if err := check(ctx, value); err != nil {
209+
log.Warn("refused to set setting: %v", err)
210+
ctx.JSON(http.StatusOK, map[string]string{
211+
"err": ctx.Tr("admin.config.set_setting_failed", key),
212+
})
213+
return
214+
}
215+
}
216+
205217
if err := system_model.SetSetting(&system_model.Setting{
206218
SettingKey: key,
207219
SettingValue: value,
@@ -218,3 +230,18 @@ func ChangeConfig(ctx *context.Context) {
218230
"version": version + 1,
219231
})
220232
}
233+
234+
var changeConfigChecks = map[string]func(ctx *context.Context, newValue string) error{
235+
system_model.KeyPictureDisableGravatar: func(_ *context.Context, newValue string) error {
236+
if v, _ := strconv.ParseBool(newValue); setting.OfflineMode && !v {
237+
return fmt.Errorf("%q should be true when OFFLINE_MODE is true", system_model.KeyPictureDisableGravatar)
238+
}
239+
return nil
240+
},
241+
system_model.KeyPictureEnableFederatedAvatar: func(_ *context.Context, newValue string) error {
242+
if v, _ := strconv.ParseBool(newValue); setting.OfflineMode && v {
243+
return fmt.Errorf("%q cannot be false when OFFLINE_MODE is true", system_model.KeyPictureEnableFederatedAvatar)
244+
}
245+
return nil
246+
},
247+
}

0 commit comments

Comments
 (0)