全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 3882|回复: 40
打印 上一主题 下一主题

懒得搞了,需要的人自己扩展。 online的自己看过来

  [复制链接]
跳转到指定楼层
1#
发表于 2019-11-15 21:09:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式




  1. <?php

  2.         //登陆https://console.online.net/en/api/access,那一串最黑的字符串
  3.         const API_CODE='4279482ea1d251b8b40fd5ee83c1a';

  4.         //自己设置的密码
  5.         const USERNAME='123456';
  6.         const PASSWORD='123456';




  7.         class online{

  8.                 static $host='https://api.online.net/api/v1';
  9.                 static $api=[
  10.                         'user'=>'/user',
  11.                         'server'=>'/server',
  12.                 ];

  13.                 public $key;
  14.                 public function __construct($key)
  15.                 {
  16.                         $this->key=$key;
  17.                 }


  18.                 function curl($url, $type = 'get', $data = [])
  19.                 {

  20.                         $url = $this->getApiUrl($url);
  21.                         $header = [
  22.                                 "Authorization:Bearer {$this->key}"
  23.                         ];

  24.                         $ch = curl_init();
  25.                         curl_setopt($ch, CURLOPT_URL, $url);
  26.                         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  27.                         curl_setopt($ch, CURLOPT_HEADER, 0);
  28.                         curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  29.                         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  30.                         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

  31.                         if ($type == 'post') {
  32.                                 curl_setopt($ch, CURLOPT_POST, 1);
  33.                                 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  34.                         }
  35.                         $output = curl_exec($ch);
  36.                         curl_close($ch);
  37.                         $output= json_decode($output);
  38.                         if($output!=null)
  39.                                 return $output;
  40.                         else
  41.                                 return false;
  42.                 }

  43.                 function getApiUrl($key)
  44.                 {
  45.                         return online::$host.$key;
  46.                 }

  47.                 /**
  48.                  * 获取个人信息
  49.                  * @return bool|mixed
  50.                  */
  51.                 function getUser()
  52.                 {
  53.                         $result = $this->curl(online::$api['user']);
  54.                         if(is_object($result) && !isset($result->error))
  55.                                 return $result;
  56.                         else
  57.                                 return false;

  58.                 }

  59.                 /**
  60.                  * 获取服务器列表,每台服务器都有详细信息
  61.                  * @return array|bool
  62.                  */
  63.                 function getServerList()
  64.                 {
  65.                         $result  = $this->curl(online::$api['server']);
  66.                         $server_list = $result;
  67.                         if(empty($server_list))
  68.                         {
  69.                                 return false;
  70.                         }


  71.                         $data=[];
  72.                         foreach($server_list as $server)
  73.                         {
  74.                                         $arr = explode('/',$server);
  75.                                         $server_id = $arr[4];
  76.                                         $data[]=$this->getServerInfo($server_id);
  77.                         }
  78.                         return $data;
  79.                 }

  80.                 /**
  81.                  * 获取单个服务器的信息
  82.                  * @param $id
  83.                  *
  84.                  * @return bool|mixed
  85.                  */
  86.                 function getServerInfo($id)
  87.                 {
  88.                         $result  = $this->curl('/server/'.$id);
  89.                         if(is_object($result) && !isset($result->error))
  90.                                 return $result;
  91.                         else
  92.                                 return false;

  93.                 }


  94.                 /**
  95.                  * 正常启动/救护启动
  96.                  * @param $id
  97.                  *
  98.                  * @return bool|mixed
  99.                  */
  100.                 function setBoot($id,$mode='normal')
  101.                 {
  102.                         $result  = $this->curl('/server/boot/'.$mode.'/'.$id);
  103.                 }

  104.                 /**
  105.                  重启
  106.                  * @param $id
  107.                  *
  108.                  * @return bool|mixed
  109.                  */
  110.                 function setReBoot($id)
  111.                 {
  112.                         $result  = $this->curl('/server/reboot/'.$id);
  113.                 }

  114.                 /**
  115.                  * 关机
  116.                  * @param $id
  117.                  */
  118.                 function shutdown($id)
  119.                 {
  120.                         $result  = $this->curl('/server/shutdown/'.$id);
  121.                 }





  122.         }




  123.         #业务流程开始
  124.         auth();

  125.         $obj = new online(API_CODE);
  126.         if(isset($_GET) && !empty($_GET))
  127.         {
  128.                 if($_GET['op']=='normal')
  129.                 {
  130.                         $id=intval($_GET['id']);
  131.                         $obj->setBoot($id,'normal');
  132.                         echo "<font color='blue'>操作已执行,请耐心等待</font>";

  133.                 }
  134.                 elseif($_GET['op']=='rescue')
  135.                 {
  136.                         $id=intval($_GET['id']);
  137.                         $obj->setBoot($id,'rescue');
  138.                         echo "<font color='blue'>操作已执行,请耐心等待</font>";

  139.                 }
  140.                 elseif($_GET['op']=='reboot')
  141.                 {
  142.                         $id=intval($_GET['id']);
  143.                         $obj->setReboot($id);
  144.                         echo "<font color='blue'>已发重启命令</font>";

  145.                 }
  146.                 elseif($_GET['op']=='shutdown')
  147.                 {
  148.                         $id=intval($_GET['id']);
  149.                         $obj->shutdown($id);
  150.                         echo "<font color='blue'>已发关机命令</font>";

  151.                 }

  152.                 //@todo:这里加各项操作,重装啥的,自己补充。。

  153.         }



  154.         $server_list = $obj->getServerList();

  155.         $url = 'http://'.$_SERVER["SERVER_NAME"].'/'.$_SERVER["REQUEST_URI"];
  156.         foreach($server_list as $server)
  157.         {
  158.                 $link =[
  159.                         '重启'=>$url.'?op=reboot&id='.$server->id,
  160.                         '关机'=>$url.'?op=shutdown&id='.$server->id,
  161.                         '正常模式'=>$url.'?op=normal&id='.$server->id,
  162.                         '救援模式'=>$url.'?op=rescue&id='.$server->id,
  163.                 ];

  164.                 echo '<hr>';
  165.                 echo '<br>机器ID:'.$server->id;
  166.                 echo '<br>产品规格:'.$server->offer;
  167.                 echo '<br>主机名:'.$server->hostname;
  168.                 echo '<br>操作系统:'.$server->os->name.' '.$server->os->version;
  169.                 echo '<br>电源状态:'.$server->power;
  170.                 echo '<br>当前模式:'.$server->boot_mode;
  171.                 echo '<br>滥用报告邮箱:'.$server->abuse;
  172.                 echo '<br>机器位置:'.$server->location->datacenter.' / '.$server->location->room.' / '.$server->location->rack.' / '.$server->location->block;
  173.                 echo '<br>网络信息:'.json_encode($server->network->ip);

  174.                 echo '<p>';
  175.                 foreach($link as $k=>$v)
  176.                 {
  177.                         echo "<a href='{v}'>{$k}</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
  178.                 }
  179.         }



  180.         function auth()
  181.         {
  182.                 $AUTH_USER = USERNAME;
  183.                 $AUTH_PASS = PASSWORD;
  184.                 header('Cache-Control: no-cache, must-revalidate, max-age=0');
  185.                 $has_supplied_credentials = !(empty($_SERVER['PHP_AUTH_USER']) && empty($_SERVER['PHP_AUTH_PW']));
  186.                 $is_not_authenticated = (
  187.                         !$has_supplied_credentials ||
  188.                         $_SERVER['PHP_AUTH_USER'] != $AUTH_USER ||
  189.                         $_SERVER['PHP_AUTH_PW']   != $AUTH_PASS
  190.                 );
  191.                 if ($is_not_authenticated) {
  192.                         header('HTTP/1.1 401 Authorization Required');
  193.                         header('WWW-Authenticate: Basic realm="Access denied"');
  194.                         exit;
  195.                 }
  196.         }

复制代码
2#
发表于 2019-11-15 21:11:48 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
3#
发表于 2019-11-15 21:18:02 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
4#
发表于 2019-11-15 21:19:23 | 只看该作者
牛逼,自制控制面板
5#
发表于 2019-11-15 21:20:27 | 只看该作者
llmwxt 发表于 2019-11-15 21:11
萌新弱弱的问:这是什么

o l机器管理面板啊
6#
发表于 2019-11-15 21:21:45 | 只看该作者
llmwxt 发表于 2019-11-15 21:11
萌新弱弱的问:这是什么

ol的控制服务器重启、开机的API。
8#
发表于 2019-11-15 21:22:42 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
9#
发表于 2019-11-15 21:23:03 | 只看该作者
为什么你这么优秀
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2026-1-15 02:01 , Processed in 0.069522 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表