code.gitea.io/gitea@v1.22.3/modules/setting/lfs.go (about) 1 // Copyright 2019 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package setting 5 6 import ( 7 "fmt" 8 "time" 9 10 "code.gitea.io/gitea/modules/generate" 11 ) 12 13 // LFS represents the configuration for Git LFS 14 var LFS = struct { 15 StartServer bool `ini:"LFS_START_SERVER"` 16 JWTSecretBytes []byte `ini:"-"` 17 HTTPAuthExpiry time.Duration `ini:"LFS_HTTP_AUTH_EXPIRY"` 18 MaxFileSize int64 `ini:"LFS_MAX_FILE_SIZE"` 19 LocksPagingNum int `ini:"LFS_LOCKS_PAGING_NUM"` 20 21 Storage *Storage 22 }{} 23 24 func loadLFSFrom(rootCfg ConfigProvider) error { 25 sec := rootCfg.Section("server") 26 if err := sec.MapTo(&LFS); err != nil { 27 return fmt.Errorf("failed to map LFS settings: %v", err) 28 } 29 30 lfsSec, _ := rootCfg.GetSection("lfs") 31 32 // Specifically default PATH to LFS_CONTENT_PATH 33 // DEPRECATED should not be removed because users maybe upgrade from lower version to the latest version 34 // if these are removed, the warning will not be shown 35 deprecatedSetting(rootCfg, "server", "LFS_CONTENT_PATH", "lfs", "PATH", "v1.19.0") 36 37 if val := sec.Key("LFS_CONTENT_PATH").String(); val != "" { 38 if lfsSec == nil { 39 lfsSec = rootCfg.Section("lfs") 40 } 41 lfsSec.Key("PATH").MustString(val) 42 } 43 44 var err error 45 LFS.Storage, err = getStorage(rootCfg, "lfs", "", lfsSec) 46 if err != nil { 47 return err 48 } 49 50 // Rest of LFS service settings 51 if LFS.LocksPagingNum == 0 { 52 LFS.LocksPagingNum = 50 53 } 54 55 LFS.HTTPAuthExpiry = sec.Key("LFS_HTTP_AUTH_EXPIRY").MustDuration(24 * time.Hour) 56 57 if !LFS.StartServer || !InstallLock { 58 return nil 59 } 60 61 jwtSecretBase64 := loadSecret(rootCfg.Section("server"), "LFS_JWT_SECRET_URI", "LFS_JWT_SECRET") 62 LFS.JWTSecretBytes, err = generate.DecodeJwtSecretBase64(jwtSecretBase64) 63 if err != nil { 64 LFS.JWTSecretBytes, jwtSecretBase64, err = generate.NewJwtSecretWithBase64() 65 if err != nil { 66 return fmt.Errorf("error generating JWT Secret for custom config: %v", err) 67 } 68 69 // Save secret 70 saveCfg, err := rootCfg.PrepareSaving() 71 if err != nil { 72 return fmt.Errorf("error saving JWT Secret for custom config: %v", err) 73 } 74 rootCfg.Section("server").Key("LFS_JWT_SECRET").SetValue(jwtSecretBase64) 75 saveCfg.Section("server").Key("LFS_JWT_SECRET").SetValue(jwtSecretBase64) 76 if err := saveCfg.Save(); err != nil { 77 return fmt.Errorf("error saving JWT Secret for custom config: %v", err) 78 } 79 } 80 81 return nil 82 }