gtcrais/laravel-centinel-api

v2.3.1 2019-05-09 10:11 UTC

README

此包提供下载应用程序日志文件的API,以及转储和下载数据库。它包含认证中间件,用于保护API路由。

Centinel API旨在与Centinel——集中式应用程序管理系统——结合使用。

对于 Laravel 4.2,使用Centinel API v1.2

要求

  • PHP 5.6+
  • Laravel 5.1+(由于与其中使用的Symfony组件不兼容,不支持Laravel 5.0)
  • 确保您的缓存驱动器已配置且正在运行
  • 不支持Windows环境

安装:Laravel

  • "gtcrais/laravel-centinel-api": "2.3.*"添加到您的composer.json中,并运行composer update
  • 对于Laravel <=5.4,将GTCrais\LaravelCentinelApi\LaravelCentinelApiServiceProvider::class,添加到/app/config/app.php中的提供者数组中,并运行composer dump-autoload
  • 运行php artisan centinel-api:setup

安装:Lumen

  • "gtcrais/laravel-centinel-api": "2.3.*"添加到您的composer.json中,并运行composer update
  • /bootstrap/app.php中取消注释$app->withFacades();
  • $app->configure('centinelApi');添加到/bootstrap/app.php中。这将加载Centinel API配置
  • $app->register(GTCrais\LaravelCentinelApi\LumenCentinelApiServiceProvider::class);添加到/bootstrap/app.php 以下 配置文件注册
  • 运行php artisan centinel-api:setup

其他安装说明

Laravel 5.1

  • routePrefix添加到VerifyCsrfToken中间件的$except数组中。示例
protected $except = [
	'Hts71OwsRTwjXDb5Kdp5zk5l6KsvEz7Q/*' // Note the /* at the end
];

Lumen

Centinel API首先将在/config/database.php中查找数据库连接配置。如果那里没有,它将在.env文件中查找。如果您希望使用数据库转储功能,请确保其中一个选项可用。

使用

强烈建议仅在使用HTTPS的网站上使用此插件!

完成安装过程后,您将在/config目录中找到centinelApi.php配置文件。从那里,将privateKeyencryptionKeyroutePrefix复制到Centinel,然后您可以安排应用程序日志检查和数据库备份。

配置文件

  • privateKey - 随机字符串,用于认证
  • encryptionKey - 随机字符串,用于额外的安全层
  • routePrefix - 随机字符串,作为API路由的前缀
  • enabledRoutes - 如果您只想公开API的一部分,您可以在此处禁用日志或数据库路由
  • disableTimeBasedAuthorization - 如果您的服务器和Centinel的日期时间不同步,导致出现“请求时间不匹配”或“API调用过多”错误,请将此设置为true
  • zipPassword - 压缩数据库转储时使用的密码。请确保保存Zip密码,以便在服务器崩溃时恢复数据库
  • database - 数据库设置和选项

除了connection之外的所有数据库选项都是可选的。

某些数据库选项在Laravel/Lumen 5.1中不可用,并且在PHP 5(无论框架版本如何)中也不可用。有关更多详细信息,请参阅Spatie DB Dumper v1.5.1

有关如何使用选项的详细信息,请检查已安装的包版本。对于PHP 7上的Laravel/Lumen 5.2+,将是Spatie DB Dumper v2.9

要忽略数据库设置/选项,将其设置为null

API路由

  • [POST] /{routePrefix}/create-log
  • [POST] /{routePrefix}/download-log
  • [POST] /{routePrefix}/dump-database
  • [POST] /{routePrefix}/download-database

更多详细信息请查看/Controllers/CentinelApiController.php控制器。

数据库备份

Spatie DB Dumper用于创建数据库备份。MySQLPostgreSQL受支持,分别需要mysqldumppg_dump工具。

此外,在运行在PHP 7上的Laravel/Lumen 5.2+应用程序中,支持SqliteMongoDB,分别需要sqlite3mongodump工具。

Centinel API将在发送到Centinel之前尝试压缩和加密数据库备份。如果您使用的是PHP 7.2+,它将使用PHP的本地ZipArchive类来压缩和加密数据库。否则,它将寻找7-Zip和Zip库来执行此操作。如果没有可用选项,备份将发送而不会被压缩和加密。

运行php artisan centinel-api:check-zip以查看您的服务器上可用的库。请注意,Zip加密算法比ZipArchive和7-Zip的加密算法要弱得多。最终,您需要决定哪种安全级别是可以接受的。您始终可以选择通过在Centinel中禁用数据库备份以及取消注释enabledRoutes配置选项中的DatabaseRoutes来退出数据库备份。

身份验证

有关详细信息,请查看/Middleware/AuthorizeCentinelApiRequest.php中间件。

许可证

Laravel Centinel API是开源软件,许可协议为MIT许可证