• 東雪蓮

    最近一直有个比较烦的问题:

    我自己经常在 iPhone、Mac 和 Windows 之间传文件、复制文本。

    AirDrop 只在苹果生态里比较舒服,Windows 和手机之间又得换别的工具;一些跨平台方案要么需要账号,要么依赖第三方服务器。

    所以干脆自己做了一个:

    Neloa

    GitHub:

    https://github.com/kure29/Neloa

    文档:

    https://kure29.github.io/Neloa/

    目前版本是 0.1.13,还属于比较早期的阶段,不过基本的文件传输已经可以正常使用了。


    它现在能做什么

    目前支持:

    - macOS

    - Windows

    - Android

    - iOS

    设备之间配对一次之后,就可以互传文件和纯文本剪贴板。

    在同一个局域网时,设备之间会通过 QUIC 直接传输,文件不会先上传到服务器。

    如果设备不在同一个局域网,也可以自己部署一个 Neloa Relay,通过自己的中继服务器跨网络传输。

    两种情况下传输内容都会使用 Noise XX 进行端到端加密。

    简单来说就是:```
    同一局域网:

    设备 A <------ QUIC ------> 设备 B

    ``或者:``
    不同网络:

    设备 A <----> 自建 Relay <----> 设备 B

    ```我比较在意的一点是:

    Neloa 不需要注册账号,也没有官方中心服务器。

    局域网能直连就直接传,需要跨网络的话,中继也可以完全由自己部署。


    设备配对

    第一次连接两台设备时,会显示一个 六位验证码。

    确认两边数字一致之后分别确认,之后设备就会记住彼此。

    即使通过 Relay 配对,也仍然需要双方确认验证码,不会因为经过中继就跳过设备验证。


    文件传输

    目前支持发送单个文件以及批量文件。

    Mac 和 Windows 可以直接把文件拖进窗口发送。

    接收方确认之后才会正式开始传输。

    传输完成之后还会检查:

    - 文件大小

    - SHA-256


    剪贴板

    现在也做了纯文本剪贴板同步。

    桌面端使用起来比较自然。

    不过 iOS / Android 对后台读取剪贴板限制比较多,所以移动端暂时没有强行做成后台自动同步,而是以前台操作为主。

    这部分后面还会继续优化。


    关于 Relay

    Relay 可以自己部署。

    比如:```
    家里的 Windows
    ↓
    自己的 VPS
    ↓
    外面的 iPhone

    ```这样就可以跨网络传文件。

    Relay 本身主要负责转发数据,加密是在设备之间完成的。

    我自己平时也比较喜欢折腾 VPS,所以这部分从一开始就决定做成 自托管,而不是提供一个强依赖官方服务器的方案。


    目前的一些不足

    项目还比较新,所以先把目前的问题说在前面。

    macOS / Windows

    目前安装包没有商业代码签名,所以系统第一次安装时可能会出现安全提示。

    iOS

    现在提供的是 unsigned IPA,需要自己签名安装。

    移动端

    还有不少体验需要继续优化,尤其是:

    - 系统后台限制

    - 文件分享入口

    - 剪贴板同步

    - 不同 Android 厂商系统的兼容性

    目前主要还是我自己的设备在测试,所以肯定还有不少奇怪的兼容性问题没有发现。


    技术栈

    客户端目前主要使用:

    - Rust

    - Tauri 2

    - TypeScript

    - QUIC

    - Noise Protocol

    Relay 也是自己实现的,相关协议和部署方式都放在仓库里面了。

    项目使用 Apache-2.0 License。


    最开始其实只是想解决自己几个设备之间传文件的问题。

    后来越写越多,就干脆整理成一个完整项目开源出来了。

    现在 UI、局域网发现、设备配对、文件传输、剪贴板、Relay、跨平台打包这些基本都已经跑起来了,不过离真正成熟肯定还有距离。

    如果坛友手上正好有:

    Mac / Windows / Android / iPhone

    欢迎帮忙测试一下。

    尤其想知道不同网络环境、路由器、Windows 防火墙、Android 厂商系统下面有没有比较奇怪的问题。

    有 Bug、建议,或者觉得哪里设计得不合理,都可以直接在 GitHub 提 Issue。

    GitHub:

    https://github.com/kure29/Neloa

    文档:

    https://kure29.github.io/Neloa/

    如果觉得项目有点意思,也欢迎顺手点个 Star

    主楼
  • ypc

    bd

    #1
  • 哈哈哈-nodeseek

    bd

    #2
  • artiga033-nodeseek

    提个建议,除了公网中继外还可以考虑蓝牙或者Wi-Fi Direct,毕竟这种场景设备应该物理上都是在身边的,只是有可能没连同一个网。

    #3
  • 如果声音不记得

    ^-^ 微信输入法不是有这个功能吗

    #4
  • ppop

    bd

    #5
  • funeego

    跟localsend的区别是?

    #6
  • 東雪蓮

    区别其实蛮大的,这个算是个人设备互联,localsend是附近设备

    #7
  • ZherKing

    老早就想要这玩意了!

    bd ^-^

    #8
  • Hiro12138

    顶一个

    #9
  • sakura-s

    绑定

    #10

发表回复

登录后回复