包含“n”的产品文档
魔方云系统使用文档>9. 插件与增值功能>9.9白名单
nbsp;白名单功能   购买方式:请前往会员中心--魔方云--对应魔方云产品内页---下滑即可进行订购。2、魔方云后台,更新授权码,再到系统设置-插件列表,安装白名单插件 3、安装成功后,点击配置按钮,进入配置页面,点击“添加ip”按钮4、填写需要设置白名单的ip地址5、开启白名单功能的按钮注意:如果没有添加ip地址,不允许开启该按钮;以防开启之后,无法进入系统,强烈要求必须添加操作者的ip地址,否则也不许开启该按钮 6、开启后,只有添加了ip地址的,才允许进入该魔方云系统(管理员),用户系统不受该影响7、如果关闭白名单功能的按钮,则不会进行白名单相关功能的校验
DCIM使用文档>3.功能介绍>3.5 自动部署及管控>3.5.9 KVM/IKVM功能
novnc为同类功能,目前我们已经提供更高级的novnc功能替代,该功能属于可替代功能Kvm/ikvm为一键下载服务器ipmi web网页端的jnlp文件功能,区别在于:Ikvm:直接访问ipmi 内网地址进行下载,下载后仅可在内网使用Kvm:将ipmi内网地址使用公网ip映射后下载,可在公网使用,一对一映射IP地址NOVNC:以html5方式提供kvm功能,电脑无需安装java,注意:由于兼容问题,部分机器可能无法使用该功能。二、必要设置2.1 启用ikvm和kvm功能在【系统设置】-【常规设置】-【服务器设置】中将【kvm/ikvm功能启用】2.2 添加kvm功能使用需要的映射ip公网前往【系统设置】-【ipmi映射】,添加可用的公网IP,建议按1000:20的比例进行添加,即有1000台服务器,建议添加20个ip地址。注意1:一个IP地址同时仅可供一个ipmi映射,如需同时使用多个,请添加多个ip地址,如没有空闲ip,将会无法使用kvm功能。注意2:公网ip地址必须和需要映射的ipmi 在同一个机房,ip地址机房设置必须为机房,不能为公用。注意3:添加IP后,ip立刻可用,无需进行其他操作。三、如何使用前往【服务器】-【内页】-点击【kvm或ikvm】,将会自动jnlp文件,如提示 java下载失败 或 暂不支持此型号,请提供测试服务器的ipmi相关信息(ipmi地址、用户名和密码),我们在两个工作日完成适配。注意1:kvm将会进行ip地址映射,请确保您已经添加ip地址并有空闲ip,参看需要的设置:ipmi映射设置注意2:kvm功能实际为模拟登录进行jnlp下载,无法保证100%的下载可用率,请勿频繁下载,您的服务器ipmi可能不允许过多的登录。四、其他问题4.1 java下载失败,需检查以下配置(1)IPMI地址:所对应的 IPMI - IP 地址填写正确,且确保网络正常运行,确保服务器ipmi连接状态正常。(2)用户信息:IPMI 用户名和密码是否填写正确。(3)如报错为 java下载失败 或 暂不支持此型号请提供测试服务器的ipmi相关信息(ipmi地址、用户名和密码),我们在两个工作日完成适配。4.2 没有ipmi ip(无可用的公网)说明当前没有可用的映射ip地址,参看需要的设置:ipmi映射设置 添加IP或前往【系统设置】—【IPMI映射】对公网IP进行人工释放。
财务系统使用文档>第三方平台对接>对接NOKVM云平台
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.1创建新的分组&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.2添加服务器三、设置产品参数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.1添加服务器&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.2模块设置&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.3可配置选项原理与参数四、购买产品并开通-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------一、功能支持智简魔方系统支持对接NOKVM,实现自动化管理,自动开通小鸡,删除,开机关机重装等管理。二、添加API服务器(接口设置)2.1 创建新的分组&nbsp;前往魔方财务,导航【商品-自动化接口-通用产品-接口分组名】点击【创建分组】必填项*服务器组名:任意填写,建议填NOKVM模块选择:下拉选择NOKVM注意若是对接的新版本的nokvm,需要在hash处填写如下参数(否则可能无法通过财务打开vnc)<novnc_type>new</novnc_type>2.2 添加服务器&nbsp;前往魔方财务,导航【产品配置-通用产品-接口设置】点击【创建新的分组】必填项*&nbsp;名称:nokvm配置Ip地址:填写nokvm的域名或ip地址服务器组:选择您创建的服务器组&nbsp; &nbsp; >>创建新的分组密码(通信密钥):NOKVM的签名ToKen(前往nokvm,在设置-安全设置中查看签名ToKen)端口:端口一般为80,如有变更NOKVM访问端口,请填写NOKVM端口三、设置产品参数3.1.添加产品导航【产品配置-通用产品-产品设置】点击【新增产品】产品名称:自定义产品类型:云服务器产品组:自定义选择(如果没有创建产品组,请先创建)3.2 模块设置&nbsp; (1)服务器组:选择添加的nokvm接口&nbsp; (2)设置参数:填写对应的参数(若该产品有可配置项,则这里的参数无效)&nbsp; (3)开通方式:自动开通建议勾选收到首付款选项3.3可配置选项原理与参数点击保存,系统会自动创云服务器的参数并配置,您可以修改参数或删除配置项。注:若产品同时设置了可配置项和模块设置中的参数,则优先选择可配置项中的参数。&nbsp; &nbsp; &nbsp; &nbsp;只有在创建产品并选择服务器组,系统才会自动拉取魔方云信息并创建可配置项配置项名称配置项参数参数说明必选未传递默认值os|操作系统1|windows^windows20081为nokvm中-公共镜像-镜像列表-操作系统ID✔Location|数据中心1|CN^香港CN2&nbsp;1为nokvm中-数据中心-区域管理-区域ID注:数据中心和节点id必传一个✔nodes_id|节点id1| CN^香港CN2^一区1指nokvm中-节点主机管理-节点主机列表-节点ID注:数据中心和节点id必传一个不传递系统将自动分配CPU|处理器核心2|2核心2指需要为该云主机分配的cpu核心数✔Disk Space|数据盘50|50G4指需要为该云主机分配的数据盘大小✔Network Speed|带宽128|1M1280指需要为该云主机分配的上下行带宽,单位为KB如果配置 Network Speed 优先使用该参数&nbsp; &nbsp; ✔net_out|上行带宽128|1M128指需要为该云主机分配的上行带宽,单位为KBnet_in|下行带宽1280|10M128指需要为该云主机分配的上行带宽,单位为KBSnapshot|快照数量2|快照数量2指需要为该云主机创建的快照数量✔Backups|备份数量2|备份数量2指需要为该云主机创建的备份数量✔Extra IP Address|额外IP数量2|2个2指需要为该云主机分配的ip数量✔cpu_mode|CPU模式0|显示,1|隐藏0指显示处理器模式,1指隐藏&nbsp; &nbsp;&nbsp;✔&nbsp;Memory|内存2048|2G2048指需要为该云主机分配的内存大小,单位MB&nbsp; &nbsp;&nbsp;✔flow_limit|限制流量50|50G50指限制流量,上行+下行总数 GB&nbsp; &nbsp;v2.0.6+&nbsp; 不传递将不限制nat_acl_limit|转发策略限制条数5|5条5指转发策略限制条数(可选建议节点开启NAT时,请传递)v2.0.6+四、购买产品测试开通1.产品添加完成后,即可前往购买产品,测试是否开通成功,若失败,请前往【其他选项-日志记录-系统日志】中查看具体开通失败的原因并解决。2.产品开通后,若想将产品删除或暂停,需点击模块命令中的删除或暂停才会执行接口,否则无效。
魔方云系统使用文档>6. 关于镜像>镜像制作>1 新版本镜像制作教程(非注入方式)
# Windows镜像制作1、正常安装windows_server 版本,2、登录系统,下载如下两个软件(cloudbase-init, qemu-guest-agent),并点击默认安装,下面是下载地址http://mirror.cloud.idcsmart.com/cloud/images/init-tools/CloudbaseInitSetup_1_1_2_x64.msihttp://mirror.cloud.idcsmart.com/cloud/images/init-tools/qemu-ga-x86_64.msi3、将下面两个的配置文件下载并放置到镜像的目录: C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;如下是配置文件下载链接:http://mirror.cloud.idcsmart.com/cloud/images/init-tools/cloudbase-init.confhttp://mirror.cloud.idcsmart.com/cloud/images/init-tools/cloudbase-init-unattend.conf4、关闭防火墙5、关机,制作完成,得到的qcow2就是云镜像;&nbsp;# Linux镜像制作使用官方标准ISO安装(linux系统有很多,命令各不相同 但一定要安装的组件 sfdisk growpart cloud-init qemu-guest-agent)根据需要关闭软件(不同系统不同命令): (CentOS请一定关闭SElinux),NetworkManager,iptables,firewalld安装必须的工具(不同系统不同命令): cloud-init, qemu-guest-agent根据需要安装软件,比如以下软件(不同系统不同命令): vim, curl, wget, net-tools1、系统安装要求:&nbsp; &nbsp;&nbsp;最小化、上海时区、语言英文、关闭kdump、不锁定root、不禁止root密码登录2、关闭防火墙systemctl&nbsp;stop&nbsp;firewalld systemctl&nbsp;disable&nbsp;firewalld sed&nbsp;-i&nbsp;'/^SELINUX=/&nbsp;s/enforcing/disabled/g'&nbsp;/etc/selinux/config3、设置时区timedatectl&nbsp;set-timezone&nbsp;Asia/Shanghai4、安装云相关组件及附件组件dnf&nbsp;install&nbsp;util-linux&nbsp;cloud-utils-growpart&nbsp;-y dnf&nbsp;install&nbsp;qemu-guest-agent&nbsp;cloud-init&nbsp;-y dnf&nbsp;install&nbsp;vim&nbsp;curl&nbsp;wget&nbsp;net-tools&nbsp;chrony&nbsp;-y5、配置/etc/ssh/sshd_config中的选项找到选项:&nbsp;PermitRootLogin&nbsp;yes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果选项前有#号就去掉#号再修改值为&nbsp;yes 找到选项:&nbsp;PasswordAuthentication&nbsp;yes&nbsp;&nbsp;&nbsp;&nbsp;如果选项前有#号就去掉#号再修改值为&nbsp;yes #&nbsp;若是ubuntu&nbsp;需要把&nbsp;&nbsp;执行&nbsp;rm&nbsp;/etc/ssh/sshd_config.d/*&nbsp;-rf6、编辑cloud-init 配置文件&nbsp;&nbsp;/etc/cloud/cloud.conf将选项&nbsp;disable_root:&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;原始值为1,&nbsp;改为0.&nbsp;打开root登录 将选项&nbsp;ssh_pwauth:&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#原始值为0,&nbsp;改为1.&nbsp;开启密码登录 system_info: &nbsp;&nbsp;default_user: &nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;centos&nbsp;<<&nbsp;此处改为&nbsp;root &nbsp;&nbsp;&nbsp;&nbsp;lock_passwd:&nbsp;true&nbsp;<<&nbsp;此处改为&nbsp;false &nbsp;&nbsp;&nbsp;&nbsp;gecos:&nbsp;Cloud&nbsp;User &nbsp;&nbsp;&nbsp;&nbsp;groups:&nbsp;[adm,&nbsp;systemd-journal] &nbsp;&nbsp;&nbsp;&nbsp;sudo:&nbsp;["ALL=(ALL)&nbsp;NOPASSWD:ALL"] &nbsp;&nbsp;&nbsp;&nbsp;shell:&nbsp;/bin/bash &nbsp;&nbsp;distro:&nbsp;rhel &nbsp;&nbsp;paths: &nbsp;&nbsp;&nbsp;&nbsp;cloud_dir:&nbsp;/var/lib/cloud &nbsp;&nbsp;&nbsp;&nbsp;templates_dir:&nbsp;/etc/cloud/templates &nbsp;&nbsp;ssh_svcname:&nbsp;sshd7、清理镜像&nbsp;CentOS清除多余网卡配置 /etc/sysconfig/network-scripts/ifcfg-[eth|eno等网卡对应名称的文件] (一定要技术保留 ifcfg-lo)清理root目录: rm ~/*清理history: rm ~/.bash_history && history -c8、关机后压缩镜像,得到的qcow2 就是制作好的镜像shutdown -h nowqemu-img convert -p -c -O qcow2&nbsp; vm-205-disk-0.qcow2 CentOS-9_x64.qcow2
魔方云系统使用文档>6. 关于镜像>镜像制作>2 魔方云制作镜像V2版
nbsp;Boot Order选择:CDROM Only或者(1) CDROM (2) Hard Disk(2)&nbsp;Iso选择上传到节点的iso文件,进行挂载(3)&nbsp;重启实例二、自定义镜像制作流程承接上面第一点后在测试实例中进行下方步骤的操作支持范围:Windows 2008及以上实现方式:通过开机启动项调用魔方云拷贝进系统的脚步完成镜像制作第一步:当类型为Windows&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.安装agent(点击下载)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下载地址:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;32位系统使用:http://mirror.cloud.idcsmart.com/cloud/software/qemu-ga-i386.msi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;64位系统使用:http://mirror.cloud.idcsmart.com/cloud/software/qemu-ga-x86_64.msi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. Balloon.zip下载(点击下载)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://mirror.cloud.idcsmart.com/cloud/software/Balloon.zip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.设定开机脚本&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)打开CMD,以管理员运行以下命令:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo call C:\config.bat> C:\Windows\System32\start.bat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo call del C:\config.bat>> C:\Windows\System32\start.bat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2)【开始菜单】-【运行】输入命令 gpedit.msc 打开组策略编辑器&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;①计算机配置=>Windows设置=>脚本(启动/关机)=>启动&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;②添加=>脚本名称 C:\windows\system32\start.bat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;③将Balloon文件夹里面的对应系统的exe放在C:\Program Files\Balloon里&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;④运行cmd 进入C:\Program Files\Balloon,执行xxx.exe -i&nbsp; &nbsp;&nbsp;&nbsp;XXX是指Balloon里的exe文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;⑤然后添加Balloon的开机启动任务当类型为Linux&nbsp;&nbsp;&nbsp;&nbsp;无需任何设置制作第二步:完成以上设置后,魔方云即可使用镜像实现初始化IP/密码配置和功能管理请随后清理系统内的日志/痕迹后关机三、镜像制作完成添加到魔方云中使用1、安装完成后,关闭实例,镜像就是实例的系统盘;系统盘目录位置如下:2、将qcow2文件拷贝至节点A镜像存储目录(/home/kvm/images/)3、魔方云上添加镜像,在【镜像和ISO管理】-【镜像管理】中,右上角点击添加*必填项上传类型:选择手动上传名称:可自定义填写,建议填写镜像名。文件名:填写您上传的镜像的文件名,必须一致。镜像分组:给镜像进行分组。
财务系统使用文档>财务设置>优惠码功能
一、前言优惠码可以提供为您的产品和服务,提供促销折扣二、设置优惠码在【财务记录】-【设置】-【优惠码】中选择“添加优惠码”三、名词解释优惠码:可输入自定义的优惠码,也可自定生成优惠码类型:百分比:设置原价的百分比折扣,和“价值”一起使用。订单金额 = 订单金额 * (1 - 百分比)固定金额:从原价中扣除的指定金额,和“价值”一起使用。订单金额 = 产品价格 - 固定金额置换价格:将商品价格替换为该值,和“价值”一起使用。订单金额 = 置换价格免费安装:从原价中扣除任何初装费,订单金额 = 产品价格 - 初装费是否为循环优惠:设置开启/关闭,开启后,购买产品时使用该优惠码,则续费也会扣除优惠码金额,不受到期时间的约束适用于:选择只适用该优惠码的产品,可多选。不设置则表示所有产品皆适用需要:选择应用该优惠码折扣,必须在购物车中拥有哪些产品或服务,可多选,不设置则表示不限制注:如果不满足条件,使用优惠码应用失败:不满足使用该优惠码条件,需要其他产品同时购买时生效也可以用于账户中现有的产品:使用该优惠码折扣条件包括客户已经拥有的产品例如:客户已经拥有产品a,想订购产品b,应用优惠码的条件是需要产品a,如果禁用此选项,那么客户需要同时订购a和b才能享受折扣。开启则只订购产品b即可享受折扣结算周期(产品/服务):设置优惠码折扣只适用于哪些周期,可多选。不选则表示不显示,任何周期都可适用注:如果不满足条件,使用优惠码应用失败:当前购物车产品周期不满足优惠码使用条件开始时间:设置可以应用优惠码的开始时间,在此时间之前,无法应用:这个优惠还未开始,请重新尝试。为空则不限制优惠码开始时间失效时间:设置可以应用优惠码的结束时间,在此时间之后,无法应用:优惠码已过期。为空则不限制失效时间最大使用次数:设置优惠码允许试用的次数,不限制输入0升降级:折扣的价格会应用在升级/降级订单上,不受“最大使用次数”、“失效时间”的影响例如:客户在订购产品a时,使用了优惠码且勾选了此项,优惠固定金额10元,那么在升降级产品时,会自动扣除10元一次性:仅可用在一个产品上,如订购产品时有多个产品符合条件,但如果勾选了此项,那么就只有一个产品可以应用优惠码折扣新注册用户:优惠码仅适用于新注册的用户,名下没有订单现有的用户:仅适用于现有的客户,且必须有一个已激活订单用户只能使用一次:每个用户只能使用一次启用产品升级优惠:勾选后,客户在升级订单上可以使用该优惠码升级类型:产品/可配置项,设置产品/可配置项升级时的折扣比例或金额。对于可配置选项,可以设置针对具体配置项使用此优惠码
财务系统开发文档>服务器模块(server module)
nbsp;/modules/servers/&nbsp;目录模块名称是一个单词,仅包含小写字母和数字。名称必须以字母开头,并且必须是唯一的。模块下必须要包含&nbsp;modulename.php注:可以系统默认内置的 noKVM 模块作为参考开发2.模块信息function modulename_MetaData(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ['DisplayName'=>'test', 'APIVersion'=>'1.1',’HelpDoc’=>’帮助文档’];}DisplayName&nbsp;显示的模块名称APIVersion API版本HelpDoc&nbsp;帮助文档url地址3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;配置选项&nbsp;此功能定义可以针对模块针对每个产品配置的设置。此函数的名称必须为modulename_ConfigOptions支持的配置字段类型包括:&nbsp;text&nbsp;文本password密码yesno是/否复选框dropdown下拉菜单radio单选按钮textarea文字区以下是每种字段类型的可用参数示例。供应模块最多支持以此方式定义的24个选项。key可以指定默认参数,如果产品可配置选项没有对应key,模块参数中的可配置选项会读取对应模块的key&nbsp;参考:function test_ConfigOptions(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return [&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'type'=>'text',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'name'=>'姓名',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'placeholder'=>'请输入姓名',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'description'=>'输入姓名',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'default'=>'hh',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'key'=>'name'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ],&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'type'=>'password',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'name'=>'密码',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'placeholder'=>'请输入密码',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'description'=>'请输入密码',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'default'=>'',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'key'=>'password'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ],&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'type'=>'yesno',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'name'=>'你好吗',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'description'=>'不好',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'default'=>'1',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'key'=>'howareyou'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ],&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'type'=>'radio',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'name'=>'性别',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'description'=>'性别',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'options'=>'男,女',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'default'=>'',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'key'=>'sex'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ],&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'type'=>'dropdown',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'name'=>'下拉选择',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'description'=>'这是下拉',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'options'=>[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'hh'=>'哈哈',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'cc'=>'cc'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ],&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'default'=>'cc',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'key'=>'cc'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ],&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'type'=>'textarea',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'name'=>'文本域',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'placeholder'=>'请输入密码',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'description'=>'这是文本域',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'default'=>'ccasd...',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'rows'=>5,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'cols'=>10,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'key'=>'text'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ],&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ];}&nbsp;&nbsp;4.默认内置支持方法方法都是可选的,如果不用请不要定义,所有的方法都带有前缀&nbsp;modulename_方法返回return ‘ok’;return ‘success’;return [‘status’=>’success’];&nbsp;都表示成功返回其他字符串视为错误原因,或者&nbsp;return [‘status’=>’error’,’msg’=>’原因’];&nbsp;表示失败如果不确定返回字符串的值,建议返回数组返回空,视为成功&nbsp;CreateAccount&nbsp;开通后台会输出开通按钮,产品开通时会执行此方法&nbsp;SuspendAccount&nbsp;暂停后台会输出暂停按钮,执行成功后会暂停产品&nbsp;UnsuspendAccount&nbsp;解除暂停后台会输出解除暂停按钮,执行成功后会解除暂停产品&nbsp;TerminateAccount&nbsp;删除后台会输出删除按钮,执行成功后会删除产品&nbsp;Renew&nbsp;续费每当对应模块产品续费成功时会调用该方法&nbsp;ChangePackage&nbsp;升降级每当对应模块产品升降级后会调用该方法CreateTicket当前台用户发工单,并指定产品时,会调用该方法&nbsp;ReplyTicket当用户回复工单并工单有产品, 前台/后台回复完成后都会调用该方法&nbsp;On&nbsp;开机前后台都会输出开机按钮&nbsp;Off&nbsp;关机前后台都会输出关机按钮&nbsp;Reboot&nbsp;重启前后台都会输出重启按钮&nbsp;HardOff&nbsp;硬关机前后台都会输出硬关机按钮&nbsp;HardReboot&nbsp;硬重启前后台都会输出硬关机按钮&nbsp;Reinstall&nbsp;重装系统前后台都会输出重装系统按钮,&nbsp;操作系统使用产品可配置选项中定义为操作系统类型的选项&nbsp;CrackPassword&nbsp;破解密码前后台都会输出破解密码按钮&nbsp;RescueSystem&nbsp;救援系统前后台都会输出救援系统按钮&nbsp;Vnc vnc前台会输出在控制台选项上,后台输出vnc按钮可以返回一个url,成功会打开该url&nbsp;Sync&nbsp;同步后台输出同步按钮&nbsp;5. ClientArea&nbsp;前台自定义输出该方法支持用来定义前台自定义选项卡页面,非常重要function modulename_ClientArea($params){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return [&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'test'=>[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'name'=>'测试',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //选项卡名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ];}&nbsp;&nbsp;&nbsp;ClientAreaOutput&nbsp;自定义输出内容function modulename_ClientAreaOutput($params, $key){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($key == 'test'){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;获取相关内容&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return [&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'template'=>'templates/test.html',&nbsp; //模板路径&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'vars'=>[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;//模板参数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'a'=>'你好'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }}该方法用于输出自定义页面内容,可以使用数组使用模板来返回html内容,使用thinkphp默认模板引擎,也可以直接返回字符串,使用模板会有$MODULE_CUSTOM_API变量,就是自定义方法的请求地址,默认使用POST,func传入自定义方法名称就可以访问自定义方法,如果是前台必须带上jwt验证头才可&nbsp;AllowFunction&nbsp;用于定义可以访问的方法function modulename_AllowFunction(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return [&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'client'=>['CreateSnap],&nbsp;&nbsp; //&nbsp;前台可以调用的方法‘admin’=>[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;后台可以调用的方法&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ];}定义之后在定义对应方法即可function module_CreateSnap($params){&nbsp;}6. Status&nbsp;获取机器状态成功返回如下$result[‘status’] = ‘success’;$result[‘data’][‘status’] = ‘on’;&nbsp; //&nbsp;状态标识支持&nbsp;on,off,suspend,waiting,process,unknown$result[‘data’][‘des’] = ‘开机’;&nbsp; //&nbsp;状态描述&nbsp;7.&nbsp;UsageUpdate&nbsp;用量更新参数与其他方法不同,参数是该模块所有可用的hostID,方法会定时调用&nbsp;8. ClientButton&nbsp;前台自定义按钮输出自定义方法的时候,保证不要和系统方法冲突例如function modulename_ClientButton($params){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $button = [&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'test'=>[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'place'=>'control',&nbsp;&nbsp; //&nbsp;支持control和console&nbsp;分别输出在控制和控制台&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'name'=>'测试'&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;按钮名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $button;}点击会调用&nbsp;modulename_test方法9.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;图表需要先定义图表配置function modulename_Chart(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return [&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'disk'=>[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;图表type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'title'=>'磁盘IO',&nbsp;&nbsp; //&nbsp;标题&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'select'=>[&nbsp;&nbsp; //右侧选项(可选)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'name'=>'系统盘',&nbsp;&nbsp; //选项显示&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'value'=>'vda'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //选项值,用于判断&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ],&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'name'=>'数据盘',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'value'=>'vdb'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ],&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ],&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ];}&nbsp;图表数据方法function modulename_ChartData($params){If($params[‘chart’][‘type’] == ‘disk’){&nbsp;If($params[‘chart’][‘select’] == ‘vda’){//获取数据逻辑}else if($params[‘chart’][‘select’] == ‘vdb’){&nbsp;}}// chart&nbsp;&nbsp;//&nbsp;成功需要返回数据$result[‘status’] = ‘success’;&nbsp; //&nbsp;失败返回error$result[‘data’][‘unit’] = ‘kb/s’;&nbsp; //单位$result[‘data’][‘chart_type] = ‘line’;&nbsp; //支持&nbsp;line线形,area区域填充$result[‘data’][‘label’] = [‘读取速度’,’写入速度’];&nbsp; //对应每条线的label$result[‘data’][‘list’] = [[{‘time’:’2020-07-07 12:00:00’,&nbsp;&nbsp; //横坐标‘value’:’0.5’&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //纵坐标值}],&nbsp; //第一条线的数据[&nbsp;],&nbsp; //第二条线的数据];}&nbsp;&nbsp;10.可用参数hostid&nbsp;&nbsp; shd_host表idproductid&nbsp;产品ID shd_products表IDuid&nbsp;用户idserverid&nbsp;接口设置中的服务器IDregdate&nbsp;开通时间domain&nbsp;主机名payment&nbsp;支付方式billingcycle&nbsp;付款周期nextduedate&nbsp;到期时间nextinvoicedate&nbsp;下次生成账单时间termination_date&nbsp;删除时间domainstatus&nbsp;产品状态username&nbsp;主机用户名password&nbsp;主机密码notes&nbsp;备注promoid&nbsp;优惠码IDsuspendreason&nbsp;暂停原因overideautosuspend&nbsp;是否自动修改暂停时间overidesuspenduntil&nbsp;不要暂停直到dedicatedip IP地址assignedips&nbsp;分配的IPtype&nbsp;产品类型name&nbsp;产品名称config_optionX&nbsp; X=1-24对应模块配置值server_ip&nbsp;接口服务器IPserver_host&nbsp;接口服务器域名server_username&nbsp;接口服务器用户名server_password&nbsp;接口服务器密码accesshash&nbsp;接口服务器hashsecure&nbsp;接口服务器sslport&nbsp;接口服务器端口module_type&nbsp;模块名user_info&nbsp;用户相关信息customfields&nbsp;自定义字段configoptions&nbsp;可配置选项reinstall_os&nbsp;重装的操作系统IDold_configoptions&nbsp;原来的可配置选项(升降级方法会有该参数)&nbsp;自定义和可配置选项如果产品和模块关联,模块中定义了modulename_ConfigOptions方法,&nbsp;当可配置选项没有对应key时,会读取对应产品所选模块配置值&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
财务系统使用文档>安装+升级+迁移>如何安装魔方财务
ntOS/Debian/UbuntuLinux(不要使用windows)硬件配置2H4G&nbsp; 系统盘40G的SSD (可酌情调高)2H2G&nbsp; &nbsp; 系统盘40GPHP版本7.2或者7.3版本7.2PHP内存限制128M64MBPHP数据库扩展PDOPHP扩展imapIconvMBStringGMPOpenSSLBC MathionCubefileinfoCurl with SSLGD2 库图像支持JSON&nbsp;XMLGD2 库图像ionCubefileinfomysql版本5.6.0注: 系统使用PHP+MYSQL开发,数据库须使用MYSQL 5.6.0,禁止使用Opcache.第一、安装宝塔&nbsp;&nbsp;&nbsp;&nbsp;参考官方脚本:https://www.bt.cn/bbs/thread-19376-1-1.html&nbsp;&nbsp;第二、安装LNMP或者LAMP运行环境(Nginx/Apache、MySQL、PHP)登录宝塔,选择LAMP或者LNMP都可以看个人习惯注意:MySQL必须要5.6版本,PHP必须为7.2或7.3版本&nbsp;第三、为PHP安装相关扩展软件商店-已安装&nbsp;&nbsp;点击php,安装ionCube、fileinfo第四、获取魔方财务安装包,然后上传安装包①下载安装包,登录用户中心>>资源中心>>文件下载>>魔方财务 (https://my.idcsmart.com/plugin/19/source.htm)②上传,上传文件包到服务器/www/wwwroot/目录③解压,解压后的文件也必须在根目录(即/www/wwwroot/)&nbsp;第五、站点添加注意:数据库编码为utf-8,PHP版本为72&nbsp;第六、伪静态与运行目录设置①设置伪静态(注意:系统使用thinkphp框架开发,需设置伪静态规则)Apache伪静态规则:<IfModule&nbsp;mod_rewrite.c> &nbsp;&nbsp;Options&nbsp;+FollowSymlinks&nbsp;-Multiviews &nbsp;&nbsp;RewriteEngine&nbsp;On &nbsp;&nbsp;RewriteCond&nbsp;%{REQUEST_FILENAME}&nbsp;!-d &nbsp;&nbsp;RewriteCond&nbsp;%{REQUEST_FILENAME}&nbsp;!-f &nbsp;&nbsp;RewriteRule&nbsp;^(.*)$&nbsp;index.php?s=$1&nbsp;[QSA,PT,L] &nbsp;&nbsp;SetEnvIf&nbsp;Authorization&nbsp;.+&nbsp;HTTP_AUTHORIZATION=$0 </IfModule>Nginx伪静态规则:location&nbsp;/&nbsp;{ &nbsp;&nbsp;if&nbsp;(!-e&nbsp;$request_filename)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;rewrite&nbsp;^(.*)$&nbsp;/index.php?s=$1&nbsp;last; &nbsp;&nbsp;break; &nbsp;&nbsp;} }&nbsp;新安装1.9.1以下版本需改伪静态里面内容如下:伪静态里面的index.php改为api.php②设置/public为运行目录第七、魔方财务安装①导航至域名上运行安装②检测当前环境是否正确&nbsp;(若提示请求失败 无正确显示请检查伪静态或重新检测)③填写已创建的数据库信息④填写网站配置以及创始人信息(请使用未被使用的授权码)⑤运行安装⑥安装完成 点击跳转后台登录
业务系统使用文档>1、新手指引文档>1.13、对接上游财务&导入产品
硬性要求:&nbsp; &nbsp; 1、V10业务管理系统版本需V10.2.8以上&nbsp; &nbsp; 2、将魔方财务系统升级到V3.5.2及以上1、登录上游魔方财务,进入 用户中心》账户管理》API管理 处。&nbsp; &nbsp; &nbsp;需要完成四步:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;开启API对接功能,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;获取API密钥,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;获取上游魔方财务的网址,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;获取在上游魔方财务的用户名 和密码&nbsp; (这里举例用户密码都是 123123123132&nbsp; )2、添加上游的魔方财务作为 供应商&nbsp; &nbsp; 登录v10管理后台,进入 上下游管理》供应商管理》添加供应商 (将上面获取到的信息填入保存)&nbsp; &nbsp; 注意:这里的API密钥 与 API私钥 都是一样的,另外您要想后期能正常的通过v10系统开通上游的产品,你在上游魔方财务系统里的账户 要有富余的余额才行哦3、添加代理商品&nbsp; &nbsp; &nbsp;登录v10管理后台,进入 上下游管理》上游商品管理》添加商品 (若是您还没创建商品分组,可以先创建商品分组,在这个路径下点击新增分组即可)4、查看代理的商品,是否添加成功&nbsp; 登录v10 管理后台》商品管理》商品管理(如下图)&nbsp; 登录v10 管理后台》上下游管理》上游商品管理(如下图)&nbsp; 登录v10 用户前台》订购产品》(如下图)5、创建代理商品 的关联页面(若不设置这个,用户购买该代理产品后,在前台 用户中心看不到 这个已经购买了的产品)&nbsp; &nbsp; &nbsp;登录v10 管理后台》系统设置》导航管理》前台导航管理》新建页面。&nbsp; &nbsp; &nbsp;注意:这里演示的是新建页面,当然您也可以用一个产品现有的页面,比如下图的 云服务器,进行修改,当然这不是我们推荐的做法&nbsp; &nbsp; 特别注意:这里的关联页面,最好是不要关联具体的产品,若是管理了具体产品,用户前台只会显示具体的商品,若是不关联具体商品,那么就会显示所有这类型的商品。&nbsp; &nbsp;再点击应用导航6、登录到用户前台,购买一个刚才添加的产品,完成支付后。可以在 “代理的云产品”页面看到对应的产品(购买这就不展示了,直接看购买后的查看)&nbsp; &nbsp; &nbsp;登录用户前台》代理的云产品。(即可看到刚才所购买的代理云产品)&nbsp; &nbsp; 点击ID为17的 云产品,可以看到如下信息,到此以魔方财务作为上游,v10作为下游的对接教程完成