我正在尝试使用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),但我似乎无法找到如何使用它。
答案 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);
}
}
希望这有助于将来。