mirror of
				https://github.com/1Panel-dev/1Panel.git
				synced 2025-10-31 19:26:02 +08:00 
			
		
		
		
	feat: 适配世纪互联版本 OneDrive (#3763)
This commit is contained in:
		
							parent
							
								
									3804942ae4
								
							
						
					
					
						commit
						42828d0a48
					
				
					 10 changed files with 52 additions and 43 deletions
				
			
		|  | @ -17,11 +17,11 @@ type cosClient struct { | |||
| } | ||||
| 
 | ||||
| func NewCosClient(vars map[string]interface{}) (*cosClient, error) { | ||||
| 	region := loadParamFromVars("region", true, vars) | ||||
| 	accessKey := loadParamFromVars("accessKey", true, vars) | ||||
| 	secretKey := loadParamFromVars("secretKey", true, vars) | ||||
| 	bucket := loadParamFromVars("bucket", true, vars) | ||||
| 	scType := loadParamFromVars("scType", true, vars) | ||||
| 	region := loadParamFromVars("region", vars) | ||||
| 	accessKey := loadParamFromVars("accessKey", vars) | ||||
| 	secretKey := loadParamFromVars("secretKey", vars) | ||||
| 	bucket := loadParamFromVars("bucket", vars) | ||||
| 	scType := loadParamFromVars("scType", vars) | ||||
| 	if len(scType) == 0 { | ||||
| 		scType = "Standard" | ||||
| 	} | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ import ( | |||
| 	"github.com/1Panel-dev/1Panel/backend/global" | ||||
| ) | ||||
| 
 | ||||
| func loadParamFromVars(key string, isString bool, vars map[string]interface{}) string { | ||||
| func loadParamFromVars(key string, vars map[string]interface{}) string { | ||||
| 	if _, ok := vars[key]; !ok { | ||||
| 		if key != "bucket" { | ||||
| 			global.LOG.Errorf("load param %s from vars failed, err: not exist!", key) | ||||
|  |  | |||
|  | @ -17,10 +17,10 @@ type kodoClient struct { | |||
| } | ||||
| 
 | ||||
| func NewKodoClient(vars map[string]interface{}) (*kodoClient, error) { | ||||
| 	accessKey := loadParamFromVars("accessKey", true, vars) | ||||
| 	secretKey := loadParamFromVars("secretKey", true, vars) | ||||
| 	bucket := loadParamFromVars("bucket", true, vars) | ||||
| 	domain := loadParamFromVars("domain", true, vars) | ||||
| 	accessKey := loadParamFromVars("accessKey", vars) | ||||
| 	secretKey := loadParamFromVars("secretKey", vars) | ||||
| 	bucket := loadParamFromVars("bucket", vars) | ||||
| 	domain := loadParamFromVars("domain", vars) | ||||
| 
 | ||||
| 	conn := auth.New(accessKey, secretKey) | ||||
| 	cfg := storage.Config{ | ||||
|  |  | |||
|  | @ -14,7 +14,7 @@ type localClient struct { | |||
| } | ||||
| 
 | ||||
| func NewLocalClient(vars map[string]interface{}) (*localClient, error) { | ||||
| 	dir := loadParamFromVars("dir", true, vars) | ||||
| 	dir := loadParamFromVars("dir", vars) | ||||
| 	return &localClient{dir: dir}, nil | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -19,10 +19,10 @@ type minIoClient struct { | |||
| } | ||||
| 
 | ||||
| func NewMinIoClient(vars map[string]interface{}) (*minIoClient, error) { | ||||
| 	endpoint := loadParamFromVars("endpoint", true, vars) | ||||
| 	accessKeyID := loadParamFromVars("accessKey", true, vars) | ||||
| 	secretAccessKey := loadParamFromVars("secretKey", true, vars) | ||||
| 	bucket := loadParamFromVars("bucket", true, vars) | ||||
| 	endpoint := loadParamFromVars("endpoint", vars) | ||||
| 	accessKeyID := loadParamFromVars("accessKey", vars) | ||||
| 	secretAccessKey := loadParamFromVars("secretKey", vars) | ||||
| 	bucket := loadParamFromVars("bucket", vars) | ||||
| 	ssl := strings.Split(endpoint, ":")[0] | ||||
| 	if len(ssl) == 0 || (ssl != "https" && ssl != "http") { | ||||
| 		return nil, constant.ErrInvalidParams | ||||
|  |  | |||
|  | @ -25,7 +25,8 @@ type oneDriveClient struct { | |||
| } | ||||
| 
 | ||||
| func NewOneDriveClient(vars map[string]interface{}) (*oneDriveClient, error) { | ||||
| 	token := loadParamFromVars("accessToken", true, vars) | ||||
| 	token := loadParamFromVars("accessToken", vars) | ||||
| 	isCN := loadParamFromVars("isCN", vars) | ||||
| 	ctx := context.Background() | ||||
| 	ts := oauth2.StaticTokenSource( | ||||
| 		&oauth2.Token{AccessToken: token}, | ||||
|  | @ -33,6 +34,9 @@ func NewOneDriveClient(vars map[string]interface{}) (*oneDriveClient, error) { | |||
| 	tc := oauth2.NewClient(ctx, ts) | ||||
| 
 | ||||
| 	client := odsdk.NewClient(tc) | ||||
| 	if isCN == "true" { | ||||
| 		client.BaseURL, _ = url.Parse("https://microsoftgraph.chinacloudapi.cn/v1.0/") | ||||
| 	} | ||||
| 	return &oneDriveClient{client: *client}, nil | ||||
| } | ||||
| 
 | ||||
|  | @ -192,18 +196,23 @@ func (o *oneDriveClient) loadIDByPath(path string) (string, error) { | |||
| 
 | ||||
| func RefreshToken(grantType string, varMap map[string]interface{}) (string, string, error) { | ||||
| 	data := url.Values{} | ||||
| 	data.Set("client_id", loadParamFromVars("client_id", true, varMap)) | ||||
| 	data.Set("client_secret", loadParamFromVars("client_secret", true, varMap)) | ||||
| 	isCN := loadParamFromVars("isCN", varMap) | ||||
| 	data.Set("client_id", loadParamFromVars("client_id", varMap)) | ||||
| 	data.Set("client_secret", loadParamFromVars("client_secret", varMap)) | ||||
| 	if grantType == "refresh_token" { | ||||
| 		data.Set("grant_type", "refresh_token") | ||||
| 		data.Set("refresh_token", loadParamFromVars("refresh_token", true, varMap)) | ||||
| 		data.Set("refresh_token", loadParamFromVars("refresh_token", varMap)) | ||||
| 	} else { | ||||
| 		data.Set("grant_type", "authorization_code") | ||||
| 		data.Set("code", loadParamFromVars("code", true, varMap)) | ||||
| 		data.Set("code", loadParamFromVars("code", varMap)) | ||||
| 	} | ||||
| 	data.Set("redirect_uri", loadParamFromVars("redirect_uri", true, varMap)) | ||||
| 	data.Set("redirect_uri", loadParamFromVars("redirect_uri", varMap)) | ||||
| 	client := &http.Client{} | ||||
| 	req, err := http.NewRequest("POST", "https://login.microsoftonline.com/common/oauth2/v2.0/token", strings.NewReader(data.Encode())) | ||||
| 	url := "https://login.microsoftonline.com/common/oauth2/v2.0/token" | ||||
| 	if isCN == "true" { | ||||
| 		url = "https://login.chinacloudapi.cn/common/oauth2/v2.0/token" | ||||
| 	} | ||||
| 	req, err := http.NewRequest("POST", url, strings.NewReader(data.Encode())) | ||||
| 	if err != nil { | ||||
| 		return "", "", fmt.Errorf("new http post client for access token failed, err: %v", err) | ||||
| 	} | ||||
|  |  | |||
|  | @ -13,11 +13,11 @@ type ossClient struct { | |||
| } | ||||
| 
 | ||||
| func NewOssClient(vars map[string]interface{}) (*ossClient, error) { | ||||
| 	endpoint := loadParamFromVars("endpoint", true, vars) | ||||
| 	accessKey := loadParamFromVars("accessKey", true, vars) | ||||
| 	secretKey := loadParamFromVars("secretKey", true, vars) | ||||
| 	bucketStr := loadParamFromVars("bucket", true, vars) | ||||
| 	scType := loadParamFromVars("scType", true, vars) | ||||
| 	endpoint := loadParamFromVars("endpoint", vars) | ||||
| 	accessKey := loadParamFromVars("accessKey", vars) | ||||
| 	secretKey := loadParamFromVars("secretKey", vars) | ||||
| 	bucketStr := loadParamFromVars("bucket", vars) | ||||
| 	scType := loadParamFromVars("scType", vars) | ||||
| 	if len(scType) == 0 { | ||||
| 		scType = "Standard" | ||||
| 	} | ||||
|  |  | |||
|  | @ -18,12 +18,12 @@ type s3Client struct { | |||
| } | ||||
| 
 | ||||
| func NewS3Client(vars map[string]interface{}) (*s3Client, error) { | ||||
| 	accessKey := loadParamFromVars("accessKey", true, vars) | ||||
| 	secretKey := loadParamFromVars("secretKey", true, vars) | ||||
| 	endpoint := loadParamFromVars("endpoint", true, vars) | ||||
| 	region := loadParamFromVars("region", true, vars) | ||||
| 	bucket := loadParamFromVars("bucket", true, vars) | ||||
| 	scType := loadParamFromVars("scType", true, vars) | ||||
| 	accessKey := loadParamFromVars("accessKey", vars) | ||||
| 	secretKey := loadParamFromVars("secretKey", vars) | ||||
| 	endpoint := loadParamFromVars("endpoint", vars) | ||||
| 	region := loadParamFromVars("region", vars) | ||||
| 	bucket := loadParamFromVars("bucket", vars) | ||||
| 	scType := loadParamFromVars("scType", vars) | ||||
| 	if len(scType) == 0 { | ||||
| 		scType = "Standard" | ||||
| 	} | ||||
|  |  | |||
|  | @ -19,11 +19,11 @@ type sftpClient struct { | |||
| } | ||||
| 
 | ||||
| func NewSftpClient(vars map[string]interface{}) (*sftpClient, error) { | ||||
| 	address := loadParamFromVars("address", true, vars) | ||||
| 	port := loadParamFromVars("port", false, vars) | ||||
| 	password := loadParamFromVars("password", true, vars) | ||||
| 	username := loadParamFromVars("username", true, vars) | ||||
| 	bucket := loadParamFromVars("bucket", true, vars) | ||||
| 	address := loadParamFromVars("address", vars) | ||||
| 	port := loadParamFromVars("port", vars) | ||||
| 	password := loadParamFromVars("password", vars) | ||||
| 	username := loadParamFromVars("username", vars) | ||||
| 	bucket := loadParamFromVars("bucket", vars) | ||||
| 
 | ||||
| 	auth := []ssh.AuthMethod{ssh.Password(password)} | ||||
| 	clientConfig := &ssh.ClientConfig{ | ||||
|  |  | |||
|  | @ -17,11 +17,11 @@ type webDAVClient struct { | |||
| } | ||||
| 
 | ||||
| func NewWebDAVClient(vars map[string]interface{}) (*webDAVClient, error) { | ||||
| 	address := loadParamFromVars("address", true, vars) | ||||
| 	port := loadParamFromVars("port", true, vars) | ||||
| 	password := loadParamFromVars("password", true, vars) | ||||
| 	username := loadParamFromVars("username", true, vars) | ||||
| 	bucket := loadParamFromVars("bucket", true, vars) | ||||
| 	address := loadParamFromVars("address", vars) | ||||
| 	port := loadParamFromVars("port", vars) | ||||
| 	password := loadParamFromVars("password", vars) | ||||
| 	username := loadParamFromVars("username", vars) | ||||
| 	bucket := loadParamFromVars("bucket", vars) | ||||
| 
 | ||||
| 	url := fmt.Sprintf("%s:%s", address, port) | ||||
| 	if len(port) == 0 { | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue