分类 web相关 下的文章

编译potty

之前"通过Obfuscated ssh避免时不时ssh连接不畅的问题",有人留言说在http://virustotal.com上有三款软件有误报的情况,对这个编译版本不太放心。那就自己编译好。

potty是对putty6.1的修改,使用了openssl的静态库编译的。官方版本是用vs2008编译的,下面以vs2010为例说明一下编译操作步骤。

下载potty源码。

http://www.mrhinkydink.com/potty.htm下载一份potty的windows下的源码。解压到z:\potty目录下。

下载openssl源码。

http://www.openssl.org/source/下载一份openssl。解压到z:\potty\openssl目录下。

安装Perl。

http://www.activestate.com/activeperl/downloads上下载一个perl的最新版本,安装到C盘上,注意安装时要允许加入到系统path路径中。

设置编译环境

开一个cmd窗口,切换到z:\potty\openssl目录下。运行设置vc运行环境的批处理命令vcvarsall.bat

z:\potty\openssl>c:\DevTools\MVS10\vc\vcvarsall.bat
会出现:
Setting environment for using Microsoft Visual Studio 2010 x86 tools.

再检查一下perl是否已装好:

z:\potty\openssl>perl -version

会出现类似:

This is perl 5, version 16, subversion 1 (v5.16.1) built for MSWin32-x86-multi-thread(with 1 registered patch, see perl -V for more detail)

Copyright 1987-2012, Larry Wall

这就说明perl安装好了。

编译OpenSSL。

首先创建各种Makefile。运行:

z:\potty\openssl>perl Configure VC-WIN32 no-asm --prefix=z:\potty\openssl

再运行:

ms\do_ms

开始编译OpenSSL:

nmake -f ms\nt.mak

运行测试用例,检查编译结果是否正确:

nmake -f ms\nt.mak test

输出结果的最后出现:

passed all tests

就说明一切正常。

编译potty

运行VS2010,打开

Z:\potty\WINDOWS\MSVC\PoTTy61.sln

会提示你升级工程文件,升完级后,设置potty项目,在

C/C++ --> General --> Additional Include Directoryies

中加入

Z:\potty\openssl\inc32

Linker --> General --> Additional Library Directories

中加入

Z:\potty\openssl\out32

Linker --> Input --> Additional Dependencies

中的

bufferoverflowu.lib

去掉,这是较低版本的SDK中才需要的一个库,VS2005之后就不需要这个库了。

然后Build,一切顺利的话,就可以看到

z:\potty\WINDOWS\MSVC\potty\Release\potty.exe

以上就是编译全过程。

上面的编译过程中并没有对OpenSSL做什么优化,有时间的话,也可以使用汇编来编译OpenSSL,或对编译参数调整一下,得到针对新cpu优化编译结果。

经测试,我编译的potty工作正常。

最后,上面我编译的potty上传到virusTotal上,检查,发现只有一个误报。

再论FarBox

因为感兴趣,所以再写点关于FarBox的想法吧。

FarBox现在还处于测试阶段,并没有公开一个RoadMap,FarBox的开发团队在按自己的想法先做出一个原型,再不断的改进-->重构-->改进。

作为普通用户,选择FarBox建站会关心哪些问题呢?

首先,自然是墙的问题。

尽管做站的大多数人与政治和色情无关,但作为选择了Hard模式,被投放到大陆区的人们来说,墙真是一个不可回避的问题。还好,查看一下FarBox的技术实现说明:我们的Web开发与部署国外的服务器,我们这样优化访问速度,就可以估计出来,这个是可以解决的。

墙现在不再动不动封ip了,要封基本上是封域名,当然,嗅探到某些关键字样也是会拦一下的。

所以,FarBox上的站,因为都是CNAME方式域名托管,只要FarBox团队控制住网站内容,最多就是某些用户的域名被封,甚至当ip被封,也很容易上一个新的,而用户根本就不用改设置。

而且当用户数量上来后,可以不断增加FarBox应用前端的CDN,甚至遍布全球。

所以普通用户基本上不用担心,就算发生了,farbox团队来考虑负责解决;-)

其次,用户管理后台。

从最初的完全“摸黑”管理,到今天有了基本的所管理网站列表显示,可以设想,今后后台的内容会更丰富,也会更智能。

设想一下应该会有哪些功能吧:

  1. 像“FarBox的建站过程”一文中“绑定设置网站域名”,也许应该在后台直接设置一下即可,类似domains.config的文件完全可以自动创建并由后台维护。
  2. 后台会有一个类似http://www.ostools.net/markdown的在线内容编辑器。这样至少一篇文章的一些写作规则的基本信息就不用再手工去填写在文章最前面了,让用户专心写内容就好。
  3. 后台权限管理。
  4. 模板的后台选择管理设置。
  5. 常用评论系统的添加维护。
  6. 网站生效或刷新状态剩余时间的显示,或者加一个刷新申请功能。
  7. 收费状态的明细

简单想一想,一些收费功能点似乎都呼之欲出了。

再次,就是文档

文档一定要及时更新,容易看错的地方更要写得清晰一点,一些表达要前后一致。多一点示例,或者视频。

最后,网站更丰富的表现方式。

这就与模板功能的实现相关了,从微薄来看FarBox正在做新的模板功能。同样,大家需要更多的示例,因为用户自定义模板一般都是使用示例模板改吧改吧就出来了;-) 所以多一点不同的示例,也能让用户更方便。丰富的示例,也能表现FarBox提供的并不只是提供一个静态网站那么简单的事。

当然,以上仅是我个人的扯蛋瞎想,与FarBox官方毫无关系。不过可以预想,只要FarBox突破了收入的“黑障期”,一定会前途光明。

FarBox的建站过程

出于对FarBox的实现思路的认同,在浅浅尝试了一下之后,现在终于又抽出空来实际使用一下了。

前几天的一个凌晨,看到FarBox后,立即试用了,并写了篇简介:FarBox--另类有趣的网站服务。当时最主要的是了解其思路,因为看了一遍文档,发现当时文档还很简单,写出来的功能基本上只是比github,bitbucket提供的静态网页服务功能强点。今天再次看了一遍文档,发现文档已经丰富了很多,这种另类网站“托管”服务的潜力和威力逐渐体现出来了。

使用FarBox建站的步骤并不复杂。这里描述一下。更详细的说明可以参考“FarBox帮助&开发文档”。

  1. 自己注册域名。

    在域名的NS解析中,将域名CNAME到park.farbox.com上。如果没有自己的域名,或只想试一下,可以忽略这一步,在后面直接使用类似xxxx.farbox.com的域名,其中xxxx只要大于三个字母,而且没有别人占用就可以了。

  2. 自己申请一个金山快盘Dropbox帐号。

    我们基本上不用考虑选择哪个网盘会更快一点。访问速度的优化交给FarBox去考虑;-) 不过,现在FarBox的服务器在日本,所以虽然使用哪一个网盘理论上都差不多,但是日本访问美国的线路更加稳定一些,日本到大陆的线路时不时会抽抽风,而且一般在晚上访问延迟会大很多。

    当然,大陆访问金山快盘的速度一般要快过Dropbox,而且不会担心被“那个啥墙”干扰。

  3. 通过你的网盘帐号登录farbox

    会有个提示问你是否同意授权给farbox访问你的网盘,选择同意即可。farbox只能访问类似app/farbox目录下的内容,所以你不把敏感文件放在这个目录下,你的网盘其它目录下的内容是不会有泄漏危险的。

    登录并授权后,farbox会给你建立一个演示网站,比如dropbox-83042029.farbox.com。你可以稍等后,访问这个演示站查看效果了。

  4. 绑定设置网站域名

    FarBox提供了三种绑定域名的方法。这部分FarBox设计得不太简洁,文档也写得有点乱。我不建议使用前两种,FarBox在这部分的处理可以说是在给自己找麻烦,也增加了混乱的可能。

    我建议还是建立一个app/farbox/domains.config,在这个文件中维护自己帐号下的网站。比如我们想使用一个二级域名“mosir.farbox.com”和一个顶级域名“mosir.org”,那么我们可以先在本地网盘的app/farbox目录下建立以下两个目录:



    mosir.farbox.com

    mosir.org



    再建立domains.conf,格式是一个站一行,一行中分别包括“目录”、“网站名称”和“域名”,每部分的间隔可以用“空格+-->”,其内容应该如下:

    mosir.farbox.com --> mosir's demo site at farbox --> mosir.farbox.com
    
    mosir.org --> mosir's site --> mosir.org
    


    保存文件上传完成后,尝试访问你的网站吧。如果出现403,请等待5~15分钟再试,farbox同步你的网站需要时间。虽然什么内容都还没写,但至少一个有着缺省模板的网站就会出现了。如果还是403,请删除本地浏览器中的cookie缓存,重新登录一次,这里farbox没有登出功能,所以......

    不过可能因为还处于测试阶段,farbox的同步功能有时会失效,那就得等到其功能恢复后才能看到效果了。

  5. 开始写作

    参考“写作规则”,开始写作吧。文件直接保存在本地网盘的app/farbox/mosir.org目录下,等同步完成,访问mosir.org就可以看到网站自动更新后的内容了。

  6. 进阶用法

    基本功能掌握后,就可以考虑查看FarBox帮助&开发文档,学习使用自定义模板、文章分类、添加评论系统、查询等功能了。

FarBox基本上每天都在更新,文档也在不断更新完善,尤其是进阶用法中的功能,在正式版发布之前可能还会有较大变动,感兴趣的可以关注一下开发者的微薄或不定期留意一下文档的更新。

FarBox--另类有趣的网站服务

有个属于“少数人”的Geek创建一个FarBox的网站,试图让互联网上的那些“少数人”改善互联网生活。

一般来说,享受互联网生活的人总会有个个人博客,而且往往最开始会使用一些公共博客服务,后来就开始想要使用自己的域名空间。

于是:

  • 学习建站的必要知识
  • 购买域名
  • 购买网站空间
  • 绑定域名到空间
  • (也许还要等待一个漫长而又蛋疼的备案)
  • 折腾博客程序及数据库
  • 折腾博客模板
  • 折腾上传
  • 折腾用什么编辑器写内容
  • 网站内容的备份
  • 等等。

等网站上线了,又得折腾为啥速度不快、流量超没超、上传了图片后似乎空间又不够了..... 等所有东西折腾完,似乎已经没啥兴趣继续更新网站了......

其实一个个人博客更重要的是内容,应该要方便让自己留自己记录,能让自己专注于内容,而不是总被一些七七八八的问题所困扰。

FarBox的创建者就是试图"致力于创作一些简洁的产品,来改善少数人的互联网生活。并乐此不疲。"。并让同类们“享受着写作、记录,这一愉悦的过程”。

FarBox的总体思路就是用户的内容以MarkDown的纯文本或docx方式保存在自己的网络硬盘(Dropbox快盘)上,FarBox通过获取用户授权来读取这些内容,然后结合用户自己设计的模板或缺省模板帮助用户渲染出展示网页。有些类似于githubbitbucket提供的静态网页展示服务。

这样,用户只需在自己的计算机上,编写内容,存在网盘应用可以同步的对应目录下,一保存,网站内容几分钟后就更新了。多么简单,多么惬意。

好了,那么用户现在建立自己的博客网站需要做什么:

  • 申请域名
  • 把域名cname到park.farbox.com
  • 申请Dropbox或快盘的免费空间
  • 申请farbox帐号并通过farbox对网盘指定目录访问的授权
  • 在网盘的Farbox目录下创建domains.config并创建对应的网站目录
  • 有兴趣折腾模板的可以去折腾一下
  • 开始在本机上写作吧,只要一保存,几分钟这后网站内容就出来了

不用担心流量、不用担心带宽、不用考虑上传、不用考虑备份、不用考虑访问速度,这些都由FarBox或网盘替你保证或考虑了,甚至也不用担心服务商随时跑路;-) 因为所有数据随时都在你的计算机和网盘上。

让专业的服务商给你解决所有七七八八的问题。内容的上传交给网盘的客户端,数据存储在本地和网盘空间,网页的计算和渲染交给FarBox,网络带宽和速度也由FarBox去优化(一些技术内幕可以参考"我们的Web开发与部署"和"国外的服务器,我们这样优化访问速度")。

我们只需在自己的计算机上写作并保存即可。

是的,这就是FarBox网站服务。

虽然文档还简陋了点,一些类似网站内容同步状态信息和搬家等配套功能还没有,但的确,已经可以通过FarBox测试版让我们享受简洁的互联网生活,享受写作、记录。更详细的说明,请参阅“FarBox帮助&开发文档”。

注:FarBox并非免费服务,收费标准见“服务与价格”,可以说对普通个人博客几近于免费了。

9:15 一件很悲剧的事发生了,才试用了没几下,发现本地访问FarBox已经被reset了,我们这“伟大的防火墙”反应也太快了,希望FarBox能找出好的解决办法。

12.7 FarBox恢复正常访问

在wordpress管理后台顶部加一个一键清除所有cos-html-cache插件产生的缓存文件功能

应要求,得在wordpress管理后台顶部加一个一键清除所有cos-html-cache插件产生的缓存文件功能。

cos-html-cache是一款简单高效的wordpress缓存插件,之前写过它的源码简单解读

当更新文章时,缓存文件会自动更新,但是对某些小地方的更新,比如友情链接等功能,这些小地方的更新无法触发cos-html-cache去给所有静态缓存文件更新一遍。

现在因为要对这些小地方较频繁的更新,而为了安全,“仪表盘”中的设置功能不对编辑开放,这样没法提供cos-html-cache自身提供的清除缓存功能。于是就是开放一个单独的清除缓存的链接出来。

想了想,也挺简单的,把cos-html-cache的部分代码提取出来,在functins.php中加上少量代码就可以实现在管理后台的顶部加一个一键清除所有缓存文件的链接了。

实现代码如下:

function conference_admin_bar_render() {
    global $wp_admin_bar;

    if ( !is_user_logged_in()) 
        return false;


    $wp_admin_bar->add_menu( array(
                'parent' => '',
                'id' => 'delete-cache',
                'title' => __( '删除缓存', 'conference-cache' ),
                'meta' => array( 'title' => __( '删除所有缓存文件', 'conference-cache' ) ),
                'href' => wp_nonce_url( admin_url( 'index.php?action=delcachepage&path=' . urlencode( $_SERVER[ 'REQUEST_URI' ] ) ), 'delete-cache' )
                ) );
}
add_action( 'wp_before_admin_bar_render', 'conference_admin_bar_render' );

function admin_bar_delete_cache() {
    // Delete cache for a specific page
    if ( isset( $_GET[ 'action' ] ) && $_GET[ 'action' ] == 'delcachepage' && ( isset( $_GET[ '_wpnonce' ] ) ? wp_verify_nonce( $_REQUEST[ '_wpnonce' ], 'delete-cache' ) : false ) ) {
do_conference_html_cache_action();
        wp_redirect( preg_replace( '/[ <>\'\"\r\n\t\(\)]/', '', $_GET[ 'path' ] ) );
        die();
    }
}
if ( isset( $_GET[ 'action' ] ) && $_GET[ 'action' ] == 'delcachepage' )
   add_action( 'admin_init', 'admin_bar_delete_cache' );

// deal with rebuild or delete
if( !function_exists('ConferenceDelCacheByUrl') ){
    function ConferenceDelCacheByUrl($url) {
        $url = get_home_path().str_replace( get_option('home'),"",$url );
        $url = str_replace("//","/", $url );
         if( file_exists( $url )){
             if( is_dir( $url )) {@unlink( $url."/index.html" );@rmdir($url);}
             else @unlink( $url );
         }
    }
}

function do_conference_html_cache_action(){
        @rename(get_home_path()."index.html",get_home_path()."index.bak");
        @chmod( get_home_path()."index.bak", 0666 );
        global $wpdb;
        $postRes=$wpdb->get_results("SELECT `ID`  FROM `" . $wpdb->posts . "` WHERE post_status = 'publish' AND ( post_type='post' OR  post_type='page' )  ORDER BY post_modified DESC ");
        foreach($postRes as $post) {
            ConferenceDelCacheByUrl(get_permalink($post->ID));
            }
        $msg = __('缓存文件已成功清除','delete-cache');
//  if($msg)
//  echo '<div class="updated"><strong><p>'.$msg.'</p></strong></div>';
}

测试了一下,效果很好。

通过Obfuscated ssh避免时不时ssh连接不畅的问题

众所周知的原因,为了能流畅的使用google、使用某些“不存在”的网站,我们一般都是需要通过某些不方便光明正大说明使用用途的技术。比如通过ssh tunnel,这是最简单的,也是用得最多的。

不过,这段时间,明显,某些墙的干扰力度加大了;-(

下午有些郁闷了,于是就得找些进一步改进来进一步避免干扰的方法,让我们能继续流畅冲浪,很快就发现Obfuscated ssh就是一个现成成熟的方法。

首先下载Obfuscated ssh,登录到境外linux服务器上后,下载:

wget -O ofcssh.tar.gz https://github.com/brl/obfuscated-openssh/tarball/master

解压

tar zxvf ofcssh.tar.gz

进入

cd brl-obfuscated-openssh-ca93a2c

配置

./configure

编译安装

make

make install

安装完成后,可以看到输出信息中最后类似如下:

......

/usr/local/sbin/sshd -t -f /usr/local/etc/sshd_config

这就安装成功了,上面一句就是直接运行的命令,其实也就是提示了Obfuscated ssh的安装位置以及配置文件的位置。

- 阅读剩余部分 -