在Raspberry Pi使用DNSPod搭建DDNS服务

DDNS(Dynamic Domain Name Server)是动态域名服务的缩写,DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析。 提供DDNS的服务商有:花生壳、DynDNS。不少路由内置都有支持这两个DDNS的,注册个帐号配置一下就可以用了。 DynDNS提供的DDNS最稳定,但2年前突然邮费了。花生壳也有免费的DDNS,但是非常不稳定。 鉴于DNSPod提供有完善API(https://support.dnspod.cn/Support/api),可以直接写个脚本调用API更新地址。DNSPod API介绍页也提供了不少第三方写的DDNS脚本。不过没有PERL的,所以就自己写了一个。 #!/usr/bin/perl use strict; use warnings; require “/home/lemontv/ddns/Browser.pm”; use JSON; use Data::Dumper; my $login; $login->{“email”} = ‘[email protected]’; $login->{“password”} = ‘yourpassword’; $login->{“format”} = ‘json’; my $domain; $domain->{“name”} = “yourdomain.com”; $domain->{“record”}->{“name”} = “home”; my $url; $url->{“domain_list”} = “https://dnsapi.cn/Domain.List”; $url->{“record_list”} = “https://dnsapi.cn/Record.List”; $url->{“record_ddns”} = “https://dnsapi.cn/Record.Ddns”; my $browser = new Browser(); my…

Continue reading →

个性域名邮箱

如果使用独立服务器,可以搭建邮件服务,然后就可以使用独立域名的邮箱了。但考虑到数据安全、稳定的话,使用自己的邮件服务并不是一个好的解决方案。目前大部分邮件提供商都有提供免费的企业邮箱服务,个人用户只要去申请一个,配置一下就可以使用了。 谷歌:http://www.google.com/enterprise/apps/business/ 网易:http://ym.163.com/ 腾讯:http://cnc.exmail.qq.com/ 新浪:http://exmail.sina.com.cn/ 根据需求选用某提供商后注册完毕后,修改DNS的MX字段,就可以使用个性域名作为邮箱了。example:[email protected]

Continue reading →

jQuery实现带数字导航的图片轮转切换

网站制作经常会用到图片轮转特效,过去普遍使用的是flash实现,现在可以使用jQuery很轻松的实现这一功能。 Demo演示页面 这里使用的是jqFancyTransition,首先在html头部加入jQuery和jqFancyTransitions <script src=”jquery-1.7.2.min.js”></script> <script src=”jqFancyTransitions.1.8.js”></script> 按一下结构放置图片和链接 <div style=”width: 940px; margin: auto;”> <div id=”slideshow”> <img src=”1.png” alt=”img1″ /> <img src=”2.png” alt=”img2″ /> <img src=”3.png” alt=”img3″ /> <img src=”4.png” alt=”img4″ /> </div> </div> 最后调用jqFancyTransition实现图片轮转功能 $(document).ready( function(){ $(‘#slideshow’).jqFancyTransitions({ width: 940, height: 300, navigation: true, effect:’curtain’, inks: true }); }); 由于jqFancyTransition自带的数字导航过于简陋,小小的修正了一下css代码,使其稍稍美观了一些。 .ft-button-slideshow { color: #000; background-color: #fff;…

Continue reading →

在codeigniter中使用ueditor

最近写了个小型CMS,方便二次开发用,在项目中使用ueditor作为富文本框录入文章内容。使用中遇到以下小问题: 背景图片消失 在IE6或低版本IE中使用ueditor会出现背景图片消失,这是ueditor中的autoFloatEnabled造成的。 解决办法:在editor_config.js文件中的318行,把autoFloatEnabled设置为false可以解决该问题。 样式失效 ueditor设置文字样式失效,由于codeigniter 2.1.1中开启xss过滤后,会全局过滤标签中出现的style代码,导致富文本框格式化的文字失效。 解决办法:在文件system/core/security中,修改function _remove_evil_attributes (604行), $evil_attributes = array(‘on\w*’, ‘style’, ‘xmlns’); 修改为: $evil_attributes = array(‘on\w*’, ‘xmlns’); 无法添加视频 ueditor中添加优酷、土豆等视频后,直接出现代码,无法正常出现视频播放组件,还是同样由于codeigniter 2.1.1中xss过滤函数,把<embed>标签转义掉了。 解决办法: 解决办法:在文件system/core/security中,删除$naughty(427行)中的embed标签。

Continue reading →

cx_Freeze

perl的跨平台性不是很好,特别是Win32::SerialPort不支持64位win7。sencld需要一个proxy来发送数据,所以最近转学python去了,为了方便其他人使用,需要封装python3代码为exe格式。py2exe只支持python2.x的,而cx_Freeze支持python2.x和python3.x,还能跨平台,并且分别有32位和64位的安装包。 cxfreeze项目地址:http://cx-freeze.sourceforge.net/ 安装时候需要注意,如果Python不是按照默认路径安装,需要选择对路径,并且安装完之后,直接运行cx_Freeze会提示错误信息:“系统找不到指定的路径。”,cx_Freeze在Python安装目录下的script目录中,用记事本打开cxfreeze.bat可以发现,其中的python路径是错误的,需要手动修改为正确的路径。 使用方法一: 直接使用cxfreeze script进行封装 cxfreeze hello.py –target-dir dist 这是最简单的使用方法。 使用方法二: 使用distutils setup script进行封装,需要写一个python脚本,进行定制化封装。 import sys from cx_Freeze import setup, Executable # Dependencies are automatically detected, but it might need fine tuning. build_exe_options = {&quot;packages&quot;: [&quot;os&quot;], &quot;excludes&quot;: [&quot;tkinter&quot;]} # GUI applications require a different base on Windows (the default is for a # console…

Continue reading →

站点监控

在监控宝注册了站点监控服务,天天给我发email报告站点下线。无奈只好发了个tk询问原因,客服回复说网络一直木有问题。只要写个小的监控程序丢服务器跑着,看看是否是真的是服务器掉线。 找了一下perl的ping模块,最终选了Net::Ping,因为可以记录响应时间。使用Sqlite数据库保存数据,用highcharts绘制时间的折线图。 以下为相关代码: alive.pl收集特定几个站点的ping响应时间,使用cron定时执行。 #!/usr/bin/perl use strict; use warnings; use DBI; use Net::Ping; my $dbh = DBI-&gt;connect(&quot;dbi:SQLite:dbname=alive.db&quot;,&quot;&quot;,&quot;&quot;); my $dbconn = $dbh-&gt;prepare(&quot;SELECT * FROM host&quot;); $dbconn-&gt;execute(); my @domains; while (my @row_ary = $dbconn-&gt;fetchrow_array) { my ($id, $domain) = @row_ary; push(@domains, $domain); } my $p = Net::Ping-&gt;new(&quot;icmp&quot;, 5);; $p-&gt;hires(); foreach my $domain (@domains) { my ($ret, $rtt,…

Continue reading →