Eric.c 大佬有话说 : 2019-11-15 21:09:53
懒得搞了,需要的人自己扩展。 online的自己看过来
https://s2.ax1x.com/2019/11/15/MdcQh9.png
<?php
//登陆https://console.online.net/en/api/access,那一串最黑的字符串
const API_CODE=’4279482ea1d251b8b40fd5ee83c1a’;
//自己设置的密码
const USERNAME=’123456′;
const PASSWORD=’123456′;
class online{
static $host=’https://api.online.net/api/v1′;
static $api=[
‘user’=>’/user’,
‘server’=>’/server’,
];
public $key;
public function __construct($key)
{
$this->key=$key;
}
function curl($url, $type = ‘get’, $data = [])
{
$url = $this->getApiUrl($url);
$header = [
"Authorization:Bearer {$this->key}"
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
if ($type == ‘post’) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
$output = curl_exec($ch);
curl_close($ch);
$output= json_decode($output);
if($output!=null)
return $output;
else
return false;
}
function getApiUrl($key)
{
return online::$host.$key;
}
/**
* 获取个人信息
* @return bool|mixed
*/
function getUser()
{
$result = $this->curl(online::$api[‘user’]);
if(is_object($result) && !isset($result->error))
return $result;
else
return false;
}
/**
* 获取服务器列表,每台服务器都有详细信息
* @return array|bool
*/
function getServerList()
{
$result= $this->curl(online::$api[‘server’]);
$server_list = $result;
if(empty($server_list))
{
return false;
}
$data=[];
foreach($server_list as $server)
{
$arr = explode(‘/’,$server);
$server_id = $arr;
$data[]=$this->getServerInfo($server_id);
}
return $data;
}
/**
* 获取单个服务器的信息
* @param $id
*
* @return bool|mixed
*/
function getServerInfo($id)
{
$result= $this->curl(‘/server/’.$id);
if(is_object($result) && !isset($result->error))
return $result;
else
return false;
}
/**
* 正常启动/救护启动
* @param $id
*
* @return bool|mixed
*/
function setBoot($id,$mode=’normal’)
{
$result= $this->curl(‘/server/boot/’.$mode.’/’.$id);
}
/**
重启
* @param $id
*
* @return bool|mixed
*/
function setReBoot($id)
{
$result= $this->curl(‘/server/reboot/’.$id);
}
/**
* 关机
* @param $id
*/
function shutdown($id)
{
$result= $this->curl(‘/server/shutdown/’.$id);
}
}
#业务流程开始
auth();
$obj = new online(API_CODE);
if(isset($_GET) && !empty($_GET))
{
if($_GET[‘op’]==’normal’)
{
$id=intval($_GET[‘id’]);
$obj->setBoot($id,’normal’);
echo "<font color=’blue’>操作已执行,请耐心等待</font>";
}
elseif($_GET[‘op’]==’rescue’)
{
$id=intval($_GET[‘id’]);
$obj->setBoot($id,’rescue’);
echo "<font color=’blue’>操作已执行,请耐心等待</font>";
}
elseif($_GET[‘op’]==’reboot’)
{
$id=intval($_GET[‘id’]);
$obj->setReboot($id);
echo "<font color=’blue’>已发重启命令</font>";
}
elseif($_GET[‘op’]==’shutdown’)
{
$id=intval($_GET[‘id’]);
$obj->shutdown($id);
echo "<font color=’blue’>已发关机命令</font>";
}
//@todo:这里加各项操作,重装啥的,自己补充。。
}
$server_list = $obj->getServerList();
$url = ‘http://’.$_SERVER["SERVER_NAME"].’/’.$_SERVER["REQUEST_URI"];
foreach($server_list as $server)
{
$link =[
‘重启’=>$url.’?op=reboot&id=’.$server->id,
‘关机’=>$url.’?op=shutdown&id=’.$server->id,
‘正常模式’=>$url.’?op=normal&id=’.$server->id,
‘救援模式’=>$url.’?op=rescue&id=’.$server->id,
];
echo ‘<hr>’;
echo ‘<br>机器ID:’.$server->id;
echo ‘<br>产品规格:’.$server->offer;
echo ‘<br>主机名:’.$server->hostname;
echo ‘<br>操作系统:’.$server->os->name.’ ‘.$server->os->version;
echo ‘<br>电源状态:’.$server->power;
echo ‘<br>当前模式:’.$server->boot_mode;
echo ‘<br>滥用报告邮箱:’.$server->abuse;
echo ‘<br>机器位置:’.$server->location->datacenter.’ / ‘.$server->location->room.’ / ‘.$server->location->rack.’ / ‘.$server->location->block;
echo ‘<br>网络信息:’.json_encode($server->network->ip);
echo ‘<p>’;
foreach($link as $k=>$v)
{
echo "<a href='{v}’>{$k}</a> ";
}
}
function auth()
{
$AUTH_USER = USERNAME;
$AUTH_PASS = PASSWORD;
header(‘Cache-Control: no-cache, must-revalidate, max-age=0’);
$has_supplied_credentials = !(empty($_SERVER[‘PHP_AUTH_USER’]) && empty($_SERVER[‘PHP_AUTH_PW’]));
$is_not_authenticated = (
!$has_supplied_credentials ||
$_SERVER[‘PHP_AUTH_USER’] != $AUTH_USER ||
$_SERVER[‘PHP_AUTH_PW’] != $AUTH_PASS
);
if ($is_not_authenticated) {
header(‘HTTP/1.1 401 Authorization Required’);
header(‘WWW-Authenticate: Basic realm="Access denied"’);
exit;
}
}
llmwxt 大佬有话说 : 2019-11-15 21:11:48
萌新弱弱的问:这是什么
bob1987 大佬有话说 : 2019-11-15 21:18:02
llmwxt 大佬有话说 : 2019-11-15 21:11
萌新弱弱的问:这是什么
我猜是自己写的一个管理方式,比如我 买10台租出去,但是租客需要重启什么的,那么这就是个管理工具
葱油饼董事长 大佬有话说 : 2019-11-15 21:19:23
牛逼,自制控制面板
suantong 大佬有话说 : 2019-11-15 21:20:27
llmwxt 大佬有话说 : 2019-11-15 21:11
萌新弱弱的问:这是什么
o l机器管理面板啊
ApkB 大佬有话说 : 2019-11-15 21:21:45
llmwxt 大佬有话说 : 2019-11-15 21:11
萌新弱弱的问:这是什么
ol的控制服务器重启、开机的API。
dforel 大佬有话说 : 2019-11-15 21:21:50
牛逼,6666
llmwxt 大佬有话说 : 2019-11-15 21:22:42
本论坛藏龙卧虎,佩服!各位都太牛了,大开眼界啊!
水果大笨蛋 大佬有话说 : 2019-11-15 21:23:03
为什么你这么优秀
Reves 大佬有话说 : 2019-11-15 21:30:10
牛逼,6666