简单的加密文件传输服务
项目描述
Expedite
简单的加密文件传输服务
简介
Expedite是一个简单的加密文件传输服务,允许人们在没有依赖第三方文件共享服务(并且不断担心他们的数据可能如何被使用)或感到需要公开可见的IP地址(并且不断担心脚本小子攻击您的计算机)的情况下,相互同步共享资源。
Expedite服务器可以部署在具有可由Expedite客户端用户发现的IP地址的虚拟专用服务器上,以代理文件内容。使用WebSockets进行的传输使用128位高级加密标准进行端到端加密,服务器仅将不可识别的活动记录到易失性内存。
Expedite 目前处于测试阶段,如果您喜欢项目的发展方向,请考虑通过给项目仓库加星、提交软件错误或功能请求的问题报告、为项目代码库做出贡献或赞助我以帮助维护服务器,并让我继续从事更多类似的开源项目。
提供的服务
您可以选择部署自己的Expedite服务器以从您的Expedite客户端用户组中代理文件内容,或者您可以使用以下由我设置的公开服务器。选择靠近您用户组的服务器可以帮助提高传输的性能和可靠性。如果您希望在此列出您的服务器,请提交一个pull请求。
- 亚特兰大,GA -
ws://expedite-atla.apexaltruism.net:6969
- 孟买,MH -
ws://expedite-mumb.apexaltruism.net:6969
示意图
客户端 - 桥接 - 信息
客户端 - 桥接 - 交付 - 静态
客户端 - 桥接 - 收集 - 静态
客户端 - 桥接 - 交付 - 进度
客户端 - 桥接 - 收集 - 进度
客户端 - 提示 - 帮助
客户端 - 提示 - 交付 - 帮助
客户端 - 提示 - 收集 - 帮助
客户端 - 提示 - 交付 - 静态
客户端 - 提示 - 收集 - 静态
客户端 - 提示 - 交付 - 进度
客户端 - 提示 - 收集 - 进度
服务器 - 代理
安装
开发
- 确保已安装所需的工具和依赖项。
$ sudo dnf install python3 python3-virtualenv python3-pip git poetry
- 将代码库分叉并克隆到本地存储。
$ git clone git@github.com:$(whoami)/expedite.git
- 使项目克隆位置为当前工作目录。
$ cd expedite
- 为安装项目依赖项创建虚拟环境。
$ virtualenv venv
- 在继续之前激活新创建的虚拟环境。
$ source venv/bin/activate
- 安装项目代码库及其依赖项。
(venv) $ poetry install
使用
从PyPI
- 确保已安装所需的工具和依赖项。
$ sudo dnf install python3 python3-virtualenv python3-pip
- 为安装项目依赖项创建虚拟环境。
$ virtualenv venv
- 在继续之前激活新创建的虚拟环境。
$ source venv/bin/activate
- 从Python包索引安装项目代码库。
(venv) $ pip3 install expedite
从GitHub
- 访问项目仓库的 GitHub Actions 页面。
https://github.com/gridhead/expedite/actions
- 要获取适用于 GNU/Linux 发行版 的自动化构建,请访问以下页面。
https://github.com/gridhead/expedite/actions/workflows/gnul.yml
- 要获取适用于 Microsoft Windows 的自动化构建,请访问以下页面。
https://github.com/gridhead/expedite/actions/workflows/mswn.yml
- 如果它们在最近的流程运行中不可用,请请求构建。
https://github.com/gridhead/expedite/issues
执行
服务器
- 确保激活先前创建的虚拟环境。
$ source venv/bin/activate
- 执行以下命令以查看项目的帮助主题。
(venv) $ ed-server --help
Usage: ed-server [OPTIONS] Options: -a, --addr TEXT Set the interface for the service endpoint [default: 127.0.0.1] -p, --port INTEGER RANGE Set the port value for the service endpoint [default: 8080; 64<=x<=65535] --version Show the version and exit. --help Show this message and exit.
- 使用以下命令启动代理服务。
(venv) $ ed-server --addr 0.0.0.0 --p 9090
- 代理服务将在IPv4地址(即
0.0.0.0
)和特定端口(即9090
)上运行。 - 完成时,可以通过发送键盘中断(即
Ctrl
+C
)停止代理服务。
- 代理服务将在IPv4地址(即
- 注意IP地址或主机名,供客户端连接使用。
ip a
客户端
- 确保激活先前创建的虚拟环境。
$ source venv/bin/activate
- 执行以下命令以查看项目的帮助主题。
(venv) $ ed-server --help
Usage: ed-client [OPTIONS] COMMAND [ARGS]... Options: -h, --host TEXT Set the address for the service endpoint [required] -t, --time INTEGER RANGE Set the expiry period for participants [default: 15; 5<=x<=30] -e, --endo TEXT Set the identity of the opposing client --version Show the version and exit. --help Show this message and exit. Commands: recv Collect file through an encrypted transfer send Deliver file through an encrypted transfer
交付
- 执行以下命令以查看
SEND
子命令的帮助主题。(venv) $ ed-client send --help
Usage: ed-client send [OPTIONS] Deliver file through an encrypted transfer Options: -p, --pswd TEXT Set the password for delivering encryption [default: 123972B4] -f, --file PATH Set the filepath for delivering to network [required] -s, --size INTEGER RANGE Set the unit size for file chunking (in B) [default: 262144; 1024<=x<=524288] --help Show this message and exit.
- 如果交付客户端在收集客户端之前加入网络,请执行以下命令。
(venv) $ ed-client --host ws://localhost:9090 --time 30 send --file /path/to/file.extn --pswd expedite --size 131072
[2024-07-06 11:52:10] Expedite Client v0.1.0a2 [2024-07-06 11:52:10] Addr. ws://localhost:9090 [2024-07-06 11:52:10] Pass. expedite [2024-07-06 11:52:10] Plan. DELIVERING [2024-07-06 11:52:10] Wait. 30 seconds [2024-07-06 11:52:10] Please share your acquired identity to begin interaction. [2024-07-06 11:52:10] Attempting to connect to the network. [2024-07-06 11:52:10] Successfully connected to the network. [2024-07-06 11:52:10] You are now identified as 01276D06 in the network.
- 交付客户端正在尝试连接到部署在
ws://localhost:9090
的代理服务。 - 交付客户端有一个
30秒
的非活动超时,超时后将自动断开连接。 - 交付客户端已获得
01276D06
的标识符,收集客户端可以使用它进行发现。 - 交付客户端正在尝试从
/path/to/file.extn
位置共享名为file.extn
的文件。 - 交付客户端使用
expedite
密码以128位AES加密加密文件内容。 - 交付客户端将分批处理大小为
131072字节
或128KiB
的数据块进行交付。 - 交付客户端的用户必须共享其
01276D06
标识符和密码以开始交付过程。 - 如果收集客户端以错误模式打开程序,发送客户端将断开与网络的连接。
- 交付客户端正在尝试连接到部署在
- 如果发送客户端在收集客户端之后加入网络,请执行以下命令。
(venv) $ ed-client --host ws://localhost:9090 --time 30 --endo DEADCAFE send --file /path/to/file.extn --pswd expedite --size 131072
[2024-07-06 12:02:09] Expedite Client v0.1.0a2 [2024-07-06 12:02:09] Addr. ws://localhost:9090 [2024-07-06 12:02:09] Pass. expedite [2024-07-06 12:02:09] Plan. DELIVERING [2024-07-06 12:02:09] Wait. 30 seconds [2024-07-06 12:02:09] Please wait for DEADCAFE to begin interaction. [2024-07-06 12:02:09] Attempting to connect to the network. [2024-07-06 12:02:09] Successfully connected to the network. [2024-07-06 12:02:09] You are now identified as BA40BB0F in the network.
- 交付客户端正在尝试连接到部署在
ws://localhost:9090
的代理服务。 - 交付客户端有一个
30秒
的非活动超时,超时后将自动断开连接。 - 发送客户端已获得身份标识
BA40BB0F
,收集客户端可以使用它进行发现。 - 交付客户端正在尝试从
/path/to/file.extn
位置共享名为file.extn
的文件。 - 交付客户端使用
expedite
密码以128位AES加密加密文件内容。 - 交付客户端将分批处理大小为
131072字节
或128KiB
的数据块进行交付。 - 发送客户端的用户期望具有身份标识
DEADCAFE
的收集客户端开始交互。 - 如果收集客户端以错误模式打开程序,发送客户端将断开与网络的连接。
- 交付客户端正在尝试连接到部署在
- 如果发送客户端到代理服务的平均延迟低于 100ms,考虑增加数据块大小以改善发送过程的稳定性。
- 如果发送客户端到代理服务的平均延迟高于 100ms,考虑减小数据块大小以改善发送过程的表现。
- 让发送过程完成,或在需要时通过发送键盘中断(即
Ctrl
+C
)终止正在进行的发送过程。
收集
- 执行以下命令以查看
RECV
子命令的帮助主题。Usage: ed-client recv [OPTIONS] Collect file through an encrypted transfer Options: -p, --pswd TEXT Set the password for collecting encryption [required] --help Show this message and exit.
- 如果收集客户端在发送客户端之前加入网络,请执行以下命令。
(venv) $ ed-client --host ws://localhost:8080 --time 30 recv --pswd expedite
[2024-07-06 12:57:43] Expedite Client v0.1.0a2 [2024-07-06 12:57:43] Addr. ws://localhost:8080 [2024-07-06 12:57:43] Pass. expedite [2024-07-06 12:57:43] Plan. COLLECTING [2024-07-06 12:57:43] Wait. 30 seconds [2024-07-06 12:57:43] Please share your acquired identity to begin interaction. [2024-07-06 12:57:43] Attempting to connect to the network. [2024-07-06 12:57:43] Successfully connected to the network. [2024-07-06 12:57:43] You are now identified as 13755346 in the network.
- 收集客户端正在尝试连接到部署在
ws://localhost:9090
的代理服务。 - 收集客户端有一个
30秒
的非活动超时,超过此时间将自动断开连接。 - 收集客户端已获得身份标识
13755346
,发送客户端可以使用它进行发现。 - 收集客户端使用密码
expedite
使用128位AES加密解密文件内容。 - 收集客户端的用户必须共享其身份标识
13755346
和密码以开始收集过程。 - 如果发送客户端以错误模式打开程序,收集客户端将断开与网络的连接。
- 收集客户端正在尝试连接到部署在
- 如果收集客户端在发送客户端之后加入网络,请执行以下命令。
(venv) $ ed-client --host ws://localhost:8080 --time 30 --endo DEADCAFE recv --pswd expedite
[2024-07-06 12:55:30] Expedite Client v0.1.0a2 [2024-07-06 12:55:30] Addr. ws://localhost:8080 [2024-07-06 12:55:30] Pass. expedite [2024-07-06 12:55:30] Plan. COLLECTING [2024-07-06 12:55:30] Wait. 30 seconds [2024-07-06 12:55:30] Please wait for DEADCAFE to begin interaction. [2024-07-06 12:55:30] Attempting to connect to the network. [2024-07-06 12:55:30] Successfully connected to the network. [2024-07-06 12:55:30] You are now identified as 13AA7DB2 in the network.
- 收集客户端正在尝试连接到部署在
ws://localhost:9090
的代理服务。 - 收集客户端有一个
30秒
的非活动超时,超过此时间将自动断开连接。 - 收集客户端已获得身份标识
13AA7DB2
,发送客户端可以使用它进行发现。 - 收集客户端使用密码
expedite
使用128位AES加密解密文件内容。 - 收集客户端的用户必须共享其身份标识
13AA7DB2
和密码以开始收集过程。 - 如果发送客户端以错误模式打开程序,收集客户端将断开与网络的连接。
- 收集客户端正在尝试连接到部署在
- 让收集过程完成,或在需要时通过发送键盘中断(即
Ctrl
+C
)终止正在进行的收集过程。
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
expedite-0.1.0a5.tar.gz (517.5 kB 查看哈希值)
构建分发
expedite-0.1.0a5-py3-none-any.whl (563.4 kB 查看哈希值)