设为首页收藏本站

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 30|回复: 3

前段时间有个online的api管理服务器谁收藏了

[复制链接]

10

主题

208

回帖

478

积分

中级会员

积分
478
发表于 2019-12-1 15:19:40 | 显示全部楼层 |阅读模式
[ol]
  • '/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[4];
  •                                         $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 "
    操作已执行,请耐心等待
    ";
  •                 }
  •                 elseif($_GET['op']=='rescue')
  •                 {
  •                         $id=intval($_GET['id']);
  •                         $obj->setBoot($id,'rescue');
  •                         echo "
    操作已执行,请耐心等待
    ";
  •                 }
  •                 elseif($_GET['op']=='reboot')
  •                 {
  •                         $id=intval($_GET['id']);
  •                         $obj->setReboot($id);
  •                         echo "
    已发重启命令
    ";
  •                 }
  •                 elseif($_GET['op']=='shutdown')
  •                 {
  •                         $id=intval($_GET['id']);
  •                         $obj->shutdown($id);
  •                         echo "
    已发关机命令
    ";
  •                 }
  •                 //@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 '';
  •                 echo '
    机器ID:'.$server->id;
  •                 echo '
    产品规格:'.$server->offer;
  •                 echo '
    主机名:'.$server->hostname;
  •                 echo '
    操作系统:'.$server->os->name.' '.$server->os->version;
  •                 echo '
    电源状态:'.$server->power;
  •                 echo '
    当前模式:'.$server->boot_mode;
  •                 echo '
    滥用报告邮箱:'.$server->abuse;
  •                 echo '
    机器位置:'.$server->location->datacenter.' / '.$server->location->room.' / '.$server->location->rack.' / '.$server->location->block;
  •                 echo '
    网络信息:'.json_encode($server->network->ip);
  •                 echo '';
  •                 foreach($link as $k=>$v)
  •                 {
  •                         echo "{$k}      ";
  •                 }
  •         }
  •         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;
  •                 }
  •         }
  • [/ol]复制代码
  • 回复

    使用道具 举报

    25

    主题

    903

    回帖

    1901

    积分

    金牌会员

    积分
    1901
    发表于 2019-12-1 15:43:59 | 显示全部楼层

    Uler 发表于 2019-12-1 16:07

    请问设置了这个
    怎么上不去

    一个是用户名,一个是密码,而且这个只是登录页面用的。
    回复

    使用道具 举报

    25

    主题

    903

    回帖

    1901

    积分

    金牌会员

    积分
    1901
    发表于 2019-12-1 16:23:21 | 显示全部楼层
    没人理你尴尬不。         
    回复

    使用道具 举报

    10

    主题

    208

    回帖

    478

    积分

    中级会员

    积分
    478
     楼主| 发表于 2019-12-1 16:07:00 | 显示全部楼层

    Uler 发表于 2019-12-1 17:15

    这个好像有点问题,echo "{$k}这个v变量少$个符号
    改完后还有关机,重启,救援模式那几个命令没作用,
    请 ...


    找不到了,你看下另外一位大佬的。这个我没学会。
    https://git.bani99.com/bani99/online
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2025-12-20 03:55 , Processed in 0.014677 second(s), 4 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2025 Discuz! Team.

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