By烟花易冷

关于RyShop主机销售系统的 对接模块 制作说明
2017-08-27

今天来讲讲RyShop主机销售系统的“对接模块”制作规范。由于最近有点不务正业,拿PHP来写起了各种奇奇怪怪的脚本,虽好玩且对于我来说实用,但没有好好讲解RyShop的部分功能让不少朋友亲自Q询问,甚是惭愧。有关于这套系统的情况可以移步我的上一本篇文章:RyShop 一套自制/自娱自乐的主机销售/管理系统 话不多说,步入正题吧。

可以对接什么面板程序?

根据当前的系统结构,只要是每个用户单独有一个“控制面板”并且提供相应API的程序都可以对接。包括不限于

  • EasyPanel
  • directadmin
  • CPanel
  • SolusVM
  • Veastcp 等。

模块文件结构介绍

RyShop 的对接模块文件位于 /server 目录下,以单独文件夹的形式存在,即该目录下一个文件夹便代表一个对接模块。完整的 RyShop 对接模块包括以下5个文件:

  • create.php 用于创建面板用户
  • delete.php 用于删除面板用户
  • start.php 用于启动/激活面板用户
  • stop.php 用于关闭/冻结面板用户
  • setings.php 保存面板API地址

每个文件存放着相对应功能的PHP脚本代码,当 RyShop 中的产品绑定该模块,在购买开通等需要调动如上功能时,将会把相对应的文件引入系统中直接执行并获取结果用于判断操作是否成功。

setings.php 配置文件制作

这个文件(似乎这个单词漏了个t,雾)主要保存了两个系统将会调用的变量,其一为 $url,用于保存面板的API地址,系统将会对此进行识别判断IP显示在管理员控制面板中;其二为 $loginPanel,用于保存面板的用户登录地址,将会作为链接显示在用户购买产品的开通邮件以及产品管理中。这两个变量内容开头以 http 或 https 开头,以 / 结尾,在实际使用中亦可把其他需要在对接模块文件调用的函数或变量放入其中。具体可以参考我所预留对接 EasyPanel 的 ep1 文件夹。

create.php 等功能文件制作

对于 create.php delete.php start.php stop.php 这四个文件的制作,就需要参考各个”所需对接面板”的API手册了,主要分为 “执行操作” 和 “返回结果” 两部分。这里以对接 EasyPanel 面板编写 create.php 为例。

[php]
<?php
require(‘setings.php’);

// 生成 EasyPanel 所需要的随机安全数以及安全key
$rand_key = rand(1000,9999);
$security_key = md5("add_vh".$passkey.$rand_key);
// 拼接 GET 请求地址
$api = $url."?c=whm&a=add_vh&r=".$rand_key."&s=".$security_key."&name=".$user."&passwd=".$password."&init=1&json=1&product_name=".$model;
// 发送 GET 请求
$result = file_get_contents($api);

// 获取操作结果
$json_result = json_decode($result);
// 向系统返回结果
if($json_result->result!=200){
$server_result = 0;
}
else{
$server_result = 1;
}
?>
[/php]
在代码第二行我引入了设置文件,至于引不引用取决于自己编写的习惯(如果您愿意再打一遍那些变量内容也行)。与面板通信的部分由于各个面板不同无法逐一描述,返回结果部分主要依靠 $server_resul 这一变量,如果成功请令这个变量值为 1,否则令其为 0,RyShop 将会根据这一变量判断操作执行结果,暂无其它注意事项。

尾声

行文至此。这篇简单的规范便已完毕。主要目的便是讲清楚 RyShop 对于对接模块的调用,减免跳坑的几率,方便大家制作自己所需要的面板对接模块。由于我手头上没有 directadmin、CPanel、SolusVM 等面板的正版授权,便没有做这方面的成型模块给大家直接使用。在安装包中我预留了 EasyPanel 的对接模块给大家作为示例参考,有什么问题还有大家提出,虽本是课程之意,个人之力维护好一套系统,做到尽善尽美也是挺不容易的哈~