mastercraft / aapanel-php-sdk
aaPanel API 的 PHP SDK
Requires
- php: ^7.4|^8.0
- guzzlehttp/guzzle: ^7.0
- vlucas/phpdotenv: ^5.6
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-22 11:19:25 UTC
README
这是一个用于与 aaPanel API 交互的 PHP SDK。此 SDK 提供方便的方法来管理您的 aaPanel 服务器,包括系统状态、网站管理、备份管理、域名管理、伪静态规则和日志。
目录
安装
您可以通过 Composer 安装 SDK。运行以下命令
composer require mastercraft/aapanel-php-sdk
使用方法
初始化客户端
要开始使用,您需要使用 aaPanel 的基本 URL 和 API 密钥初始化 AaPanelClient。建议您通过环境变量设置 AAPANEL_URL 和 AAPANEL_API_KEY 的值。
examples/demo.php
require __DIR__ . '/../vendor/autoload.php'; use Mastercraft\AapanelPhpSdk\AaPanelClient; use Mastercraft\AapanelPhpSdk\Services\System; use Dotenv\Dotenv; $dotenv = Dotenv::createImmutable(__DIR__); $dotenv->safeLoad(); $baseUri = $_ENV['AAPANEL_URL']; $apiKey = $_ENV['AAPANEL_API_KEY']; $client = new AaPanelClient($baseUri, $apiKey); // Example usage $system = new System($client); $systemInfo = $system->getSystemTotal(); print_r($systemInfo);
系统服务
System
服务允许您检索系统状态信息。
use Mastercraft\AapanelPhpSdk\Services\System; $system = new System($client); // Get system info $systemInfo = $system->getSystemTotal(); print_r($systemInfo); // Get disk information $diskInfo = $system->getDiskInfo(); print_r($diskInfo); // Get real-time network status $networkStatus = $system->getNetwork(); print_r($networkStatus); // Check for updates $updateStatus = $system->checkUpdate(); print_r($updateStatus); // Get Auto Restart Rph $webname = "www.abc.com"; $rphStatus = $system->getAutoRestartRph($webname); print_r($rphStatus); // Auto Restart Rph $rphStatus = $system->autoRestartRph($webname); print_r($rphStatus);
网站服务
Website
服务允许您管理 aaPanel 服务器上的网站。
use Mastercraft\AapanelPhpSdk\Services\Website; $website = new Website($client); // Get list of sites $sites = $website->getSites(); print_r($sites); // Create a new site $newSite = $website->createSite([ 'webname' => '{"domain":"example.com","domainlist":[],"count":0}', 'path' => '/www/wwwroot/example.com', 'type_id' => 0, 'type' => 'PHP', 'version' => '72', 'port' => 80, 'ps' => 'test site', 'ftp' => true, 'ftp_username' => 'example_com', 'ftp_password' => 'password', 'sql' => true, 'codeing' => 'utf8', 'datauser' => 'example_com', 'datapassword' => 'password' ]); print_r($newSite); // Delete a site $siteId = 66; $deletedSite = $website->deleteSite($siteId, 'example.com'); print_r($deletedSite);
备份服务
Backup
服务允许您管理网站备份。
use Mastercraft\AapanelPhpSdk\Services\Backup; $backup = new Backup($client); // List backups for a site $backups = $backup->listBackups($siteId); print_r($backups); // Create a new backup $newBackup = $backup->createBackup($siteId); print_r($newBackup); // Delete a backup $backupId = 121; $deletedBackup = $backup->deleteBackup($backupId); print_r($deletedBackup);
域名服务
Domain
服务允许您管理网站的域名。
use Mastercraft\AapanelPhpSdk\Services\Domain; $domain = new Domain($client); // List domains for a site $domains = $domain->listDomains($siteId); print_r($domains); // List domains for a site $domains = $domain->getSiteDomains($siteId); print_r($domains); // Add a new domain to a site $newDomain = $domain->addDomain($siteId, ['webname' => 'example.com', 'domain' => 'new.example.com']); print_r($newDomain); // Delete a domain from a site $deletedDomain = $domain->deleteDomain($siteId, ['webname' => 'example.com', 'domain' => 'new.example.com', 'port' => 80]); print_r($deletedDomain);
Ssl 服务
Ssl
服务允许您使用 Let's Encrypt 和其他可用提供商管理 SSL 证书。
use Mastercraft\AapanelPhpSdk\Services\Ssl; $ssl = new Ssl($client); // Retrieve ssl information $sslInfo = $ssl->getSslData(); print_r($sslInfo); // Retrieve ssl certificates $sslCerts = $ssl->getSslCertificates(); print_r($sslCerts); // Retrieve Let's Encrypt Account Info $letsEncrypt = $ssl->getLetsEncryptInfo(); print_r($letsEncrypt); // Retrieve Registered Panel User (SSL Account) Info $registeredSslUser = $ssl->getRegisteredUserInfo(); print_r($registeredSslUser); // Disable current ssl $sslStatus = $ssl->disableSsl($webname); print_r($sslStatus); // Apply for ssl certificate $certStatus = $ssl->applyForCertificate([ 'domains' => ['example.com', 'example2.com'], 'id' => $siteId, ]); print_r($certStatus); // Enable new ssl certificate $sslStatus = $ssl->enableSsl([ 'siteName' => $data['webName'], 'key' => $data['key'], 'csr' => $data['csr'], ]); print_r($sslStatus);
伪静态服务
PseudoStatic
服务允许您管理伪静态规则。
use Mastercraft\AapanelPhpSdk\Services\PseudoStatic; $pseudoStatic = new PseudoStatic($client); // Get pseudo-static rewrite list $rewriteList = $pseudoStatic->getRewriteList('example.com'); print_r($rewriteList); // Get rewrite rule content $rewriteRule = $pseudoStatic->getRewriteRule('/www/server/panel/vhost/rewrite/nginx/example.com.conf'); print_r($rewriteRule); // Save rewrite rule content $savedRewriteRule = $pseudoStatic->saveRewriteRule('/www/server/panel/vhost/rewrite/nginx/example.com.conf', 'new content'); print_r($savedRewriteRule);
日志服务
Log
服务允许您检索日志。
use Mastercraft\AapanelPhpSdk\Services\Log; $log = new Log($client); // Get logs $logLimit = 10; $logs = $log->getRealtimeLog($logPath); print_r($logs);
“如何”指南
本节包含有关执行某些操作的说明和解释
如何获取所有现有网站的列表
使用 Website
服务,调用 getSites();
方法。可以传递额外的参数($page
和 $limit
)进行过滤和分页 响应:
{ "where", "page", "data": [ { "id", "name", "path", "status", "domain", ... }, ... ], "search_history", "net_flow_info" }
如何将新域名或 URL 添加到现有网站
使用 Domain
服务,调用 addDomain($siteId, $domain);
方法。 参数:
$siteId:
是指向该新域名的网站的唯一标识符,为了获取$siteId
,请参考 如何获取所有现有网站的列表$domain:
是包含我们想要指向的网站的webname
的数组,而domain
是我们正在添加的新 URL。 响应:
{ "status", "msg" }
如何为新域名或 URL 获取 SSL
此过程高度依赖于 Ssl
、Domain
和 System
服务,您还可以参考 SSL 示例/演示脚本。
- 将新域名添加到网站,请参考 如何将新域名或 URL 添加到现有网站。
- 调用 系统类 方法获取自动重启 Rph 操作 >>>
getAutoRestartRph($webname);
。 - 调用 系统类 方法执行自动重启 Rph 操作 >>>
autoRestartRph($webname);
。 - 调用 Ssl 类 方法申请新域名的证书 >>>
applyForCertificate([ 'domains' => ['example.com', 'example2.com'], // 需颁发 SSL 证书的域名列表 'id' => $siteId, ]);
$data['key'] = $certStatus['private_key']; $data['csr'] = $certStatus['cert'] . ' ' . $certStatus['root'];
</small>
- Call the [Ssl Class](#ssl-service) method to `getSslData()` and `getSslCertificates()` to check records and confirm ssl certificate setup
## Running Tests
To run the tests, use the following command:
```bash
./vendor/bin/phpunit --bootstrap vendor/autoload.php tests
示例测试套件
tests/AaPanelClientTest.php
namespace Mastercraft\AapanelPhpSdk\Tests; use Mastercraft\AapanelPhpSdk\AaPanelClient; use Mastercraft\AapanelPhpSdk\Exception\APIException; use PHPUnit\Framework\TestCase; use Dotenv\Dotenv; class AaPanelClientTest extends TestCase { private $apiKey; private $baseUri; protected function setUp(): void { $dotenv = Dotenv::createImmutable(__DIR__.'/..'); $dotenv->safeLoad(); $this->apiKey = $_ENV['AAPANEL_API_KEY']; $this->baseUri = $_ENV['AAPANEL_URL']; } public function testPost() { $aaPanelClient = new AaPanelClient($this->baseUri, $this->apiKey); $response = $aaPanelClient->post('getSystemTotal'); $this->assertEquals(['status' => 'success'], $response); } public function testPostInvalidEndpoint() { $this->expectException(APIException::class); $aaPanelClient = new AaPanelClient($this->baseUri, $this->apiKey); $aaPanelClient->post('invalidKey'); } }
贡献
欢迎贡献!请提交一个pull request或创建一个issue来讨论您的想法。
许可证
本项目采用MIT许可证。请参阅LICENSE文件以获取详细信息。