从日常使用微信文件传输助手来看,传输助手并非点对点传输,所有信息在传输中都将被中转存储在公用服务器上,传输信息的安全性难以得到保障。在2020年我曾基于 fiora 开源项目,以目的为导向重写项目,自制文件传输助手,从而实现数据(信息、图片、文件)的安全传输与存储,可参见博文 《自制微信文件传输助手,实现数据安全传输与存储》。如今,fiora开源项目底层逻辑已改动,过去的部署方式依然无法完成传输助手的搭建。此外,过去版本存在部分功能的缺失,故此,在2022年的今天,博文将对该项目予以二次优化,具体而言:

  1. 优化部署步骤,降低部署难度;
  2. 前端新增数据删除功能,简化界面,降低服务器存储负担;
  3. 新增“文件”类型数据存储与传输功能;
  4. 完成存储并显示url链接内容;

一、环境准备

本次项目基于node.js、redis和react全栈开发。要运行他, 你需要 Node.js开发环境、 MongoDB 数据库和redis缓存。

宝塔面板可以直接安装: PM2管理器MongoDBRedis.安装完成后重启服务器以生效。

二、项目部署

#前端配置:
git clone https://github.com/DXJian/transfer.git -b master /opt/transfercd /opt/transfernpm install -g yarn
yarn install
yarn build:web
echo "JwtSecret=<string>" > .env2

三、配置项目

这一步不可少:

yarn start

放行9200端口

放行6379端口

此时就可以访问http://[ip]:9200

1. 注册管理员

[root@HK-GIA transfer]# fiora register [管理员账号] [密码]
[root@HK-GIA transfer]# fiora getUserId [管理员账号]
The userId of [dengxj] is: 61e87394e9f94522a6836636

前往/opt/transfer/packages/config修改server.ts

    // administrator user idadministrator: env.Administrator ? env.Administrator.split(',') : ['61e87394e9f94522a6836636'],

cd /opt/transfer
yarn start

查看有无报错。

2. 引入外部存储方式:

    aliyunOSS: {enable: env.ALIYUN_OSS ? env.ALIYUN_OSS === 'true' : true,accessKeyId: env.ACCESS_KEY_ID || 'LTAI5tKLfRXXXXXXXXHdMyTZ',accessKeySecret: env.ACCESS_KEY_SECRET || 'Ts245TE2gawdXXXXXXXXRRP',roleArn: env.ROLE_ARN || 'acs:ram::1807XXXXXX3257:role/transfer',region: env.REGION || 'oss-cn-beijing',bucket: env.BUCKET || 'transferspace',endpoint: env.ENDPOINT || 'transferspace.oss-cn-beijing.aliyuncs.com',},
  1. 在RAM 访问控制新建用户页面创建用户,添加管理OSS权限;并基于该用户创建accessKeyId及其accessKeySecret

  2. 在RAM 访问控制新建角色页面创建RAM角色,添加管理OSS权限;并获取该角色的ARN

  3. 在Bucket 列表选定具体存储桶,依次填入获取的地区(region)桶名(bucket)Bucket 域名(地域节点(Endpoint)) 。切记,endpoint: env.ENDPOINT处请填写完整Bucket 域名而非地域节点。

3. 设置nginx域名反向代理

http://localhost:9200设置反向代理。

4. 设置开机自启:

# install pm2
npm install -g pm2# use pm2 to run transfer
pm2 start yarn --name transfer -- start# view pm2 apps status
pm2 ls# view pm2 transfer logging
pm2 logs transfer# 把已启动服务加到systemd中
pm2 startup #重启,发现之前的服务都已经启动
sudo systemctl reboot
#删除自动启动服务
pm2 unstartup systemd
# use pm2 to stop transfer
pm2 stop id

四、展示效果

在管理员账户没有登陆的时候:

管理员账户登陆后:

移动端:

五、后期维护:数据库管理

# 进入数据库
mongo
# 查询数据库列表
show databases
# 进入数据库
use fiora

# 查询数据表列表
show collections
# 查询数据表内容
db.messages.find()

#删除数据表内信息
db.messages.deleteMany({to: "5f429aa7c0d0e3e0f2d7e499" });

删除第二存储空间的内容,也就是编号为5f429aa7c0d0e3e0f2d7e499的存储空间


此时,只剩下第一存储空间的信息了


至此,本文也就进入尾声了。希望本文能够起到抛砖引玉之效,也欢迎大家的批评交流。


如果您有任何疑问或者好的建议,期待你的留言、评论与关注!

自制文件传输助手,实现数据安全备忘与跨平台传输(优化)相关推荐

  1. 如何使用网页版微信文件传输助手(图解教程)

    微信文件传输助手网页版是一款非常方便的工具,可以帮助我们在电脑和手机之间传输文件,而且不需要电脑登录微信即可传输文件. 下面是具体的操作步骤: 步骤一:打开多御浏览器,点击微信文件传输助手.然后使用微 ...

  2. HTML5隐藏图片代码,HTML5终极备忘大全(图片版+文字版)

    一.前言兼图片备忘 下图是我从testking网站上的Ultimate HTML5 Cheatsheat这篇文章中备忘图片(已大小优化,因为图片较高,故滚动显示). 但是,上面毕竟是图片格式(原图上兆 ...

  3. 自制微信文件传输助手,实现数据安全传输与存储

    从日常使用微信文件传输助手来看,传输助手并非点对点传输,所有信息在传输中都将被中转存储在公用服务器上,传输信息的安全性难以得到保障.本文将基于 fiora 开源项目,以目的为导向重写项目,自制文件传输 ...

  4. 让你的「文件传输助手」歇一歇吧,你完全有更实用的备忘录工具选择

    有不少粉丝问过我这样一个问题:" 阿虚,我换了不同品牌的手机,有没有办法能把便签的内容迁移到新手机啊?" 而我的回答都是:" 并没有什么办法,只能自己一条条复制粘贴 &q ...

  5. 备忘: VC++ 自动适用编译两种模式库文件 (DLL, LIB)

    为什么80%的码农都做不了架构师?>>>    一个好的程序设计规划总会有属于自己的基础代码库.重用这些代码库,DLL或LIB方式最好的选择之一.在写新的项目或程序是,我们不可能每次 ...

  6. python第三方库文件传输助手_python实现文件助手中查看微信撤回消息

    利用python实现防撤回,对方撤回的消息可在自己的微信文件传输助手中查看. 如果想变成可执行文件放在电脑中运行,可用pyinstaller将此程序打包成exe文件. pyinstaller 文件名. ...

  7. iframe实现页面无刷新上传文件(PHP)----备忘

    之前做一个文件上传的,由于那段时间写ajax比较多,所以就想利用Ajax来实现,后来发现,Ajax没法实现文件上传, 后来百度之,这里做个备忘. 提示:利用form表单的target属性和iframe ...

  8. python第三方库文件传输助手_Python中的第三方模块(itchat)

    准备工作: pycharm导入第三方模块的包 1.ctrl+alt+s进入settings,选择Project下的Project Interpreter 2.点击右上角的加号,进入之后搜索qrcode ...

  9. [转帖]备忘:CentOS-7 使用systemctl 管理的服务,文件打开数上限1024要改

    备忘:CentOS-7 使用systemctl 管理的服务,文件打开数上限1024要改 https://blog.csdn.net/toontong/article/details/50440272 ...

最新文章

  1. 基于WebGL架构的3D可视化平台—三维设备管理(ThingJS实现楼宇设备管理3D可视化)...
  2. mysql查询唯一单词_MySql从表中获取唯一单词列表,其中字段中的值用逗号分隔
  3. 试从微型计算机的硬件组成角度谈谈单片机,单片机原理及应用课后习题参考答案1~6章...
  4. [转]SpringMVC+Hibernate+Spring 简单的一个整合实例
  5. ResultSet 结果集
  6. RabbitMQ安装与初始配置
  7. 如何将本地jar包放入本地maven仓库和远程私服仓库
  8. java不能打开串口_java打不开串口,我已经放入那两个文件了,但是报错了,调用不了...
  9. JSP→JavaWeb简介、Tomcat服务器安装启动测试目录、Tomcat手动创建项目、开发工具MyEclipse与Eclipse配置环境、MyEclipse创建Web程序目录、修改Tomcat端口
  10. [渝粤教育] 厦门理工学院 模拟电子技术实验 参考 资料
  11. 超实用的 Nginx 极简教程,覆盖了常用场景(转)
  12. 【国产MCU移植】看看有没有你需要的,一起来查漏补缺吧!(附已报名的硬件)...
  13. css 给文字加下划线
  14. 【算法设计与分析】图搜索算法的应用
  15. oracle的mins,分钟的英文缩写,10min还是10mins!
  16. 操作系统:存储器管理(下)
  17. java.net.SocketException: Too many open files解决方法
  18. 【Java】基础知识-JAXP解析XML(一)
  19. C4D骨骼绑定和骨骼动画
  20. java学习p163

热门文章

  1. 十二、动态座位响应及用户订票《仿淘票票系统前后端完全制作(除支付外)》
  2. 云桌面与桌面云,到底有什么区别?
  3. 如何截取阿里云oss的视频第一帧作为预览图片
  4. N+1 架构支持更高的电源可靠性
  5. 收藏很久的开关电源书籍
  6. 《卡车模拟器3D》技术支持
  7. 移动硬盘、固态硬盘、机械硬盘总结
  8. 自考之《管理经济学》导图总结
  9. iptables四表五链
  10. 9 WebMagic 入门案例