|
LuManager的API非常强大与灵活,LuManager的互相操控就是基于API开发的
- <?php
- header('Content-Type: text/html; charset=UTF-8');
- /**
- * 连接被控端的公共url
- * $api_arr['api_url'] 节点上的LuManager的网址,如http://192.168.1.188:8888
- * $api_arr['api_user'] 接口用户名
- * $api_arr['api_userpassword'] 用户远程操控密码
- * $api_arr['api_key'] 节点的接口密钥
- * $api_arr['m'] 模块名,区分大小写,如Hosts
- * $api_arr['a'] 行为名,区分大小写,如edit
- * $api_arr['send_method'] post或者get,默认为post,选填。
- * $api_arr['api_dateline'] unix时间戳,选填 。
- * $api_arr['ajax'] 是否返回json数据,选填 。如果为1,则返回json数据,填这则直接返回错误(主控上无法查看)
- * $api_arr['test_conn'] 测试连接,选填 。如果值为1,则测试连接是否正确
- * $api_arr['p'] 选填 。页码
- * $api_arr['listRows'] 每页显示数据条数(如果设置成很大的数字,如99999999,即可一次性将所有数据库出来)
- * @param array $return
- */
- function lum_api_public_url($api_arr = array() ) {
- if(count($api_arr) < 4) {
- return '接口(API)参数未定义完全';
- }
-
- if(!isset($api_arr['api_dateline'])) {
- $api_arr['api_dateline'] = date('Y-m-d H:i:s');
- }
-
- $api_arr['api_key_pre'] = substr($api_arr['api_key'], 0, 6);//取密钥前6位(用于匹配被控上的密钥——被控上的密钥可以有多个)
- if(!isset($api_arr['ajax'])) {
- $api_arr['ajax'] = 'json';//返回json数据
- }
-
- $api_arr['api_client'] = '1';
-
- $api_arr['api_sign'] = md5($api_arr['api_user']
- . $api_arr['api_userpassword']
- . $api_arr['api_key']
- . $api_arr['m']
- . $api_arr['a']
- . $api_arr['api_dateline']);
-
- #返回生成的连接api的公共url。
- $api_arr = array_merge($_GET, $api_arr);
- unset($api_arr['api_key']);//不能将api_key传到被控端,因为会在网址中暴露,有危险。
- $url = $api_arr['api_url'] . '/index.php?' . http_build_query($api_arr);
- return $url;
- }
- #通过curl发送post数据
- function lu_curl_post($url, $data = array(), $timeout = 30) {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
- //curl_setopt($ch, CURLOPT_REFERER,_REFERER_);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
- curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER['TMPDIR'].'/cookie_lum.txt'); //临时文件目录,
- curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER['TMPDIR'].'/cookie_lum.txt');
- curl_setopt($ch, CURLOPT_HEADER, 0);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- $json_contents = curl_exec($ch);
- curl_close($ch);
- return $json_contents;
- }
- #传送给LUM端的公共数组
- $api_arr = array();
- $api_arr['api_url'] = 'http://192.168.1.222:8888';#LUM网址
- $api_arr['m'] = 'Users';#模块名
- $api_arr['a'] = 'index';#行为名()
- $api_arr['api_user'] = 'zijidelu';#操控用户名
- $api_arr['api_userpassword'] = md5(md5(substr(md5('zijidelu'), 2, 28)));#操控密码(请注意加密算法)
- $api_arr['api_key'] = 'c2GNjiAnHbhb4chn!SVVY7cqT7_2P66ZGsv9xWVNRt~zVjiRAn!9Hbxhtb84_7Ychn';#APIkey(由LUM端生成)
- //$api_arr['test_conn'] = 1;
- $post_data = array('text' => "my_contents");#post数组
- $json_contents = lu_curl_post(lum_api_public_url($api_arr), $post_data);
- print_r(json_decode($json_contents, true) );
- #修改网站域名
- $api_arr = array();
- $api_arr['api_url'] = 'http://192.168.1.222:8888';#LUM网址
- $api_arr['m'] = 'Hosts';#模块名
- $api_arr['a'] = 'edit';#行为名
- $api_arr['api_user'] = 'zijidelu';#操控用户名
- $api_arr['api_userpassword'] = md5(md5(substr(md5('zijidelu'), 2, 28)));#操控密码(请注意加密算法)
- $api_arr['api_key'] = 'c2GNjiAnHbhb4chn!SVVY7cqT7_2P66ZGsv9xWVNRt~zVjiRAn!9Hbxhtb84_7Ychn';#APIkey(由LUM端生成)
- $api_arr['id'] = '1';
- $post_data = array('domains' => "new-domain1.com new-domain2.com");#post数组
- $json_contents = lu_curl_post(lum_api_public_url($api_arr), $post_data);
- print_r(json_decode($json_contents, true) );//此处将可获取到成功或失败的信息
- /**
- * -------------------- LUM接口开发说明
- * 通过API控制LUM,返回的数据为json格式
- * lum_api_public_url函数用于生成公共的url,url里包括了LUM的网址及API授权信息等。请仔细查看传入的参数的意义!
- * lu_curl_post函数用于将post数据发送到LUM端,如果发送成功,LUM将返回json格式的数组
- *
- * -------------------- 举例说明
- * ------- 获取"所有FTP"的lum_api_public_url函数的参数:
- * 被控端网址(api_url): 如http://192.168.1.200:8888
- * 接口用户(api_user): 建议用zijidelu(具有最高权限的用户即可)
- * 用户远程操控密码(api_userpassword): 接口用户的远程操控密码
- * 节点的接口密钥(api_key): 请在被控端LUM上生成并保存,然后记录下来
- * 模块名(m):Ftps(LUM的内部网址如index.php?m=Ftps&a=index,m的值便是模块名,a的值是行为名)
- * 行为名(a):index
- * 每页显示数据条数(listRows):由于是获取所有FTP,那这个值应该尽量大,如99999999(一台机上的FTP数目一般不会超过500个)
- * ------- 修改"网站的域名"的lum_api_public_url函数的参数:
- * 被控端网址(api_url): 如http://192.168.1.200:8888
- * 接口用户(api_user): 建议用zijidelu(具有最高权限的用户即可)
- * 用户远程操控密码(api_userpassword): 接口用户的远程操控密码
- * 节点的接口密钥(api_key): 请在被控端LUM上生成并保存,然后记录下来
- * 模块名(m):Hosts
- * 行为名(a):edit
- * --------------
- * 我们得知道要修改哪一个网站的域名?那么需要指定网站的id(大家应该知道是先读出网站的列表,然后再获取网站id的吧?在此我们直接指定一个id)
- * 网站ID(id): 1(我们假设id为1的网站存在)
- * --------------
- * 接下来是post数据啦!看一下LuManager的数据库,lu_hosts表中有一个domains字段,是的,它就是域名的存储字段了
- * 即:$post_data = array('domains' => 'new-domain1.com new-domain2.com');
- * 然后将post数据提交到用lum_api_public_url函数生成网址便可(请参考上面的例子)
- *
- * --------------
- * 提示:id需用get传送,即作为lum_api_public_url函数的参数便可
- *
- */
复制代码 |
|