软硬件使用

DNSPod API升级TLS 1.2导致ArDNSPod脚本失效问题

博主我常年在路由器的OpenWRT系统上以crontab方式跑ArDNSPod:https://github.com/anrip/ArDNSPodl来实现DNSPod上解析域名的DDNS功能,但是今天突然发现在出口IP变化以后,DDNS域名没有像往常一样正常更新(以往反应都是很快的),检查了下也不是以前出现的又被ISP变回内网IP导致的,于是ssh登上路由器的局域网IP,手动执行了下crontab里sh的命令,发现提示这个:

root@xCloud:/opt/usr/ardnspod/ddnspod.sh
Linux
Updating Domain: xxxx.k-res.net
hostIP: xxx.xx.xxx.xxx
Get Record Info Failed!

Continue reading…

隐藏http返回消息头中的Apache及PHP信息

搬家之后注意到的一个小细节,之前用lighttpd时没太在意这个细节,今天发现了博客http返回头里有些不必要的信息,比如:

Server: Apache 2.4.XXX OpenSSL XXX
X-Powered-By: PHP/X.X.XX

顺手查了下隐藏掉的方法:

首先是Apache的,修改配置文件 /etc/httpd/conf/httpd.conf,加入

ServerTokens Prod
ServerSignature Off

重启httpd服务即可,接下来是PHP,修改配置文件/etc/php.ini,找到
Continue reading…

CentOS 7下自编译、打包RPM最新版Apache2 (httpd 2.4.37) 并开启HTTP/2

之前一直没什么时间研究新东西,博客上写的也都是些没啥滋味的东西,今天记录的这个应该能算是有些滋味的吧,不过,在正文之前,先写点铺垫,为啥现在研究起http 2.0了?这个h2吧,其实很早以前就听说过,各种好吧就是,但之前一直都有一种还很理论还很遥远的感觉,直到最近研究Google GRPC的Web实现gRPC-Web(有兴趣的话,传送门在这里:https://grpc.io/docs/quickstart/web.html)时,发现其中用到了一个叫envoy的转发代理服务器(https://www.envoyproxy.io/)来实现gRPC传输层需要的h2协议,突然感觉h2要开始普及了,查了下资料,发现h2的server push设计很有吸引力(其间还找到个这个网站:https://http2.akamai.com/demo,直观的演示了http 1.1和2.0的差距),于是乎萌生了测试下h2用在普通网站服务器的想法。

一开始还觉得现在是不是主流Web服务器都支持http2了,一查发现本博用的lighttpd还没有加入http2的支持,而apache和nginx已经有稳定支持版本了,又搜索了下网上的评论,发现还是Apache跟的比较紧,所以就从老朋友Apache入手尝鲜吧。

我的测试环境是装在虚拟机里的CentOS Linux release 7.5.1804 (Core),直接yum安装httpd的话是2.4.6-80.el7.centos.1 这个版本,而Apache是从 2.4.17 才开始支持mod_http2正式支持h2的,残念之后习惯性的找各种第三方rpm源,看是否有能直接撞的2.4.17以上版本,结果发现虽然是有,但是很少,而且也不是特别新的版本(另外这里https://www.mf8.biz/apache-httpd-%E5%BC%80%E5%90%AF-https-%E5%92%8C-http2/也提到”截止发文切仍受支持的 RHEL、CentOS 5、6、7 均不提供 Apache Httpd(apache2) ≥ 2.4.17 和 OpenSSL ≥ 1.0.2 的支持,也没有提供支持的第三放软件源支持。”),于是就想不行就自己直接拿源码装吧。其实,如果只是拿源码装的话应该是挺简单的,要啥编啥就得了,不过我这还有个需求就是想把编译好的新版apache方便的装到远端VPS上测试,当然VPS也是CentOS的,所以就变成了不止要自编译还要打包RPM了…

Continue reading…

使用Token2Shell连接亚马逊AWS Lightsail的SSH(默认key pairs密钥对)

最近Amazon AWS的Lightsail最低配从$5降到了$3.5,于是注册了个账号来体验下(远离EC2,搞不好房子就给亚马逊了,哈哈),发现世界前3的云服务提供商就是不一样,开了实例后发现SSH默认都是高大上的密钥验证方式,这让我这只会用户名密码登陆的土鳖着实懵逼了一下,好在有Web版的console,也能把需要的服务顺利搭起来,不过不能粘贴实在是不爽,于是还是决定研究下密钥验证的SSH登陆。
观察后发现,默认情况下亚马逊会给你的Lightsail实例所在区域自动创建一个密钥对,而提供给你直接下载的只是私钥private key (https://lightsail.aws.amazon.com/ls/webapp/account/keys):

先Download下来,然后发现我惯用的Windows SSH客户端Token2Shell对密钥验证的设置很“隐晦”,看了半天文档才意识到要将公私钥以指定的规则放到指定的位置(默认C:\Users\XXX\Documents\Token2Shell\ssh\keys,私钥叫LightsailDefaultPrivateKey-ap-northeast-1,公钥就得叫LightsailDefaultPrivateKey-ap-northeast-1.pub,见此:https://choung.net/howto/token2shell/public-key-user-auth/),那么亚马逊的默认公钥在哪了呢?
Continue reading…

畅言了一段时间后,又把评论系统换成Disqus了,记录下

之前多说倒掉之后,换了畅言作为本博的社交评论系统,用了一段时间后发现也不是很好用,不如之前曾经测试过的Disqus,于是又动起了换成Disqus的念头。正常情况下Disqus直接通过官方wordpress插件安装并设置就可以了,但是由于众所周知的问题,Disqus在中国大陆是访问不了的,不过很幸运,在网上找到了这个:
wordpress使用Disqus – https://www.ggbond.cc/index.php/wordpress%E8%A3%85disqus%E6%8F%92%E4%BB%B6%E6%8A%A5the-plugin-was-unable-to-generate-a-secret-key-for-your-site/

其中提到的API代理项目是: fooleap/disqus-php-api – https://github.com/fooleap/disqus-php-api

按照上面的参考文章的操作说明即可实现Disqus的“完美”接入。不过这里额外记录下修改模板时的问题:
Continue reading…

Python 3.6 32bit在Win下安装pycrypto的方法(VS 2017)

在测试一个python操作AES加密解密的脚本时,发现需要安装一些依赖package,大部分直接pip install就搞定了,结果到pycrypto的时候,却遇到了pip报错安装失败的问题,仔细看了下发现是编译出错,搜索了下找到了这个:https://github.com/dlitz/pycrypto/issues/218,原来是需要VS Build Tools环境的问题,按照最后的提示(指定32位编译环境):

for Python 3.6 32 bit following set of commands worked:

cd “C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build”
vcvarsall.bat x86_amd64
cd \
set CL=-FI”%VCINSTALLDIR%\tools\msvc\14.14.26428\include\stdint.h”
pip install pycrypto

执行后,提示:
Continue reading…

Win10升级1709后无法匿名访问局域网共享文件夹的问题

今天Win10在一通疯狂硬盘IO后,提示我有重要更新,于是我又愉快的被Win10更新了,更后意识到是近期的1709版被推过来了(之前是1703),多了个“人脉”,别的新鲜还没发现,倒是遇到了个局域网共享访问不了的问题!
博主的路由器上一直开着samba共享,而且是允许匿名访问的,1709更完后突然发现访问出错了,提示的是个0x80004005的错误号(详细信息里),开始以为是这次更新改变了网络设备驱动或是设置,但后来机智的用手机试了下samba访问,发现完全没有问题,于是认定就是这次“重要更新”惹的祸了!
Continue reading…

使用Android Studio 3.0+调试任意环境生成的APK中的Java和Native C/C++代码(APK调试debug)

自从Google抛弃Eclipse ADT转投IntelliJ IDEA搞出Android Studio后,Android的开发调试环境可以说是日臻完善,先是Android Studio 2.x加入了调试原生C/C++代码的功能,一解Android NDK开发调试不方便之困(想当年可是拜ndk开发调试所赐才熟练掌握了gdb命令行的各种操作…),现在的3.x又加入了直接调试任意apk中Java和native .so的功能:

测试了下,虽然过程中遇到了个小问题,不过最终还是成功了,基本能和AS开发的带C++ Support项目原生调试体验一致。下面记录下这个”小问题“的解决方法:
先说明下这个小问题是用AS调试任意apk中的.so时找不到调试符号,且无法定位到源码并命中断点的问题,也就是说是有源码调试!无源码调试理论上应该也可以,但不在本次研究范围之内。
Continue reading…

使用StartSSL(Let’s Encrypt)的免费SSL证书为Windows远程桌面RDS服务指定受信任的证书

首先,简单说明一下这个大标题所要解决的问题,就是这个:
QQ截图20150807221006
经常使用Windows远程桌面(AKA: mstsc3389RDP…)的朋友对这个截图的画面一定不会感到陌生,记不清从哪个版本开始的,迈克尔索芙特公司为这个远程桌面服务加入了SSL (TLS 1.0)加密功能,而且是默认开启的,这就导致了这个连接时需要“验明正身”的过程。而正式可信的SSL证书都是需要缴纳一定的“保护费”来获得的,安全级别越高,费用也就越高,所以这里默认启用的加密证书是以自签名的方式颁发的,因此自然会弹出这个不可信的警告了。
对于一般用户而言,这个不可信的证书其实也没什么大不了的,无视它,在mstsc里关闭服务器身份验证失败警告,信任它,直接添加自己为可信的证书颁发机构,又或者直接在组策略里关掉加密,都可以直接pass掉这个问题,但如果是正规应用的话(或者是像我这样有强迫症的一般用户),当然还是要加上正规身份证的好了。
这里介绍的方法就是如何用当下提供免费SSL证书的StartSSL.com,为Windows RDS(主要针对非服务器版操作系统)添加一个受信的正规远程桌面RDS服务加密证书:
Continue reading…

Ubuntu 16.04 LTS安装MySQL 5.6后无my.cnf配置文件的问题

近日在虚拟机上的Ubuntu 16.04 LTS里测试Smartfox,需要安装MySQL数据库,于是apt-get安装,装的时候也没仔细看log,一路默认后就可以用了,建库建表都没有问题,直到后来发现需要修改MySQL的大小写敏感设置(lower_case_table_names=1),才发现百度到的配置文件修改在/etc/mysql/里并不存在,找了半天只发现这里/etc/mysql/conf.d/mysql.cnf有个类似的配置,而且里面只有[mysql]没有[mysqld],于是尝试添加了配置参数,又尝试手动创建my.cnf,结果不是不生效就是MySQL不能正常启动。最后发现是MySQL安装时出的问题,命令行执行:

dpkg -l | grep mysql

如果看到大部分mysql的包是5.6,但也有像mysql-common等的是5.7版的,这样就会产生这个没有默认配置文件的问题。解决方法如下:
Continue reading…