This reverts commit 4f3995383c555d6c11a9a3899d01f14f08c7f843, reversing
changes made to e7e9848cc9.
tags/v1.21.12.1
| @@ -753,6 +753,8 @@ MINIO_LOCATION = us-east-1 | |||||
| MINIO_BASE_PATH = attachments/ | MINIO_BASE_PATH = attachments/ | ||||
| ; Minio enabled ssl only available when STORE_TYPE is `minio` | ; Minio enabled ssl only available when STORE_TYPE is `minio` | ||||
| MINIO_USE_SSL = false | MINIO_USE_SSL = false | ||||
| ; real Minio storage path | |||||
| MINIO_REAL_PATH = /mnt/test/minio/data/ | |||||
| [time] | [time] | ||||
| ; Specifies the format for fully outputted dates. Defaults to RFC1123 | ; Specifies the format for fully outputted dates. Defaults to RFC1123 | ||||
| @@ -1039,19 +1041,11 @@ RETRY_BACKOFF = 3 | |||||
| [machinery] | [machinery] | ||||
| ; redis conf for decompress dataset zip file. | ; redis conf for decompress dataset zip file. | ||||
| BROKER = amqp://admin:pcladmin@127.0.0.1:5672/ | |||||
| BROKER = redis://localhost:6379 | |||||
| DEFAULT_QUEUE = DecompressTasksQueue | DEFAULT_QUEUE = DecompressTasksQueue | ||||
| RESULT_BACKEND = amqp://admin:pcladmin@127.0.0.1:5672/ | |||||
| EXCHANGE = decompress_exchange | |||||
| EXCHANGE_TYPE = direct | |||||
| BINDING_KEY = decompress_task | |||||
| RESULT_BACKEND = redis://localhost:6379 | |||||
| [cloudbrain] | [cloudbrain] | ||||
| HOST = http://192.168.204.24 | HOST = http://192.168.204.24 | ||||
| USERNAME = | USERNAME = | ||||
| PASSWORD = | PASSWORD = | ||||
| [decompress] | |||||
| HOST = http://192.168.207.34:39987 | |||||
| USER = cW4cMtH24eoWPE7X | |||||
| PASSWORD = 4BPmgvK2hb2Eywwyp4YZRY4B7yQf4DAC | |||||
| @@ -309,6 +309,7 @@ var ( | |||||
| Bucket string | Bucket string | ||||
| Location string | Location string | ||||
| BasePath string | BasePath string | ||||
| RealPath string | |||||
| } | } | ||||
| AllowedTypes string | AllowedTypes string | ||||
| MaxSize int64 | MaxSize int64 | ||||
| @@ -324,6 +325,7 @@ var ( | |||||
| Bucket string | Bucket string | ||||
| Location string | Location string | ||||
| BasePath string | BasePath string | ||||
| RealPath string | |||||
| }{}, | }{}, | ||||
| AllowedTypes: "image/jpeg,image/png,application/zip,application/gzip", | AllowedTypes: "image/jpeg,image/png,application/zip,application/gzip", | ||||
| MaxSize: 4, | MaxSize: 4, | ||||
| @@ -423,14 +425,6 @@ var ( | |||||
| Broker string | Broker string | ||||
| DefaultQueue string | DefaultQueue string | ||||
| ResultBackend string | ResultBackend string | ||||
| Exchange string | |||||
| ExchangeType string | |||||
| BindingKey string | |||||
| //decompress config | |||||
| DecompressAddress string | |||||
| AuthUser string | |||||
| AuthPassword string | |||||
| ) | ) | ||||
| // DateLang transforms standard language locale name to corresponding value in datetime plugin. | // DateLang transforms standard language locale name to corresponding value in datetime plugin. | ||||
| @@ -900,6 +894,7 @@ func NewContext() { | |||||
| Attachment.Minio.Location = sec.Key("MINIO_LOCATION").MustString("us-east-1") | Attachment.Minio.Location = sec.Key("MINIO_LOCATION").MustString("us-east-1") | ||||
| Attachment.Minio.BasePath = sec.Key("MINIO_BASE_PATH").MustString("attachments/") | Attachment.Minio.BasePath = sec.Key("MINIO_BASE_PATH").MustString("attachments/") | ||||
| Attachment.Minio.UseSSL = sec.Key("MINIO_USE_SSL").MustBool(false) | Attachment.Minio.UseSSL = sec.Key("MINIO_USE_SSL").MustBool(false) | ||||
| Attachment.Minio.RealPath = sec.Key("MINIO_REAL_PATH").MustString("/mnt/test/minio/data/") | |||||
| } | } | ||||
| Attachment.AllowedTypes = strings.Replace(sec.Key("ALLOWED_TYPES").MustString("image/jpeg,image/png,application/zip,application/gzip"), "|", ",", -1) | Attachment.AllowedTypes = strings.Replace(sec.Key("ALLOWED_TYPES").MustString("image/jpeg,image/png,application/zip,application/gzip"), "|", ",", -1) | ||||
| @@ -1089,17 +1084,9 @@ func NewContext() { | |||||
| } | } | ||||
| sec = Cfg.Section("machinery") | sec = Cfg.Section("machinery") | ||||
| Broker = sec.Key("BROKER").MustString("amqp://admin:pcladmin@127.0.0.1:5672/") | |||||
| Broker = sec.Key("BROKER").MustString("redis://localhost:6379") | |||||
| DefaultQueue = sec.Key("DEFAULT_QUEUE").MustString("DecompressTasksQueue") | DefaultQueue = sec.Key("DEFAULT_QUEUE").MustString("DecompressTasksQueue") | ||||
| ResultBackend = sec.Key("RESULT_BACKEND").MustString("amqp://admin:pcladmin@127.0.0.1:5672/") | |||||
| Exchange = sec.Key("EXCHANGE").MustString("decompress_exchange") | |||||
| ExchangeType = sec.Key("EXCHANGE_TYPE").MustString("direct") | |||||
| BindingKey = sec.Key("BINDING_KEY").MustString("decompress_task") | |||||
| sec = Cfg.Section("decompress") | |||||
| DecompressAddress = sec.Key("HOST").MustString("http://192.168.207.34:39987") | |||||
| AuthUser = sec.Key("USER").MustString("cW4cMtH24eoWPE7X") | |||||
| AuthPassword = sec.Key("PASSWORD").MustString("4BPmgvK2hb2Eywwyp4YZRY4B7yQf4DAC") | |||||
| ResultBackend = sec.Key("RESULT_BACKEND").MustString("redis://localhost:6379") | |||||
| } | } | ||||
| func loadInternalToken(sec *ini.Section) string { | func loadInternalToken(sec *ini.Section) string { | ||||
| @@ -15,11 +15,6 @@ func NewTaskCenter() { | |||||
| Broker: setting.Broker, | Broker: setting.Broker, | ||||
| DefaultQueue: setting.DefaultQueue, | DefaultQueue: setting.DefaultQueue, | ||||
| ResultBackend: setting.ResultBackend, | ResultBackend: setting.ResultBackend, | ||||
| AMQP: &mchConf.AMQPConfig{ | |||||
| Exchange: "machinery_exchange", | |||||
| ExchangeType: "direct", | |||||
| BindingKey: "machinery_task", | |||||
| }, | |||||
| } | } | ||||
| tc, err := machinery.NewServer(cnf) | tc, err := machinery.NewServer(cnf) | ||||
| if err != nil { | if err != nil { | ||||
| @@ -1,10 +1,10 @@ | |||||
| package repo | package repo | ||||
| import ( | import ( | ||||
| "encoding/json" | |||||
| "errors" | "errors" | ||||
| "io/ioutil" | |||||
| "net/http" | |||||
| "os" | |||||
| "path" | |||||
| "sort" | |||||
| "strings" | "strings" | ||||
| "code.gitea.io/gitea/models" | "code.gitea.io/gitea/models" | ||||
| @@ -19,17 +19,12 @@ const ( | |||||
| ) | ) | ||||
| type FileInfo struct { | type FileInfo struct { | ||||
| FileName string `json:"FileName"` | |||||
| ModTime string `json:"ModTime"` | |||||
| IsDir bool `json:"IsDir"` | |||||
| Size int64 `json:"Size"` | |||||
| ParenDir string `json:"ParenDir"` | |||||
| UUID string `json:"UUID"` | |||||
| } | |||||
| type RespGetDirs struct { | |||||
| ResultCode string `json:"resultCode"` | |||||
| FileInfos string `json:"fileInfos"` | |||||
| FileName string | |||||
| ModTime string | |||||
| IsDir bool | |||||
| Size int64 | |||||
| ParenDir string | |||||
| UUID string | |||||
| } | } | ||||
| func DirIndex(ctx *context.Context) { | func DirIndex(ctx *context.Context) { | ||||
| @@ -58,19 +53,39 @@ func DirIndex(ctx *context.Context) { | |||||
| dirArray = []string{attachment.Name} | dirArray = []string{attachment.Name} | ||||
| } | } | ||||
| dirs, err := getDirs(uuid, parentDir) | |||||
| files, err := readDir(setting.Attachment.Minio.RealPath + setting.Attachment.Minio.Bucket + "/" + setting.Attachment.Minio.BasePath + | |||||
| path.Join(uuid[0:1], uuid[1:2], uuid+uuid) + "/" + parentDir) | |||||
| if err != nil { | if err != nil { | ||||
| log.Error("getDirs failed:", err.Error()) | |||||
| ctx.ServerError("getDirs failed:", err) | |||||
| log.Error("ReadDir failed:", err.Error()) | |||||
| ctx.ServerError("ReadDir failed:", err) | |||||
| return | return | ||||
| } | } | ||||
| i := 1 | |||||
| var fileInfos []FileInfo | var fileInfos []FileInfo | ||||
| err = json.Unmarshal([]byte(dirs), &fileInfos) | |||||
| if err != nil { | |||||
| log.Error("json.Unmarshal failed:", err.Error()) | |||||
| ctx.ServerError("json.Unmarshal failed:", err) | |||||
| return | |||||
| for _, file := range files { | |||||
| if i > 100 { | |||||
| break | |||||
| } | |||||
| log.Info(file.Name()) | |||||
| var tmp string | |||||
| if parentDir == "" { | |||||
| tmp = file.Name() | |||||
| } else { | |||||
| tmp = parentDir + "/" + file.Name() | |||||
| } | |||||
| fileInfos = append(fileInfos, FileInfo{ | |||||
| FileName: file.Name(), | |||||
| ModTime: file.ModTime().Format("2006-01-02 15:04:05"), | |||||
| IsDir: file.IsDir(), | |||||
| Size: file.Size(), | |||||
| ParenDir: tmp, | |||||
| UUID: uuid, | |||||
| }) | |||||
| i++ | |||||
| } | } | ||||
| ctx.Data["Path"] = dirArray | ctx.Data["Path"] = dirArray | ||||
| @@ -80,53 +95,18 @@ func DirIndex(ctx *context.Context) { | |||||
| ctx.HTML(200, tplDirIndex) | ctx.HTML(200, tplDirIndex) | ||||
| } | } | ||||
| func getDirs(uuid string, parentDir string) (string,error) { | |||||
| var dirs string | |||||
| var req string | |||||
| if parentDir == "" { | |||||
| req = "uuid=" + uuid | |||||
| } else { | |||||
| req = "uuid=" + uuid + "&parentDir=" + parentDir | |||||
| } | |||||
| url := setting.DecompressAddress + "/dirs?" + req | |||||
| reqHttp, err := http.NewRequest(http.MethodGet, url, nil) | |||||
| if err != nil { | |||||
| log.Error("http.NewRequest failed:", err.Error()) | |||||
| return dirs, err | |||||
| } | |||||
| reqHttp.SetBasicAuth(setting.AuthUser, setting.AuthPassword) | |||||
| res, err := http.DefaultClient.Do(reqHttp) | |||||
| // readDir reads the directory named by dirname and returns | |||||
| // a list of directory entries sorted by filename. | |||||
| func readDir(dirname string) ([]os.FileInfo, error) { | |||||
| f, err := os.Open(dirname) | |||||
| if err != nil { | if err != nil { | ||||
| log.Error("send http to decompress failed:", err.Error()) | |||||
| return dirs, err | |||||
| return nil, err | |||||
| } | } | ||||
| if res.StatusCode != http.StatusOK { | |||||
| log.Error("the response from decompress is failed") | |||||
| return dirs, errors.New("the response from decompress is failed") | |||||
| } | |||||
| body,err := ioutil.ReadAll(res.Body) | |||||
| if err != nil { | |||||
| log.Error("read resp body failed:", err.Error()) | |||||
| return dirs, err | |||||
| } | |||||
| var resp RespGetDirs | |||||
| err = json.Unmarshal(body, &resp) | |||||
| list, err := f.Readdir(100) | |||||
| f.Close() | |||||
| if err != nil { | if err != nil { | ||||
| log.Error("unmarshal resp failed:", err.Error()) | |||||
| return dirs, err | |||||
| } | |||||
| if resp.ResultCode != "0" { | |||||
| log.Error("GetDirs failed:", resp.ResultCode) | |||||
| return dirs, errors.New("GetDirs failed") | |||||
| return nil, err | |||||
| } | } | ||||
| dirs = resp.FileInfos | |||||
| return dirs, nil | |||||
| sort.Slice(list, func(i, j int) bool { return list[i].Name() < list[j].Name() }) | |||||
| return list, nil | |||||
| } | } | ||||