请选择 进入手机版 | 继续访问电脑版

kangle软件 是一款高性能跨平台web服务器

 找回密码
 注册
kangle web软件将启用新域名 kangleweb.com 作为kangle软件官方网站网址
kangle web服务器最新版下载
kangle访问控制模块介绍 -  kangle设置优化原则
kangle中文帮助手册 -产品购买
easypanel 虚拟主机控制面板最新版
easypanel虚拟主机控制面板功能列表
easypanel中文帮助手册 - 讨论
   kangle虚拟主机管理下载 - 安装 - 帮助手册
    
   销售: 在线客服QQ   技术支持: 在线客服QQ
    kangle web (介绍, 功能特性, 运行环境, 安装说明, 常见问题, 使用教程)     easypanel主机控制面板 (介绍, 功能特性, 安装说明, 常见问题, 使用教程)
    vhms系统 (介绍, 安装说明, 常见问题, 使用教程)     [kangle软件交流QQ群:104434948]
查看: 10063|回复: 3

vhms主机模块参考源代码

[复制链接]
发表于 2013-3-18 11:09:25 | 显示全部楼层 |阅读模式
如何创建一个模块:
当前vhms有两个模块分类,域名注册以及主机模块。
分别对应vhms目录下的
modules/registrars
modules/servers
目录,如果要开发一个主机模块(以easypanel2为例),则需要在modules/servers/目录下创建一个easypanel2的目录,并且要建立一个easypanel2.php的文件。模块代码就放在easypanel2.php文件中。


模块代码注意事项:
模块代码里的函数命令方式是以:
模块名_
开头,例:
easypanel2_ConfigOptions

并且模块代码中有以下函数是必需存在的,具体看以下参考代码:

  1. <?php
  2. /**
  3. * 必需的函数,获取模块配置
  4. * @return multitype:multitype:string
  5. */
  6. function easypanel2_ConfigOptions()
  7. {
  8.         $configarray = array(
  9.                         "easypanel产品名称"        => array( "Type" => "text","size"=>'12')
  10.         );
  11.         return $configarray;
  12. }
  13. /**
  14. * 必需的,验证账号的合法性
  15. * @param unknown_type $params
  16. * @return string
  17. */
  18. function easypanel2_CheckName($params)
  19. {
  20.         if ($params['username']=="") {
  21.                 return "username cann't be empty";
  22.         }
  23.         $epsaveuser = array('root','mysql','kangle');
  24.         if (in_array($params['username'], $epsaveuser)) {
  25.                 return 'failed';
  26.         }
  27.         if (!preg_match('/^[a-z0-9][a-z0-9_]{2,11}$/', $params['username'])) {
  28.                 return 'failed';
  29.         }
  30.         return 'success';
  31. }
  32. /**
  33. * 创建
  34. * @param unknown_type $params
  35. * @return string
  36. */
  37. function easypanel2_CreateAccount($params)
  38. {
  39.         if ($params['username']=="") {
  40.                 return "username cann't be empty";
  41.         }
  42.         $e = easypanel2_makeapi($params["serverip"], $params["serveraccesshash"], 'add_vh');
  43.         $e->addParam('name',$params['username']);
  44.         $e->addParam('passwd', $params["password"]);
  45.         $e->addParam('product_name', $params['configoption1']);
  46.         $e->addParam('init', 1);
  47.         $result = $e->call(30);
  48.         return easypanel2_result($result);
  49. }
  50. /**
  51. * 修改
  52. * @param unknown_type $params
  53. * @return string
  54. */
  55. function easypanel2_ChangePackage($params)
  56. {
  57.         if ($params['product_function'] == 'renew') {
  58.                 return 'success';
  59.         }
  60.         if ($params['username']=="") {
  61.                 return "username cann't be empty";
  62.         }
  63.         $e = easypanel2_makeapi($params["serverip"], $params["serveraccesshash"], 'add_vh');
  64.         $e->addParam('name',$params['username']);
  65.         $e->addParam('product_name', $params['configoption1']);
  66.         $e->addParam('init', 1);
  67.         $result = $e->call(30);
  68.         return easypanel2_result($result);
  69. }
  70. /**
  71. * 修改状态开通空间
  72. * @param unknown_type $params
  73. * @return string
  74. */
  75. function easypanel2_UnsuspendAccount($params)
  76. {
  77.         if ($params['username']=="") {
  78.                 return "username cann't be empty";
  79.         }
  80.         $e = easypanel2_makeapi($params["serverip"], $params["serveraccesshash"], 'update_vh');
  81.         $e->addParam('name',$params['username']);
  82.         $e->addParam('status', 0);
  83.         $result = $e->call(30);
  84.         return easypanel2_result($result);
  85.         
  86. }
  87. /**
  88. * 删除空间
  89. * @param unknown_type $params
  90. */
  91. function easypanel2_TerminateAccount($params)
  92. {
  93.         if ($params['product_function'] == 'renew') {
  94.                 return 'success';
  95.         }
  96.         if ($params['username']=="") {
  97.                 return "username cann't be empty";
  98.         }
  99.         $e = easypanel2_makeapi($params["serverip"], $params["serveraccesshash"], 'del_vh');
  100.         $e->addParam('name',$params['username']);
  101.         $result = $e->call(30);
  102.         return easypanel2_result($result);
  103. }
  104. /**
  105. *
  106. * 修改密码
  107. * @param unknown_type $params
  108. * @return string
  109. */
  110. function easypanel2_ChangePassword($params)
  111. {
  112.         if ($params['username']=="") {
  113.                 return "username cann't be empty";
  114.         }
  115.         $e = easypanel2_makeapi($params["serverip"], $params["serveraccesshash"], 'update_vh');
  116.         $e->addParam('name',$params['username']);
  117.         $e->addParam('passwd', $params["password"]);
  118.         $e->addParam('edit', 1);
  119.         $result = $e->call(30);
  120.         return easypanel2_result($result);
  121. }
  122. /**
  123. * 暂停空间
  124. * @param unknown_type $params
  125. * @return string
  126. */
  127. function easypanel2_SuspendAccount($params)
  128. {
  129.         if ($params['username']=="") {
  130.                 return "username cann't be empty";
  131.         }
  132.         $e = easypanel2_makeapi($params["serverip"], $params["serveraccesshash"], 'update_vh');
  133.         $e->addParam('name',$params['username']);
  134.         $e->addParam('status', 1);
  135.         return easypanel2_result($e->call(30));
  136. }
  137. /**
  138. * 前台自动登陆
  139. * @param unknown_type $params
  140. */
  141. function easypanel2_ClientArea($params)
  142. {
  143.         $code = "<body onLoad='document.easypanel_login.submit()'>";
  144.         $code .= '<form action="http://'.$params["serverip"].':3312/vhost/?c=session&a=login" method="post" name="easypanel_login"  target="_blank">
  145.                 <input type="hidden" name="username" value="'.$params["username"].'" />
  146.                 <input type="hidden" name="passwd" value="'.$params["password"].'" />
  147.                 <!--<input type="submit" value="登录" />-->
  148.                 </form>';
  149.         $code .= '</body>';
  150.         echo $code;

  151. }
  152. function easypanel2_AdminCall($params)
  153. {
  154.         $fn = 'easypanel2_'.$params['fn'];
  155.         if (!function_exists($fn)) {
  156.                 return 'failed';
  157.         }
  158.         return call_user_func($fn,$params);
  159. }
  160. function easypanel2_ClientCall($params)
  161. {
  162.         $fn = 'easypanel2_'.$params['fn'];
  163.         if (!function_exists($fn)) {
  164.                 return 'failed';
  165.         }
  166.         return call_user_func($fn,$params);
  167. }
  168. /**
  169. * 必需的,管理后台登陆的按钮。
  170. * @param unknown_type $params
  171. * @return string
  172. */
  173. function easypanel2_AdminLink($params)
  174. {
  175.         $code = '<form action="http://'.$params["serverip"].':3312/admin/?c=session&a=login" method="post" name="easypanel_login" target="_blank">
  176.                 <input type="hidden" name="username" value="'.$params["serverusername"].'" />
  177.                 <input type="hidden" name="passwd" value="'.$params["serverpassword"].'" />
  178.                 <input type="submit" type="hidden" value="登录管理" />
  179.                 </form>';
  180.         return $code;
  181. }
  182. function easypanel2_LoginLink($params)
  183. {

  184.         echo "<a href=\"http://".$params["serverip"].":3312/vhost/?username=".$params["username"]."\" target=\"_blank\" style=\"color:#cc0000\">登录easypanel</a>";

  185. }
  186. /**
  187. * 模块私有函数,用于创建API
  188. * @param unknown_type $host
  189. * @param unknown_type $skey
  190. * @param unknown_type $a
  191. * @param unknown_type $c
  192. * @return Easypanel2
  193. */
  194. function easypanel2_makeapi($host,$skey,$a,$c='whm')
  195. {
  196.         $easypanel2_port = $GLOBALS['easypanel2_port'] ? $GLOBALS['easypanel2_port'] : 3312;
  197.         $e = new Easypanel2($host, $easypanel2_port);
  198.         $e->setControl($c, $a);
  199.         $e->setAuth($skey);
  200.         return $e;
  201. }
  202. /**
  203. * 模块私有函数,处理返回信息
  204. * @param unknown_type $result
  205. * @return string
  206. */
  207. function easypanel2_result($result)
  208. {
  209.         if ($result === false) {
  210.                 return 'failed';
  211.         }
  212.         $xml = new SimpleXMLElement($result);
  213.         foreach ($xml->children() as $child) {
  214.                 if ($child->getName() == 'result') {
  215.                         $status = intval($child['status']);
  216.                 }
  217.         }
  218.         switch ($status) {
  219.                 case 200:
  220.                         return 'success';
  221.                 case 403:
  222.                         return 'skey error';
  223.                 default :
  224.                         return 'failed';
  225.         }
  226. }
  227. /**
  228. * 模块私有类
  229. * @author Administrator
  230. *
  231. */
  232. class Easypanel2
  233. {
  234.         private $url = '';
  235.         private $param;
  236.         private $method = 'POST';
  237.         private $c;
  238.         private $a;
  239.         public function __construct($host,$port,$apifile='/api/index.php')
  240.         {
  241.                 $this->url = 'http://'.$host.':'.$port.$apifile;
  242.         }
  243.         /**
  244.          * new 后第一步
  245.          * @param unknown_type $c
  246.          * @param unknown_type $a
  247.          */
  248.         public function setControl($c,$a)
  249.         {
  250.                 $this->c = $c;
  251.                 $this->a = $a;
  252.                 $this->url .= '?c='.$c.'&a='.$a;
  253.         }
  254.         /**
  255.          * 第二步
  256.          * @param unknown_type $skey
  257.          */
  258.         public function setAuth($skey)
  259.         {
  260.                 $r = rand(111,99999);
  261.                 $s = md5($this->a.$skey.$r);
  262.                 $this->url .= '&r='.$r.'&s='.$s;
  263.         }
  264.         public function addParam($name,$value)
  265.         {
  266.                 if ($this->param != '') {
  267.                         $this->param .= '&';
  268.                 }
  269.                 $this->param .= $name .'=' .$value;
  270.         }
  271.         public function call($timeout)
  272.         {
  273.                 $opts['http'] = array('method'=>$this->method);
  274.                 if ($this->method == 'POST') {
  275.                         $opts['http']['content'] = $this->param;
  276.                 }else {
  277.                         $this->url .= '&'.$this->param;
  278.                 }
  279.                 if ($timeout > 0) {
  280.                         $opts['http']['timeout'] = $timeout;
  281.                 }
  282.                 //die($this->url);
  283.                 $result = @file_get_contents($this->url, false, stream_context_create($opts));
  284.                 return $result;
  285.         }
  286. }
复制代码
回复

使用道具 举报

发表于 2014-8-11 19:07:32 | 显示全部楼层
能不能写一点视频出来
回复 支持 反对

使用道具 举报

发表于 2016-1-18 23:25:11 | 显示全部楼层
楼主高人啊,我先收藏了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|Bangteng Inc. ( 赣ICP备13005708号-5

GMT+8, 2017-12-12 20:30 , Processed in 0.078512 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表