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.mzph.cn/news/536903.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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…

tiger4444/rabbit4444后缀勒索病毒怎么删除 能否百分百恢复

上海某客户中了tiger4444的勒索病毒&#xff0c;找到我们后&#xff0c;一天内全部恢复完成。说了很多关于勒索病毒的事情&#xff0c;也提醒过大家&#xff0c;可总是有人疏忽&#xff0c;致使中招后&#xff0c;丢钱丢面子&#xff0c;还丢工作。 那么要怎样预防呢与处理呢&a…

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-…

性能测试总结(一)---基础理论篇(转载)

随着软件行业的快速发展&#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、监听器的作用监…

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”创建应用集二、创建监控项…

如何快速把音乐转成MP3格式

身边有这样一群朋友经常搞音乐&#xff0c;仿佛生活的乐趣只有音乐&#xff0c;不能也能理解&#xff0c;谁没有点自己的爱好呢&#xff1f;但是如果想要在茫茫人海中成为佼佼者&#xff0c;并不是这么容易的&#xff0c;但是我们要在速度上赢更多的人&#xff0c;所以写了这篇…

JavaWeb学习笔记(九)--HttpServletResponse

web服务器接收到客户端的HTTP请求&#xff0c;会针对每一次请求&#xff0c;分别创建一个用于代表请求的request对象和代表响应的response对象。 request和response对象既然代表请求和响应&#xff0c;那我们要获取客户端提交过来的数据&#xff0c;只需要找request对象即可。要…

centos 6.5 yum java_Centos6.5 yum 安装jdk1.8

centos 6.5 安装卸载jdk-- 查看有没有预装jdk版本java -version-- 查看已安装的版本rpm -qa|grep java-- 卸载预装版本 rpm -e --nodeps 命令卸载rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64-- 查找可以安装的jdk列表yum search java | grep -i --color J…

【PHP 扩展开发】Zephir 基础篇

上一篇 《Zephir 简介》 简单介绍了环境搭建&#xff0c;编写了一个的简单示例。这一篇继续介绍 Zephir 基础。 基本语法Zephir 中&#xff0c;每个文件都必须有且只有一个类&#xff0c;每个类都必须有一个命名空间&#xff0c;目录结构必须与所使用的类和命名空间的名称相匹配…

左偏树 P3377【模板】左偏树(可并堆)

题目传送门 代码&#xff1a; /* code by: zstu wxk time: 2019/03/01 */ #include<bits/stdc.h> using namespace std; #define Fopen freopen("testdata.in","r",stdin); freopen("_out.txt","w",stdout); #define LL long lo…

mycat mysql ha 方案_7、基于 HA 机制的 Mycat 高可用--mycat

在实际项目中&#xff0c;Mycat 服务也需要考虑高可用性&#xff0c;如果 Mycat 所在服务器出现宕机&#xff0c;或 Mycat 服务故障&#xff0c;需要有备机提供服务&#xff0c;需要考虑 Mycat 集群。1、 高可用方案使用 HAProxy Keepalived 配合两台 Mycat 搭起 Mycat 集群&a…

python canvas画移动物体_如何实现Canvas图像的拖拽、点击等操作

上一篇Canvas的博文写完后&#xff0c;有位朋友希望能对Canvas绘制出来的图像进行点击、拖拽等操作&#xff0c;因为Canvas绘制出的图像能很好的美化。好像是想做炉石什么的游戏&#xff0c;我也没玩过。Canvas在我的理解中就好像在一张画布上绘制图像&#xff0c;它只能看到却…

python plot map_使用matplotlibbasemap在边界打印

我在绘制多边形时遇到了困难&#xff0c;例如&#xff0c;在使用matplotlib basemap生成的地图边界上绘制多边形。在下面的示例中&#xff0c;地图边界由日期线指定。我试图通过指定三角形顶点的坐标来绘制一个跨越日期线的三角形。当所有的坐标都在地图内时&#xff0c;这种方…

SQL查询语句 group by后, 字符串合并

合并列值 --******************************************************************************************* 表结构&#xff0c;数据如下&#xff1a; id value ----- ------ aa bb aaa bbb ccc 需要得到结果&#xff1a; id values ------ ----------- aa,bb aaa…

Git 基础 —— 常用命令

Git 基础学习系列 Git 基础 —— 安装 配置 别名 对象Git 基础 —— 常用命令Git 基础 —— 常见使用场景Git基础 —— Github 的使用git init 创建 Git 本地仓库 远端无仓库&#xff0c;本地无仓库&#xff0c;本地新建一个仓库 git init git_learning 远端有仓库&#xff0c;…

linux 访问Windows 共享文件的方法

2019独角兽企业重金招聘Python工程师标准>>> 1 安装Samba服务 2 启动 samba服务 /etc/init.d/smb restart 3 安装插件 cifs解决只读挂载&#xff1a;yum install cifs-utils.x86_64 4 在windows下共享一个可以用的文件夹 5 将 windows 共享文件夹挂载到linux上 命令…

基于Blink构建亲听项目以及全链路debug项目实时响应能力

案例与解决方案汇总页&#xff1a;阿里云实时计算产品案例&解决方案汇总 本文全面总结了大数据项目组在亲听项目以及全链路debug项目上进行的实时流处理需求梳理&#xff0c;架构选型&#xff0c;以及达成效果 一、背景介绍 1.1亲听项目 亲听项目专注于帮助用户收集、展示、…