Интеграция с панелью ISPConfig

Запрос улучшений, интеграции с различными системами и т.д.
Аватара пользователя
Alex Keda
Сообщения: 2882
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 19 раз

Интеграция с панелью ISPConfig

Сообщение Alex Keda » 2015-02-24 0:30:42

alezhen писал(а):Источник цитаты А вообще было-бы неплохо реализовать полноценный динамический тариф. Что-бы при заказе пользователь мог выбирать нужное кол-во ресурсов, а у каждой единицы ресурса была своя цена.
угу... года с 2010 висит этот таск у меня =))

Отправлено спустя 1 минуту 39 секунд:
alezhen писал(а):Источник цитаты Сейчас можно создать тарифы в панели, а при создании тарифов в биллинге указать ИД тарифа в панели. Жесткие тарифы без возможности изменения лимитов.

зачем это? биллинг посылает все лимиты при создании, и при изменении тарифа.
или вам делать нечего и вы от этого самого безделия и там и там будете тарифы заводить?
а когда станет 10 серверов, будете на всех них все тарифы заводить? и в биллинге до кучи? =)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
alezhen
Сообщения: 119
Зарегистрирован: 2015-02-16 12:22:03
Откуда: Россия
Благодарил (а): 5 раз
Поблагодарили: 1 раз
Контактная информация:

Интеграция с панелью ISPConfig

Сообщение alezhen » 2015-02-24 1:08:57

Alex Keda писал(а):Источник цитаты зачем это? биллинг посылает все лимиты при создании, и при изменении тарифа.
или вам делать нечего и вы от этого самого безделия и там и там будете тарифы заводить?
а когда станет 10 серверов, будете на всех них все тарифы заводить? и в биллинге до кучи? =)


Я описал то, что реализовано на данный момент. Если такой вариант не устраивает - ожидайте полной версии :)

Аватара пользователя
Alex Keda
Сообщения: 2882
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 19 раз

Интеграция с панелью ISPConfig

Сообщение Alex Keda » 2015-02-24 2:20:43

нифига не понял ...
ну да ладно, это проблемы тех кто будет юзать эту панель =)

Отправлено спустя 1 минуту 24 секунды:
лучше поясните, если ничего не создавать на сервере хостинга - оно работает?
создаёт аккаунты, блокирует/меняет тариф, удаляет?
Убей их всех! Бог потом рассортирует...

Аватара пользователя
alezhen
Сообщения: 119
Зарегистрирован: 2015-02-16 12:22:03
Откуда: Россия
Благодарил (а): 5 раз
Поблагодарили: 1 раз
Контактная информация:

Интеграция с панелью ISPConfig

Сообщение alezhen » 2015-02-24 10:34:47

Помните, чуть раньше, я спрашивал являетесь ли вы разработчиком?
Странная у Вас политика как разработчика, вместо того, что-бы поддерживать, Вы давите постоянно на понижение.
Скажу Вам честно - это отталкивает. А соответственно создает негативную реакцию.

Отправлено спустя 3 минуты 16 секунд:
Alex Keda писал(а):Источник цитаты лучше поясните, если ничего не создавать на сервере хостинга - оно работает?

alezhen писал(а):Источник цитаты Сейчас можно создать тарифы в панели, а при создании тарифов в биллинге указать ИД тарифа в панели.

Аватара пользователя
Alex Keda
Сообщения: 2882
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 19 раз

Интеграция с панелью ISPConfig

Сообщение Alex Keda » 2015-02-24 17:57:22

alezhen писал(а):Источник цитаты Вы давите постоянно на понижение

это как? тем что прошу сделать не "абы как, шоп тока завелось", а по человечески? =)
а вообще, да, есть такое - характер такой - язвительный =)
--
и на вопрос вы так и не ответили. в биллинге не предусмотрено идентификаторов тарифов в панели управления.
вернее есть, они абстрактные - чисто для своего ориентирования, и потому что некоторые панели их требуют обязательно.

поэтому что вы хотели сказать этими двумя цитатами - непонятно...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
alezhen
Сообщения: 119
Зарегистрирован: 2015-02-16 12:22:03
Откуда: Россия
Благодарил (а): 5 раз
Поблагодарили: 1 раз
Контактная информация:

Интеграция с панелью ISPConfig

Сообщение alezhen » 2015-02-25 0:13:02

Все доделал сборку тарифа из биллинга. Если в Идентификатор пакета в панели указать ИД тарифа из панели, то лимиты будут взяты из панели. Если Идентификатор пакета в панели оставить пустым, то тариф формируется по параметрам переданным из биллинга.
Ну и можно немного покомментить код:

Код: Выделить всё

<?php
  /*-- ------------------------------------------------------*/
 /* @author Aleksey Babanin aleksey@alezhen.ru (AleZhen.RU) */
/*--- -----------------------------------------------------*/
if(Is_Error(System_Load('libs/Http.php')))
  return ERROR | @Trigger_Error(500);
#-------------------------------------------------------------------------------
Require_Once(SPrintF('%s/others/hosting/IDNA.php',SYSTEM_PATH));
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------
# Функция входа в панель управления ISPConfig
#-------------------------------------------------------------------------------
function ISPConfig_Logon($Settings,$Params){
   /****************************************************************************/
   $__args_types = Array('array','array');
   #-----------------------------------------------------------------------------
   $__args__ = Func_Get_Args(); Eval(FUNCTION_INIT);
   /****************************************************************************/
   # Автологин пока не реализован. В процессе разработки.
   return Array('Url'=>$Settings['Params']['Url'],'Args'=>Array('username'=>$Params['Login'],'passwort'=>$Params['Password']));
}

#-------------------------------------------------------------------------------
# Функция создания клиента в панели ISPConfig
#-------------------------------------------------------------------------------
function ISPConfig_Create($Settings,$Login,$Password,$Domain,$IP,$HostingScheme,$Email,$PersonID = 'Default',$Person = Array()){
  /****************************************************************************/
  $__args_types = Array('array','string','string','string','string','array','string','string','array');
  #-----------------------------------------------------------------------------
  $__args__ = Func_Get_Args(); Eval(FUNCTION_INIT);
  /****************************************************************************/
  $IDNA = new Net_IDNA_php5();
  $Domain = $IDNA->encode($Domain);
  #-----------------------------------------------------------------------------
  if ($HostingScheme['PackageID'] == '') $HostingScheme['PackageID'] = 0;
  $ISPConfigPHP = "no";
  if ($HostingScheme['IsPHPFastCGIAccess']=='yes') { $ISPConfigPHP = $ISPConfigPHP.",fast-cgi"; }
  if ($HostingScheme['IsPHPCGIAccess']=='yes') { $ISPConfigPHP = $ISPConfigPHP.",cgi"; }
  if ($HostingScheme['IsPHPModAccess']=='yes') { $ISPConfigPHP = $ISPConfigPHP.",mod"; }
//  if ($HostingScheme['']=='yes') { $ISPConfigPHP = $ISPConfigPHP.",suphp"; } #!!! нет в тарифах suphp
  if ($HostingScheme['IsSSIAccess'] == 'yes') { $ISPConfigSSI = 'y'; }else{ $ISPConfigSSI = 'n'; };
  if ($HostingScheme['IsCGIAccess'] == 'yes') { $ISPConfigCGI = 'y'; }else{ $ISPConfigCGI = 'n'; };
//  if ($HostingScheme['']=='yes') { $ISPConfigPerl = 'y'; }else{ $ISPConfigPerl = 'n'; }; # limit_perl
//  if ($HostingScheme['']=='yes') { $ISPConfigRuby = 'y'; }else{ $ISPConfigRuby = 'n'; }; # limit_ruby
//  if ($HostingScheme['']=='yes') { $ISPConfigPython = 'y'; }else{ $ISPConfigPython = 'n'; }; # limit_python
//  if ($HostingScheme['']=='yes') { $ISPConfigSuexec = 'y'; }else{ $ISPConfigSuexec = 'n'; }; #!!! force_suexec
//  if ($HostingScheme['']=='yes') { $ISPConfigHterror = 'y'; }else{ $ISPConfigHterror = 'n'; }; # limit_hterror Custom error docs available
//  if ($HostingScheme['']=='yes') { $ISPConfigWildcard = 'y'; }else{ $ISPConfigWildcard = 'n'; }; # limit_wildcard Wildcard subdomain available
//  if ($HostingScheme['']=='yes') { $ISPConfigBackup = 'y'; }else{ $ISPConfigBackup = 'n'; }; # limit_backup Разрешить резервное копирование
  if ($HostingScheme['IsSSLAccess'] == 'yes') { $ISPConfigSSL = 'y'; }else{ $ISPConfigSSL = 'n'; };
  $Request = Array(
            'contact_name' => $Login,
            'country' => 'RU',
            'default_mailserver' => 1,
            'limit_maildomain' => $HostingScheme['QuotaEmailDomains'], # Почтовые домены
            'limit_mailbox' => $HostingScheme['QuotaEmail'], # Почтовые ящики
            'limit_mailalias' => -1,
            'limit_mailaliasdomain' => -1,
            'limit_mailforward' => $HostingScheme['QuotaEmailForwards'],
            'limit_mailcatchall' => -1,
            'limit_mailrouting' => -1,
            'limit_mailfilter' => -1,
            'limit_fetchmail' => -1,
            'limit_mailquota' => $HostingScheme['QuotaEmailBox'],
            'limit_spamfilter_wblist' => 1,
            'limit_spamfilter_user' => 1,
            'limit_spamfilter_policy' => 1,
            'default_webserver' => 1,
            'limit_web_ip' => '',
            'limit_web_domain' => $HostingScheme['QuotaWWWDomains'], # Домены
            'limit_web_quota' => $HostingScheme['QuotaDisk'], # Диск
            'web_php_options' => $ISPConfigPHP,
            'limit_cgi' => $ISPConfigCGI,
            'limit_ssi' => $ISPConfigSSI,
            'limit_perl' => 'y',
            'limit_ruby' => 'y',
            'limit_python' => 'y',
            'force_suexec' => 'y',
            'limit_hterror' => 'y',
            'limit_wildcard' => 'y',
            'limit_ssl' => $ISPConfigSSL,
            'limit_web_subdomain' => $HostingScheme['QuotaSubDomains'],
            'limit_web_aliasdomain' => $HostingScheme['QuotaParkDomains'], # Кол-во псевдонимов домена
            'limit_ftp_user' => $HostingScheme['QuotaFTP'], # FTP аккаунты
            'limit_shell_user' => 0,
            'ssh_chroot' => 'no',
            'limit_webdav_user' => 0,
            'limit_backup' => 'y',
            'limit_aps' => $HostingScheme['QuotaWebApp'],
            'default_dnsserver' => 1,
            'limit_dns_zone' => $HostingScheme['QuotaWWWDomains'],
            'default_slave_dnsserver' => 1,
            'limit_dns_slave_zone' => $HostingScheme['QuotaWWWDomains'],
            'limit_dns_record' => -1,
            'default_dbserver' => 1,
            'limit_database' => $HostingScheme['QuotaDBs'], # Базы данных
            'limit_database_quota' => -1,
            'limit_cron' => $HostingScheme['QuotaDomains'], # Домены
            'limit_cron_type' => 'full',
            'limit_cron_frequency' => 5,
            'limit_traffic_quota' => $HostingScheme['QuotaTraffic'], # Трафик
            'limit_client' => 0, // If this value is > 0, then the client is a reseller
            'limit_mailmailinglist' => $HostingScheme['QuotaEmailLists'],
            'parent_client_id' => 0,
            'username' => $Login,
            'password' => $Password,
            'language' => 'ru',
            'usertheme' => 'default',
            'template_master' => $HostingScheme['PackageID'],
            'template_additional' => '',
            'created_at' => 0
  );
  $reseller_id = 0; // this id has to be 0 if the client shall not be assigned to admin or if the client is a reseller

   #-----------------------------------------------------------------------------
   # Содаем подключение к панели ISPConfig
   $SoapLocation = SPrintF('%s://%s:%u/remote/index.php',($Settings['Protocol'] == 'ssl')?'https':'http',$Settings['Address'],$Settings['Port']);
   $SoapUri = SPrintF('%s://%s:%u/remote/',($Settings['Protocol'] == 'ssl')?'https':'http',$Settings['Address'],$Settings['Port']);
   $client = new SoapClient(null, array('location' => $SoapLocation,
                                        'uri'      => $SoapUri,
                                        'trace' => 1,
                                        'exceptions' => 1));
   # Открываем сессию на панели ISPConfig
   $session_id = $client->login($Settings['Login'], $Settings['Password']);
   # Отправляем данные в панеь ISPConfig
   try {
      $client->client_add($session_id, $reseller_id, $Request);
      $Response = $client->__getLastResponse();
   } catch (SoapFault $Result) {
      $Response = $client->__getLastResponse();
      $Response = Strip_Tags($Response);
   }

   #-----------------------------------------------------------------------------
   # Закрываем сессию на сервере ISPConfig
   $client->logout($session_id);

   #-----------------------------------------------------------------------------
   # Проверяем ответ панели на ошибку запроса
   if(Preg_Match('/data_processing_error/',$Response)) {
      return new gException('WRONG_ANSWER',$Response);
   }else{
      return TRUE;
   }
}

#-------------------------------------------------------------------------------
# Функция активации клиента в панели ISPConfig
#-------------------------------------------------------------------------------
function ISPConfig_Active($Settings,$Login,$IsReseller = FALSE){
   /****************************************************************************/
   $__args_types = Array('array','string','boolean');
   #-----------------------------------------------------------------------------
   $__args__ = Func_Get_Args(); Eval(FUNCTION_INIT);
   /****************************************************************************/
   $Request = Array(
      'locked' => 'n',
      'canceled' => 'n'
   );
   $reseller_id = 0; // this id has to be 0 if the client shall not be assigned to admin or if the client is a reseller

   #-----------------------------------------------------------------------------
   # Содаем подключение к панели ISPConfig
   $SoapLocation = SPrintF('%s://%s:%u/remote/index.php',($Settings['Protocol'] == 'ssl')?'https':'http',$Settings['Address'],$Settings['Port']);
   $SoapUri = SPrintF('%s://%s:%u/remote/',($Settings['Protocol'] == 'ssl')?'https':'http',$Settings['Address'],$Settings['Port']);
   $client = new SoapClient(null, array('location' => $SoapLocation,
                                     'uri'      => $SoapUri,
                                     'trace' => 1,
                                     'exceptions' => 1));
   # Открываем сессию на сервере ISPConfig
   $session_id = $client->login($Settings['Login'], $Settings['Password']);

   #-----------------------------------------------------------------------------
   # Запрашиваем ID клиента по его Имени пользователя
   try {
      $client->client_get_by_username($session_id, $Login);
      $Response = $client->__getLastResponse();
      $Body = Trim($Response);
      $XML = String_XML_Parse($Body);
      $XML = $XML->ToArray('item');
      $Array = $XML['SOAP-ENV:Envelope']['SOAP-ENV:Body']['ns1:client_get_by_usernameResponse']['return'];
      foreach(Array_Keys($Array) as $Key)
         if ($Array[$Key]['key']=='client_id') break;
      $client_id = $Array[$Key]['value'];
   } catch (SoapFault $Result) {
      $Response = $client->__getLastResponse();
      $Response = Strip_Tags($Response);
   }

   #-----------------------------------------------------------------------------
   # Проверяем ответ панели на ошибку запроса
   if(Preg_Match('/data_processing_error/',$Response)) {
      return new gException('WRONG_ANSWER',$Response);
   }

   #-----------------------------------------------------------------------------
   # Запрашиваем параметры клиента
   try {
      $client->client_get($session_id, $client_id);
      $Response = $client->__getLastResponse();
      $Body = Trim($Response);
      $XML = String_XML_Parse($Body);
      $XML = $XML->ToArray('item');
      $Array = $XML['SOAP-ENV:Envelope']['SOAP-ENV:Body']['ns1:client_getResponse']['return'];
      $ClientData = Array();
      foreach(Array_Keys($Array) as $Key){
         $ClientData[$Array[$Key]['key']] = $Array[$Key]['value'];
      }
      $Request = array_replace($ClientData, $Request);
//      Debug(SPrintF('Данные клиента => %s',print_r($ClientData,true)));
   } catch (SoapFault $Result) {
      $Response = $client->__getLastResponse();
      $Response = Strip_Tags($Response);
   }


   #-----------------------------------------------------------------------------
   # Проверяем ответ панели на ошибку запроса
   if(Preg_Match('/data_processing_error/',$Response)) {
      return new gException('WRONG_ANSWER',$Response);
   }

   #-----------------------------------------------------------------------------
   # Выполняем запрос активации клиента на панели ISPConfig
   try {
      $client->client_update($session_id, $client_id, $reseller_id, $Request);
      $Response = $client->__getLastResponse();
   } catch (SoapFault $Result) {
      $Response = $client->__getLastResponse();
      $Response = Strip_Tags($Response);
   }
//Debug(print_r($Response,true));

   #-----------------------------------------------------------------------------
   # Закрываем сессию на сервере ISPConfig
   $client->logout($session_id);

   #-----------------------------------------------------------------------------
   # Проверяем на ошибку запроса ответ панели
   if(Preg_Match('/data_processing_error/',$Response)) {
      return new gException('WRONG_ANSWER',$Response);
   }else{
      return TRUE;
   }
}

#-------------------------------------------------------------------------------
# Функция блокировки клиента в панели ISPConfig
#-------------------------------------------------------------------------------
function ISPConfig_Suspend($Settings,$Login,$IsReseller = FALSE){
   /****************************************************************************/
   $__args_types = Array('array','string','boolean');
   #-----------------------------------------------------------------------------
   $__args__ = Func_Get_Args(); Eval(FUNCTION_INIT);
   /****************************************************************************/
   $Request = Array(
      'locked' => 'y',
      'canceled' => 'y'
   );
   $reseller_id = 0; // this id has to be 0 if the client shall not be assigned to admin or if the client is a reseller

   #-----------------------------------------------------------------------------
   # Содаем подключение к панели ISPConfig
   $SoapLocation = SPrintF('%s://%s:%u/remote/index.php',($Settings['Protocol'] == 'ssl')?'https':'http',$Settings['Address'],$Settings['Port']);
   $SoapUri = SPrintF('%s://%s:%u/remote/',($Settings['Protocol'] == 'ssl')?'https':'http',$Settings['Address'],$Settings['Port']);
   $client = new SoapClient(null, array('location' => $SoapLocation,
                                     'uri'      => $SoapUri,
                                     'trace' => 1,
                                     'exceptions' => 1));
   # Открываем сессию на сервере ISPConfig
   $session_id = $client->login($Settings['Login'], $Settings['Password']);

   #-----------------------------------------------------------------------------
   # Запрашиваем ID клиента по его Имени пользователя
   try {
      $client->client_get_by_username($session_id, $Login);
      $Response = $client->__getLastResponse();
      $Body = Trim($Response);
      $XML = String_XML_Parse($Body);
      $XML = $XML->ToArray('item');
      $Array = $XML['SOAP-ENV:Envelope']['SOAP-ENV:Body']['ns1:client_get_by_usernameResponse']['return'];
      foreach(Array_Keys($Array) as $Key)
         if ($Array[$Key]['key']=='client_id') break;
      $client_id = $Array[$Key]['value'];
//      Debug(SPrintF('%s => %s',$Array[$Key]['key'],$Array[$Key]['value'],true));
   } catch (SoapFault $Result) {
      $Response = $client->__getLastResponse();
      $Response = Strip_Tags($Response);
   }

   #-----------------------------------------------------------------------------
   # Проверяем ответ панели на ошибку запроса
   if(Preg_Match('/data_processing_error/',$Response)) {
      return new gException('WRONG_ANSWER',$Response);
   }

   #-----------------------------------------------------------------------------
   # Запрашиваем параметры клиента
   try {
      $client->client_get($session_id, $client_id);
      $Response = $client->__getLastResponse();
      $Body = Trim($Response);
      $XML = String_XML_Parse($Body);
      $XML = $XML->ToArray('item');
      $Array = $XML['SOAP-ENV:Envelope']['SOAP-ENV:Body']['ns1:client_getResponse']['return'];
      $ClientData = Array();
      foreach(Array_Keys($Array) as $Key){
         $ClientData[$Array[$Key]['key']] = $Array[$Key]['value'];
      }
      $Request = array_replace($ClientData, $Request);
//      Debug(SPrintF('Данные клиента => %s',print_r($ClientData,true)));
   } catch (SoapFault $Result) {
      $Response = $client->__getLastResponse();
      $Response = Strip_Tags($Response);
   }


   #-----------------------------------------------------------------------------
   # Проверяем ответ панели на ошибку запроса
   if(Preg_Match('/data_processing_error/',$Response)) {
      return new gException('WRONG_ANSWER',$Response);
   }

   #-----------------------------------------------------------------------------
   # Выполняем запрос блокировки клиента на панели ISPConfig
   try {
      $client->client_update($session_id, $client_id, $reseller_id, $Request);
      $Response = $client->__getLastResponse();
   } catch (SoapFault $Result) {
      $Response = $client->__getLastResponse();
      $Response = Strip_Tags($Response);
   }
//Debug(print_r($Response,true));

   #-----------------------------------------------------------------------------
   # Закрываем сессию на сервере ISPConfig
   $client->logout($session_id);

   #-----------------------------------------------------------------------------
   # Проверяем на ошибку запроса ответ панели
   if(Preg_Match('/data_processing_error/',$Response)) {
      return new gException('WRONG_ANSWER',$Response);
   }else{
      return TRUE;
   }
}

#-------------------------------------------------------------------------------
# Функция удаления клиента в панели ISPConfig
#-------------------------------------------------------------------------------
function ISPConfig_Delete($Settings,$Login,$IsReseller = FALSE){
   /****************************************************************************/
   $__args_types = Array('array','string','boolean');
   #-----------------------------------------------------------------------------
   $__args__ = Func_Get_Args(); Eval(FUNCTION_INIT);
   /****************************************************************************/

   #-----------------------------------------------------------------------------
   # Содаем подключение к панели ISPConfig
   $SoapLocation = SPrintF('%s://%s:%u/remote/index.php',($Settings['Protocol'] == 'ssl')?'https':'http',$Settings['Address'],$Settings['Port']);
   $SoapUri = SPrintF('%s://%s:%u/remote/',($Settings['Protocol'] == 'ssl')?'https':'http',$Settings['Address'],$Settings['Port']);
   $client = new SoapClient(null, array('location' => $SoapLocation,
                                     'uri'      => $SoapUri,
                                     'trace' => 1,
                                     'exceptions' => 1));
   # Открываем сессию на сервере ISPConfig
   $session_id = $client->login($Settings['Login'], $Settings['Password']);

   #-----------------------------------------------------------------------------
   # Запрашиваем ID клиента по его Имени пользователя
   try {
      $client->client_get_by_username($session_id, $Login);
      $Response = $client->__getLastResponse();
      $Body = Trim($Response);
      $XML = String_XML_Parse($Body);
      $XML = $XML->ToArray('item');
      $Array = $XML['SOAP-ENV:Envelope']['SOAP-ENV:Body']['ns1:client_get_by_usernameResponse']['return'];
      foreach(Array_Keys($Array) as $Key)
         if ($Array[$Key]['key']=='client_id') break;
      $client_id = $Array[$Key]['value'];
//      Debug(SPrintF('%s => %s',$Array[$Key]['key'],$Array[$Key]['value'],true));
   } catch (SoapFault $Result) {
      $Response = $client->__getLastResponse();
      $Response = Strip_Tags($Response);
   }

   #-----------------------------------------------------------------------------
   # Проверяем ответ панели на ошибку запроса
   if(Preg_Match('/data_processing_error/',$Response)) {
      return new gException('WRONG_ANSWER',$Response);
   }

   #-----------------------------------------------------------------------------
   # Выполняем запрос удаления клиента на панели ISPConfig
   try {
      $client->client_delete($session_id, $client_id);
      $Response = $client->__getLastResponse();
   } catch (SoapFault $Result) {
      $Response = $client->__getLastResponse();
      $Response = Strip_Tags($Response);
   }
//Debug(print_r($Response,true));

   #-----------------------------------------------------------------------------
   # Закрываем сессию на сервере ISPConfig
   $client->logout($session_id);

   #-----------------------------------------------------------------------------
   # Проверяем на ошибку запроса ответ панели
   if(Preg_Match('/data_processing_error/',$Response)) {
      return new gException('WRONG_ANSWER',$Response);
   }else{
      return TRUE;
   }
}
?>

Аватара пользователя
Alex Keda
Сообщения: 2882
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 19 раз

Интеграция с панелью ISPConfig

Сообщение Alex Keda » 2015-02-25 1:26:55

Код: Выделить всё

if ($HostingScheme['IsSSLAccess'] == 'yes') { $ISPConfigSSL = 'y'; }else{ $ISPConfigSSL = 'n'; };

все поля начинающиеся с Is* - принудительно приведены к булевым значениям
т.е. можно написать так:

Код: Выделить всё

$ISPConfigSSL = ($HostingScheme['IsSSLAccess'])?'y':'n';

и даже скобки на самом деле не обязательны... просто так читабельней

Отправлено спустя 1 минуту 25 секунд:
а... вы её дальше юзаете..
можно было прям так и написать вместо

Код: Выделить всё

'limit_ssl' => $ISPConfigSSL,

было бы

Код: Выделить всё

'limit_ssl' => ($HostingScheme['IsSSLAccess'])?'y':'n',


Отправлено спустя 5 минут 4 секунды:

Код: Выделить всё

# Запрашиваем ID клиента по его Имени пользователя

юзается три раза
вынесите в отдельную функцию, в конец либы.
читабельность кода повысится, проще будет понимать.

Код: Выделить всё

# Запрашиваем параметры клиента

два раза - так что тут смотрите сами.
но я бы вынес... большой кусок повторяющегося кода...

Отправлено спустя 1 минуту 27 секунд:

Код: Выделить всё

   # Проверяем ответ панели на ошибку запроса
   if(Preg_Match('/data_processing_error/',$Response)) {
      return new gException('WRONG_ANSWER',$Response);
   }

а можете показать содержимое $Response для случая успешного завершения и для ошибки?
просто у меня чувство что вы плохого набрались в библиотеке типа вебнеймса =))

Отправлено спустя 1 минуту 27 секунд:
блок

Код: Выделить всё

   # Содаем подключение к панели ISPConfig
   $SoapLocation = SPrintF('%s://%s:%u/remote/index.php',($Settings['Protocol'] == 'ssl')?'https':'http',$Settings['Address'],$Settings['Port']);
   $SoapUri = SPrintF('%s://%s:%u/remote/',($Settings['Protocol'] == 'ssl')?'https':'http',$Settings['Address'],$Settings['Port']);
   $client = new SoapClient(null, array('location' => $SoapLocation,
                                     'uri'      => $SoapUri,
                                     'trace' => 1,
                                     'exceptions' => 1));
   # Открываем сессию на сервере ISPConfig
   $session_id = $client->login($Settings['Login'], $Settings['Password']);

тоже можно в отдельную функцию.
из неё вернуть тока $session_id и всё...

Отправлено спустя 1 минуту 59 секунд:
а вообще намана. мне нравится.
так что на критику забейте, если лень =)

P.S. если планируете в релиз включать, который в субботу эту будет, надо xml, надо либу в виде файла.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
alezhen
Сообщения: 119
Зарегистрирован: 2015-02-16 12:22:03
Откуда: Россия
Благодарил (а): 5 раз
Поблагодарили: 1 раз
Контактная информация:

Интеграция с панелью ISPConfig

Сообщение alezhen » 2015-02-25 8:55:30

Alex Keda писал(а):Источник цитаты если планируете в релиз включать

В релиз пока рано. Еще не все реализовано и не все сопли подтерты :) Всегда возмущался, когда бету в релизы пихают.

Отправлено спустя 3 минуты 9 секунд:
Alex Keda писал(а):Источник цитаты # Запрашиваем параметры клиента

два раза - так что тут смотрите сами.


Тут не получится, код в одном месте разный. А остальные вынесу.

Аватара пользователя
Alex Keda
Сообщения: 2882
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 19 раз

Интеграция с панелью ISPConfig

Сообщение Alex Keda » 2015-02-25 9:15:07

Функции, можно передавать параметры ;)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
alezhen
Сообщения: 119
Зарегистрирован: 2015-02-16 12:22:03
Откуда: Россия
Благодарил (а): 5 раз
Поблагодарили: 1 раз
Контактная информация:

Интеграция с панелью ISPConfig

Сообщение alezhen » 2015-02-25 23:32:15

Хочу создать дополнительную услугу типа Доп. дисковое место
Создал типа так:
hdd1.JPG
hdd1.JPG (77.36 КБ) 13790 просмотров

Но не понял насчет действий тут:
hdd2.JPG
hdd2.JPG (38.02 КБ) 13790 просмотров

пролейте свет?


Вернуться в «Запрос улучшений»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей