Upgrade signature from V1 to V4 (#40)

pull/42/head v1.4.15
Luffy 2024-07-21 08:55:03 +08:00 committed by GitHub
parent 1892fd78b9
commit c32790061d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 36 additions and 25 deletions

View File

@ -22,9 +22,9 @@
- [x] 支持同步历史附件到阿里云对象存储 OSS - [x] 支持同步历史附件到阿里云对象存储 OSS
- [x] 支持阿里云 OSS 图片处理 - [x] 支持阿里云 OSS 图片处理
- [x] 支持上传文件自动重命名 - [x] 支持上传文件自动重命名
- [x] 支持使用 RAM 操作 - [x] 支持使用 ECS 的 RAM 操作
- [x] 支持原图保护 - [x] 支持原图保护
- [x] 支持 `wp-cli` 命令上传文件 - [x] 支持 `wp-cli` 命令上传/删除文件
## 安装 ## 安装

View File

@ -3,7 +3,7 @@
Plugin Name: OSS Aliyun Plugin Name: OSS Aliyun
Plugin URI: https://github.com/sy-records/aliyun-oss-wordpress Plugin URI: https://github.com/sy-records/aliyun-oss-wordpress
Description: 使用阿里云对象存储 OSS 作为附件存储空间。This is a plugin that uses Aliyun Object Storage Service for attachments remote saving. Description: 使用阿里云对象存储 OSS 作为附件存储空间。This is a plugin that uses Aliyun Object Storage Service for attachments remote saving.
Version: 1.4.14 Version: 1.4.15
Author: 沈唁 Author: 沈唁
Author URI: https://qq52o.me Author URI: https://qq52o.me
License: Apache2.0 License: Apache2.0
@ -19,7 +19,7 @@ use OSS\Credentials\CredentialsProvider;
use AlibabaCloud\Credentials\Credential; use AlibabaCloud\Credentials\Credential;
use OSS\Credentials\StaticCredentialsProvider; use OSS\Credentials\StaticCredentialsProvider;
define('OSS_VERSION', '1.4.14'); define('OSS_VERSION', '1.4.15');
define('OSS_BASEFOLDER', plugin_basename(dirname(__FILE__))); define('OSS_BASEFOLDER', plugin_basename(dirname(__FILE__)));
if (!function_exists('get_home_path')) { if (!function_exists('get_home_path')) {
@ -75,33 +75,36 @@ function oss_set_options()
function oss_get_client() function oss_get_client()
{ {
$oss_opt = get_option('oss_options', true); $oss_options = get_option('oss_options', true);
$roleName = esc_attr($oss_opt['role_name'] ?? ''); $role_name = esc_attr($oss_options['role_name'] ?? '');
$endpoint = oss_get_bucket_endpoint($oss_opt); $endpoint = oss_get_bucket_endpoint($oss_options);
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? 'https://' : 'http://';
if (!empty($roleName)) { if (!empty($role_name)) {
$ecsRamRole = new Credential([ $ecsRamRole = new Credential([
// 填写Credential类型固定值为ecs_ram_role。 // 填写Credential类型固定值为ecs_ram_role。
'type' => 'ecs_ram_role', 'type' => 'ecs_ram_role',
// 填写角色名称。 // 填写角色名称。
'role_name' => $roleName, 'role_name' => $role_name,
]); ]);
$providerWrapper = new OSSCredentialsWrapper($ecsRamRole); $providerWrapper = new OSSCredentialsWrapper($ecsRamRole);
$provider = $providerWrapper->getCredentials(); $provider = $providerWrapper->getCredentials();
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? 'https://' : 'http://'; } else {
$config = ['provider' => $provider, 'endpoint'=> $protocol . $endpoint]; $provider = new StaticCredentialsProvider(esc_attr($oss_options['accessKeyId']), esc_attr($oss_options['accessKeySecret']));
return new OssClient($config);
} }
$config = [
$accessKeyId = esc_attr($oss_opt['accessKeyId']); 'provider' => $provider,
$accessKeySecret = esc_attr($oss_opt['accessKeySecret']); 'endpoint' => $protocol . $endpoint,
return new OssClient($accessKeyId, $accessKeySecret, $endpoint); 'signatureVersion' => OssClient::OSS_SIGNATURE_VERSION_V4,
'region' => str_replace('oss-', '', esc_attr($oss_options['regional'])),
];
return new OssClient($config);
} }
function oss_get_bucket_endpoint($oss_option) function oss_get_bucket_endpoint($oss_options)
{ {
$oss_regional = esc_attr($oss_option['regional']); $oss_regional = esc_attr($oss_options['regional']);
if ($oss_option['is_internal'] == 'true') { if ($oss_options['is_internal'] == 'true') {
return "{$oss_regional}-internal.aliyuncs.com"; return "{$oss_regional}-internal.aliyuncs.com";
} }
@ -110,8 +113,8 @@ function oss_get_bucket_endpoint($oss_option)
function oss_get_bucket_name() function oss_get_bucket_name()
{ {
$oss_opt = get_option('oss_options', true); $oss_options = get_option('oss_options', true);
return $oss_opt['bucket']; return $oss_options['bucket'];
} }
/** /**
@ -573,6 +576,11 @@ function oss_setting_post_thumbnail_style($html, $post_id, $post_image_id)
return $html; return $html;
} }
/**
* @link https://help.aliyun.com/zh/oss/user-guide/regions-and-endpoints
* @param string $regional
* @return void
*/
function oss_get_regional($regional) function oss_get_regional($regional)
{ {
$options = [ $options = [

View File

@ -6,7 +6,6 @@ if (!class_exists('WP_CLI')) {
class OSS_CLI_Commands class OSS_CLI_Commands
{ {
/** /**
* 同步文件夹到 OSS * 同步文件夹到 OSS
* *

View File

@ -5,7 +5,7 @@ Tags: oss, 阿里云, 对象存储, aliyun
Requires at least: 4.6 Requires at least: 4.6
Tested up to: 6.6 Tested up to: 6.6
Requires PHP: 7.1 Requires PHP: 7.1
Stable tag: 1.4.14 Stable tag: 1.4.15
License: Apache2.0 License: Apache2.0
License URI: http://www.apache.org/licenses/LICENSE-2.0.html License URI: http://www.apache.org/licenses/LICENSE-2.0.html
@ -27,9 +27,9 @@ License URI: http://www.apache.org/licenses/LICENSE-2.0.html
6. 支持同步历史附件到阿里云对象存储 OSS 6. 支持同步历史附件到阿里云对象存储 OSS
7. 支持阿里云 OSS 图片处理 7. 支持阿里云 OSS 图片处理
8. 支持上传文件自动重命名 8. 支持上传文件自动重命名
9. 支持使用 RAM 操作 9. 支持使用 ECS 的 RAM 操作
10. 支持原图保护 10. 支持原图保护
11. 支持 `wp-cli` 命令上传文件 11. 支持 `wp-cli` 命令上传/删除文件
12. 插件更多详细介绍和安装:[https://github.com/sy-records/aliyun-oss-wordpress](https://github.com/sy-records/aliyun-oss-wordpress) 12. 插件更多详细介绍和安装:[https://github.com/sy-records/aliyun-oss-wordpress](https://github.com/sy-records/aliyun-oss-wordpress)
## 其他插件 ## 其他插件
@ -76,6 +76,10 @@ License URI: http://www.apache.org/licenses/LICENSE-2.0.html
== Changelog == == Changelog ==
= 1.4.15 =
- 将阿里云V1签名升级为V4签名
= 1.4.14 = = 1.4.14 =
- 支持 `wp-cli` 命令删除文件 - 支持 `wp-cli` 命令删除文件