【发布时间】:2012-06-02 04:53:17
【问题描述】:
我想自给自足,因此不使用 DNSDynamic 和 DYNDNS 等服务。而且我不喜欢为我可以自己做的服务付费。
这就是场景 - 我的主要网站由托管公司托管。我还有一个家庭服务器,上面有我的音乐等。但问题是我的 ISP (BT) 不向消费者提供静态 IP 地址。
我想让我的主域(指向我的主主机)的子域指向我的家庭 IP。这是通过一个简单的 A 记录完成的 - 我自己完成了。
这归结为我想要制作一个 PHP 脚本(由我的家庭服务器上的 cron 作业运行)以将 cPanel 中的 A 记录更新为我的家庭服务器的当前 IP。
这是一些示例代码 - 当然,缺少的部分是与 cPanel 通信的 API 代码,我非常感谢任何可以为我填补空白的人。
<?php
$current_ip = file_get_contents("http://mydomain.com/getip.php");
$username = "CPANEL_USERNAME";
$password = "CPANEL_PASSWORD";
$domain = "CPANEL_DOMAIN";
$request = file_get_contents("http://someapipage?username=".$username."&pw=".$password."&domain=".$domain."&ip=".$current_ip);
?>
http://mydomain.com/getip.php 中的代码很简单
<?php echo $_SERVER["REMOTE_ADDR"]; ?>
我已经掌握了如何设置 cron 作业,因为我的家庭服务器正在运行 Ubuntu,并且我已经阅读了使用 wget 在我的 localhost 目录中调用我的 cron.php 的教程。
我试过this link,但我无法理解他在做什么。提前致谢。
【问题讨论】:
-
我们可以在 jordih.net 上看到您尝试实现该方法的代码吗?
-
请记住,(afaik)每次您的 DNS 地址更改时,您都必须等待 TTL 过期,然后才能在全球范围内反映更改。出于这个原因,我应该认为动态 DNS 服务器的 TTL 会非常低。
-
@halfer 感谢您的指点 - 问题是 jordih.net 上的代码没有真正解释,并且有大量没有定义的变量;所以我真的不知道从哪里开始。
-
嗯,应该是
$CPANEL_DOMAIN = 'https://mydomain.com:2083/';(用于安全访问)和$core_domain = 'mydomain.com';加上第一块代码。试试print_r($response); ?>看看你得到了什么,并引导你完成剩下的工作。缺少的一件事是对 cPanel 系统的身份验证——您可能需要登录、获取 cookie 并将其提供给未来的调用。这需要向file_get_contents提供“上下文”,而这又需要进行一些研究! -
如果端口 2083 顺便说一句不起作用,请尝试使用简单的 http 使用 2082 - 这会使您的会话不加密,但可能更容易开始工作。