From 2dd4978fb3d8d19187dedf47a9cc0dd03216d874 Mon Sep 17 00:00:00 2001 From: net909 Date: Mon, 13 Apr 2026 22:32:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=81=AB=E5=B1=B1VOD?= =?UTF-8?q?=E9=83=A8=E7=BD=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/lib/DeployHelper.php | 18 +++++++++++ app/lib/deploy/huoshan.php | 29 ++++++++++++++++++ composer.lock | 61 +++++++++++++++++++------------------- 3 files changed, 78 insertions(+), 30 deletions(-) diff --git a/app/lib/DeployHelper.php b/app/lib/DeployHelper.php index a393b77..1a9b9d6 100644 --- a/app/lib/DeployHelper.php +++ b/app/lib/DeployHelper.php @@ -1928,6 +1928,7 @@ ctrl+x 保存退出
', ['value'=>'alb', 'label'=>'应用型负载均衡ALB'], ['value'=>'tos', 'label'=>'对象存储TOS'], ['value'=>'live', 'label'=>'视频直播'], + ['value'=>'vod', 'label'=>'视频点播'], ['value'=>'imagex', 'label'=>'veImageX'], ['value'=>'upload', 'label'=>'上传到证书管理'], ], @@ -1941,6 +1942,23 @@ ctrl+x 保存退出
', 'show' => 'product==\'tos\'', 'required' => true, ], + 'vod_space_name' => [ + 'name' => '点播空间名称', + 'type' => 'input', + 'placeholder' => '', + 'show' => 'product==\'vod\'', + 'required' => true, + ], + 'vod_domain_type' => [ + 'name' => '点播域名类型', + 'type' => 'select', + 'options' => [ + ['value'=>'play', 'label'=>'点播加速域名和自定义源站加速域名'], + ['value'=>'image', 'label'=>'封面加速域名'], + ], + 'show' => 'product==\'vod\'', + 'required' => true, + ], 'domain' => [ 'name' => '绑定的域名', 'type' => 'input', diff --git a/app/lib/deploy/huoshan.php b/app/lib/deploy/huoshan.php index 9cc5ce3..c2c7268 100644 --- a/app/lib/deploy/huoshan.php +++ b/app/lib/deploy/huoshan.php @@ -48,6 +48,8 @@ class huoshan implements DeployInterface $this->deploy_clb($cert_id, $config); } elseif ($config['product'] == 'alb') { $this->deploy_alb($cert_id, $config); + } elseif ($config['product'] == 'vod') { + $this->deploy_vod($cert_id, $config); } } } @@ -135,6 +137,33 @@ class huoshan implements DeployInterface } } + private function deploy_vod($cert_id, $config) + { + if (empty($config['domain'])) throw new Exception('绑定的域名不能为空'); + if (empty($config['vod_space_name'])) throw new Exception('点播空间名称不能为空'); + if (empty($config['vod_domain_type'])) throw new Exception('点播域名类型不能为空'); + + $client = new Volcengine($this->AccessKeyId, $this->SecretAccessKey, 'vod.volcengineapi.com', 'vod', '2023-07-01', 'cn-north-1', $this->proxy); + foreach (explode(',', $config['domain']) as $domain) { + if (empty($domain)) continue; + $param = [ + 'SpaceName' => $config['vod_space_name'], + 'DomainType' => $config['vod_domain_type'], + 'Domain' => $domain, + 'Config' => [ + 'HTTPS' => [ + 'Switch' => true, + 'CertInfo' => [ + 'CertId' => $cert_id, + ], + ], + ], + ]; + $client->request('POST', 'UpdateDomainConfig', $param); + $this->log('视频点播域名 ' . $domain . ' 部署证书成功!'); + } + } + private function deploy_imagex($cert_id, $config) { if (empty($config['domain'])) throw new Exception('绑定的域名不能为空'); diff --git a/composer.lock b/composer.lock index e18d9e1..d82f009 100644 --- a/composer.lock +++ b/composer.lock @@ -329,16 +329,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.8.0", + "version": "2.9.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "21dc724a0583619cd1652f673303492272778051" + "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", - "reference": "21dc724a0583619cd1652f673303492272778051", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/7d0ed42f28e42d61352a7a79de682e5e67fec884", + "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884", "shasum": "" }, "require": { @@ -354,6 +354,7 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "0.9.0", + "jshttp/mime-db": "1.54.0.1", "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "suggest": { @@ -425,7 +426,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.8.0" + "source": "https://github.com/guzzle/psr7/tree/2.9.0" }, "funding": [ { @@ -441,7 +442,7 @@ "type": "tidelift" } ], - "time": "2025-08-23T21:21:41+00:00" + "time": "2026-03-10T16:41:02+00:00" }, { "name": "phpmailer/phpmailer", @@ -952,16 +953,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.33.0", + "version": "v1.34.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + "reference": "141046a8f9477948ff284fa65be2095baafb94f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", - "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/141046a8f9477948ff284fa65be2095baafb94f2", + "reference": "141046a8f9477948ff284fa65be2095baafb94f2", "shasum": "" }, "require": { @@ -1011,7 +1012,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.34.0" }, "funding": [ { @@ -1031,7 +1032,7 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2026-04-10T16:19:22+00:00" }, { "name": "symfony/polyfill-intl-idn", @@ -1452,28 +1453,28 @@ }, { "name": "symfony/yaml", - "version": "v7.3.5", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "90208e2fc6f68f613eae7ca25a2458a931b1bacc" + "reference": "c58fdf7b3d6c2995368264c49e4e8b05bcff2883" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/90208e2fc6f68f613eae7ca25a2458a931b1bacc", - "reference": "90208e2fc6f68f613eae7ca25a2458a931b1bacc", + "url": "https://api.github.com/repos/symfony/yaml/zipball/c58fdf7b3d6c2995368264c49e4e8b05bcff2883", + "reference": "c58fdf7b3d6c2995368264c49e4e8b05bcff2883", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -1504,7 +1505,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.3.5" + "source": "https://github.com/symfony/yaml/tree/v7.4.8" }, "funding": [ { @@ -1524,7 +1525,7 @@ "type": "tidelift" } ], - "time": "2025-09-27T09:00:46+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "topthink/framework", @@ -1908,16 +1909,16 @@ }, { "name": "symfony/var-dumper", - "version": "v7.3.5", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "476c4ae17f43a9a36650c69879dcf5b1e6ae724d" + "reference": "9510c3966f749a1d1ff0059e1eabef6cc621e7fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/476c4ae17f43a9a36650c69879dcf5b1e6ae724d", - "reference": "476c4ae17f43a9a36650c69879dcf5b1e6ae724d", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/9510c3966f749a1d1ff0059e1eabef6cc621e7fd", + "reference": "9510c3966f749a1d1ff0059e1eabef6cc621e7fd", "shasum": "" }, "require": { @@ -1929,10 +1930,10 @@ "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/uid": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", "twig/twig": "^3.12" }, "bin": [ @@ -1971,7 +1972,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.3.5" + "source": "https://github.com/symfony/var-dumper/tree/v7.4.8" }, "funding": [ { @@ -1991,7 +1992,7 @@ "type": "tidelift" } ], - "time": "2025-09-27T09:00:46+00:00" + "time": "2026-03-30T13:44:50+00:00" }, { "name": "topthink/think-trace",