戊辰人博客

青,取之于蓝而青于蓝;冰,水为之而寒于水。

使用iptables屏蔽垃圾评论实战

日期:2015年11月26日 作者: 分类:运维 阅读:938

在博客后台,每天会拦截大量垃圾评论,但近期的垃圾评论都是下面这样的,同一个IP地址。

使用iptables屏蔽垃圾评论实战

 

查询该IP的详细信息如下:

使用iptables屏蔽垃圾评论实战

 

因为最近的垃圾评论都是这个IP发出的,于是想到利用iptables将这个IP屏蔽掉,思路就是任何从117.26.117.132这个IP来的数据,统统DROP掉,从而防止这个IP来的垃圾评论。

# root权限执行命令
iptables -I INPUT -s 117.26.117.132 -j DROP

在添加该防火墙规则之前,平均10~20分钟左右一条来自117.26.117.132的评论,添加规则之后,到目前为止,评论数没有再增加。

阅读全文…

WordPress上传图片或附件自动重命名的实现方法

日期:2015年11月20日 作者: 分类:编程 阅读:1,109

在使用wordpress发布文章时,经常用到的一个功能就是添加媒体,比如在文章中添加图片或其他格式的附件。那么,问题来了,wordpress在英语环境中使用,文件名一般都是英文,但是对于中文用户来说,经常会碰到文件名是中文的情况。尽管直接上传一个中文名的文件到网站上是没有问题的,但是我们更希望这个文件能在我们上传的时候自动变成英文或数字。

本文将会介绍两个格式的文件命名方法:根据上传的时间命名,如20140101112233.xxx(表示2014年1月1日11时22分33秒上传的,xxx表示文件类型后缀);另一种是将文件名通过md5转码后得到的一个32位字符串,如21232f297a57a5a743894a0e4a801fc3.xxx(原始文件名为admin.xxx)。在自定义的wordpress主题或官方自带的主题中都可以使用这个方法来实现上传文件重命名。

原理

wordpress之所以强大就是因为它给开发者提供了一系列API,使其变得非常灵活。wordpress有一个Filter Functions(过滤器函数):add_filter,使用这个函数来操作wp_handle_upload_prefilter就能实现重命名的功能。

wp_handle_upload_prefilter可以参看wordpress官方文档的说明:

根据上传时间重命名文件

通常情况下,我们每次上传文件的时间都是不同的,即使是批量上传的情况下,也几乎不会出现同一时刻上传了多张图片文件的情况。所以这个方法几乎不会出现重名的文件。

这里需要用到php中的date()函数,完整的代码如下:

add_filter('wp_handle_upload_prefilter', 'custom_upload_filter' );
function custom_upload_filter( $file ){
	$info = pathinfo($file['name']);
	$ext = $info['extension'];
	$filedate = date('YmdHis').rand(10,99);//为了避免时间重复,再加一段2位的随机数
	$file['name'] = $filedate.'.'.$ext;
    return $file;
}

阅读全文…

利用MySQL存储过程分割字符串

日期:2015年11月20日 作者: 分类:数据库 阅读:796

MySQL存储过程可用于分割字符串,现有一段字符串,如:”12,14,17,19″,要把它按逗号(,)分割,然后用于SQL中的 where in 条件查询。

1. 计算可分割成多少个字符串(func_split_strlen)

DELIMITER $$
DROP FUNCTION IF EXISTS `func_split_strlen`$$
CREATE DEFINER=`root`@`localhost` FUNCTION `func_split_strlen`(
    f_string varchar(200),  -- 传入字符串
    f_delimiter varchar(5)  -- 分割符
) RETURNS int(11)
begin
    return 1+( length(f_string) - length(replace(f_string,f_delimiter, '')) );
end $$
DELIMITER ;

2. 拆分字符串函数(func_split)

DELIMITER $$
DROP FUNCTION IF EXISTS `func_split`$$
-- 功能:从 f_string 中以 f_delimiter 提取第 f_order 个字符
CREATE DEFINER=`root`@`localhost` FUNCTION `func_split`(
    f_string varchar(200),   -- 传入字符串
    f_delimiter varchar(5),  -- 分割符
    f_order int              -- 分割
) RETURNS varchar(255) CHARSET utf8  -- 返回字符串
begin
    declare result varchar(255) default '';
    set result = reverse(
        substring_index(
            reverse(substring_index(f_string,f_delimiter,f_order)),
            f_delimiter,
            1
        )
    );
    return result;
end $$
DELIMITER ;

阅读全文…

网站https配置攻略(Apache篇)

日期:2015年11月18日 作者: 分类:运维 阅读:670

本站采用 Nginx 做为本站的web服务软件,关于Nginx的配置参考《网站https配置攻略(Nginx篇)》

关于Apache下https的配置,来源于帮朋友配置服务器时的实践过程,网站效果见 https://webshao.com

什么是https

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。

现在它被广泛用于万维网上安全敏感的通讯,例如网银交易支付方面。现在国内大型网站开启https的有百度和淘宝。

网站https攻略(Nginx篇)

HTTPS和HTTP的区别主要为以下四点:

一、https协议需要到ca申请证书,一般免费证书很少,需要交费。(本站证书使用沃通证书免费版,申请地址:https://buy.wosign.com

二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。

三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

阅读全文…

网站https配置攻略(Nginx篇)

日期:2015年11月18日 作者: 分类:运维 阅读:511

本站采用 Nginx 做为本站的web服务软件,前几天将网站全站开启https了,现在博客全程走https,可以抚慰每个总是担心隐私被人窥窃的强迫症的内心。

本站的配置目标是,无论访问http://wanglu.info 、http://www.wanglu.info 还是 https://www.wanglu.info,全部301跳转到https://wanglu.info

什么是https

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。

现在它被广泛用于万维网上安全敏感的通讯,例如网银交易支付方面。现在国内大型网站开启https的有百度和淘宝。

网站https攻略(Nginx篇)

HTTPS和HTTP的区别主要为以下四点:

一、https协议需要到ca申请证书,一般免费证书很少,需要交费。(本站证书使用沃通证书免费版,申请地址:https://buy.wosign.com

二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。

三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

阅读全文…

戊辰人博客运行一周年

日期:2015年11月11日 作者: 分类:随笔 阅读:1,285

不得不说马云是相当牛逼的,硬生生的将一个普通的日子整成了一个购物狂欢节,引得各大电商互相撕逼。08年时好多人是听过淘宝不知道马云的,那时和范廉洁在讨论马云时我们就说:在未来的十年内,马云会人人皆知的,这个人人皆知不是因为什么名人成功故事,而是因为他所做的事情将会极大的影响我们的生活方式。

去年的双11,经过买服务器、买域名、域名备案、配置服务器、安装博客程序等一系列工作后,于2014年11月11日凌晨正式开始了个人独立博客的不归路。

博客开通后,就开始开发博客前端程序,使用Bootstrap框架,做成了现在的响应式布局界面。因为个人没有使用windows系统,所以博客前端界面没有对IE浏览器做兼容性测试,但在现代浏览器(Chrome、Firefox、Opera、IE10+)和手机浏览器上正常显示是没有问题的。

接着又开始做SEO优化排名(主要做“戊辰人”和“戊辰人博客”两个关键字排名),编写博客文章。因为博客是技术类型的,所以主要以编程和运维相关的技术文章为主。中途发现一个很有意思的事,就是文章中如果说百度坏话,百度就会降低你的排名,醉了!!! 所以有时间的话还是专注技术吧!

阅读全文…

OpenVPN客户端配置

日期:2015年11月9日 作者: 分类:运维 阅读:1,268

说明:本节教程接《企业VPN办公环境搭建(阿里云ECS上搭建OpenVPN服务器)》,本节中相应的文件也来源此文章。

制作OpenVPN配置文件

此处我按照客户端证书生成的方法生成名为uvs-001的证书,然后将ca.crt、uvs-001.crt、uvs-001.key三个文件从服务器下载到本地

openvpn客户端配置

用文本编辑工具创建配置文件uvs-001.ovpn,内容如下

client    # 表示openvpn客户端
dev tun   # 与服务器端的配置对应,之前tun
proto udp # 协议要与服务器端对应,之前为udp协议

# xxx.xxx.xxx.xxx为openvpn server的ip地址,1194为openvpn服务端口
remote xxx.xxx.xxx.xxx 1194

resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
ca ca.crt # 指定服务端证书为当前目录下的ca.crt
cert uvs-001.crt # 指定客户端证书
key uvs-001.key  # 指定客户端key
ns-cert-type server
comp-lzo
verb 3

阅读全文…