智简魔方文档

服务器模块(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 时,会读取对应产品所选模块配置值