kangle支不支持PHP_【轉載】PHP調用kangle的API

a30fed385935a686f61fe67bf35c70da.png摘要:

根據管理的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));

}

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536903.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536903.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536903.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ES6 學習筆記(一)let,const和解構賦值

let和const let和const是es6新增的兩個變量聲明關鍵字&#xff0c;與var的不同點在于&#xff1a; &#xff08;1&#xff09;let和const都是塊級作用域&#xff0c;在{}內有效&#xff0c;這點在for循環中非常有用&#xff0c;只在循環體內有效。var為函數作用域。 &#xff0…

mysql數據庫容量和性能_新品速遞丨容量盤性能提升超 300%,數據庫支持 MySQL 8.0...

2關系型數據庫 MySQL Plus支持 MySQL 8.0 內核及 XtraBackup 物理在線遷移方式關系型數據庫服務 MySQL Plus 發布新版本 1.0.6 &#xff0c; 新增多項功能&#xff0c;提升了集群自動化運維能力。主要升級有&#xff1a;- 支持 MySQL 8.0 內核&#xff1a;根據官方測試&#xf…

10. Python面向對象

Python從設計之初就已經是一門面向對象的語言&#xff0c;正因為如此&#xff0c;在Python中創建一個類和對象是很容易的。如果接觸過java語言同學應該都知道&#xff0c;Java面向對象三大特征是&#xff1a;封裝、繼承、多態。Python面向對象也有一些特征&#xff0c;接下來我…

mysql聚簇索引 和主鍵的區別_[MySQL] innoDB引擎的主鍵與聚簇索引

MysqL的innodb引擎本身存儲的形式就必須是聚簇索引的形式,在磁盤上樹狀存儲的,但是不一定是根據主鍵聚簇的,有三種情形:1. 有主鍵的情況下,主鍵就是聚簇索引2. 沒有主鍵的情況下,第一個非空null的唯一索引就是聚簇索引3. 如果上面都沒有,那么就是有一個隱藏的row-id作為聚簇索引…

前端頁面:一直報Cannot set property 'height' of undefined

1、出現錯誤的例子&#xff0c;只拷貝了項目中關鍵出現問題的部分 例子中明明寫了styleheight:16px這個屬性&#xff0c;但是為什么還說height未定義呢 通過打印發現&#xff1a;cks.each(function () { autoTextAreaHeight($(this)); });中的$(this)取出來…

mysql表在線轉成分區表_11g普通表在線轉換分區表

本帖最后由 燈和樹 于 2016-5-4 14:58 編輯由于業務系統數據量增大&#xff0c;對其用戶表在線完成分區表轉換過程&#xff0c;記錄如下&#xff0c;11g數據庫支持。創建過渡分區表根據USER_ID創建分區表CREATE TABLE SDP_SMECD.TEST_T_USER_ID(USER_ID NUMBER(13) …

tiger4444/rabbit4444后綴勒索病毒怎么刪除 能否百分百恢復

上海某客戶中了tiger4444的勒索病毒&#xff0c;找到我們后&#xff0c;一天內全部恢復完成。說了很多關于勒索病毒的事情&#xff0c;也提醒過大家&#xff0c;可總是有人疏忽&#xff0c;致使中招后&#xff0c;丟錢丟面子&#xff0c;還丟工作。 那么要怎樣預防呢與處理呢&a…

mysql遠程一會不用卡住_連接遠程MySQL數據庫項目啟動時,不報錯但是卡住不繼續啟動的,...

連接遠程MySQL數據庫項目啟動時&#xff0c;不報錯但是卡住不繼續啟動的&#xff0c;2018-03-12 17:08:52.532DEBUG[localhost-startStop-1]o.s.beans.factory.support.DefaultListableBeanFactory.doGetBean():251 -Returning cached instance of singleton bean ‘org.spring…

GPT-5、開源、更強的ChatGPT!

年終歲尾&#xff0c;正值圣誕節熱鬧氣氛的OpenAI寫下了2024年的發展清單。 OpenAI聯合創始人兼首席執行官Sam Altman在社交平臺公布&#xff0c;AGI&#xff08;稍晚一些&#xff09;、GPT-5、更好的語音模型、更高的費率限制&#xff1b; 更好的GPTs&#xff1b;更好的推理…

CentOS_7 安裝MySql5.7

2019獨角獸企業重金招聘Python工程師標準>>> 下載mysql的源 wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm 安裝yum庫 yum localinstall -y mysql57-community-release-el7-7.noarch.rpm 安裝MySQL yum install -y mysql-community-…

python查詢mysql decimal報錯_python讀取MySQL數據表時,使用ast模塊轉換decimal格式數據的坑...

概述MySQL中常用的數據格式有tinyint()、int()、float()、double()、decimal() 、varchar、enum()、datetime;小數格式中decimal比較常用&#xff0c;因為更加精確&#xff0c;這里就以decimal為例。從MySQL中讀取了一行數據&#xff0c;內容為&#xff1a;(17479, datetime.da…

性能測試總結(一)---基礎理論篇(轉載)

隨著軟件行業的快速發展&#xff0c;現代的軟件系統越來越復雜&#xff0c;功能越來越多&#xff0c;測試人員除了需要保證基本的功能測試質量&#xff0c;性能也隨越來越受到人們的關注。但是一提到性能測試&#xff0c;很多人就直接連想到Loadrunner。認為LR就等于性能測試&a…

java listen_JavaWeb之Filter、Listener

昨天和大家介紹了一下JSON的用法&#xff0c;其實JSON中主要是用來和數據庫交互數據的。今天給大家講解的是Filter和Listener的用法。一、Listenner監聽器1.1、定義Javaweb中的監聽器是用于監聽web常見對象HttpServletRequest,HttpSession,ServletContext。1.2、監聽器的作用監…

BFC的概念及作用

在了解什么是BFC之前&#xff0c;首先得明白什么是Box , Formatting Context &#xff08;一個決定如何渲染文檔的容器&#xff09;的概念 Box: CSS布局的基本單位 Box是 CSS 布局的對象和基本單位&#xff0c; 直觀點來說&#xff0c; 就是一個頁面是由很多個 Box組成的&#…

bitcount java_java-Long.bitCount()如何找到設置的位數?

讓我們以255為例.我們將這些位組合在一起.首先,我們從255開始,為0b1111.1111(二進制為8 1)第一行代碼是&#xff1a;i i - ((i > > > 1) & 0x5555555555555555L);這條線正在梳理每對1.由于我們有8個1,所以我們希望組合成對,并得到2,2,2,2之類的東西.由于它是二進…

Luogu P2463 [SDOI2008]Sandy的卡片

題目鏈接 \(Click\) \(Here\) 真的好麻煩啊。。事實證明&#xff0c;理解是理解&#xff0c;一定要認認真真把板子打牢&#xff0c;不然調鍋的時候真的會很痛苦。。&#xff08;最好是八分鐘能無腦把\(SA\)碼對的程度\(QAQ\)&#xff09; 這個題最開始我想的是\(RMQ\)遍歷每一個…

java log輸出到文件路徑_Java - 配置log4j的日志文件路徑 (附-獲取當前類路徑的多種方法)...

1 日志路徑帶來的痛點Java 項目中少不了要和log4j等日志框架打交道, 開發環境和生產環境下日志文件的輸出路徑總是不一致, 設置為絕對路徑的方式缺少了靈活性, 每次變更項目路徑都要修改文件, 目前想到的最佳實現方式是: 根據項目位置自動加載并配置文件路徑.本文借鑒 Tomcat 的…

常用數據結構

字典&#xff1a;即map&#xff0c;映射&#xff0c;通過key>value的方式直接查找與之對應的值&#xff0c;實現一般是hash表或二叉樹跳躍表&#xff1a;本質是鏈表&#xff0c;只不過將數據進行提取分層&#xff0c;將總數據置為底層&#xff0c;提取2、4、的倍數為第一二層…

java jasypt_Jasypt

軟件簡介Jasypt這個Java類包為開發人員提供一種簡單的方式來為項目增加加密功能&#xff0c;包括&#xff1a;密碼Digest認證&#xff0c;文本和對象加密&#xff0c;集成hibernate&#xff0c;SpringSecurity(Acegi)來增強密碼管理。Jasypt開發團隊推出了Java加密工具Jasypt 1…

ZABBIX監控JAVA日志文件

最近開發人員有一個需求&#xff0c;監控java程序的報錯日志&#xff0c;如日志中包含“ERROR”關鍵字的信息&#xff0c;就郵件告警&#xff0c;以下是具體實現方法。 一、創建模板以上是已經創建好的模板&#xff0c;名為“Template App Java logs”創建應用集二、創建監控項…