把通过代理订的亚航机票订单挂到自己账户

on July 4th, 2023 by 小桥

通过第三方代理购买亚航机票,往往比直接在亚航官网/APP买便宜一些。但是出票后,在自己的亚航账户看不到那些机票订单,通过“Search other bookings”功能也搜索不到。

这时可以使用“Check-in”功能去查询订单,点击“Purchase add-ons”,什么增值服务都不需要买,直接点“Confirm changes”。

会出来“Booking Confirmed”页面,在这页面点击“Manage booking”,在右边“Flight Detailes”中把“Contact person”联系方式修改成自己的邮箱和电话,后面就可以在亚航账户看到订单啦。

Linux系统启动后执行脚本

on February 10th, 2023 by 小桥

在Linux系统启动之后执行脚本,传统的习惯是把脚本加到/etc/rc.local。家里R2S的rc.local加入了一些脚本,但是执行失败。初步怀疑是一个脚本需要联网才能执行成功,如果光猫跟R2S在同一时间重启,可能系统启动后网络还没恢复,会导致脚本执行失败。于是期望脚本在系统启动后一段时间执行,在rc.local中加入sleep可以实现这个目标,但是我不想让rc.local执行时间太长。搜索了一下,发现cron也是支持在系统启动后运行一次脚本的,只是以前从来没用过这个功能。

Instead of the first five fields, one of eight special strings may appear:
    string         meaning
    ------         -------
    @reboot        Run once, at startup.
    @yearly        Run once a year, "0 0 1 1 *".
    @annually      (same as @yearly)
    @monthly       Run once a month, "0 0 1 * *".
    @weekly        Run once a week, "0 0 * * 0".
    @daily         Run once a day, "0 0 * * *".
    @midnight      (same as @daily)
    @hourly        Run once an hour, "0 * * * *".

于是添加以下cron任务,系统启动后sleep 3分钟再执行指定脚本,期望能够解决问题:)

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# min hour  day  month weekday command
@reboot                        sleep 3m && /path/to/script

Nginx设置HTTPS默认站点

on May 25th, 2022 by 小桥

Nginx不设置HTTPS默认站点的话,用户通过ip访问443端口可以从服务器返回的证书信息来知道服务器上面跑的HTTPS网站是什么。我们可以通过配置HTTPS默认站点来避免这个问题。

首先,生成一个自签名的证书:

openssl genrsa -out hostname-key.pem 2048
openssl req -new -key hostname-key.pem -out hostname-request.csr
openssl x509 -req -extensions v3_req -days 3650 -in hostname-request.csr -signkey hostname-key.pem -out hostname-cert.pem
或者
openssl req -x509 -newkey rsa:2048 -sha256 -days 3650 -nodes -keyout hostname.key -out hostname.crt -subj '/CN=notexist.com' -addext 'subjectAltName=DNS:notexist.com,DNS:www.notexist.com'

然后把hostname-key.pem、hostname-cert.pem复制到/etc/nginx,并修改Nginx的配置文件,添加配置。

server {
        server_name _;
        listen 443 ssl http2;

        ssl_certificate  /etc/nginx/hostname-cert.pem;
        ssl_certificate_key /etc/nginx/hostname-key.pem;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-CHACHA20-POLY1305;
        ssl_prefer_server_ciphers on;
        return 503;
}

此时再尝试使用IP访问443端口,证书是自签名证书,服务器返回的也是503错误,符合预期。

Ngnix + PHP-FPM chroot

on June 5th, 2011 by 小桥

Nginx+PHP-FPM是目前用得比较多的组合,如果在一台服务器上面跑多个站点,当一个安全性比较差的站点被入侵之后,其他网站也就无安全性可言了。PHP-FPM支持chroot功能,能够解决前面提到的安全问题,只是这功能默认没启用,配置也稍有点麻烦。
PHP-FPM的chroot配置可以参考以下方式:

1、修改php-fpm配置文件,如A网站的配置文件为/etc/php-fpm.d/a.conf,在a.conf中增加
chroot = /var/www/a

2、修改nginx的虚拟主机配置
fastcgi_param SCRIPT_FILENAME /var/www/a/$fastcgi_script_name;
要改为
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
Read More »

删除Android手机无主题短信

on March 13th, 2011 by 小桥

给HTC Desire手机刷了2.3.3的ROM,用MyBackup恢复软件、短信等备份。今天删除短信之后发现会话依然存在,只是显示“无主题”,日期是“1970-1-1”,而且这些无主题的短信无法删除。

在Google搜索之后,发现也有不少人遇到这个问题,机锋网的一个帖子介绍了解决的方法,但是帖子里面并没有提到mmssms.db文件的路径是什么。再次搜索后得知文件的路径是“/data/data/com.android.providers.telephony/databases/mmssms.db”。 Read More »

在Linux NAT服务器上做流量控制

on February 27th, 2011 by 小桥

公司用的是6M专线,如果有人在内网用迅雷之类的软件下载大的文件,就会把带宽全部占满,收发邮件、浏览网页都非常慢。于是把NAT服务器换成Linux系统,使用tc做流量控制。目前使用看上去还好,后面可能会再做一些优化。
Linux流量控制

APG,Android上的OpenPGP软件

on December 18th, 2010 by 小桥

Android系统没自带公钥加密功能,也不支持对存储在SD卡上的文件加密。如果在手机上存了包含敏感信息的文件,或者是用手机收发重要的邮件,一旦手机丢失,就可能造成信息泄漏。
Android Privacy Guard (APG)是Android系统上的OpenPGP软件,能够方便的管理密钥,对文件/邮件进行加解密操作。现在K-9 Mail邮件客户端也已经支持OpenPGP,可以使用APG对电子邮件进行签名和加密。 Read More »

把Blog迁移到国外的VPS了

on October 16th, 2010 by 小桥

国内域名备案相当麻烦,现在把blog移到国外的VPS。

CentOS 5的第三方软件仓库

on June 5th, 2010 by 小桥

http://centos.alt.ru/pub有一些给RHEL/CentOS 5用的RPM包,有较新版本的httpd、php、nginx、mysql、postfix等。这里还有php-fpm,如果配合nginx来跑php,应该是一个比较好的选择。

supervisor挺好用的

on May 30th, 2010 by 小桥

supervisor是一个用Python写的程序,运行在UNIX-like操作系统,可以用来监控和管理多个进程。
在CentOS下,直接运行“yum install supervisor”即可完成安装,只是CentOS5带的supervisor版本比较老。。。
supervisor的配置文件是/etc/supervisord.conf,如果是用easy_install安装的话,可以用“echo_supervisord_conf > /etc/supervisord.conf”生成一个默认配置文件。配置文件里面的参数很容易看懂,主要修改[program:theprogramname]节的内容即可,需要设置正确的command和user参数。
对进程的控制是使用supervisorctl命令,比如:

supervisorctl stop web
supervisorctl start web