Magdalene

一个迅雷远程下载模式的克隆。

根据OpenWRT的开发目标,最初做一个替代迅雷远程下载的服务

目标宏大,目测做不完。

功能设想

Mary作为manager,负责协调任务,暂存worker的指标信息,通过webrtc打洞,连通worker和supervisor,也可尝试连通supervisor间的连接用于简单的点对点交流。

Telos作为worker,负责执行任务,上报指标,协调局域网共享(NFS,SMB),打洞成功之后和supervisor发送文件,在线点播串流等。

Kosmos作为supervisor,负责提交任务,查看worker负载,消费文件服务,消费视频流服务,与其他supervisor互联互通等等。

管理页面

每个组件都有web管理页面,通过初始密钥进入,初始密钥为自动生成128位值,存在配置文件中,用户可在初始界面记录下来也可以进后台查看。同时还有自动生成的设备码。组件的数据暂时计划使用sled来存储。

Mary的通过uds/sock被nginx代理,也可以直接监听端口;配置页面主要展示当前存储的数据量,关联的supervisor和worker设备,设置supervisor和worker设备的接入码。接入码主要是防止恶意接入攻击。

Kosmos注册时,提供用户名和接入码。Telos接入时,提供设备码、用户名和接入码。

Telos周期性向Mary发起查询(query with metric)(10s),获取任务和提交指标。如果收到文件发送或者在线点播任务,打洞成功后,在对应端口开启对应任务的deamon,直到任务结束,或者超时10s。

服务与客户端

Mary和Telos都需要注册为服务,Kosmos为客户端,需要制作GUI(也可以采用Web?)

需要制作主流linux发行版(rpm、deb、pkg、ipk)、Win环境和macOS的brew环境下的安装包与服务脚本。以及裸包,让高级用户自己制作安装。

Telos

其中Telos也可以单体运行,通过uds/sock被nginx反向代理,也可以直接监听端口。

通过Web界面进行任务的添加和指标的查看,也就是说Telos支持push和pull两种模式。

这需要设计一个插件系统,用于可选性地集成下列功能:各种下载、Web浏览文件信息、Web提供原始文件服务、Web提供转码视频服务、局域网文件分享(NFS/SMB协调)。

下载通过第三方库添加各种下载功能(rsync,http,bt,ed2k,各种离线/网盘服务),可以尝试找出离线加速相关的服务api,并集成使用。

Web界面时,可以采用WebSocket来实时监控,也可以轮询。

文件浏览界面展示文件的基本信息,大小、时间、任务信息(创建、完成、修改)、多媒体信息、路径信息(两中HTTP URL,流媒体和原始文件,原始文件可直接复制进用户的播放器来播放,NFS和SMB路径URL)。

视频/音频也可以通过浏览器来播放,其中存在自动转码和原始文件直接传递两种方式。其中自动转码可以做成多种分辨率和其他参数配置(最大码流、色彩、渲染等),需要高性能设备的支持。