mmd / mc-monitor
Minecraft服务器监控服务
dev-master
2016-04-02 15:05 UTC
Requires
- php: >=5.3.0
- neitanod/forceutf8: dev-master
- sensio/buzz-bundle: dev-master
- xpaw/php-minecraft-query: dev-master
This package is not auto-updated.
Last update: 2024-09-28 15:34:16 UTC
README
创建自己的服务,该服务定期向Minecraft服务器请求数据,并将信息发送到webhook(您的网站)。
这将防止您的网站在向服务器请求数据时被屏蔽。
安装
-
安装包及其依赖项
composer require \ 'mmd/mc-monitor:dev-master' \ 'sensio/buzz-bundle:dev-master' \ 'neitanod/forceutf8:dev-master' \ 'xpaw/php-minecraft-query:dev-master'
-
在
app/AppKernel.php
中包含包$bundles = array( ... new Mmd\Bundle\McMonitorBundle\MmdMcMonitorBundle(), );
-
在
app/config/routing.yml
中包含路由mmd_mc_monitor: resource: "@MmdMcMonitorBundle/Resources/config/routing.yml" prefix: /mc-monitor
-
向
app/config/parameters.yml
中添加参数# The secret used in API requests mmd.mc_monitor.secret: "my-secret" # The url to your site (with server list) where monitoring will send servers status updates mmd.mc_monitor.webhook: "https://my-site.com/monitoring-updates"
-
创建数据库表
php app/console doctrine:schema:update --force
配置
-
设置crontab执行检查服务器状态并发送信息到webhook的命令
cd /path/to/project/root/ sudo -u www-data php app/console mmd:mc-monitor:check 3
您可以指定一次检查多少个服务器。
服务器将按最后检查时间升序排列。
以apache用户www-data
运行命令,以防止出现无法写入缓存目录
错误。在这种情况下,cron必须设置为root用户,以便sudo命令在后台工作。
用法
-
将服务器IP添加到监控
# Request GET /mc-monitor/api/v1/<secret>/add/<ip>
# Response {"status":true, "message": "Server added"} # or {"status":false, "message": "Invalid ip"}
-
在您的应用中,您必须处理到
mmd.mc_monitor.webhook
参数设置的URL的监控服务器更新请求
监控将以以下格式进行请求
POST https://site.com/secret-url-for-mc-monitor/
{
secret: "<secret-set-in-parameters>",
servers: {
"<server-ip>": {
status: true, /* true=online, false=offline */
data: {
'hostname': '<span style="color:#00AAAA;">Awesome</span> <strong>minecraft</strong> server motd',
'numplayers': 7,
'maxplayers': 20,
'version': '1.<span style="color:#AA00AA;">8</span>'
}
},
"<server-ip>": {...},
...
}
}
- 从监控中移除服务器
无法直接从监控中移除服务器。这是为了防止有人知道您的密钥,他无法移除所有服务器。
可以通过向API发送JSON响应来从监控中移除服务器,当它向指定的webhook URL请求数据时,格式如下
{ "remove": [ "127.0.0.1:25565", "192.168.1.100", "<server-ip>" ] }