forked from forgejo/forgejo
Provide self-registering storage system (#12978)
* Provide self-registering storage system Signed-off-by: Andrew Thornton <art27@cantab.net> * More simplification Signed-off-by: Andrew Thornton <art27@cantab.net> * Remove old strings from setting Signed-off-by: Andrew Thornton <art27@cantab.net> * oops attachments not attachment Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
parent
ade9c8dc3c
commit
6b1266b6b3
10 changed files with 264 additions and 174 deletions
|
@ -4,12 +4,6 @@
|
|||
|
||||
package setting
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
)
|
||||
|
||||
var (
|
||||
// Attachment settings
|
||||
Attachment = struct {
|
||||
|
@ -20,7 +14,6 @@ var (
|
|||
Enabled bool
|
||||
}{
|
||||
Storage: Storage{
|
||||
Type: LocalStorageType,
|
||||
ServeDirect: false,
|
||||
},
|
||||
AllowedTypes: "image/jpeg,image/png,application/zip,application/gzip",
|
||||
|
@ -32,37 +25,9 @@ var (
|
|||
|
||||
func newAttachmentService() {
|
||||
sec := Cfg.Section("attachment")
|
||||
Attachment.Storage.Type = sec.Key("STORAGE_TYPE").MustString("")
|
||||
if Attachment.Storage.Type == "" {
|
||||
Attachment.Storage.Type = "default"
|
||||
}
|
||||
storageType := sec.Key("STORAGE_TYPE").MustString("")
|
||||
|
||||
if Attachment.Storage.Type != LocalStorageType && Attachment.Storage.Type != MinioStorageType {
|
||||
storage, ok := storages[Attachment.Storage.Type]
|
||||
if !ok {
|
||||
log.Fatal("Failed to get attachment storage type: %s", Attachment.Storage.Type)
|
||||
}
|
||||
Attachment.Storage = storage
|
||||
}
|
||||
|
||||
// Override
|
||||
Attachment.ServeDirect = sec.Key("SERVE_DIRECT").MustBool(Attachment.ServeDirect)
|
||||
|
||||
switch Attachment.Storage.Type {
|
||||
case LocalStorageType:
|
||||
Attachment.Path = sec.Key("PATH").MustString(filepath.Join(AppDataPath, "attachments"))
|
||||
if !filepath.IsAbs(Attachment.Path) {
|
||||
Attachment.Path = filepath.Join(AppWorkPath, Attachment.Path)
|
||||
}
|
||||
case MinioStorageType:
|
||||
Attachment.Minio.Endpoint = sec.Key("MINIO_ENDPOINT").MustString(Attachment.Minio.Endpoint)
|
||||
Attachment.Minio.AccessKeyID = sec.Key("MINIO_ACCESS_KEY_ID").MustString(Attachment.Minio.AccessKeyID)
|
||||
Attachment.Minio.SecretAccessKey = sec.Key("MINIO_SECRET_ACCESS_KEY").MustString(Attachment.Minio.SecretAccessKey)
|
||||
Attachment.Minio.Bucket = sec.Key("MINIO_BUCKET").MustString(Attachment.Minio.Bucket)
|
||||
Attachment.Minio.Location = sec.Key("MINIO_LOCATION").MustString(Attachment.Minio.Location)
|
||||
Attachment.Minio.UseSSL = sec.Key("MINIO_USE_SSL").MustBool(Attachment.Minio.UseSSL)
|
||||
Attachment.Minio.BasePath = sec.Key("MINIO_BASE_PATH").MustString("attachments/")
|
||||
}
|
||||
Attachment.Storage = getStorage("attachments", storageType, sec)
|
||||
|
||||
Attachment.AllowedTypes = sec.Key("ALLOWED_TYPES").MustString(".docx,.gif,.gz,.jpeg,.jpg,.log,.pdf,.png,.pptx,.txt,.xlsx,.zip")
|
||||
Attachment.MaxSize = sec.Key("MAX_SIZE").MustInt64(4)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue