当前位置

技术

技术

发布者 API(Publisher API)

早上简单做了一些调研

1.因为 dup2 一直用的是 Drupal,所以先从它家的BlogAPI看起:https://www.drupal.org/project/blogapihttps://www.drupal.org/documentation/modules/blogapi(2013年更新) 。BlogAPI Module 支持"Blogger API (outdated), MetaWeblog API, and most of the Movable Type API",基本上可以认为这些 API 对应的 Publisher 也不再推广
2. Drupal 的 Blog API 是基于 XML-RPC 的,安全问题不少。现在的潮流是 OAuth + RESTful API,历史上也有 Content APIRESTful Web Services 这样的项目;到了 D8 时代已经全面在底层支持 RESTful,慢慢的应该会有一些成熟的项目出来
3. WordPress 现在已经有了一套很全面的 API,不错!https://developer.wordpress.com/docs/api/
4. Google Blogger API 升级到了 3.0:https://developers.google.com/blogger/
5. Medium,就在 2 个月前发布了 API!!!The Medium API is now open to everyone
6. 意外的发现了 Apple News 也有了 API,好大的一盘棋:https://developer.apple.com/news-publisher/ ,而 Drupal,则支持了这个 API https://www.drupal.org/project/publish_to_apple_news
7. 国内的博客托管平台,研究了一下 CSDN,发现已经失效,顿时失去了兴趣...有时间再调研国内的各个所谓 Medium Platform 的情况吧。现在的感觉是微信公众号的素材 API 可能还稍微靠点谱

Topic: 

调试华为荣耀6 Lollipop(EMUI 3.1)中 framework 相关功能

关于 Lollipop 下如何处理 boot.oat, services.odex, services.jar 的方法可参考上一篇http://dup2.org/node/1625

因为我们没有华为 framework 的源代码,只有 google 自己的 AOSP tree,不过不要紧,只要华为不是丧心病狂的对 AOSP framework 做了大幅度的修改,经过简单的 patch 也能达到我们的目的

首先拿到华为原厂ROM里面的 boot.oat 和 services.odex,在 /system/framework/arm 目录下;经过一番处理,反编译 samli 文件到 services 目录

然后在 AOSP tree 的 5.1.1 最新分支(写作本文的时候用的是 android-5.1.1_r14)编译,按上述步骤换个工作目录同样处理 WORKING_DIRECTORY/out/target/product/generic/system/framework/arm 目录下的 boot.oat 和 services.odex

视需要 patch 原厂的 samli 文件,然后打包成 classes.dex,压缩为 services.jar,覆盖机器上 /system/framework/services.jar,重启

祝你好运

Topic: 

更新 Android 5.x (Lollipop) 之后的 framework/services.jar

先记录一下,https://github.com/liudongmiao/ForceStopGB/blob/master/aosp/readme-5.0-z... 里的方法似乎是能用的,
但目前还没有达到我原设的需求

1. 下载 smali 和 baksmali,https://bitbucket.org/JesusFreke/smali/downloads 这个里面的应该都能在 Java7 上运行。。。至少系统上为了编译 framework 是安装的 Java 7
2. 下载 oat2dex,从 https://github.com/testwhat/SmaliEx/releases 下载一个 oat2dex_java7.jar
3. 从 arm 目录里拿到 boot.oat 和 services.odex
4. 执行 java -jar oat2dex.jar boot boot.oat; 这会在 boot.oat 所在目录下生成 dex odex 两个子目录
5. 执行 java -jar oat2dex.jar services.odex dex/ ; 生成 services.dex
6. 按照教程处理 services.odex 即可:java -jar baksmali.jar -a 22 -b -s services.dex -o services; ...; java -jar smali.jar -a 22 -j 1 -o classes.dex services;
7. 最后生成 services.jar:jar -cvf services.jar classes.dex; 覆盖,应该能重启成功

Topic: 

PPTP VPN 服务器上需要把 SYN 中的 MSS 调整成 1320 才能顺利上网

Android 上 pptp 的 MTU 是 1400(https://www.zeitgeist.se/2013/11/26/mtu-woes-in-ipsec-tunnels-how-to-fix/
因此抓包可以看到 Android 发起的 SYN 都是把 MSS 设置成了 1360

but 服务器上 ppp 设备的 MTU 是 1396,1400的包无法通过这个设备,因此我们需要修改出去的包的 MTU 为1356才能正常工作。网上很多关于 PPTP 的 MSS 设定都提到了 1356 这个数值。

考虑到传输中避免不了本地有POST大量数据的可能,因此还得把3WHS回来的 SYN/ACK 里面的 MSS 值也修改成1356,否则Android自以为双方的min-mss仍然是本地的1360呢

上面说的都是理论,现实则是即使 MSS 设置成了 1356,仍然有些服务是访问不到的,比如 google play。晚上抱着试试看的心情,逐步减少 MSS,最后发现改到 1320 的时候,似乎访问全部正常了。

考虑到 1320 = 1396 - 20(IP Header) - 16(GRE header) - 40(IP+TCP),难道这种算法才是正解?最开始的减40都是错的?对这个问题暂时处于知其然而不知其所以然的状态...

Topic: 

再次掉入 MTU 限制的坑

买了一个年费12刀的OpenVZ的主机用于翻墙,ssh/socks5速度飞快,在手机上通过PPTP翻墙的方式却碰到了麻烦:浏览器能上 facebook,访问 twitter 则是白屏。。。而且 Twitter App 访问是没有任何障碍

但是我上一个 VPS 上架设的 PPTP 应该是能工作的...非常不解. 然后在电脑上拨入 PPTP ,打开浏览器的开发者窗口观察到是访问一个 css 文件的时候被阻塞住了..改用socks5 proxy一切顺利,立刻想到了臭名昭著的 MTU 问题

。。。果然一搜索一大堆结果:https://www.google.com.hk/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=...

最终在 VPS 上使用如下命令搞定

  1. iptables -A FORWARD -p tcp --syn -s 192.168.0.192/29 -j TCPMSS --set-mss 1356

192.168.0.192/29 是配置 /etc/pptpd.conf 里指定的分配 IP 段

Topic: 

SOHU 企业邮箱目前所使用的 POP/IMAP 反向代理,以及 SMTP 客户端连接代理配置

mail {
    auth_http 127.0.0.1:9999/auth;

    server {
        pop3_capabilities "TOP" "USER" "UIDL";
        listen 110;
        protocol pop3;
        proxy on;
    }

    server {
        listen 995;
        protocol pop3;
        proxy on;
        ssl                  on;
        ssl_certificate      mail.sohu.net.crt;
        ssl_certificate_key  mail.sohu.net.key;
    }

    server {
        xclient on;
        server_name sohu.net;
        listen 25;
        protocol smtp;
        proxy on;
    }

    server {
        listen 465;
        protocol smtp;
        proxy on; 
        ssl                  on;
        ssl_certificate      mail.sohu.net.crt;
        ssl_certificate_key  mail.sohu.net.key;
    }

    server {
        imap_capabilities "IMAP4" "IMAP4rev1" "UIDPLUS" "AUTH=LOGIN" ;
        imap_client_buffer 8K;
        listen 143;
        protocol imap;
        proxy on;
    }

    server {
        listen 993;
        protocol imap;
        proxy on; 
        ssl                  on;
        ssl_certificate      mail.sohu.net.crt;
        ssl_certificate_key  mail.sohu.net.key;
    }
}

服务器接收到客户端建立连接的SYN,但是不响应SYN/ACK

本周碰到的一个相当诡异的问题,还在分析中,没有解决。从serverfault上找到两条同样现象的故障,原因又都不尽相同

其中 http://serverfault.com/a/496548 是在服务器端 disable TCP timestamp 解决故障。但是没有给出具体的分析

http://serverfault.com/a/519047 则禁止了 timestamp 和 window_scaling 都不起作用,不过解释清楚了问题根源以及为什么搞不定

已经把工作分配下去了,等待结论

Topic: 
订阅 RSS - 技术