1
0
mirror of https://github.com/gilbertchen/duplicacy synced 2025-12-06 00:03:38 +00:00

Compare commits

...

5 Commits

Author SHA1 Message Date
gilbertchen
01408dc73b Merge 54c4ebaa99 into 065ae50868 2025-02-02 15:04:26 +00:00
Gilbert Chen
065ae50868 Improve parsing logic for swift storage URLs that contain multiple '@'
Parse the storage URL first, then use a regex to ensure the server name is
correctly identified starting after the final '@'.
2024-12-19 08:54:22 -05:00
Gilbert Chen
54c4ebaa99 Revert last commit which was checked in to the wrong branch
This reverts commit 3255d8168a.
2019-02-26 13:55:20 -05:00
Gilbert Chen
3255d8168a Fixed a webdav compatibility issue with rclone and other bugs 2019-02-26 13:38:25 -05:00
Gilbert Chen
08e85c49ff When prefetching chunks don't stop on a chunk that may not be needed 2019-02-15 13:56:18 -05:00
2 changed files with 13 additions and 8 deletions

View File

@@ -189,7 +189,7 @@ func (downloader *ChunkDownloader) WaitForChunk(chunkIndex int) (chunk *Chunk) {
}
task := &downloader.taskList[i]
if !task.needed {
break
continue
}
if !task.isDownloading {

View File

@@ -9,6 +9,7 @@ import (
"strconv"
"strings"
"time"
"regexp"
"github.com/ncw/swift/v2"
)
@@ -42,13 +43,6 @@ func CreateSwiftStorage(storageURL string, key string, threads int) (storage *Sw
}
}
// Take out the user name if there is one
if strings.Contains(storageURL, "@") {
userAndURL := strings.Split(storageURL, "@")
arguments["user"] = userAndURL[0]
storageURL = userAndURL[1]
}
// The version is used to split authURL and container/path
versions := []string{"/v1/", "/v1.0/", "/v2/", "/v2.0/", "/v3/", "/v3.0/", "/v4/", "/v4.0/"}
storageDir := ""
@@ -60,6 +54,17 @@ func CreateSwiftStorage(storageURL string, key string, threads int) (storage *Sw
}
}
// Take out the user name if there is one
if strings.Contains(storageURL, "@") {
// Use regex to split the username and the rest of the URL
lineRegex := regexp.MustCompile(`^(.+)@([^@]+)$`)
match := lineRegex.FindStringSubmatch(storageURL)
if match != nil {
arguments["user"] = match[1]
storageURL = match[2]
}
}
// If no container/path is specified, find them from the arguments
if storageDir == "" {
storageDir = arguments["storage_dir"]