vB·流水账

生命在于折腾。

为emlog 5.x添加https支持

2014-12-25 vibbow

https 支持已集成到Emlog 6.0,以下内容仅适用于Emlog 5.x用户。

在进行修改之前,请先确定服务器已正确配置https。并且备份所有文件,防止遇到兼容性问题。


1. /include/lib/option.php

请将以下内容粘贴到 get function 的 default 判断分支之前 (在Emlog 5.3.1下是第43行)

case 'blogurl':
    return realUrl();
    break;


2. /include/lib/function.base.php

请将以下内容粘贴到文件的末尾

/**
 * 获取当前访问的base url
 */
function realUrl() {
    static $real_url = NULL;
    
    if ($real_url !== NULL) {
        return $real_url;
    }

    $emlog_path = EMLOG_ROOT . DIRECTORY_SEPARATOR;
    $script_path = pathinfo($_SERVER['SCRIPT_NAME'], PATHINFO_DIRNAME);
    $script_path = str_replace('\\', '/', $script_path);
    $path_element = explode('/', $script_path);
    
    $this_match = '';
    $best_match = '';
    
    $current_deep = 0;
    $max_deep = count($path_element);
    
    while($current_deep < $max_deep) {
        $this_match = $this_match . $path_element[$current_deep] . DIRECTORY_SEPARATOR;
        
        if (substr($emlog_path, strlen($this_match) * (-1)) === $this_match) {
            $best_match = $this_match;
        }
        
        $current_deep++;
    }
    
    $best_match = str_replace(DIRECTORY_SEPARATOR, '/', $best_match);
    $real_url  = $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://';
    $real_url .= $_SERVER["SERVER_NAME"];
    $real_url .= in_array($_SERVER['SERVER_PORT'], array(80, 443)) ? '' : ':' . $_SERVER['SERVER_PORT'];
    $real_url .= $best_match;
    
    return $real_url;
}


3. /init.php

请用以下代码覆盖同名的define (在Emlog 5.3.1下是第39行)

define('DYNAMIC_BLOGURL', Option::get("blogurl"));


试试用HTTPS链接访问这篇文章吧:https://vsean.net/blog/post/196

如果你使用的是Emlog 5.3.1,并且没有对源代码做过修改,也可以下载附件里的文件直接覆盖同名文件

下载地址:emlog_https.zip

评论(9) 浏览(5868)

Emlog emoji表情支持 升级补丁

2014-12-21 vibbow

Emlog emoji表情支持 升级补丁。

应用此补丁后,在发表文章/评论/碎语时将可以支持所有的emoji表情。


系统需求:
Emlog 所有版本
MySQL 5.5 或以上版本


补丁安装方法:
将下载下来的文件解压,将emoji_upgrade.php放到emlog根目录后访问一次即可。
在升级完成后请删除emoji_upgrade.php文件。


下载地址:emoji_upgrade.zip


如果还有其他问题,欢迎留言提出。

评论(4) 浏览(2685)

配置Apache服务器双向证书认证

2014-12-21 vibbow

这玩意需要的人应该比较少,不过既然折腾出来了,就发篇文章记录一下吧。

1. 按照这里的配置文件,正确的配置Apache服务器的SSL证书
https://mozilla.github.io/server-side-tls/ssl-config-generator/

(IIS服务器可以用这个: https://www.nartac.com/Products/IISCrypto/


2. 在网站Apache配置文件的VirtualHost内,添加如下内容:

SSLCACertificatePath /etc/ssl/certs
SSLVerifyClient require
SSLVerifyDepth 10
SSLOptions +StdEnvVars


3. 保存配置文件,重启Apache,访问你的网站,这时候就会提示选择一个数字证书(或者提示安全协商失败,如果你电脑里没有任何可用的证书的话)
01.png


4. 以上配置都是假设你客户端的证书是由可信的证书颁发机构颁发的,如果你的客户端证书不是由可信的证书颁发机构颁发的,那么依然会被服务器拒绝。你可以按照这篇文章的教程来将你自己生成的CA证书添加到系统证书列表里: http://wiki.cacert.org/ApacheServerClientCertificateAuthentication

如果你看不懂英文,没关系,简单来说就是这样:
1. 把你的证书扔到服务器的一个地方
2. 用openssl来计算出你证书的hash值: openssl x509 -noout -hash < YOURCA.crt
3. 上一步会返回一个类似 12ab34cd 的结果,记下这个数字
4. 进入 /etc/ssl/certs 目录,使用以下命令创建一个到CA证书的软链接
ln -s /path/of/your/ca.cert 12ab34cd.0
这里的 /path/of/your/ca.cert 就是你CA证书的路径,12abcd34就是你在第二步得到的结果。请注意,文件名后面还有个 .0 [点零],这个千万不要忘了。
5. 重启一下Apache,再试着用你自己生成的证书验证一下,应该就OK了~


在PHP里查看客户端证书信息:
当你使用了客户端证书进行双向认证时,相应的客户端证书信息也可以通过$_SERVER变量来获取,$_SERVER里以 SSL_CLIENT_ 开头的值均为客户端证书的信息。


使用硬件数字证书:
你也可以使用硬件设备来保存你的数字证书,比如说智能卡或者USB智能卡(银行的U盾就是这玩意)
我个人使用的是 飞天诚信的 ePass3003Auto,完美支持 IE / Firefox / Chrome
具体产品信息见这里: http://www.ftsafe.com.cn/products/epass/ePass3000set/ePass3003Auto

评论(0) 浏览(4638)

Emlog小插件一个:在网页底部显示服务器耗时

2014-12-21 vibbow

RT,应该不用再怎么描述了。效果直接看网页底部就好了...

下载地址:runtime.zip

评论(2) 浏览(2137)

SYSTEM进程和系统中断占满一个CPU核心的解决方案之一

2014-12-21 vibbow

以下内容适用于:

1. 你的电脑有Intel有线网卡
2. 即使你什么都不干,SYSTEM进程系统中断都要占满一个CPU核心
01.png
3. 点开SYSTEM进程,查看线程模块,显示 ACPI.sys+0x1af7 或者 ACPI.sys!ACPIWorkerThread 占用了很多的CPU
02.png


如果你的电脑符合上述条件,那么你可能是Intel网卡的受害者。


解决方案如下:

进入设备管理器,找到你的有线网卡(Intel 82579LM 或者 Intel I217-LM 或者更早的其他型号),双击打开属性,切换到“电源选项”选项卡。取消勾选“网络唤醒”下的“唤醒魔包”和“唤醒模式匹配”选项。
03.png

点击确定保存,有线网络会中断一下,然后SYSTEM进程的CPU占用瞬间回复正常。


尼玛这个问题困扰了我好几年了,现在终于找到方法解决了!!!!!!
如果你需要使用网络唤醒功能,那么请跟Intel投诉来解决这个问题。


总结:
Intel的网卡很烂
有线网卡烂,啥都不干都会占用那么多CPU!
无线网卡也很烂,成天掉线,还有路由器兼容性问题!

评论(0) 浏览(3567)