Сделал так:
1) Добавляем кнопку в \hosts\hosting\tables\DSOrders[User].xml
Код: Выделить всё
 <Reboots>
  <IsSorted>0</IsSorted>
  <Comp>Buttons/Window</Comp>
  <Args>
   <ListElement>/DSReboot</ListElement>
   <ListElement>
    <DSOrderID>%ID%</DSOrderID>
   </ListElement>
   <ListElement>Перезагрузить сервер</ListElement>
   <ListElement>re.gif</ListElement>
  </Args>
  <Attribs>
   <class>TableSuperStandard</class>
   <style>width:22px;</style>
  </Attribs>
 </Reboots>
<Sequence>
 <ListElement>SelectID</ListElement>
 <ListElement>Info</ListElement>
 <ListElement>Pay</ListElement>
 <ListElement>Reboots</ListElement>
 <ListElement>Number</ListElement>
 <ListElement>Scheme</ListElement>
 <ListElement>Expiration</ListElement>
 <ListElement>Status</ListElement>
 <ListElement>StatusOver</ListElement>
</Sequence>
2) создаем файл для кнопки, DSReboot.comp (аналогичный DSOrderInfo.comp не охото было с 0 делать =)) кидаем в \hosts\hosting\comp\www
Код: Выделить всё
Eval(COMP_INIT);
$Args = Args();
#-------------------------------------------------------------------------------
$DSOrderID = (integer) @$Args['DSOrderID'];
#-------------------------------------------------------------------------------
if(Is_Error(System_Load('modules/Authorisation.mod','classes/DOM.class')))
  return ERROR | @Trigger_Error(500);
#-------------------------------------------------------------------------------
$Columns = Array('*','(SELECT `Name` FROM `DSSchemes` WHERE `DSSchemes`.`ID` = `DSOrdersOwners`.`SchemeID`) as `Scheme`','(SELECT `Name` FROM `DSServersGroups` WHERE `DSServersGroups`.`ID` = (SELECT `ServersGroupID` FROM `DSSchemes` WHERE `DSSchemes`.`ID` = `DSOrdersOwners`.`SchemeID`)) as `ServersGroupName`');
#-------------------------------------------------------------------------------
$DSOrder = DB_Select('DSOrdersOwners',$Columns,Array('UNIQ','ID'=>$DSOrderID));
#-------------------------------------------------------------------------------
switch(ValueOf($DSOrder)){
  case 'error':
    return ERROR | @Trigger_Error(500);
  case 'exception':
    return ERROR | @Trigger_Error(400);
  case 'array':
    #---------------------------------------------------------------------------
    $__USER = $GLOBALS['__USER'];
    #---------------------------------------------------------------------------
    $IsPermission = Permission_Check('DSOrdersRead',(integer)$__USER['ID'],(integer)$DSOrder['UserID']);
    #---------------------------------------------------------------------------
    switch(ValueOf($IsPermission)){
      case 'error':
        return ERROR | @Trigger_Error(500);
      case 'exception':
        return ERROR | @Trigger_Error(400);
      case 'false':
        return ERROR | @Trigger_Error(700);
      case 'true':
        #-----------------------------------------------------------------------
        $DOM = new DOM();
        #-----------------------------------------------------------------------
        $Links = &Links();
        # Коллекция ссылок
        $Links['DOM'] = &$DOM;
        #-----------------------------------------------------------------------
        if(Is_Error($DOM->Load('Window')))
          return ERROR | @Trigger_Error(500);
        #-----------------------------------------------------------------------
        $DOM->AddText('Title','Удаленная перезагрузка сервера сотрудниками ДЦ');
        #-----------------------------------------------------------------------
        $Table = Array('Информация о заказе');
        #-----------------------------------------------------------------------
        $Comp = Comp_Load('Formats/Order/Number',$DSOrder['OrderID']);
        if(Is_Error($Comp))
          return ERROR | @Trigger_Error(500);
        #-----------------------------------------------------------------------
        $Table[] = Array('Номер',$Comp);
        #-----------------------------------------------------------------------
        $Table[] = Array('Тарифный план',SPrintF('%s (%s)',$DSOrder['Scheme'],$DSOrder['ServersGroupName']));
      //$Table[] = $DSOrder['ServersGroupName'];
       $Table[] = 'Данные доступа';
       $Table[] = Array('Первичный IP адрес',$DSOrder['IP']);
       $Table[] = Array('Пароль root (Linux/FreeBSD)',$DSOrder['ExtraIP']);
   #-----------------------------------------------------------------------
   $Params = Array('type'=>'hidden','name'=>'AutoProlong');
   if($DSOrder['AutoProlong'] == "yes"){
      $msg = "Отключить";
      $Params['value'] = 'no';
   }else{
      $msg = "Включить";
      $Params['value'] = 'yes';
   }
   $AutoProlong = Comp_Load('Form/Input',$Params);
   #-------------------------------------------------------------------
              $Table[] = new Tag('TD',Array('colspan'=>2,'width'=>'300px','class'=>'Standard','style'=>'background-color:#D1E9F5;'),'Ваш сервер будет перезагружен сотрундниками дата-центра в течении 15-20 минут.  НЕ ЖМИТЕ КНОПКУ НЕСКОЛЬКО РАЗ!!!');
   $Comp = Comp_Load(
         'Form/Input',
         Array(
            'type'    => 'button',
            'onclick' => "AjaxCall('/API/DSReboot',FormGet(form),'Отправвляем запрос в ДЦ','GetURL(document.location);');",
            'value'   => "Перезагрузить сервер"
         )
      );
   if(Is_Error($Comp))
      return ERROR | @Trigger_Error(500);
   #-----------------------------------------------------------------------
   $Table[] = Array('Reboot',$Comp);
   #-----------------------------------------------------------------------
        #-----------------------------------------------------------------------
        $Comp = Comp_Load('Tables/Standard',$Table);
        if(Is_Error($Comp))
          return ERROR | @Trigger_Error(500);
        #-----------------------------------------------------------------------
        $Form = new Tag('FORM',Array('method'=>'POST'),$Comp);
   #-----------------------------------------------------------------------
   $Form->AddChild($AutoProlong);
        #-----------------------------------------------------------------------
        $Comp = Comp_Load(
          'Form/Input',
          Array(
            'type'  => 'hidden',
            'name'  => 'DSOrderID',
            'value' => $DSOrder['ID']
          )
        );
        if(Is_Error($Comp))
          return ERROR | @Trigger_Error(500);
        #-----------------------------------------------------------------------
        $Form->AddChild($Comp);
        #-----------------------------------------------------------------------
        $DOM->AddChild('Into',$Form);
        #-----------------------------------------------------------------------
        if(Is_Error($DOM->Build(FALSE)))
          return ERROR | @Trigger_Error(500);
        #-----------------------------------------------------------------------
        return Array('Status'=>'Ok','DOM'=>$DOM->Object);
      default:
        return ERROR | @Trigger_Error(101);
    }
  default:
    return ERROR | @Trigger_Error(101);
}
#-------------------------------------------------------------------------------
3) И оброботчик сам DSReboot.comp, в /hosts/hosting/comp/www/API
Код: Выделить всё
#-------------------------------------------------------------------------------
/** @author Rootden dgrad-host.ru */
/******************************************************************************/
Eval(COMP_INIT);
/******************************************************************************/
if(Is_Error(System_Load('modules/Authorisation.mod')))
  return ERROR | @Trigger_Error(500);
#-------------------------------------------------------------------------------
$Args = Args();
#-------------------------------------------------------------------------------
$DSOrderID   = (integer) @$Args['DSOrderID'];
#---------------------------------------------------------------------------
$__USER = $GLOBALS['__USER'];
$Columns = Array('*','(SELECT `Name` FROM `DSSchemes` WHERE `DSSchemes`.`ID` = `DSOrdersOwners`.`SchemeID`) as `Scheme`','(SELECT `Name` FROM `DSServersGroups` WHERE `DSServersGroups`.`ID` = (SELECT `ServersGroupID` FROM `DSSchemes` WHERE `DSSchemes`.`ID` = `DSOrdersOwners`.`SchemeID`)) as `ServersGroupName`');
$DSOrderr = DB_Select('DSOrdersOwners',$Columns,Array('UNIQ','ID'=>$DSOrderID));
$reb = $DSOrderr['ServersGroupName'];
$ip = $DSOrderr['IP'];
$nomer = '7902......;
$me = 'Dgrad-host.ru';
$apikey='КЛЮЧЬ';
$url = 'http://smspilot.ru/api.php';
$pin = 'секретно';
$to = 'reboots@burst.net';
//reboots@burst.net
$subject = 'Reboot';
$heads = "From: support@ХОСТИНГ\r\nContent-type: text/plain; charset=UTF-8 \r\n";
$message = <<<EOT
-
Hi,
Please reboot the server: $ip
Identification Pin Code: $pin
This is an automated message from the billing system, you can not answer.
-
EOT;
$sms = <<<EOT
-
Reboot: $reb 
IP: $ip
-
EOT;
switch ($reb){
    case "Dedicated сервера в США":
        mail ($to, $subject, $message, $heads);
        break;
    case "Dedicated сервера в Англии":
        mail ($to, $subject, $message, $heads);
        break;
   case "Dedicated сервера в Нидерланда":
        $ch = curl_init();
        $request = "send=$sms&to=$nomer&from=$me&apikey=$apikey";
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
        $response = curl_exec($ch);
        curl_close($ch);
        break;
    case "Dedicated сервера в Германии":
        $ch = curl_init();
        $request = "send=$sms&to=$nomer&from=$me&apikey=$apikey";
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
        $response = curl_exec($ch);
        curl_close($ch);
        break;
   default:
   return ERROR | @Trigger_Error(101);
}
$IsInsert = DB_Insert('Events',Array('UserID'=>$__USER['ID'],'PriorityID'=>'Billing','Text'=>SPrintF('%s ip %s отправлен в reboot.',$reb,$ip)));
return Array('Status'=>'Ok');
(у меня 4 группы серверов тоесть разные ЦОД, сервера из 2х групп уходят в ребут автоматом с помощью email, остальные 2 группы пока просто уведомление по смс для админов)
Проверил все пашет,



