2017-11-22 5 views
0

DirectAdmin APIを使用してドメインポインタを含むすべてのドメインを一覧表示しようとしています。私は現在、次のコードを持っている:PHP DirectAdmin APIはドメインとドメインポインタを取得します

//list users 
$sock->query('/CMD_API_SHOW_USERS'); 
$users=$sock->fetch_parsed_body(); 

foreach($users['list'] as $user) { 
    //get domains for user 
    $sock->query(
     '/CMD_API_SHOW_USER_DOMAINS', 
     array(
      'user'=>$user 
     ) 
    ); 

    $domains=$sock->fetch_parsed_body(); 

    echo str_replace('_', '.', $domain).'<br>'; 

    //print_r($domains); 

    foreach($domains as $domain=>$data) { 
     //get domain pointers for domain 
     $sock->query(
      '/CMD_API_DOMAIN_POINTER', 
      array(
       'domain'=>str_replace('_', '.', $domain) 
      ) 
     ); 

     $domain_pointers=$sock->fetch_parsed_body(); 

     print_r($domain_pointers); 
    } 
} 

CMD_API_DOMAIN_POINTERコマンドは、しかし、唯一の「あなたは、そのドメインを所有していない」「あなたの要求を実行できませんでした」と返します。

これは正しい方法ですか?

私はAPIで "Login-as"を見つけました "(https://www.directadmin.com/api.html)、私はこれでどのように動作するのかわかりません。

答えて

0

これは移動するための方法である:

include_once 'httpsocket.php'; 

$sock=new HTTPSocket; 
$sock->connect('ssl://fqdn', 2222); 
$sock->set_login('admin', 'pass'); 

//list users 
$sock->query('/CMD_API_SHOW_USERS'); 
$users=$sock->fetch_parsed_body(); 

foreach($users['list'] as $user) { 
    //get domains for user 
    $sock->query(
     '/CMD_API_SHOW_USER_DOMAINS', 
     array(
      'user'=>$user 
     ) 
    ); 

$domains=$sock->fetch_parsed_body(); 

echo str_replace('_', '.', $domain).'<br>'; 

//print_r($domains); 

$sock2=new HTTPSocket; 
$sock2->connect('ssl://fqdn', 2222); 
$sock2->set_login('admin|'.$user, 'pass'); 

    foreach($domains as $domain=>$data) { 
     //get domain pointers for domain 
     $sock2->query(
      '/CMD_API_DOMAIN_POINTER', 
      array(
       'domain'=>str_replace('_', '.', $domain) 
      ) 
     ); 

     $domain_pointers=$sock2->fetch_parsed_body(); 

     print_r($domain_pointers); 
    } 
} 

が、これは将来的に誰かに役立ちます願っています。

関連する問題