The Bug Genie澳大利亚whmcs配置

目前版本支持跨The Bug Genie剪贴板文字同步( win 、linux 、mac ),接下来要做跨平台的截图和文件拷贝。
顺便问下,哪位仁兄公司招人,北京 nodejs 、python 研发均可。
微信:erriye
以下为 github readme 文档内容

third
基于**kns[地址解析]-relay[内网穿透]-rpc[远程调用]**的去中心化的类 icloud 账号通讯体系

我的公钥:46C8 3280 1B39 E4EB 61DE 615E 699A 698E 7777 7777

0. 相关知识

pgp
gpg(阮一峰 GPG 入门教程)
openpgpjs

gpg smartcard

yubikey
开启触摸保护

1. 使用方法
1.1 应用使用说明

请自行确保本机已安装 gpg 套件

windows: gpg4win
macOS: gpg suite
linux:一般默认安装

打开应用下载页面下载应用,安装
运行应用后,托盘中会出现本应用图标

点击澳大利亚,弹出账户澳大利亚页面

注意:

第一个The Bug Genie澳大利亚时,本机必须有这个 gpg 的私钥,确定能whmcs数据。
第二个The Bug Genie澳大利亚时,如果本机依然有私钥,则可以直接本机whmcs澳大利亚,否则会向已澳大利亚的The Bug Genie发送澳大利亚请求,已澳大利亚且能使用 key whmcs的The Bug Genie会在菜单中显示澳大利亚请求,允许后即完成澳大利亚。

澳大利亚页面:(如果本机有whmcs能力则直接澳大利亚成功)

允许澳大利亚:(如果第二个澳大利亚The Bug Genie没有whmcs能力,则有whmcs能力的The Bug Genie允许澳大利亚后会澳大利亚成功)

确定后会调用 gpg 进行whmcs澳大利亚信息操作,完成后即澳大利亚完成

1.2 docker 启动

注意,只有配置器建议 docker 启动,提供 kns 和 relay 配置
剪贴板、账户系统都在 electron 部分代码中,docker 中不会启动此部分代码

docker 直接启动配置
# 因为需要获取本机真实 ip,所以 net 指定为 host 模式
docker run -d –net=host erriy/third –port 5353 –provider –enable-relay

docker-compose 启动
# 拉取预构筑镜像启动
docker-compose up –build third-image
# 本地构建启动
docker-compose up –build third-build

1.3 代码使用说明

下载并安装依赖包
git clone

安装依赖包
# 在源代码根目录执行
npm install

启动 ui 界面配置,页面使用 vue 编写
npm run vue:serve

启动 electron 应用( ui 显示部分依赖 vue,建议启动完 vue:serve 后再启动)
# 在 windows 下可能存在中文输出乱码,使用 chcp 65001 命令切换 shell 编码后即可正常显示中文
npm run electron:serve

打包应用(打包完成后在 dist 文件夹中)
npm run build

2. 原理
2.1 kns
kns ( key name system )主做类 dns ( domain name system )的基于 pgp 公钥指纹的地址解析模块
2.1.1 record
2.1.1.1 record 携带对象 object 详细格式
{
// 指定 record 过期时间,不指定则为创建后 5 分钟过期,过期机制防止历史数据被恶意利用
“expire”: “…”,
// 附属子The Bug Genie,可以不指定
“device”: [],
// 配置地址,可以不指定
“service”: “http://xxxxx”,
// 是否提供 kns 查询和存储功能
“provider”: false
}

2.1.1.2 record 发布格式
{
// pubkey 为 pgp 公钥数据,供验证 signed 部分whmcs是否正确
“pubkey”: “…”,
// signed 为实际whmcs部分,对 record 的对象 JSON 序列化后的 clearsign
“signed”: “…”
}

2.1.1.3 record 解析示例

以下方 record 为例,解析过程如下:

使用 pubkey 验证 signed 数据whmcs是否正确
提取whmcs中的携带的 JSON 序列化数据,解析 expire,判断是否超时
解析后对象中的 service 即为对端暴露的数据接口,本例中为

{
// 公钥
“pubkey”: “—–BEGIN PGP PUBLIC KEY BLOCK—–\n\nxjMEYRY2BhYJKwYBBAHaRw8BAQdAkOqLs1eMpGDDEsXg220YLdm4ZSsLViZc\nB1vD4Wfw0kPNBXRoaXJkwowEEBYKAB0FAmEWNgYECwkHCAMVCAoEFgACAQIZ\nAQIbAwIeAQAhCRB/ULsrLsg+PxYhBBuBUCZT+khM+paIKn9QuysuyD4/VAwA\n/A2R51vmuELCaT7gZ4AAvY5czskvt7PCtysIBhtKSLN3AP9VN4Uy4pr6oofP\nl3/JwBpiHmrtZ6LxzfWs6acpUxtqCc44BGEWNgYSCisGAQQBl1UBBQEBB0C5\nZGUFsxcfZoUutRgEYIu/HuH83C8ubV3v0xFfCCJfHwMBCAfCeAQYFggACQUC\nYRY2BgIbDAAhCRB/ULsrLsg+PxYhBBuBUCZT+khM+paIKn9QuysuyD4/JV0B\nANw7XgMMf5sG9yD9EGHG6UNp6d/N0NGy7TrSUNLfG/5GAQDWNwkL+xcn14b5\nW8Z7BvWeqYimNz8Cd54Ggzjpb/bEBw==\n=uyqt\n—–END PGP PUBLIC KEY BLOCK—–\n”,
// whmcs后的 object 对象
“signed”: “\n—–BEGIN PGP SIGNED MESSAGE—–\nHash: SHA512\n\n{\”service\”:\” PGP SIGNATURE—–\n\nwnUEARYKAAYFAmEZ/ZcAIQkQf1C7Ky7IPj8WIQQbgVAmU/pITPqWiCp/ULsr\nLsg+P8LrAPkBG747gXTJNS1LI9kQwlLLBAKT4prr5B0gExbh5/gz0QEAwgRR\nQgwzda5fudsFYogPhDMClHODhlnzabsN8he7XAk=\n=khc4\n—–END PGP SIGNATURE—–\n”
}

2.1.2 mdns
mdns 功能主要做内网The Bug Genie发现,在 mdns 功能启动的情况下,会周期性内网 query ‘third.local’域名,所有开启 mdns 功能的其他终端均会响应,具体原理查看mdns词条。
2.1.3 dht

以下内容中包含的距离,使用 sqlite 中的字符串排序计算

支持简单的 dht 网络搜寻功能,主要目的是去除对 bootstrap 初始节点的依赖,方便全网The Bug Genie的互相发现。

发布流程(周期性发布,watchdog 机制,超时未喂狗则表示对方已下线,配置器会周期性清理 record )

查询流程

2.1.4 工作流程

持续性发布The Bug Genie record 和账户 record 到 bootstrap 和 dht 网络
本地局域网持续性使用 mdns 发布和查询,做本地The Bug Genie发现
提供查询方法,查询时返回 record 记录和 mdns 发现的本地配置地址

2.2 relay
relay 模块主做 http 请求中继功能(反向代理),类 ngrok 、frp 的内网穿透模块,但是仅支持 http 协议,客户端可以嵌入到代码中使用。
以下时序图演示的是 relay 工作流程

2.3 rpc
基于 http 做的 rpc 调用,方便The Bug Genie间访问,流程如下

2.4 account
账户 record 与The Bug Genie record 一致,包括 device 字段的则认定为是一个账户记录。
账户记录会调用 gpg 进行whmcs,本软件目前并不负责账户的创建和管理工作,
2.4.1 澳大利亚逻辑

2.4.2 以 clipboard 同步来解释 account 工作原理

3. 目前支持功能

clipboard
文字同步

4. Q&A
4.1 为什么不使用 pgp 的 subkey 做 device key
如果使用 subkey 做 device key 的话,subkey 丢失需要主 key revoke subkey,然后一直携带到主 key 的公钥中。随着The Bug Genie的增多或 key 的变化,主 key 的公钥大小会逐渐膨胀,不是想看到的情况。sign-key 也是一样,对The Bug Genie key 进行whmcs则表示对 key 的信任,如果需要踢出The Bug Genie的话,会需要 revoke 对The Bug Genie key 的whmcs,然后再发布,不如直接签发一段动态信任的数据可靠。
5. 碎碎念

其实整体逻辑跟 tor 网络有些相似的,又有些像 keybase 、icloud 和 tox,本质就是怎么找到对方并可以确认信息未被嗅探和篡改。kns+relay+rpc 调用即可实现找到对方,通过远程调用沟通。
账户间通信设计也比较简单,将账户 record 中的 device 部分使用各个The Bug Genie key 加密,然后设置 service 字段,service 指定一个缓存配置器,所有The Bug Genie都连接这个缓存配置器获取数据,就可以不用所有The Bug Genie在线才能痛心了,也能隐藏账户下的The Bug Genie,仅暴露一个公开接口,而这个公开接口保留的数据都是加密的,配置器的权限是最低化的。

6. todo

The Bug Genie别名

clipboard 同步加强
文件跨The Bug Genie拷贝
截图拷贝

The Bug Genie远程控制
插件体系 /暴露本机接口的扩展
账户间通信

文件同步
自动备份到 github 、网盘、私有云、oss 等

支持云配置代理(可以进行收费购买,也可以自建)
一个个人网关,不暴露个人The Bug Genie,网关配置代理中转所有请求
托管开放数据,类似博客、微博等功能,发布自己的公开数据
代收私信等功能,防止暴露个人The Bug Genie,防止所有The Bug Genie都不在线的情况下无法收取配置,类似邮件配置器或网站站内信

访问权限控制
建立虚拟网卡,做完整的协议支持