容器技术交流

 找回密码
 立即注册
查看: 17808|回复: 18

LuManager2.0 API接口开发示例

[复制链接]
发表于 2011-12-11 21:54:18 | 显示全部楼层 |阅读模式
LuManager的API非常强大与灵活,LuManager的互相操控就是基于API开发的





  1. <?php
  2. header('Content-Type: text/html; charset=UTF-8');

  3. /**
  4. * 连接被控端的公共url
  5. * $api_arr['api_url']                 节点上的LuManager的网址,如http://192.168.1.188:8888
  6. * $api_arr['api_user']                         接口用户名
  7. * $api_arr['api_userpassword']         用户远程操控密码
  8. * $api_arr['api_key']                         节点的接口密钥
  9. * $api_arr['m']                         模块名,区分大小写,如Hosts
  10. * $api_arr['a']                         行为名,区分大小写,如edit

  11. * $api_arr['send_method']                 post或者get,默认为post,选填。
  12. * $api_arr['api_dateline']         unix时间戳,选填 。
  13. * $api_arr['ajax']                         是否返回json数据,选填 。如果为1,则返回json数据,填这则直接返回错误(主控上无法查看)
  14. * $api_arr['test_conn']                 测试连接,选填 。如果值为1,则测试连接是否正确
  15. * $api_arr['p']                                 选填 。页码
  16. * $api_arr['listRows']                 每页显示数据条数(如果设置成很大的数字,如99999999,即可一次性将所有数据库出来)
  17. * @param array $return
  18. */
  19. function lum_api_public_url($api_arr = array() ) {
  20.         if(count($api_arr) < 4) {
  21.                 return '接口(API)参数未定义完全';
  22.         }
  23.        
  24.         if(!isset($api_arr['api_dateline'])) {
  25.                 $api_arr['api_dateline'] = date('Y-m-d H:i:s');
  26.         }
  27.        
  28.         $api_arr['api_key_pre'] = substr($api_arr['api_key'], 0, 6);//取密钥前6位(用于匹配被控上的密钥——被控上的密钥可以有多个)

  29.         if(!isset($api_arr['ajax'])) {
  30.                 $api_arr['ajax'] = 'json';//返回json数据
  31.         }
  32.        
  33.         $api_arr['api_client'] = '1';
  34.        
  35.         $api_arr['api_sign'] = md5($api_arr['api_user']
  36.                 . $api_arr['api_userpassword']
  37.                 . $api_arr['api_key']
  38.                 . $api_arr['m']
  39.                 . $api_arr['a']
  40.                 . $api_arr['api_dateline']);
  41.        
  42.         #返回生成的连接api的公共url。
  43.         $api_arr = array_merge($_GET, $api_arr);
  44.         unset($api_arr['api_key']);//不能将api_key传到被控端,因为会在网址中暴露,有危险。
  45.         $url = $api_arr['api_url'] . '/index.php?' . http_build_query($api_arr);
  46.         return $url;
  47. }

  48. #通过curl发送post数据
  49. function lu_curl_post($url, $data = array(), $timeout = 30) {
  50.         $ch = curl_init();
  51.         curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
  52.         curl_setopt($ch, CURLOPT_URL, $url);
  53.         curl_setopt($ch, CURLOPT_POST, 1);
  54.         curl_setopt($ch, CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
  55.         //curl_setopt($ch, CURLOPT_REFERER,_REFERER_);
  56.         curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  57.         curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER['TMPDIR'].'/cookie_lum.txt'); //临时文件目录,
  58.         curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER['TMPDIR'].'/cookie_lum.txt');
  59.         curl_setopt($ch, CURLOPT_HEADER, 0);
  60.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  61.         $json_contents = curl_exec($ch);
  62.         curl_close($ch);
  63.         return $json_contents;
  64. }


  65. #传送给LUM端的公共数组
  66. $api_arr = array();
  67. $api_arr['api_url'] = 'http://192.168.1.222:8888';#LUM网址
  68. $api_arr['m'] = 'Users';#模块名
  69. $api_arr['a'] = 'index';#行为名()
  70. $api_arr['api_user'] = 'zijidelu';#操控用户名
  71. $api_arr['api_userpassword'] = md5(md5(substr(md5('zijidelu'), 2, 28)));#操控密码(请注意加密算法)
  72. $api_arr['api_key'] = 'c2GNjiAnHbhb4chn!SVVY7cqT7_2P66ZGsv9xWVNRt~zVjiRAn!9Hbxhtb84_7Ychn';#APIkey(由LUM端生成)
  73. //$api_arr['test_conn'] = 1;
  74. $post_data = array('text' => "my_contents");#post数组
  75. $json_contents = lu_curl_post(lum_api_public_url($api_arr), $post_data);

  76. print_r(json_decode($json_contents, true) );



  77. #修改网站域名
  78. $api_arr = array();
  79. $api_arr['api_url'] = 'http://192.168.1.222:8888';#LUM网址
  80. $api_arr['m'] = 'Hosts';#模块名
  81. $api_arr['a'] = 'edit';#行为名
  82. $api_arr['api_user'] = 'zijidelu';#操控用户名
  83. $api_arr['api_userpassword'] = md5(md5(substr(md5('zijidelu'), 2, 28)));#操控密码(请注意加密算法)
  84. $api_arr['api_key'] = 'c2GNjiAnHbhb4chn!SVVY7cqT7_2P66ZGsv9xWVNRt~zVjiRAn!9Hbxhtb84_7Ychn';#APIkey(由LUM端生成)

  85. $api_arr['id'] = '1';

  86. $post_data = array('domains' => "new-domain1.com new-domain2.com");#post数组
  87. $json_contents = lu_curl_post(lum_api_public_url($api_arr), $post_data);

  88. print_r(json_decode($json_contents, true) );//此处将可获取到成功或失败的信息




  89. /**
  90. * -------------------- LUM接口开发说明
  91. * 通过API控制LUM,返回的数据为json格式
  92. * lum_api_public_url函数用于生成公共的url,url里包括了LUM的网址及API授权信息等。请仔细查看传入的参数的意义!
  93. * lu_curl_post函数用于将post数据发送到LUM端,如果发送成功,LUM将返回json格式的数组
  94. *
  95. * -------------------- 举例说明
  96. * ------- 获取"所有FTP"的lum_api_public_url函数的参数:
  97. * 被控端网址(api_url): 如http://192.168.1.200:8888
  98. * 接口用户(api_user): 建议用zijidelu(具有最高权限的用户即可)
  99. * 用户远程操控密码(api_userpassword): 接口用户的远程操控密码
  100. * 节点的接口密钥(api_key): 请在被控端LUM上生成并保存,然后记录下来
  101. * 模块名(m):Ftps(LUM的内部网址如index.php?m=Ftps&a=index,m的值便是模块名,a的值是行为名)
  102. * 行为名(a):index
  103. * 每页显示数据条数(listRows):由于是获取所有FTP,那这个值应该尽量大,如99999999(一台机上的FTP数目一般不会超过500个)

  104. * ------- 修改"网站的域名"的lum_api_public_url函数的参数:
  105. * 被控端网址(api_url): 如http://192.168.1.200:8888
  106. * 接口用户(api_user): 建议用zijidelu(具有最高权限的用户即可)
  107. * 用户远程操控密码(api_userpassword): 接口用户的远程操控密码
  108. * 节点的接口密钥(api_key): 请在被控端LUM上生成并保存,然后记录下来
  109. * 模块名(m):Hosts
  110. * 行为名(a):edit
  111. * --------------
  112. * 我们得知道要修改哪一个网站的域名?那么需要指定网站的id(大家应该知道是先读出网站的列表,然后再获取网站id的吧?在此我们直接指定一个id)
  113. * 网站ID(id): 1(我们假设id为1的网站存在)
  114. * --------------
  115. * 接下来是post数据啦!看一下LuManager的数据库,lu_hosts表中有一个domains字段,是的,它就是域名的存储字段了
  116. * 即:$post_data = array('domains' => 'new-domain1.com new-domain2.com');
  117. * 然后将post数据提交到用lum_api_public_url函数生成网址便可(请参考上面的例子)
  118. *
  119. * --------------
  120. * 提示:id需用get传送,即作为lum_api_public_url函数的参数便可
  121. *
  122. */








复制代码

lum_api.php

0 Bytes, 下载次数: 5921

发表于 2011-12-11 21:55:42 | 显示全部楼层
是所谓的沙发吗,坐上了
发表于 2011-12-11 21:58:23 | 显示全部楼层
占位再说
发表于 2011-12-11 21:58:37 | 显示全部楼层
情何以堪。 让老夫抢到二楼。

晚上研究研究
发表于 2011-12-12 10:51:04 | 显示全部楼层
5楼别和我抢
发表于 2011-12-12 11:12:44 | 显示全部楼层
虽然不懂,但还是看看!
发表于 2011-12-12 16:30:43 | 显示全部楼层
2.0真强大,连API接口都有,洞哥辛苦了!
发表于 2011-12-12 19:04:08 | 显示全部楼层
嗯,支持下{:soso_e113:}
发表于 2011-12-16 20:54:04 | 显示全部楼层
有更多API的例子么,我想写个虚拟空间销售的程序出来,然后开源出来给大家也玩玩
发表于 2011-12-19 10:05:43 | 显示全部楼层
绝对的支持
 楼主| 发表于 2011-12-19 13:41:11 | 显示全部楼层
iamchord 发表于 2011-12-16 20:54
有更多API的例子么,我想写个虚拟空间销售的程序出来,然后开源出来给大家也玩玩

这个就够了啊,看一下mysql的数据表,如果不懂,就打开模板看看,就知道字段的意义了(暂时还没有时间弄字典)
发表于 2011-12-30 22:57:14 | 显示全部楼层
哇塞,难看懂啊。压力很大 DZWHM (这个是整合DZ X2的插件,目前支持KO CP DA 面板,需要的话发给你,或者百度一下) 的 整合 开放个把。。
发表于 2012-1-9 07:23:01 | 显示全部楼层
下来试试看
发表于 2012-1-24 14:19:41 | 显示全部楼层
有这个能自己开发用户前台工具了吗
发表于 2012-1-26 23:34:52 | 显示全部楼层
C发个给我吧。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Archiver|URLOS ( 粤ICP备18087780号 )

GMT+8, 2024-3-29 13:02 , Processed in 0.038937 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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