Private
Public Access
1
0

新增: SFTP直连+网站预览+OSS区域嗅探+热键+BGM播放

This commit is contained in:
2026-05-12 11:06:28 +08:00
parent 545d7a864d
commit 2a363fd729
62 changed files with 6687 additions and 660 deletions

View File

@@ -99,6 +99,55 @@ func (c *Client) GetBucketDomains(ctx context.Context) ([]string, error) {
return domains, nil
}
// GetBucketRegion 查询桶的真实区域
// API: POST https://uc.qbox.me/v2/buckets → 遍历匹配桶名获取 region
func (c *Client) GetBucketRegion(ctx context.Context) (string, error) {
// 使用 UC API 获取所有桶列表(含 region
req, err := http.NewRequestWithContext(ctx, "POST", "https://uc.qbox.me/v2/buckets", nil)
if err != nil {
return "", oss.NewError("BUCKET_ERROR", "failed to create request", err)
}
path := "/v2/buckets"
host := "uc.qbox.me"
authToken := c.generateAuthTokenWithQuery("POST", path, "", host, "application/x-www-form-urlencoded", nil)
req.Header.Set("Host", host)
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
req.Header.Set("Authorization", authToken)
resp, err := c.httpClient.Do(req)
if err != nil {
return "", oss.NewError("BUCKET_ERROR", "failed to query bucket region", err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return "", oss.NewError("BUCKET_ERROR", "failed to read response", err)
}
if resp.StatusCode != 200 {
return "", oss.NewError("BUCKET_ERROR",
fmt.Sprintf("query bucket region failed with status %d: %s", resp.StatusCode, string(body)), nil)
}
var buckets []struct {
ID string `json:"id"`
Region string `json:"region"`
}
if err := json.Unmarshal(body, &buckets); err != nil {
return "", oss.NewError("BUCKET_ERROR", "failed to parse response", err)
}
for _, b := range buckets {
if b.ID == c.config.Bucket {
return b.Region, nil
}
}
return "", oss.NewError("BUCKET_ERROR", fmt.Sprintf("bucket %s not found in account", c.config.Bucket), nil)
}
// SetBucketAccess 设置空间访问权限(公开/私有)
// 根据: https://developer.qiniu.com/kodo/api/3946/set-bucket-private
//