PHP版本 D-Link 动态域名客户端
<?php
/*
* D-Link 动态域名客户端.主域名www.dlinkddns.com 和 www.dlinkddns.com.cn
* 首先获取外网IP,若IP没有变化,则结束运行;否则更行域名的IP,若执行错误,则发送EMAIL.
* 用到了 CURL 扩展
* 2013.5.28
*/
// 获取外网 IP
$ipurl = 'http://iframe.ip138.com/ic.asp';
$ip = get_onlineip($ipurl);
//$ip = '14.134.204.99';
$iplog = dirname(__FILE__) . '\ip.txt';
// 域名账号设定
$domain = 'dlinkddns.com.cn';
$host = 'lpszy';
$user = 'tom112';
$pw = 'PASSWORD';
// 邮件账号设定
$smtp = array(
'url' => 'smtp.sina.com', //发件箱服务器
'port' => '25',
'username' => 'safeboat@sina.com', //发件箱账号
'password' => 'PASSWORD', //发件箱密码
'from' => 'safeboat@sina.com',
'to' => '395636344@qq.com', //接收信箱
'subject' => '请更新 '.$host.'.'.$domain.' 的IP',
'body' => $ip,
);
if(file_exists($iplog) == false) file_put_contents($iplog, '');
$oldip = file_get_contents($iplog);
if($oldip == $ip){
echo "IP 没有变化";
exit();
}
file_put_contents($iplog, $ip);
$cookie_file = dirname(__FILE__) . "/cookie_" . md5(basename(__FILE__)) . ".txt";
vlogin('http://www.'.$domain.'/login', 'username=' . $user . '&pw=' . $pw);
$response_body = vlogin('http://www.'.$domain.'/host/'.$host.'.'.$domain, 'modify='.$host.'&host='.$host.'&domain='.$domain.'&ip='.$ip.'&commit=%E4%BF%9D+++%E5%AD%98');
header("Content-type: text/html; charset=gb2312");
if(stristr($response_body, 'updated')){
@unlink($cookie_file);
echo "域名IP已更新.";
exit();
}
@unlink($cookie_file);
echo "提交的账号、域名或IP错误,或者是服务器更新了参数等原因。\r\n";
echo '<br>稍后将发送IP到你的邮箱,请手动更新<br><br> ';
echo '一下是发邮件过程:<br>';
echo '<pre>' . smtp($smtp) . '</pre>';
//下面为函数部分
function get_onlineip($ipurl){
$ch = curl_init($ipurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$a = curl_exec($ch);
preg_match('/\[(.*)\]/', $a, $ip);
return @$ip[1];
}
function vlogin($url, $data){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, @$data);
curl_setopt($curl, CURLOPT_COOKIEJAR, $GLOBALS['cookie_file']);
curl_setopt($curl, CURLOPT_COOKIEFILE, $GLOBALS['cookie_file']);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$tmpInfo = curl_exec($curl);
if (curl_errno($curl)){
echo 'Errno' . curl_error($curl);
}
curl_close($curl);
return $tmpInfo;
}
function smtp($smtp){
$CRLF = "\r\n";
$header = array(
'Return-path' => '<' . $smtp['from'] . '>',
'Date' => date('r'),
'From' => '<' . $smtp['from'] . '>',
'MIME-Version' => '1.0',
'Subject' => trim($smtp['subject']),
'To' => $smtp['to'],
'Content-Type' => 'text/plain; charset=gb2312',
'Content-Transfer-Encoding' => 'base64'
);
$ret = '';
foreach($header as $k => $v){
$ret .= $k . ': ' . $v . "\n";
}
$data = $ret . $CRLF . chunk_split(base64_encode($smtp['body']));
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $smtp['url']);
curl_setopt($curl, CURLOPT_PORT, $smtp['port']);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
$content = "EHLO " . $smtp["url"] . $CRLF;
$content .= "AUTH LOGIN" . $CRLF . base64_encode($smtp["username"]) . $CRLF . base64_encode($smtp["password"]) . $CRLF;
$content .= "MAIL FROM:" . $smtp["from"] . $CRLF;
$content .= "RCPT TO:" . $smtp["to"] . $CRLF;
$content .= "DATA" . $CRLF . $data . $CRLF . "." . $CRLF;
$content .= "QUIT" . $CRLF;
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $content);
curl_exec($curl);
curl_close($curl);
return $content;
}
?>
PHP版本 D-Link 动态域名客户端的更多相关文章
- Linux纯Shell实现DNSPod动态域名
http://www.anrip.com/post/872 开发背景: 公司有台嵌入式拨号上网设备,内置busybox和完整wget命令(支持https协议),但没有curl.python.ruby. ...
- 基于etcd插件的CoreDNS动态域名添加
前提条件:已经有一个可用的etcd环境. 一.CoreDNS简介 CoreDNS是一个DNS服务器,和Caddy Server具有相同的模型:它链接插件.CoreDNS是云本土计算基金会启动阶段项目. ...
- CXF 动态创建客户端调用稳定版本号为2.7.18
今天用动态创建客户端的方式调用webservice,报了这样一个错: 2017-01-05 20:51:46,029 DEBUG main org.apache.cxf.common.logging. ...
- dnspod 动态域名的使用。openwrt使用dnspod动态域名解析。
这里主要说的是linux shell下的使用. 先看接口说明: 接口地址: https://dnsapi.cn/Record.Ddns HTTP请求方式: POST 请求参数: 公共参数 domain ...
- CXF 调用方式——动态创建客户端(调用稳定版本号为2.7.18)
今天用动态创建客户端的方式调用webservice,报了这样一个错: 2017-01-05 20:51:46,029 DEBUG main org.apache.cxf.common.logging. ...
- rhel7+apache+c cgi+动态域名实现web访问
1. 申请动态域名/安装no-ip客户端 https://blog.csdn.net/lee244868149/article/details/44095835 2. yum安装httpd 两种方法安 ...
- 教程:动手用自己电脑搭建一个网站 (nat123 花生壳 动态域名 个人电脑做服务器)
先ps一下..今晚试了N种方法,终于找到一个靠谱 免费 好用的方法,来改装自己电脑成为服务器,在外网也能通过域名访问了!!! 需要准备的东西: Tomcat:这个是web容器,其实有了这个就已经让电脑 ...
- RPi 2B DDNS 动态域名
/**************************************************************************** * RPi 2B DDNS 动态域名 * 说 ...
- dnspod动态域名使用感受
继花生壳不能用之后,3322也开始不太好用了,首先就是360把所有3322的域名全部判定为危险域名,甚至拦截程序对于3322url的api请求. 所以想把3322换成我们自己的独立域名,但是3322他 ...
随机推荐
- spring xml配置文件根元素(文件头文件)说明
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- VC眼中的众筹平台:将改变VC募集基金方式,成为下一个纳斯达克市场
“一个好的投资平台可能会成为像纳斯达克一样的市场”,这是投资人给予众筹平台的未来憧憬. ”从长远的角度来说,众筹平台可能会改变VC募集基金的方式“,戈壁投资合伙人蒋涛说,“从二级市场看,不论是企业的I ...
- centos中mysql 安装以及配置,建库
1.检测系统内部有没有安装其他的mysql数据库 rpm -qa | grep mysql 然后如果有的话删除这些mysql yum remove 查出来的所有名字 2.彻底删除系统中mysql的目录 ...
- C# Aspose.Cells 使用汇总
Workbook workbook = new Workbook(); //工作簿 Worksheet sheet = workbook.Worksheets[0]; //工作表 Cells cell ...
- python code 1_username registration & login
This tiny program consists of 2 parts - registration and login. In the part of registration, the key ...
- webp学习http://isux.tencent.com/introduction-of-webp.html
http://isux.tencent.com/introduction-of-webp.html http://jingyan.baidu.com/article/2d5afd699cd7de85a ...
- [DLX反复覆盖] hdu 2828 Lamp
题意: 有N个灯M个开关 每一个灯的ON和OFF状态都能控制一个灯是否亮 给出N行,代表对于每一个灯 哪些开关的哪个状态能够使得第i个灯亮 思路: 这里须要注意一个问题 假设开关1的ON 状态和开关2 ...
- 41.Node.js使用cnpm
转自:http://www.runoob.com/nodejs/nodejs-tutorial.html npm是Node.js中维护第三方库.模块的工具,但是国外的速度很悲剧,这里有一个中国的源cn ...
- Java的IO流架构
输入输出是指应用程序与外部设备及其他计算机进行数据交流的操作,如读写硬盘数据.向显示器输出数据.通过网络读取其他节点的数据等.任何一种编程语言必须拥有输入输出的处理方式,Java语言也不例外.Java ...
- HDU 4731 Minimum palindrome 打表找规律
http://acm.hdu.edu.cn/showproblem.php?pid=4731 就做了两道...也就这题还能发博客了...虽然也是水题 先暴力DFS打表找规律...发现4个一组循环节.. ...