From 483d2e62876baf4c564f4b8fd710ae4c86970494 Mon Sep 17 00:00:00 2001 From: houzhenkai Date: Tue, 1 Mar 2022 10:54:22 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=94=9F=E6=88=90=E9=98=B2=E7=9B=97?= =?UTF-8?q?=E9=93=BEupt=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Upyun/Config.php | 32 ++++++++++++++++++++++++++++++++ src/Upyun/Signature.php | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/src/Upyun/Config.php b/src/Upyun/Config.php index 1b99b6c..cf96439 100644 --- a/src/Upyun/Config.php +++ b/src/Upyun/Config.php @@ -1,4 +1,5 @@ concurrency = $concurrency; } + + public function setUptSecret($secret) + { + $this->uptSecret = $secret; + } + + public function getUptSecret() + { + return $this->uptSecret; + } + + public function setUptExpiration($expiration) + { + $this->uptExpiration = $expiration; + } + + public function getUptExpiration() + { + return $this->uptExpiration; + } } diff --git a/src/Upyun/Signature.php b/src/Upyun/Signature.php index 0fb68fe..cba5c13 100644 --- a/src/Upyun/Signature.php +++ b/src/Upyun/Signature.php @@ -1,4 +1,5 @@ operatorPassword, true)); return 'UPYUN ' . $serviceConfig->operatorName . ':' . $signature; } + + /** + * 获取防盗链token,前提是已开启token防盗链 + * https://help.upyun.com/knowledge-base/cdn-token-limite + * 使用防盗链生成token时,需要提前设置secret + * Config.php里的setUptSecret()方法 + * @param Config $serviceConfig + * @param $uri 请求路径 + * + * @return string _upt参数的值 + */ + public function getUptToken(Config $serviceConfig, $uri) + { + $etime = time() + $serviceConfig->getUptExpiration(); + $sign = md5("{$serviceConfig->getUptSecret()}&{$etime}&{$uri}"); + $upt = substr($sign, 12, 8) . $etime; + return $upt; + } + + /** + * 根据传入的URL直接处理成携带upt参数的URL + * @param Config $serviceConfig + * @param $method 请求方法 + * @param $url 访问URL + * + * @return string 携带upt参数的URL + */ + public function getUptUrl(Config $serviceConfig, $url) + { + $urlObj = parse_url($url); + $upt = $this->getUptToken($serviceConfig, $urlObj['path']); + return $urlObj['scheme'] . $urlObj['host'] . '?_upt=' . $upt; + } } From 24348df83d4212f09fc0d6b83db4c64a07629880 Mon Sep 17 00:00:00 2001 From: houzhenkai Date: Tue, 1 Mar 2022 11:11:40 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=94=9F=E6=88=90=E9=98=B2=E7=9B=97?= =?UTF-8?q?=E9=93=BE=E7=9A=84upt=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Upyun/Signature.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Upyun/Signature.php b/src/Upyun/Signature.php index cba5c13..99a59ae 100644 --- a/src/Upyun/Signature.php +++ b/src/Upyun/Signature.php @@ -107,7 +107,7 @@ public static function getBodySignature(Config $serviceConfig, $method, $uri, $d * * @return string _upt参数的值 */ - public function getUptToken(Config $serviceConfig, $uri) + public static function getUptToken(Config $serviceConfig, $uri) { $etime = time() + $serviceConfig->getUptExpiration(); $sign = md5("{$serviceConfig->getUptSecret()}&{$etime}&{$uri}"); @@ -123,10 +123,10 @@ public function getUptToken(Config $serviceConfig, $uri) * * @return string 携带upt参数的URL */ - public function getUptUrl(Config $serviceConfig, $url) + public static function getUptUrl(Config $serviceConfig, $url) { $urlObj = parse_url($url); - $upt = $this->getUptToken($serviceConfig, $urlObj['path']); + $upt = self::getUptToken($serviceConfig, $urlObj['path']); return $urlObj['scheme'] . $urlObj['host'] . '?_upt=' . $upt; } }