服务器模块(server module)
本文整理智简魔方财务系统中“服务器模块(server module)”相关的配置、操作或问题处理内容,供管理员和运维人员按原文步骤查阅与执行。
服务器模块开发文档
【魔方开发者交流群:682866869】
1. 开始
选择一个名字,模块位于:
/modules/servers/模块名称是一个单词,仅包含小写字母和数字。名称必须以字母开头,并且必须是唯一的。
模块下必须要包含 modulename.php
注:可以系统默认内置的 noKVM 模块作为参考开发
2. 模块信息
function modulename_MetaData(){
return ['DisplayName'=>'test', 'APIVersion'=>'1.1','HelpDoc'=>'帮助文档'];
}DisplayName 显示的模块名称
APIVersion API 版本
HelpDoc 帮助文档 url 地址
3. 配置选项
此功能定义可以针对模块针对每个产品配置的设置。
此函数的名称必须为 modulename_ConfigOptions
支持的配置字段类型包括:
text 文本
password 密码
yesno 是/否复选框
dropdown 下拉菜单
radio 单选按钮
textarea 文字区
以下是每种字段类型的可用参数示例。供应模块最多支持以此方式定义的 24 个选项。
key 可以指定默认参数,如果产品可配置选项没有对应 key,模块参数中的可配置选项会读取对应模块的 key
参考:
function test_ConfigOptions(){
return [
[
'type'=>'text',
'name'=>'姓名',
'placeholder'=>'请输入姓名',
'description'=>'输入姓名',
'default'=>'hh',
'key'=>'name'
],
[
'type'=>'password',
'name'=>'密码',
'placeholder'=>'请输入密码',
'description'=>'请输入密码',
'default'=>'',
'key'=>'password'
],
[
'type'=>'yesno',
'name'=>'你好吗',
'description'=>'不好',
'default'=>'1',
'key'=>'howareyou'
],
[
'type'=>'radio',
'name'=>'性别',
'description'=>'性别',
'options'=>'男,女',
'default'=>'',
'key'=>'sex'
],
[
'type'=>'dropdown',
'name'=>'下拉选择',
'description'=>'这是下拉',
'options'=>[
'hh'=>'哈哈',
'cc'=>'cc'
],
'default'=>'cc',
'key'=>'cc'
],
[
'type'=>'textarea',
'name'=>'文本域',
'placeholder'=>'请输入密码',
'description'=>'这是文本域',
'default'=>'ccasd...',
'rows'=>5,
'cols'=>10,
'key'=>'text'
],
];
}4. 默认内置支持方法
方法都是可选的,如果不用请不要定义,所有的方法都带有前缀 modulename_
方法返回以下任一结果都表示成功:
return 'ok';
return 'success';
return ['status' => 'success'];返回其他字符串时,该字符串会被视为错误原因。也可以返回:
return ['status' => 'error', 'msg' => '原因'];如果不确定返回字符串的值,建议返回数组
返回空,视为成功
CreateAccount 开通
后台会输出开通按钮,产品开通时会执行此方法
SuspendAccount 暂停
后台会输出暂停按钮,执行成功后会暂停产品
UnsuspendAccount 解除暂停
后台会输出解除暂停按钮,执行成功后会解除暂停产品
TerminateAccount 删除
后台会输出删除按钮,执行成功后会删除产品
Renew 续费
每当对应模块产品续费成功时会调用该方法
ChangePackage 升降级
每当对应模块产品升降级后会调用该方法
CreateTicket
当前台用户发工单,并指定产品时,会调用该方法
ReplyTicket
当用户回复工单并工单有产品, 前台/后台回复完成后都会调用该方法
On 开机
前后台都会输出开机按钮
Off 关机
前后台都会输出关机按钮
Reboot 重启
前后台都会输出重启按钮
HardOff 硬关机
前后台都会输出硬关机按钮
HardReboot 硬重启
前后台都会输出硬关机按钮
Reinstall 重装系统
前后台都会输出重装系统按钮, 操作系统使用产品可配置选项中定义为操作系统类型的选项
CrackPassword 破解密码
前后台都会输出破解密码按钮
RescueSystem 救援系统
前后台都会输出救援系统按钮
Vnc vnc
前台会输出在控制台选项上,后台输出 vnc 按钮
可以返回一个 url,成功会打开该 url
Sync 同步
后台输出同步按钮
5. ClientArea 前台自定义输出
该方法支持用来定义前台自定义选项卡页面,非常重要
function modulename_ClientArea($params){
return [
'test'=>[
'name'=>'测试', //选项卡名称
]
];
}ClientAreaOutput 自定义输出内容
function modulename_ClientAreaOutput($params, $key){
if($key == 'test'){
// 获取相关内容
return [
'template'=>'templates/test.html', //模板路径
'vars'=>[ //模板参数
'a'=>'你好'
]
];
}
}该方法用于输出自定义页面内容,可以使用数组使用模板来返回 html 内容,使用 thinkphp 默认模板引擎,也可以直接返回字符串,
使用模板会有$MODULE_CUSTOM_API 变量,就是自定义方法的请求地址,默认使用 POST,
func 传入自定义方法名称就可以访问自定义方法,如果是前台必须带上 jwt 验证头才可
AllowFunction 用于定义可以访问的方法
function modulename_AllowFunction(){
return [
'client'=>['CreateSnap], // 前台可以调用的方法
'admin'=>[] // 后台可以调用的方法
];
}定义之后在定义对应方法即可
function module_CreateSnap($params){
}6. Status 获取机器状态
成功返回如下
$result['status'] = 'success';
$result['data']['status'] = 'on'; // 状态标识支持 on,off,suspend,waiting,process,unknown
$result['data']['des'] = '开机'; // 状态描述7. UsageUpdate 用量更新
参数与其他方法不同,参数是该模块所有可用的 hostID,方法会定时调用
8. ClientButton 前台自定义按钮输出
自定义方法的时候,保证不要和系统方法冲突
例如
function modulename_ClientButton($params){
$button = [
'test'=>[
'place'=>'control', // 支持 control 和 console 分别输出在控制和控制台
'name'=>'测试' // 按钮名称
]
];
return $button;
}点击会调用 modulename_test 方法
9. 图表
需要先定义图表配置
function modulename_Chart(){
return [
'disk'=>[ // 图表 type
'title'=>'磁盘 IO', // 标题
'select'=>[ //右侧选项(可选)
[
'name'=>'系统盘', //选项显示
'value'=>'vda' //选项值,用于判断
],
[
'name'=>'数据盘',
'value'=>'vdb'
],
]
],
];
}图表数据方法
function modulename_ChartData($params){
if($params['chart']['type'] == 'disk'){
if($params['chart']['select'] == 'vda'){
//获取数据逻辑
} else if($params['chart']['select'] == 'vdb'){
}
}
// chart
// 成功需要返回数据
$result['status'] = 'success'; // 失败返回 error
$result['data']['unit'] = 'kb/s'; //单位
$result['data']['chart_type'] = 'line'; //支持 line 线形,area 区域填充
$result['data']['label'] = ['读取速度','写入速度']; //对应每条线的 label
$result['data']['list'] = [
[
'time' => '2020-07-07 12:00:00', //横坐标
'value' => '0.5' //纵坐标值
], //第一条线的数据
[
], //第二条线的数据
];
}10. 可用参数
hostid shd_host 表 id
productid 产品 ID shd_products 表 ID
uid 用户 id
serverid 接口设置中的服务器 ID
regdate 开通时间
domain 主机名
payment 支付方式
billingcycle 付款周期
nextduedate 到期时间
nextinvoicedate 下次生成账单时间
termination_date 删除时间
domainstatus 产品状态
username 主机用户名
password 主机密码
notes 备注
promoid 优惠码 ID
suspendreason 暂停原因
overideautosuspend 是否自动修改暂停时间
overidesuspenduntil 不要暂停直到
dedicatedip IP 地址
assignedips 分配的 IP
type 产品类型
name 产品名称
config_optionX X=1-24 对应模块配置值
server_ip 接口服务器 IP
server_host 接口服务器域名
server_username 接口服务器用户名
server_password 接口服务器密码
accesshash 接口服务器 hash
secure 接口服务器 ssl
port 接口服务器端口
module_type 模块名
user_info 用户相关信息
customfields 自定义字段
configoptions 可配置选项
reinstall_os 重装的操作系统 ID
old_configoptions 原来的可配置选项(升降级方法会有该参数)
自定义和可配置选项
如果产品和模块关联,模块中定义了 modulename_ConfigOptions 方法, 当可配置选项没有对应 key 时,会读取对应产品所选模块配置值