PHP DirectAdmin API获取域和域指针

时间:2017-11-22 14:05:05

标签: php api directadmin

我正在尝试使用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​​登录”(https://www.directadmin.com/api.html),但我似乎无法找到如何使用它。

1 个答案:

答案 0 :(得分: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);
    }
}

希望这有助于将来。