摘要:
根據管理的API公布寫了一個類封裝了一個操作集合,這是一個kangleAPI的一個封...
根據管理的API公布寫了一個類封裝了一個操作集合,這是一個kangleAPI的一個封裝吧,是在其他地方看到的,接口包含獲取easypanel的信息(包括了kangle的信息)、獲取站點信息、創建kangle站點、修改指定kangle站點信息、獲取kangle站點列表、修改指定kangle站點密碼、修改指定kangle站點狀態、刪除指定kangle站點、獲取指定kangle站點的數據庫使用量。功能很強大,像EP分銷這些都是利用的kangle接口開發的,你還可以開發其他的產品,需要的直接帶走。代碼中包含作者版權,未修改。
調用頁示例:<?php
//引入類
include_once('kangle_init.class.php');
//初始化
//$kangle?=?new?kangle_init('IP或域名(默認127.0.0.1)','端口(默認3312)','秘鑰(默認test)','協議(http/https,默認http)');
$kangle?=?new?kangle_init('127.0.0.1','3312','asfsvsvsyYD6Y6ue','http');
//調用方法示例,具體請參照類文件,有詳細的代碼注釋說明
$kangle->update_vh('test',0)
封裝的函數:<?php
class?kangle_init{
/*
*?配置需求:PHP?>=?5.2.0
*?by:??千里潰
*?參照出處:?https://www.kanglesoft.com/thread-44506-1-1.html
*?c?:?(control)表示哪個控制文件(目前有whm,cdn)
*?a?:?(action)表示哪個方法,以下介紹
*?r?:?隨機數
*?s?:?秘鑰,通過md5(a?+?skey?+r)得到,如a=add,skey=test,r=888,則s=md5(addtest888)
*?其中skey是服務器安全碼
*?所有返回成功都報[result]?=>?200
*?不成功報[result]?=>?500?或者?新建(修改)站點時?product_id?和?product_name?都存在參數時報?[result]?=>?505
*/
public?$protocol?;
public?$ip;
public?$port;
public?$r;
public?$skey;
public?function?__construct($ip?=?'127.0.0.1',$port?=?'3312',$skey?=?'test',$protocol?=?'http')
{
$this->protocol?=?$protocol;?//僅支持http和https
$this->ip?=?$ip;
$this->port?=?$port;
$this->r?=?rand(100000,999999);
$this->skey?=?$skey;
}
public?function?__destruct()
{
//?TODO:?Implement?__destruct()?method.
}
public?function?url($info=array()){
$url?=?'';
foreach?($info?as?$k=>$v){
$url?.=?$k.'='.$v.'&';
}
return?$this->protocol.'://'.$this->ip.':'.$this->port.'/api/index.php?'.$url.'r='.$this->r.'&s='.md5($info['a'].$this->skey.$this->r).'&json=1';
}
public?function?open($info=array()){
$url?=?$this->url($info);
if(function_exists('curl_init')){
$ch?=?curl_init();
curl_setopt($ch,?CURLOPT_URL,?$url);
curl_setopt($ch,?CURLOPT_TIMEOUT,?5);
curl_setopt($ch,?CURLOPT_RETURNTRANSFER,?1);
if?($this->protocol?==?'https'?or?$this->protocol?==?'HTTPS'){
curl_setopt($ch,?CURLOPT_SSL_VERIFYPEER,?false);?//?跳過證書檢查
curl_setopt($ch,?CURLOPT_SSL_VERIFYHOST,?true);??//?從證書中檢查SSL加密算法是否存在
}
$r?=?curl_exec($ch);
curl_close($ch);
return?json_decode($r,true);
}else{
return?json_decode(file_get_contents($url),true);
}
}
//獲取easypanel的信息(包括了kangle的信息)
public?function?info(){
/*
*?c?:?whm
*?a?:?info
*?調用成功后你將得到如下返回數據:
*?{"result":200,"server":[{"0":"kangle"}],"version":[{"0":"3.4.8"}],"type":[{"0":"enterprise"}],"os":[{"0":"windows"}],"license_id":[{"0":"73646_1387957818"}],"license_name":[{"0":"dsdds"}],"total_run":[{"0":"611038"}],"connect":[{"0":"4"}],"request":[{"0":"14105"}],"accept":[{"0":"4722"}],"vh":[{"0":"43"}],"kangle_home":[{"0":"D:\\\easypanel\\"}],"update_code":[{"0":"win_x64"}],"easypanel_version":"2.6.17"}
*?其中result=200表示調用成功。
*?version是kangle的版本
*?type是kangle的商業版還是免費版(enterprise??or?free)
*?total_run?是運行時間
*?vh?是虛擬主機數量
*?connect是當前有多少請求進來。
*
*/
return?$this->open(array('c'=>'whm','a'=>'info'));
}
//獲取站點信息
public?function?getvh($name?=?null){
/*
*?c?:?whm
*?a?:?getVh
*?name?:?(虛擬主機名稱)
*
*?返回的虛擬主機的參數說明
*?name?:?主機名稱
*?doc_root:主機的主目錄
*?uid:系統生成(用戶在服務器上的賬戶ID),權限控制使用。不可更改。
*?gid?:系統賬戶組ID
*?module:是屬于哪個模塊,目前有php和iis兩個模塊。
*?templete,subtemplete,已廢棄
*?create_time?:創建時間
*?expire_time2?:過期時間
*?status:站點狀態,0正常,1為關閉。
*?subdir_flag?是否允許子域名,1為允許,0為不允許
*?subdir?默認子目錄名稱
*?web_quota?空間大小
*?db_quota?數據庫大小
*?domain?:允許綁定域名數量?-1為不限
*?max_connect?最多連接數
*?max_worker?最多工作者
*?ftp?:?是否開通ftp,1為開通,0為不開通
*?db_name?數據庫名稱(一般和主機名稱等同,sql?server?特殊)
*/
return?$this->open(array('c'=>'whm','a'=>'getVh','name'=>$name));
}
//創建站點
public?function?add_vh($info?=?array()){
/*
*?固定值:
*?c?:?whm
*?a?:?add_vh
*?r?:?隨機
*?s?:?秘鑰
*?init?:?1??//表示創建
*?name:網站賬號,數據庫賬號,ftp賬號同步
*?passwd:網站密碼,數據庫密碼,ftp密碼同步(只創建時同步)
*?product_id?和?product_name?都存在參數時報?[result]?=>?505,product_id?和?product_name?只能存在一個或者?一個都不存在,當一個都不存在時?詳細配置虛擬主機參數
*/
if(trim(intval($info['product_id']))?!=?null?and?trim($info['product_name'])?!=?null){
return?array('result'=>'505');
}elseif(trim(intval($info['product_id']))?!=?null){
return?$this->open(array('c'=>'whm','a'=>'add_vh','init'=>1,'name'=>$info['name'],'passwd'=>$info['passwd'],'product_id'=>$info['product_id']));
}elseif?(trim($info['product_name'])?!=?null){
return?$this->open(array('c'=>'whm','a'=>'add_vh','init'=>1,'name'=>$info['name'],'passwd'=>$info['passwd'],'product_id'=>$info['product_name']));
}else{
/*
*?詳細配置模式下的傳入值列表
*?cdn:是否為CDN空間,是則發送1
*?Templete:語言(html|php|iis)
*?Subtemplete:語言引擎,php52|php53|php5217
*?web_quota:網頁空間大小,數字
*?db_quota:數據庫大小,數字
*?db_type:數據庫類型,mysql|sqlsrv
*?subdir_flag:是否允許綁定子目錄,1為是
*?Subdir:默認綁定目錄,可為空,例:wwwroot
*?max_subdir:最多子目錄數
*?domain:需要綁定的域名,可空,默認會綁定到subdir指?定的目錄下。
*?ftp:是否開啟ftp,1為是
*?ftp_connect:ftp最多連接數
*?ftp_usl:ftp上傳速度限制,單位kb
*?ftp_dsl:ftp下載限制。單位kb
*?access:是否啟用自定義控制,如果是請輸入自定義控制文件名access.xml
*?speed_limit:帶寬限制,數字型,默認為不限(kb)
*?log_handle:是否開啟日志析分功能,1為是
*?flow_limit:流量限制,數字型,默認不限(kb)
*/
$info=array('c'=>'whm','a'=>'add_vh','init'=>1,'name'=>$info['name'],'passwd'=>$info['passwd']);
return?$this->open($info);
}
}
//修改站點信息
public?function?edit_vh($info?=?array()){
/*
*?固定值:
*?c?:?whm
*?a?:?add_vh
*?r?:?隨機
*?s?:?秘鑰
*?edit?:?1??//表示修改
*?name:網站賬號,數據庫賬號,ftp賬號同步
*?passwd:網站密碼,數據庫密碼,ftp密碼同步(只創建時同步)
*??product_id?和?product_name?都存在參數時報?[result]?=>?505,product_id?和?product_name?只能存在一個或者?一個都不存在,當一個都不存在時?詳細配置虛擬主機參數
*/
if(trim(intval($info['product_id']))?!=?null?and?trim($info['product_name'])?!=?null){
return?array('result'=>'505');
}elseif(trim(intval($info['product_id']))?!=?null){
return?$this->open(array('c'=>'whm','a'=>'add_vh','edit'=>'1','name'=>$info['name'],'passwd'=>$info['passwd'],'product_id'=>$info['product_id']));
}elseif?(trim($info['product_name'])?!=?null){
return?$this->open(array('c'=>'whm','a'=>'add_vh','edit'=>'1','name'=>$info['name'],'passwd'=>$info['passwd'],'product_id'=>$info['product_name']));
}else{
/*
*?詳細配置模式下的傳入值列表
*?cdn:是否為CDN空間,是則發送1
*?Templete:語言(html|php|iis)
*?Subtemplete:語言引擎,php52|php53|php5217
*?web_quota:網頁空間大小,數字
*?db_quota:數據庫大小,數字
*?db_type:數據庫類型,mysql|sqlsrv
*?subdir_flag:是否允許綁定子目錄,1為是
*?Subdir:默認綁定目錄,可為空,例:wwwroot
*?max_subdir:最多子目錄數
*?domain:需要綁定的域名,可空,默認會綁定到subdir指?定的目錄下。
*?ftp:是否開啟ftp,1為是
*?ftp_connect:ftp最多連接數
*?ftp_usl:ftp上傳速度限制,單位kb
*?ftp_dsl:ftp下載限制。單位kb
*?access:是否啟用自定義控制,如果是請輸入自定義控制文件名access.xml
*?speed_limit:帶寬限制,數字型,默認為不限(kb)
*?log_handle:是否開啟日志析分功能,1為是
*?flow_limit:流量限制,數字型,默認不限(kb)
*/
$info=array('c'=>'whm','a'=>'add_vh','edit'=>'1','name'=>$info['name'],'passwd'=>$info['passwd']);
return?$this->open($info);
}
}
//獲取站點列表
public?function?listvh(){
/*
*?a?:?whm
*?c?:?listVh
*/
return?$this->open(array('c'=>'whm','a'=>'listVh'));
}
//修改站點密碼
public?function?change_password($name,$passwd){
/*
*?c?:whm
*?a?:?change_password
*?name?:站點名稱
*?passwd?:新的密碼
*/
return?$this->open(array('c'=>'whm','a'=>'change_password','name'=>$name,'passwd'=>$passwd));
}
//修改站點狀態
public?function?update_vh($name,$status){
/*
*?c?:whm
*?a?:?update_vh
*?name?:站點名稱
*?status?:?新狀態(0正常,1關閉)
*/
return?$this->open(array('c'=>'whm','a'=>'update_vh','name'=>$name,'status'=>$status));
}
//刪除站點
public?function?del_vh($name){
/*
*?c?:whm
*?a?:?del_vh
*?name?:站點名稱
*/
return?$this->open(array('c'=>'whm','a'=>'del_vh','name'=>$name));
}
//獲取站點的數據庫使用量
public?function?getDbUsed($name){
/*
*?c?:whm
*?a?:?getDbUsed
*?name?:站點名稱
*/
return?$this->open(array('c'=>'whm','a'=>'getDbUsed','name'=>$name));
}
}