> For the complete documentation index, see [llms.txt](https://blog.owent.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://blog.owent.net/2017/1468.md).

# 整理一波软件源镜像同步工具+DevOps工具

上个月，同学的公司，格奕，突然间跪了。这个月基本属于休息+四处溜达。同时空闲的时候也想整理下之前做得一些之前的做得一些小工具们。在不泄密的情况下开源出来吧（其实也就是想找github存放一下而已，也没什么特别NB的东西）。

第一个，开发期间的发布工具。 <https://github.com/owt5008137/devops_webtools>

这个之前就整理过一次，但是之后又玩了一下[vue.js](https://vuejs.org/)，就把模板引擎换成了[vue.js](https://vuejs.org/)，然后把[bootstrap](https://getbootstrap.com/)换成了v4版本。然后接入了企业微信的登入认证。其他的也没太大的变化。

第二个，源镜像同步工具。 <https://github.com/owt5008137/devops_mirrors> 。一方面是了解下[argular](https://angularjs.org/)顺便试试[typescript](https://msdn.microsoft.com/commandline/wsl/about)这种项目上怎么玩。另一方面是我们的服务可以使用[WSL](https://msdn.microsoft.com/commandline/wsl/about)做开发。并且也做了Windows下用[msys2](http://www.msys2.org/)来启用IDE支持，但是默认的软件源太慢了，而且网络不稳定。所以就想自己同步一份来公司内网用的软件源。而且既然要做就顺便把服务器系统[centos](https://www.centos.org/)的源也做了吧。所以就写了这么一个工具，定时跑拉取脚本，同步多个源。

很多软件源都是可以直接\[rsync]\[15]同步的，所以第一步写了用\[rsync]\[15]来同步。但是[ubuntu](https://www.ubuntu.com)我们并不需要所有版本的数据，如果只同步我们需要的（14.04和16.04）那还是[apt-mirror](https://github.com/apt-mirror/apt-mirror)好用一点，所以后来又加了[apt-mirror](https://github.com/apt-mirror/apt-mirror)的支持。所以最终就是定时跑个同步脚本，把同步结果写进日志目录，然后各个环境里换成内网源就行了。内网千兆网络，速度杠杠地。

这段时间还打算改造一下[atgateway](https://github.com/atframework/atsf4g-co/tree/master/atframework/service/atgateway)的握手流程，一个是前段时间看了下[SSR](https://github.com/shadowsocksr-backup/shadowsocksr)的多加密支持的代码，觉得它那种设计方式以后维护难度和扩展新加密算法都会容易很多，所以后来给[utils](https://github.com/atframework/atframe_utils)库写了[cipher](https://github.com/atframework/atframe_utils/blob/master/include/algorithm/crypto_cipher.h)功能。然后重写了适配各种加密库的部分。然后要做的事情就是把它替换到[atgateway](https://github.com/atframework/atsf4g-co/tree/master/atframework/service/atgateway)里，这样就能支持动态协商加密方式了。然后就是想抽时间看一下[ECDH](https://en.wikipedia.org/wiki/Elliptic_curve_Diffie%E2%80%93Hellman)的密钥交换流程，增加椭圆双曲线密钥交换的支持。唉，又得去看[openssl](https://www.openssl.org/)的源码和test来找用法，[openssl](https://www.openssl.org/)的代码质量也是醉。在这之后还得做跨加密库的相互交互支持，重新进行测断线重连、定期更换密钥、防DDOS保护的测试。会比较麻烦，然后还要重新适配c porting和c#的适配和客户端的构建脚本，反正比较麻烦，估计会比较慢。

虽然麻烦，但是以后还是想办法加一下这方面的单元测试吧。不然以后改流程又是很恶心。

\[15]: <https://rsync.samba.org/>
